{"_id":"@41devs/naya-id-angular","_rev":"3-8f8b37ce3c8ba271f8b88783dbf8a7a4","name":"@41devs/naya-id-angular","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@41devs/naya-id-angular","version":"0.1.0","keywords":["kyc","ekyc","identity-verification","angular","naya","cedeao"],"author":{"name":"41Devs"},"license":"SEE LICENSE IN LICENSE","_id":"@41devs/naya-id-angular@0.1.0","maintainers":[{"name":"devs41","email":"contact@41devs.com"},{"name":"khaliq","email":"alikhaliq66@gmail.com"}],"homepage":"https://naya.41devs.co","dist":{"shasum":"81a76dd49c0d90eb6cb30dfa7766c6dda49c89d4","tarball":"https://registry.npmjs.org/@41devs/naya-id-angular/-/naya-id-angular-0.1.0.tgz","fileCount":10,"integrity":"sha512-wGceCuPgDZyKecVjJjV8G2DSuQyVNE9Ojk43YEZ+67osRCU10//d9NJ/Z9wzS1jYIN8mOiASGlExkxFPl6hBqg==","signatures":[{"sig":"MEQCIHgi4DINuMw+hc0Ee0Su9ExWZpW5iiT1q7wmeNFnnCLtAiAoWrQL/PA7PaFwQMNiI3lsa4R7ooRlpjWhljDmLlSItQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305359},"module":"fesm2022/41devs-naya-id-angular.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/41devs-naya-id-angular.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f01db1f6a2b9ca5d93ed6e1f72a611556cddf915","typings":"index.d.ts","_npmUser":{"name":"khaliq","email":"alikhaliq66@gmail.com"},"_npmVersion":"10.9.8","description":"SDK Angular officiel de Naya ID — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"tslib":"^2.3.0","@mediapipe/tasks-vision":"^1.0.1"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.3.0","@angular/common":"^20.3.0"},"_npmOperationalInternal":{"tmp":"tmp/naya-id-angular_0.1.0_1786965572146_0.12623657468864247","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@41devs/naya-id-angular","version":"0.1.1","keywords":["kyc","ekyc","identity-verification","angular","naya","cedeao"],"author":{"name":"41Devs"},"license":"SEE LICENSE IN LICENSE","_id":"@41devs/naya-id-angular@0.1.1","maintainers":[{"name":"devs41","email":"contact@41devs.com"},{"name":"khaliq","email":"alikhaliq66@gmail.com"}],"homepage":"https://naya.41devs.com","dist":{"shasum":"840337b91580fbfca43a5d3381b8f79056de69af","tarball":"https://registry.npmjs.org/@41devs/naya-id-angular/-/naya-id-angular-0.1.1.tgz","fileCount":10,"integrity":"sha512-p5KmLhv70G9l1L35W7Qxqjwykrw9hSVYwQTbo8C9D9jNoknH7/r66hf+OUsfWOAoNqjQKk0FAxUqy2Nly184jw==","signatures":[{"sig":"MEUCIBu6GW+cp+nw3h2f1rYrTOqhWh420rvqPKa1ZTzBxZZFAiEAmzs3/FeWCJthvPtRgjrJazxDEeJXTMbAhmW5Cwk9s7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":313792},"module":"fesm2022/41devs-naya-id-angular.mjs","exports":{".":{"types":"./index.d.ts","default":"./fesm2022/41devs-naya-id-angular.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"1d73e37ac99c6dafb2ecb89031ae0f181a97f344","typings":"index.d.ts","_npmUser":{"name":"khaliq","email":"alikhaliq66@gmail.com"},"_npmVersion":"10.9.8","description":"SDK Angular officiel de Naya ID — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"tslib":"^2.3.0","@mediapipe/tasks-vision":"^1.0.1"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^20.3.0","@angular/common":"^20.3.0"},"_npmOperationalInternal":{"tmp":"tmp/naya-id-angular_0.1.1_1786967039163_0.8718384038849398","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@41devs/naya-id-angular","version":"0.3.0","description":"SDK Angular officiel de Naya ID — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest : consentement, capture guidée, défi de vivacité imposé par le serveur, confirmation des données, résultat expliqué.","keywords":["kyc","ekyc","identity-verification","angular","naya","cedeao"],"homepage":"https://naya.41devs.com","license":"SEE LICENSE IN LICENSE","author":{"name":"41Devs"},"peerDependencies":{"@angular/common":"^19.0.0 || ^20.0.0","@angular/core":"^19.0.0 || ^20.0.0"},"dependencies":{"tslib":"^2.3.0","@41devs/naya-id-js":"^0.3.1"},"sideEffects":false,"module":"fesm2022/41devs-naya-id-angular.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/41devs-naya-id-angular.mjs"}},"_id":"@41devs/naya-id-angular@0.3.0","gitHead":"0101e38e4330bc80d86cc48ffdb4392816367d09","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-o2wfbCyGmFr8IWYvwOWJUdhpvsE7Yji0HQ/RFqc64vtZR8lYngeOfy2zyqBV4LUhKO9F/vserWd2qZWTdMmh8Q==","shasum":"90e4fa29e43242d560b3e02180667e52f903d8ad","tarball":"https://registry.npmjs.org/@41devs/naya-id-angular/-/naya-id-angular-0.3.0.tgz","fileCount":6,"unpackedSize":32450,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFb6Bs0LXMTN3Lkh0BOMO1FeDQTx34F5WwWPMLiBjU3JAiBXdltHQe0XcVFQoLuKfndK22HI+HYbs8Vhog2Cj/f74w=="}]},"_npmUser":{"name":"khaliq","email":"alikhaliq66@gmail.com"},"directories":{},"maintainers":[{"name":"devs41","email":"contact@41devs.com"},{"name":"khaliq","email":"alikhaliq66@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/naya-id-angular_0.3.0_1788880498164_0.4472262328614798"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-17T11:19:31.879Z","modified":"2026-09-08T15:14:58.493Z","0.1.0":"2026-08-17T11:19:32.287Z","0.1.1":"2026-08-17T11:43:59.310Z","0.3.0":"2026-09-08T15:14:58.319Z"},"author":{"name":"41Devs"},"license":"SEE LICENSE IN LICENSE","homepage":"https://naya.41devs.com","keywords":["kyc","ekyc","identity-verification","angular","naya","cedeao"],"description":"SDK Angular officiel de Naya ID — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest : consentement, capture guidée, défi de vivacité imposé par le serveur, confirmation des données, résultat expliqué.","maintainers":[{"name":"devs41","email":"contact@41devs.com"},{"name":"khaliq","email":"alikhaliq66@gmail.com"}],"readme":"# @41devs/naya-id-angular\n\nSDK Angular officiel de **[Naya ID](https://naya.41devs.com)** — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest.\n\nUn service injectable, un appel : consentement, capture guidée du document, selfie avec **défi de vivacité imposé par le serveur**, confirmation des données lues, décision expliquée — puis un `NayaResult` typé.\n\n**Pays** : Bénin, Côte d'Ivoire, Sénégal, Mali, Burkina Faso, Togo.\n**Documents** : CNI (CEDEAO), CIP (Bénin), passeport, permis de conduire.\n**Langues** : français, anglais, portugais.\n\n## Comment c'est construit\n\nLe parcours est celui du SDK navigateur [`@41devs/naya-id-js`](https://www.npmjs.com/package/@41devs/naya-id-js) : **une seule implémentation**, partagée avec les intégrations sans framework. Cette bibliothèque y ajoute ce qu'attend une application Angular :\n\n- **injection** — un service `providedIn: 'root'`, testable et remplaçable ;\n- **chargement différé** — le SDK n'entre pas dans le bundle initial (voir plus bas) ;\n- **zone Angular** — le parcours tourne hors zone, sans quoi le flux caméra déclencherait une détection de changements à chaque trame ; vos rappels y sont ramenés, donc signaux et vues se mettent à jour normalement ;\n- **rendu serveur** — sans `document`, le service rend une erreur typée au lieu de lever.\n\nConséquence utile : les correctifs et les nouveautés du parcours arrivent chez vous au prochain `npm update`, sans publication de cette bibliothèque.\n\n## Installation\n\n```bash\nnpm install @41devs/naya-id-angular\n```\n\n`@41devs/naya-id-js` est installé automatiquement. Angular 19 ou 20.\n\n## Utilisation\n\n### Session ouverte par votre backend (production)\n\nVotre serveur ouvre la vérification avec sa clé d'API — qui ne quitte jamais le serveur — puis ne confie au navigateur que `verificationId` et `sessionToken`.\n\n```ts\nimport { Component, inject, signal } from '@angular/core';\nimport { NayaIdService, type NayaResult } from '@41devs/naya-id-angular';\n\n@Component({ /* … */ })\nexport class KycComponent {\n  private readonly naya = inject(NayaIdService);\n  readonly result = signal<NayaResult | null>(null);\n\n  async verify(session: { verificationId: string; sessionToken: string }) {\n    this.result.set(\n      await this.naya.startVerification({\n        auth: session,\n        config: { locale: 'fr' },\n      }),\n    );\n  }\n}\n```\n\n### Clé de test (démo)\n\n```ts\nawait this.naya.startVerification({\n  auth: { apiKey: 'naya_test_xxx' },\n  config: { country: 'BJ', documentTypes: ['cni'] },\n});\n```\n\nUne clé **live** utilisée depuis un navigateur doit déclarer ses origines dans le dashboard, sinon l'API répond `403`. Préférez la session serveur.\n\n### Instance réutilisable\n\n```ts\nconst verification = await this.naya.create({ auth, config });\nverification.on('step', (e) => console.log(e));\nconst result = await verification.open();\nverification.destroy();\n```\n\n### Résultat\n\n`startVerification` **ne rejette jamais** : annulation et erreurs reviennent dans le `NayaResult`.\n\n```ts\nswitch (result.status) {\n  case 'approved': break;   // result.riskScore, result.ocrData…\n  case 'review':   break;   // décision finale notifiée sur callbackUrl\n  case 'rejected': break;   // result.reasonCodes\n  case 'cancelled': break;\n  case 'error':    break;   // result.errorCode, result.requestId\n}\n```\n\nNe vous fiez jamais au résultat rendu par le navigateur pour décider : seul le webhook (ou `GET /verifications/:id` avec votre clé) fait foi.\n\n## Configuration\n\n`config` est le `NayaConfig` du SDK navigateur — pays, documents, langue, consentement, confirmation des données lues, capture, vivacité, relais QR, thème, libellés surchargeables, télémétrie, `onEvent`. La liste complète et à jour est dans la [documentation du SDK navigateur](https://www.npmjs.com/package/@41devs/naya-id-js).\n\nUtile côté Angular :\n\n```ts\nconfig: {\n  container: this.host.nativeElement,   // monte le parcours dans votre page\n  theme: { primaryColor: '#172062', mode: 'auto', radius: 'soft' },\n  strings: { welcomeTitle: 'Vérifions votre identité' },\n  onEvent: (e) => this.analytics.track(e.type),  // rappelé dans la zone Angular\n}\n```\n\n## Pourquoi la bibliothèque n'exporte que des types\n\n`public-api.ts` réexporte les **types** du SDK navigateur, jamais de valeurs. Une constante ou une fonction réexportée placerait le SDK dans le graphe statique du module, et donc dans le bundle **initial** de votre application : mesuré sur l'application de démonstration, **308 ko au lieu de 154 ko**, soit 39 ko de transfert supplémentaires chargés par tous vos visiteurs, y compris ceux qui ne lancent jamais de vérification.\n\nLes types disparaissent à la compilation : ils ne coûtent rien. Pour les rares valeurs utiles à un hôte, le service expose des accesseurs asynchrones :\n\n```ts\nconst countries = await this.naya.countries();   // sélecteur maison\nconst support = await this.naya.isSupported();   // avant d'ouvrir\n```\n\nDans la plupart des cas vous n'en avez pas besoin : `config` accepte directement les codes (`country: 'BJ'`), typés par `NayaCountryCode`.\n\n## Rendu serveur (SSR)\n\nLe service détecte l'absence de navigateur (`PLATFORM_ID`) et rend un `NayaResult` en erreur `unsupported_browser` au lieu de lever. Le SDK n'est jamais importé côté serveur, puisque l'import est différé au premier lancement.\n\n## Vérifier la compatibilité du navigateur\n\n```ts\nconst s = await this.naya.isSupported();\nif (!s.ok) {\n  // s.code : in_app_browser | insecure_context | unsupported_browser\n}\n```\n\n## Démonstration\n\n`projects/demo` contient une application avec tous les réglages du parcours.\n\n```bash\nnpm start\n```\n\n## Licence\n\nVoir `LICENSE`.\n","readmeFilename":"README.md"}