@41devs/naya-id-js 0.1.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 +5 -0
- package/README.md +272 -0
- package/dist/naya-id.cjs +280 -0
- package/dist/naya-id.cjs.map +1 -0
- package/dist/naya-id.d.cts +252 -0
- package/dist/naya-id.d.ts +252 -0
- package/dist/naya-id.min.js +280 -0
- package/dist/naya-id.min.js.map +1 -0
- package/dist/naya-id.mjs +280 -0
- package/dist/naya-id.mjs.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration du parcours de vérification Naya ID.
|
|
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).
|
|
7
|
+
*/
|
|
8
|
+
/** Pays supportés par Naya ID (zone CEDEAO). Code = ISO 3166-1 alpha-2. */
|
|
9
|
+
declare const NAYA_COUNTRIES: readonly [{
|
|
10
|
+
readonly code: "BJ";
|
|
11
|
+
readonly label: "Bénin";
|
|
12
|
+
}, {
|
|
13
|
+
readonly code: "CI";
|
|
14
|
+
readonly label: "Côte d'Ivoire";
|
|
15
|
+
}, {
|
|
16
|
+
readonly code: "SN";
|
|
17
|
+
readonly label: "Sénégal";
|
|
18
|
+
}, {
|
|
19
|
+
readonly code: "ML";
|
|
20
|
+
readonly label: "Mali";
|
|
21
|
+
}, {
|
|
22
|
+
readonly code: "BF";
|
|
23
|
+
readonly label: "Burkina Faso";
|
|
24
|
+
}, {
|
|
25
|
+
readonly code: "TG";
|
|
26
|
+
readonly label: "Togo";
|
|
27
|
+
}];
|
|
28
|
+
type NayaCountryCode = (typeof NAYA_COUNTRIES)[number]['code'];
|
|
29
|
+
/** Types de documents acceptés. La valeur est envoyée telle quelle à l'API. */
|
|
30
|
+
type NayaDocumentType = 'cni' | 'passeport' | 'permis';
|
|
31
|
+
declare const NAYA_DOCUMENT_TYPES: readonly NayaDocumentType[];
|
|
32
|
+
/** Langues de l'interface du SDK. */
|
|
33
|
+
type NayaLocale = 'fr' | 'en';
|
|
34
|
+
/**
|
|
35
|
+
* Fournisseur d'authentification.
|
|
36
|
+
*
|
|
37
|
+
* Deux modes, un seul à renseigner :
|
|
38
|
+
* • `apiKey` — la clé d'application est transmise depuis le navigateur.
|
|
39
|
+
* Simple, mais la clé est lisible côté client : à réserver
|
|
40
|
+
* aux démos et aux intégrations où le front est maîtrisé.
|
|
41
|
+
* • `sessionToken` — jeton éphémère obtenu par le backend du client, limité à
|
|
42
|
+
* une vérification. À privilégier en production.
|
|
43
|
+
*/
|
|
44
|
+
interface NayaAuth {
|
|
45
|
+
apiKey?: string;
|
|
46
|
+
sessionToken?: string;
|
|
47
|
+
}
|
|
48
|
+
/** Palette optionnelle : surcharge des couleurs de marque. */
|
|
49
|
+
interface NayaThemeOverrides {
|
|
50
|
+
/** Couleur principale (défaut : navy Naya #1A3A5C). */
|
|
51
|
+
primaryColor?: string;
|
|
52
|
+
/** Couleur d'accent des CTA (défaut : ambre Naya #F5A623). */
|
|
53
|
+
accentColor?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Emplacement des ressources de détection de vivacité (MediaPipe). Par défaut,
|
|
57
|
+
* elles sont chargées depuis un CDN public. Les applications à CSP stricte
|
|
58
|
+
* (qui bloquent les hôtes externes) doivent auto-héberger ces fichiers et
|
|
59
|
+
* renseigner ici leurs URL.
|
|
60
|
+
*/
|
|
61
|
+
interface NayaLivenessAssets {
|
|
62
|
+
/** URL du module ESM `@mediapipe/tasks-vision` (`vision_bundle.mjs`). */
|
|
63
|
+
esmUrl?: string;
|
|
64
|
+
/** Base des fichiers WASM `@mediapipe/tasks-vision`. */
|
|
65
|
+
wasmBaseUrl?: string;
|
|
66
|
+
/** URL du modèle `.task` de Face Landmarker. */
|
|
67
|
+
modelUrl?: string;
|
|
68
|
+
}
|
|
69
|
+
interface NayaConfig {
|
|
70
|
+
/** Pré-sélectionne le pays : l'utilisateur ne le choisit plus. */
|
|
71
|
+
country?: NayaCountryCode;
|
|
72
|
+
/**
|
|
73
|
+
* Types de documents proposés. S'il n'y en a qu'un et que `country` est
|
|
74
|
+
* défini, l'écran de sélection est sauté.
|
|
75
|
+
*/
|
|
76
|
+
documentTypes?: readonly NayaDocumentType[];
|
|
77
|
+
/** Pays proposés quand `country` n'est pas défini. */
|
|
78
|
+
countries?: readonly NayaCountryCode[];
|
|
79
|
+
/** Langue de l'interface. */
|
|
80
|
+
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
|
+
*/
|
|
85
|
+
callbackUrl?: string;
|
|
86
|
+
/** Nombre de parcours autorisés après un rejet (bouton « Réessayer »). */
|
|
87
|
+
maxAttempts?: number;
|
|
88
|
+
/** Surcharge des couleurs de marque. */
|
|
89
|
+
theme?: NayaThemeOverrides;
|
|
90
|
+
/** URL d'un logo client, affiché à côté de « Propulsé par Naya ID ». */
|
|
91
|
+
clientLogoUrl?: string;
|
|
92
|
+
/** Base URL de l'API — ne changer que pour un environnement de test. */
|
|
93
|
+
baseUrl?: string;
|
|
94
|
+
/** Auto-hébergement des ressources MediaPipe (CSP stricte). */
|
|
95
|
+
livenessAssets?: NayaLivenessAssets;
|
|
96
|
+
}
|
|
97
|
+
/** Configuration effective : `NayaConfig` avec tous les défauts appliqués. */
|
|
98
|
+
interface ResolvedNayaConfig {
|
|
99
|
+
country?: NayaCountryCode;
|
|
100
|
+
documentTypes: readonly NayaDocumentType[];
|
|
101
|
+
countries: readonly NayaCountryCode[];
|
|
102
|
+
locale: NayaLocale;
|
|
103
|
+
callbackUrl?: string;
|
|
104
|
+
maxAttempts: number;
|
|
105
|
+
theme: Required<NayaThemeOverrides>;
|
|
106
|
+
clientLogoUrl?: string;
|
|
107
|
+
baseUrl: string;
|
|
108
|
+
livenessAssets: NayaLivenessAssets;
|
|
109
|
+
}
|
|
110
|
+
declare const NAYA_DEFAULT_PRIMARY = "#1A3A5C";
|
|
111
|
+
declare const NAYA_DEFAULT_ACCENT = "#F5A623";
|
|
112
|
+
declare const NAYA_DEFAULT_BASE_URL = "https://api.naya.41devs.com/v1";
|
|
113
|
+
/** Applique les valeurs par défaut à une configuration partielle. */
|
|
114
|
+
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
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Résultat du parcours, rendu à l'application cliente à la fermeture du SDK.
|
|
122
|
+
* Miroir fidèle des modèles Flutter et Angular.
|
|
123
|
+
*/
|
|
124
|
+
/** Issue du parcours de vérification. */
|
|
125
|
+
type NayaStatus =
|
|
126
|
+
/** Identité vérifiée et approuvée automatiquement. */
|
|
127
|
+
'approved'
|
|
128
|
+
/** Dossier envoyé en revue manuelle — décision finale ultérieure. */
|
|
129
|
+
| 'review'
|
|
130
|
+
/** Vérification rejetée (document expiré, visage non concordant…). */
|
|
131
|
+
| 'rejected'
|
|
132
|
+
/** L'utilisateur a quitté le parcours avant la fin. */
|
|
133
|
+
| 'cancelled'
|
|
134
|
+
/** Erreur technique (réseau, serveur…) ayant interrompu le parcours. */
|
|
135
|
+
| 'error';
|
|
136
|
+
/**
|
|
137
|
+
* Données d'identité extraites du document par l'OCR Naya, éventuellement
|
|
138
|
+
* corrigées par l'utilisateur.
|
|
139
|
+
*/
|
|
140
|
+
interface NayaOcrData {
|
|
141
|
+
lastName?: string;
|
|
142
|
+
firstName?: string;
|
|
143
|
+
/** Format YYYY-MM-DD. */
|
|
144
|
+
dateOfBirth?: string;
|
|
145
|
+
placeOfBirth?: string;
|
|
146
|
+
nationality?: string;
|
|
147
|
+
/** Format YYYY-MM-DD. */
|
|
148
|
+
expirationDate?: string;
|
|
149
|
+
documentNumber?: string;
|
|
150
|
+
/** Numéro Personnel d'Identification (Bénin) — 10 chiffres. */
|
|
151
|
+
npi?: string;
|
|
152
|
+
issuingCountry?: string;
|
|
153
|
+
issuingAuthority?: string;
|
|
154
|
+
/** 'M' ou 'F'. */
|
|
155
|
+
gender?: string;
|
|
156
|
+
}
|
|
157
|
+
/** Lit un objet OCR brut de l'API en ne retenant que les champs connus. */
|
|
158
|
+
declare function parseOcrData(raw: unknown): NayaOcrData | undefined;
|
|
159
|
+
/** Réduit un objet OCR à ses seuls champs renseignés, en chaînes. */
|
|
160
|
+
declare function ocrToDeclaredData(ocr: NayaOcrData): Record<string, string>;
|
|
161
|
+
/** Résultat retourné à l'application cliente. */
|
|
162
|
+
interface NayaResult {
|
|
163
|
+
status: NayaStatus;
|
|
164
|
+
/**
|
|
165
|
+
* Identifiant de la session Naya — à conserver côté client pour rapprocher
|
|
166
|
+
* les notifications `callbackUrl` et le dashboard.
|
|
167
|
+
*/
|
|
168
|
+
verificationId?: string;
|
|
169
|
+
/** Score de risque agrégé 0-100 (plus haut = plus sûr). */
|
|
170
|
+
riskScore?: number;
|
|
171
|
+
/** Concordance faciale document ↔ selfie, 0-100. */
|
|
172
|
+
matchScore?: number;
|
|
173
|
+
/** Intégrité du document, 0-100. */
|
|
174
|
+
authenticityScore?: number;
|
|
175
|
+
/** Score de vivacité, 0-100. */
|
|
176
|
+
livenessScore?: number;
|
|
177
|
+
/** Confiance de l'extraction OCR, 0-100. */
|
|
178
|
+
ocrConfidence?: number;
|
|
179
|
+
/** Données d'identité finales (OCR fusionné avec les corrections). */
|
|
180
|
+
ocrData?: NayaOcrData;
|
|
181
|
+
/** Note d'analyse produite par le pipeline Naya. */
|
|
182
|
+
note?: string;
|
|
183
|
+
/** Détail de l'erreur quand `status` vaut `'error'`. */
|
|
184
|
+
errorMessage?: string;
|
|
185
|
+
}
|
|
186
|
+
declare function cancelledResult(verificationId?: string): NayaResult;
|
|
187
|
+
declare function errorResult(errorMessage: string, verificationId?: string): NayaResult;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Client HTTP du pipeline de vérification Naya.
|
|
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.
|
|
198
|
+
*/
|
|
199
|
+
/** Erreur renvoyée par l'API Naya ou par le transport réseau. */
|
|
200
|
+
declare class NayaApiError extends Error {
|
|
201
|
+
readonly statusCode?: number;
|
|
202
|
+
constructor(message: string, statusCode?: number);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* SDK JavaScript officiel de Naya ID — vérification d'identité (eKYC) clé en
|
|
207
|
+
* main pour l'Afrique de l'Ouest (zone CEDEAO), chargeable en une balise
|
|
208
|
+
* `<script>`.
|
|
209
|
+
*
|
|
210
|
+
* Pendant web « sans framework » des SDK Flutter et Angular : même parcours,
|
|
211
|
+
* mêmes écrans, même contrat d'API.
|
|
212
|
+
*
|
|
213
|
+
* ```html
|
|
214
|
+
* <script src="https://cdn.jsdelivr.net/npm/@41devs/naya-id-js@0/dist/naya-id.min.js"></script>
|
|
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
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
|
|
225
|
+
interface StartVerificationParams {
|
|
226
|
+
/** Clé d'application `naya_live_…` / `naya_test_…` (lisible côté navigateur). */
|
|
227
|
+
apiKey?: string;
|
|
228
|
+
/** Jeton de session éphémère obtenu par votre backend (à privilégier). */
|
|
229
|
+
sessionToken?: string;
|
|
230
|
+
/** Alternative aux deux champs ci-dessus, forme objet. */
|
|
231
|
+
auth?: NayaAuth;
|
|
232
|
+
/** Configuration optionnelle (pays, documents, langue, callbackUrl, thème…). */
|
|
233
|
+
config?: NayaConfig;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Lance le parcours de vérification d'identité : l'interface Naya s'ouvre en
|
|
237
|
+
* plein écran au-dessus de la page, prend en charge la capture du document, la
|
|
238
|
+
* vivacité et la décision, puis résout un `NayaResult` et rend la main.
|
|
239
|
+
*
|
|
240
|
+
* **Ne rejette jamais** : une erreur réseau ou une annulation revient toujours
|
|
241
|
+
* sous forme de `NayaResult` (`status: 'error'` ou `'cancelled'`).
|
|
242
|
+
*/
|
|
243
|
+
declare function startVerification(params: StartVerificationParams): Promise<NayaResult>;
|
|
244
|
+
/** Version du SDK. */
|
|
245
|
+
declare const version = "0.1.0";
|
|
246
|
+
|
|
247
|
+
declare const _default: {
|
|
248
|
+
startVerification: typeof startVerification;
|
|
249
|
+
version: string;
|
|
250
|
+
};
|
|
251
|
+
|
|
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 };
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration du parcours de vérification Naya ID.
|
|
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).
|
|
7
|
+
*/
|
|
8
|
+
/** Pays supportés par Naya ID (zone CEDEAO). Code = ISO 3166-1 alpha-2. */
|
|
9
|
+
declare const NAYA_COUNTRIES: readonly [{
|
|
10
|
+
readonly code: "BJ";
|
|
11
|
+
readonly label: "Bénin";
|
|
12
|
+
}, {
|
|
13
|
+
readonly code: "CI";
|
|
14
|
+
readonly label: "Côte d'Ivoire";
|
|
15
|
+
}, {
|
|
16
|
+
readonly code: "SN";
|
|
17
|
+
readonly label: "Sénégal";
|
|
18
|
+
}, {
|
|
19
|
+
readonly code: "ML";
|
|
20
|
+
readonly label: "Mali";
|
|
21
|
+
}, {
|
|
22
|
+
readonly code: "BF";
|
|
23
|
+
readonly label: "Burkina Faso";
|
|
24
|
+
}, {
|
|
25
|
+
readonly code: "TG";
|
|
26
|
+
readonly label: "Togo";
|
|
27
|
+
}];
|
|
28
|
+
type NayaCountryCode = (typeof NAYA_COUNTRIES)[number]['code'];
|
|
29
|
+
/** Types de documents acceptés. La valeur est envoyée telle quelle à l'API. */
|
|
30
|
+
type NayaDocumentType = 'cni' | 'passeport' | 'permis';
|
|
31
|
+
declare const NAYA_DOCUMENT_TYPES: readonly NayaDocumentType[];
|
|
32
|
+
/** Langues de l'interface du SDK. */
|
|
33
|
+
type NayaLocale = 'fr' | 'en';
|
|
34
|
+
/**
|
|
35
|
+
* Fournisseur d'authentification.
|
|
36
|
+
*
|
|
37
|
+
* Deux modes, un seul à renseigner :
|
|
38
|
+
* • `apiKey` — la clé d'application est transmise depuis le navigateur.
|
|
39
|
+
* Simple, mais la clé est lisible côté client : à réserver
|
|
40
|
+
* aux démos et aux intégrations où le front est maîtrisé.
|
|
41
|
+
* • `sessionToken` — jeton éphémère obtenu par le backend du client, limité à
|
|
42
|
+
* une vérification. À privilégier en production.
|
|
43
|
+
*/
|
|
44
|
+
interface NayaAuth {
|
|
45
|
+
apiKey?: string;
|
|
46
|
+
sessionToken?: string;
|
|
47
|
+
}
|
|
48
|
+
/** Palette optionnelle : surcharge des couleurs de marque. */
|
|
49
|
+
interface NayaThemeOverrides {
|
|
50
|
+
/** Couleur principale (défaut : navy Naya #1A3A5C). */
|
|
51
|
+
primaryColor?: string;
|
|
52
|
+
/** Couleur d'accent des CTA (défaut : ambre Naya #F5A623). */
|
|
53
|
+
accentColor?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Emplacement des ressources de détection de vivacité (MediaPipe). Par défaut,
|
|
57
|
+
* elles sont chargées depuis un CDN public. Les applications à CSP stricte
|
|
58
|
+
* (qui bloquent les hôtes externes) doivent auto-héberger ces fichiers et
|
|
59
|
+
* renseigner ici leurs URL.
|
|
60
|
+
*/
|
|
61
|
+
interface NayaLivenessAssets {
|
|
62
|
+
/** URL du module ESM `@mediapipe/tasks-vision` (`vision_bundle.mjs`). */
|
|
63
|
+
esmUrl?: string;
|
|
64
|
+
/** Base des fichiers WASM `@mediapipe/tasks-vision`. */
|
|
65
|
+
wasmBaseUrl?: string;
|
|
66
|
+
/** URL du modèle `.task` de Face Landmarker. */
|
|
67
|
+
modelUrl?: string;
|
|
68
|
+
}
|
|
69
|
+
interface NayaConfig {
|
|
70
|
+
/** Pré-sélectionne le pays : l'utilisateur ne le choisit plus. */
|
|
71
|
+
country?: NayaCountryCode;
|
|
72
|
+
/**
|
|
73
|
+
* Types de documents proposés. S'il n'y en a qu'un et que `country` est
|
|
74
|
+
* défini, l'écran de sélection est sauté.
|
|
75
|
+
*/
|
|
76
|
+
documentTypes?: readonly NayaDocumentType[];
|
|
77
|
+
/** Pays proposés quand `country` n'est pas défini. */
|
|
78
|
+
countries?: readonly NayaCountryCode[];
|
|
79
|
+
/** Langue de l'interface. */
|
|
80
|
+
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
|
+
*/
|
|
85
|
+
callbackUrl?: string;
|
|
86
|
+
/** Nombre de parcours autorisés après un rejet (bouton « Réessayer »). */
|
|
87
|
+
maxAttempts?: number;
|
|
88
|
+
/** Surcharge des couleurs de marque. */
|
|
89
|
+
theme?: NayaThemeOverrides;
|
|
90
|
+
/** URL d'un logo client, affiché à côté de « Propulsé par Naya ID ». */
|
|
91
|
+
clientLogoUrl?: string;
|
|
92
|
+
/** Base URL de l'API — ne changer que pour un environnement de test. */
|
|
93
|
+
baseUrl?: string;
|
|
94
|
+
/** Auto-hébergement des ressources MediaPipe (CSP stricte). */
|
|
95
|
+
livenessAssets?: NayaLivenessAssets;
|
|
96
|
+
}
|
|
97
|
+
/** Configuration effective : `NayaConfig` avec tous les défauts appliqués. */
|
|
98
|
+
interface ResolvedNayaConfig {
|
|
99
|
+
country?: NayaCountryCode;
|
|
100
|
+
documentTypes: readonly NayaDocumentType[];
|
|
101
|
+
countries: readonly NayaCountryCode[];
|
|
102
|
+
locale: NayaLocale;
|
|
103
|
+
callbackUrl?: string;
|
|
104
|
+
maxAttempts: number;
|
|
105
|
+
theme: Required<NayaThemeOverrides>;
|
|
106
|
+
clientLogoUrl?: string;
|
|
107
|
+
baseUrl: string;
|
|
108
|
+
livenessAssets: NayaLivenessAssets;
|
|
109
|
+
}
|
|
110
|
+
declare const NAYA_DEFAULT_PRIMARY = "#1A3A5C";
|
|
111
|
+
declare const NAYA_DEFAULT_ACCENT = "#F5A623";
|
|
112
|
+
declare const NAYA_DEFAULT_BASE_URL = "https://api.naya.41devs.com/v1";
|
|
113
|
+
/** Applique les valeurs par défaut à une configuration partielle. */
|
|
114
|
+
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
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Résultat du parcours, rendu à l'application cliente à la fermeture du SDK.
|
|
122
|
+
* Miroir fidèle des modèles Flutter et Angular.
|
|
123
|
+
*/
|
|
124
|
+
/** Issue du parcours de vérification. */
|
|
125
|
+
type NayaStatus =
|
|
126
|
+
/** Identité vérifiée et approuvée automatiquement. */
|
|
127
|
+
'approved'
|
|
128
|
+
/** Dossier envoyé en revue manuelle — décision finale ultérieure. */
|
|
129
|
+
| 'review'
|
|
130
|
+
/** Vérification rejetée (document expiré, visage non concordant…). */
|
|
131
|
+
| 'rejected'
|
|
132
|
+
/** L'utilisateur a quitté le parcours avant la fin. */
|
|
133
|
+
| 'cancelled'
|
|
134
|
+
/** Erreur technique (réseau, serveur…) ayant interrompu le parcours. */
|
|
135
|
+
| 'error';
|
|
136
|
+
/**
|
|
137
|
+
* Données d'identité extraites du document par l'OCR Naya, éventuellement
|
|
138
|
+
* corrigées par l'utilisateur.
|
|
139
|
+
*/
|
|
140
|
+
interface NayaOcrData {
|
|
141
|
+
lastName?: string;
|
|
142
|
+
firstName?: string;
|
|
143
|
+
/** Format YYYY-MM-DD. */
|
|
144
|
+
dateOfBirth?: string;
|
|
145
|
+
placeOfBirth?: string;
|
|
146
|
+
nationality?: string;
|
|
147
|
+
/** Format YYYY-MM-DD. */
|
|
148
|
+
expirationDate?: string;
|
|
149
|
+
documentNumber?: string;
|
|
150
|
+
/** Numéro Personnel d'Identification (Bénin) — 10 chiffres. */
|
|
151
|
+
npi?: string;
|
|
152
|
+
issuingCountry?: string;
|
|
153
|
+
issuingAuthority?: string;
|
|
154
|
+
/** 'M' ou 'F'. */
|
|
155
|
+
gender?: string;
|
|
156
|
+
}
|
|
157
|
+
/** Lit un objet OCR brut de l'API en ne retenant que les champs connus. */
|
|
158
|
+
declare function parseOcrData(raw: unknown): NayaOcrData | undefined;
|
|
159
|
+
/** Réduit un objet OCR à ses seuls champs renseignés, en chaînes. */
|
|
160
|
+
declare function ocrToDeclaredData(ocr: NayaOcrData): Record<string, string>;
|
|
161
|
+
/** Résultat retourné à l'application cliente. */
|
|
162
|
+
interface NayaResult {
|
|
163
|
+
status: NayaStatus;
|
|
164
|
+
/**
|
|
165
|
+
* Identifiant de la session Naya — à conserver côté client pour rapprocher
|
|
166
|
+
* les notifications `callbackUrl` et le dashboard.
|
|
167
|
+
*/
|
|
168
|
+
verificationId?: string;
|
|
169
|
+
/** Score de risque agrégé 0-100 (plus haut = plus sûr). */
|
|
170
|
+
riskScore?: number;
|
|
171
|
+
/** Concordance faciale document ↔ selfie, 0-100. */
|
|
172
|
+
matchScore?: number;
|
|
173
|
+
/** Intégrité du document, 0-100. */
|
|
174
|
+
authenticityScore?: number;
|
|
175
|
+
/** Score de vivacité, 0-100. */
|
|
176
|
+
livenessScore?: number;
|
|
177
|
+
/** Confiance de l'extraction OCR, 0-100. */
|
|
178
|
+
ocrConfidence?: number;
|
|
179
|
+
/** Données d'identité finales (OCR fusionné avec les corrections). */
|
|
180
|
+
ocrData?: NayaOcrData;
|
|
181
|
+
/** Note d'analyse produite par le pipeline Naya. */
|
|
182
|
+
note?: string;
|
|
183
|
+
/** Détail de l'erreur quand `status` vaut `'error'`. */
|
|
184
|
+
errorMessage?: string;
|
|
185
|
+
}
|
|
186
|
+
declare function cancelledResult(verificationId?: string): NayaResult;
|
|
187
|
+
declare function errorResult(errorMessage: string, verificationId?: string): NayaResult;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Client HTTP du pipeline de vérification Naya.
|
|
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.
|
|
198
|
+
*/
|
|
199
|
+
/** Erreur renvoyée par l'API Naya ou par le transport réseau. */
|
|
200
|
+
declare class NayaApiError extends Error {
|
|
201
|
+
readonly statusCode?: number;
|
|
202
|
+
constructor(message: string, statusCode?: number);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* SDK JavaScript officiel de Naya ID — vérification d'identité (eKYC) clé en
|
|
207
|
+
* main pour l'Afrique de l'Ouest (zone CEDEAO), chargeable en une balise
|
|
208
|
+
* `<script>`.
|
|
209
|
+
*
|
|
210
|
+
* Pendant web « sans framework » des SDK Flutter et Angular : même parcours,
|
|
211
|
+
* mêmes écrans, même contrat d'API.
|
|
212
|
+
*
|
|
213
|
+
* ```html
|
|
214
|
+
* <script src="https://cdn.jsdelivr.net/npm/@41devs/naya-id-js@0/dist/naya-id.min.js"></script>
|
|
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
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
|
|
225
|
+
interface StartVerificationParams {
|
|
226
|
+
/** Clé d'application `naya_live_…` / `naya_test_…` (lisible côté navigateur). */
|
|
227
|
+
apiKey?: string;
|
|
228
|
+
/** Jeton de session éphémère obtenu par votre backend (à privilégier). */
|
|
229
|
+
sessionToken?: string;
|
|
230
|
+
/** Alternative aux deux champs ci-dessus, forme objet. */
|
|
231
|
+
auth?: NayaAuth;
|
|
232
|
+
/** Configuration optionnelle (pays, documents, langue, callbackUrl, thème…). */
|
|
233
|
+
config?: NayaConfig;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Lance le parcours de vérification d'identité : l'interface Naya s'ouvre en
|
|
237
|
+
* plein écran au-dessus de la page, prend en charge la capture du document, la
|
|
238
|
+
* vivacité et la décision, puis résout un `NayaResult` et rend la main.
|
|
239
|
+
*
|
|
240
|
+
* **Ne rejette jamais** : une erreur réseau ou une annulation revient toujours
|
|
241
|
+
* sous forme de `NayaResult` (`status: 'error'` ou `'cancelled'`).
|
|
242
|
+
*/
|
|
243
|
+
declare function startVerification(params: StartVerificationParams): Promise<NayaResult>;
|
|
244
|
+
/** Version du SDK. */
|
|
245
|
+
declare const version = "0.1.0";
|
|
246
|
+
|
|
247
|
+
declare const _default: {
|
|
248
|
+
startVerification: typeof startVerification;
|
|
249
|
+
version: string;
|
|
250
|
+
};
|
|
251
|
+
|
|
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 };
|