facecog-liveness-showcase 0.0.1

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.
Files changed (229) hide show
  1. package/.browserslistrc +15 -0
  2. package/.dockerignore +48 -0
  3. package/.editorconfig +16 -0
  4. package/.eslintrc.json +47 -0
  5. package/.vercelignore +7 -0
  6. package/.vscode/extensions.json +5 -0
  7. package/.vscode/settings.json +3 -0
  8. package/DOCKER.md +221 -0
  9. package/Dockerfile +33 -0
  10. package/README.md +268 -0
  11. package/angular.json +156 -0
  12. package/capacitor.config.ts +9 -0
  13. package/docker-compose.dev.yml +20 -0
  14. package/docker-compose.yml +18 -0
  15. package/ionic.config.json +7 -0
  16. package/jest.config.js +38 -0
  17. package/nginx.conf +50 -0
  18. package/package.json +131 -0
  19. package/patches/ng-packagr+20.3.2.patch +60 -0
  20. package/projects/facecog-liveness-verification/README.md +295 -0
  21. package/projects/facecog-liveness-verification/ng-package.json +7 -0
  22. package/projects/facecog-liveness-verification/package.json +48 -0
  23. package/projects/facecog-liveness-verification/scripts/build-with-wrapper-copy.js +38 -0
  24. package/projects/facecog-liveness-verification/scripts/copy-wrapper-after-ngc.js +35 -0
  25. package/projects/facecog-liveness-verification/sources/FaceLivenessReactWrapper.tsx +320 -0
  26. package/projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.d.ts +28 -0
  27. package/projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.js +247 -0
  28. package/projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.js.map +1 -0
  29. package/projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.js.map +1 -0
  30. package/projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.ts +5 -0
  31. package/projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/aws-face-liveness.component.ts +500 -0
  32. package/projects/facecog-liveness-verification/src/lib/components/camera-permission/camera-permission.component.html +41 -0
  33. package/projects/facecog-liveness-verification/src/lib/components/camera-permission/camera-permission.component.scss +234 -0
  34. package/projects/facecog-liveness-verification/src/lib/components/camera-permission/camera-permission.component.spec.ts +158 -0
  35. package/projects/facecog-liveness-verification/src/lib/components/camera-permission/camera-permission.component.ts +58 -0
  36. package/projects/facecog-liveness-verification/src/lib/components/camera-verification/camera-verification.component.html +34 -0
  37. package/projects/facecog-liveness-verification/src/lib/components/camera-verification/camera-verification.component.ts +210 -0
  38. package/projects/facecog-liveness-verification/src/lib/components/dialogs/save-custom-pose-dialog.component.ts +174 -0
  39. package/projects/facecog-liveness-verification/src/lib/components/facetec-scan/facetec-scan.component.html +45 -0
  40. package/projects/facecog-liveness-verification/src/lib/components/facetec-scan/facetec-scan.component.scss +87 -0
  41. package/projects/facecog-liveness-verification/src/lib/components/facetec-scan/facetec-scan.component.ts +182 -0
  42. package/projects/facecog-liveness-verification/src/lib/components/intro/intro.component.html +394 -0
  43. package/projects/facecog-liveness-verification/src/lib/components/intro/intro.component.scss +1567 -0
  44. package/projects/facecog-liveness-verification/src/lib/components/intro/intro.component.spec.ts +699 -0
  45. package/projects/facecog-liveness-verification/src/lib/components/intro/intro.component.ts +721 -0
  46. package/projects/facecog-liveness-verification/src/lib/components/live-preview/live-preview.component.html +120 -0
  47. package/projects/facecog-liveness-verification/src/lib/components/live-preview/live-preview.component.scss +611 -0
  48. package/projects/facecog-liveness-verification/src/lib/components/live-preview/live-preview.component.spec.ts +605 -0
  49. package/projects/facecog-liveness-verification/src/lib/components/live-preview/live-preview.component.ts +524 -0
  50. package/projects/facecog-liveness-verification/src/lib/components/liveness-flow/liveness-flow.component.html +73 -0
  51. package/projects/facecog-liveness-verification/src/lib/components/liveness-flow/liveness-flow.component.scss +19 -0
  52. package/projects/facecog-liveness-verification/src/lib/components/liveness-flow/liveness-flow.component.spec.ts +673 -0
  53. package/projects/facecog-liveness-verification/src/lib/components/liveness-flow/liveness-flow.component.ts +963 -0
  54. package/projects/facecog-liveness-verification/src/lib/components/liveness-verification/liveness-verification.component.html +38 -0
  55. package/projects/facecog-liveness-verification/src/lib/components/liveness-verification/liveness-verification.component.scss +10 -0
  56. package/projects/facecog-liveness-verification/src/lib/components/liveness-verification/liveness-verification.component.ts +233 -0
  57. package/projects/facecog-liveness-verification/src/lib/components/pose-selection/pose-selection.component.html +17 -0
  58. package/projects/facecog-liveness-verification/src/lib/components/pose-selection/pose-selection.component.spec.ts +35 -0
  59. package/projects/facecog-liveness-verification/src/lib/components/pose-selection/pose-selection.component.ts +33 -0
  60. package/projects/facecog-liveness-verification/src/lib/components/processing/processing.component.html +17 -0
  61. package/projects/facecog-liveness-verification/src/lib/components/processing/processing.component.scss +156 -0
  62. package/projects/facecog-liveness-verification/src/lib/components/processing/processing.component.spec.ts +46 -0
  63. package/projects/facecog-liveness-verification/src/lib/components/processing/processing.component.ts +18 -0
  64. package/projects/facecog-liveness-verification/src/lib/components/verification-result/verification-result.component.html +190 -0
  65. package/projects/facecog-liveness-verification/src/lib/components/verification-result/verification-result.component.scss +534 -0
  66. package/projects/facecog-liveness-verification/src/lib/components/verification-result/verification-result.component.spec.ts +286 -0
  67. package/projects/facecog-liveness-verification/src/lib/components/verification-result/verification-result.component.ts +155 -0
  68. package/projects/facecog-liveness-verification/src/lib/interfaces/analyze-response.interface.ts +16 -0
  69. package/projects/facecog-liveness-verification/src/lib/interfaces/aws-face-liveness.interface.ts +46 -0
  70. package/projects/facecog-liveness-verification/src/lib/interfaces/backend-adapter.interface.ts +21 -0
  71. package/projects/facecog-liveness-verification/src/lib/interfaces/backend-http-client.interface.ts +93 -0
  72. package/projects/facecog-liveness-verification/src/lib/interfaces/backend-response.interface.ts +9 -0
  73. package/projects/facecog-liveness-verification/src/lib/interfaces/camera-provider.interface.ts +107 -0
  74. package/projects/facecog-liveness-verification/src/lib/interfaces/category-info.interface.ts +9 -0
  75. package/projects/facecog-liveness-verification/src/lib/interfaces/custom-pose-data.interface.ts +14 -0
  76. package/projects/facecog-liveness-verification/src/lib/interfaces/custom-pose-repository.interface.ts +48 -0
  77. package/projects/facecog-liveness-verification/src/lib/interfaces/custom-pose-response.interface.ts +14 -0
  78. package/projects/facecog-liveness-verification/src/lib/interfaces/index.ts +52 -0
  79. package/projects/facecog-liveness-verification/src/lib/interfaces/liveness-action-result.interface.ts +13 -0
  80. package/projects/facecog-liveness-verification/src/lib/interfaces/liveness-config.interface.ts +17 -0
  81. package/projects/facecog-liveness-verification/src/lib/interfaces/liveness-metadata.interface.ts +17 -0
  82. package/projects/facecog-liveness-verification/src/lib/interfaces/liveness-result.interface.ts +24 -0
  83. package/projects/facecog-liveness-verification/src/lib/interfaces/liveness-verification-config.interface.ts +41 -0
  84. package/projects/facecog-liveness-verification/src/lib/interfaces/multi-backend-analyze-response.interface.ts +21 -0
  85. package/projects/facecog-liveness-verification/src/lib/interfaces/multi-backend-liveness-result.interface.ts +14 -0
  86. package/projects/facecog-liveness-verification/src/lib/interfaces/pose-definition.interface.ts +35 -0
  87. package/projects/facecog-liveness-verification/src/lib/interfaces/pose-keypoint.interface.ts +12 -0
  88. package/projects/facecog-liveness-verification/src/lib/interfaces/pose-match-result.interface.ts +9 -0
  89. package/projects/facecog-liveness-verification/src/lib/interfaces/pose-verify-response.interface.ts +8 -0
  90. package/projects/facecog-liveness-verification/src/lib/interfaces/scan-results.interface.ts +29 -0
  91. package/projects/facecog-liveness-verification/src/lib/interfaces/verification-plan.interface.ts +42 -0
  92. package/projects/facecog-liveness-verification/src/lib/interfaces/verification-progress-event.interface.ts +12 -0
  93. package/projects/facecog-liveness-verification/src/lib/interfaces/verification-session.interface.ts +72 -0
  94. package/projects/facecog-liveness-verification/src/lib/interfaces/verification-step-change-event.interface.ts +11 -0
  95. package/projects/facecog-liveness-verification/src/lib/interfaces/video-recording.interface.ts +9 -0
  96. package/projects/facecog-liveness-verification/src/lib/liveness-verification.module.ts +123 -0
  97. package/projects/facecog-liveness-verification/src/lib/models/constants/aws-face-liveness-component.token.ts +23 -0
  98. package/projects/facecog-liveness-verification/src/lib/models/constants/category-info.constant.ts +14 -0
  99. package/projects/facecog-liveness-verification/src/lib/models/constants/default-liveness-config.constant.ts +18 -0
  100. package/projects/facecog-liveness-verification/src/lib/models/constants/index.ts +5 -0
  101. package/projects/facecog-liveness-verification/src/lib/models/constants/liveness-verification-config.token.ts +16 -0
  102. package/projects/facecog-liveness-verification/src/lib/models/constants/pose-definitions.constant.ts +377 -0
  103. package/projects/facecog-liveness-verification/src/lib/models/index.ts +5 -0
  104. package/projects/facecog-liveness-verification/src/lib/models/utils/index.ts +2 -0
  105. package/projects/facecog-liveness-verification/src/lib/models/utils/pose.utils.spec.ts +76 -0
  106. package/projects/facecog-liveness-verification/src/lib/models/utils/pose.utils.ts +59 -0
  107. package/projects/facecog-liveness-verification/src/lib/services/aws-face-liveness.service.ts +49 -0
  108. package/projects/facecog-liveness-verification/src/lib/services/backend-http.service.spec.ts +111 -0
  109. package/projects/facecog-liveness-verification/src/lib/services/backend-http.service.ts +130 -0
  110. package/projects/facecog-liveness-verification/src/lib/services/backends/azure-backend.service.spec.ts +69 -0
  111. package/projects/facecog-liveness-verification/src/lib/services/backends/azure-backend.service.ts +72 -0
  112. package/projects/facecog-liveness-verification/src/lib/services/backends/facetec-backend.service.spec.ts +24 -0
  113. package/projects/facecog-liveness-verification/src/lib/services/backends/facetec-backend.service.ts +35 -0
  114. package/projects/facecog-liveness-verification/src/lib/services/backends/mock-backend.service.spec.ts +36 -0
  115. package/projects/facecog-liveness-verification/src/lib/services/backends/mock-backend.service.ts +39 -0
  116. package/projects/facecog-liveness-verification/src/lib/services/backends/openpose-backend.service.spec.ts +81 -0
  117. package/projects/facecog-liveness-verification/src/lib/services/backends/openpose-backend.service.ts +72 -0
  118. package/projects/facecog-liveness-verification/src/lib/services/backends/rekognition-analysis-backend.service.spec.ts +69 -0
  119. package/projects/facecog-liveness-verification/src/lib/services/backends/rekognition-analysis-backend.service.ts +83 -0
  120. package/projects/facecog-liveness-verification/src/lib/services/camera.service.spec.ts +200 -0
  121. package/projects/facecog-liveness-verification/src/lib/services/camera.service.ts +155 -0
  122. package/projects/facecog-liveness-verification/src/lib/services/custom-poses-api.service.ts +117 -0
  123. package/projects/facecog-liveness-verification/src/lib/services/index.ts +18 -0
  124. package/projects/facecog-liveness-verification/src/lib/services/liveness-backend.service.spec.ts +103 -0
  125. package/projects/facecog-liveness-verification/src/lib/services/liveness-backend.service.ts +61 -0
  126. package/projects/facecog-liveness-verification/src/lib/services/liveness-config.service.spec.ts +109 -0
  127. package/projects/facecog-liveness-verification/src/lib/services/liveness-config.service.ts +70 -0
  128. package/projects/facecog-liveness-verification/src/lib/services/liveness-orchestrator.service.spec.ts +144 -0
  129. package/projects/facecog-liveness-verification/src/lib/services/liveness-orchestrator.service.ts +162 -0
  130. package/projects/facecog-liveness-verification/src/lib/services/pose-detection/hand-gesture-detection.service.ts +315 -0
  131. package/projects/facecog-liveness-verification/src/lib/services/pose-detection/index.ts +5 -0
  132. package/projects/facecog-liveness-verification/src/lib/services/pose-detection/openpose.service.ts +287 -0
  133. package/projects/facecog-liveness-verification/src/lib/services/pose-detection/pose-comparison.service.ts +353 -0
  134. package/projects/facecog-liveness-verification/src/lib/services/pose-detection/pose-matching.service.ts +2370 -0
  135. package/projects/facecog-liveness-verification/src/lib/services/pose-detection/reference-pose.service.ts +271 -0
  136. package/projects/facecog-liveness-verification/src/lib/services/pose-selection.service.spec.ts +183 -0
  137. package/projects/facecog-liveness-verification/src/lib/services/pose-selection.service.ts +179 -0
  138. package/projects/facecog-liveness-verification/src/lib/services/verification-api.service.spec.ts +159 -0
  139. package/projects/facecog-liveness-verification/src/lib/services/verification-api.service.ts +151 -0
  140. package/projects/facecog-liveness-verification/src/lib/services/verification-plan.service.spec.ts +184 -0
  141. package/projects/facecog-liveness-verification/src/lib/services/verification-plan.service.ts +94 -0
  142. package/projects/facecog-liveness-verification/src/lib/services/video-recorder.service.spec.ts +52 -0
  143. package/projects/facecog-liveness-verification/src/lib/services/video-recorder.service.ts +117 -0
  144. package/projects/facecog-liveness-verification/src/lib/types/detection-strategy.type.ts +5 -0
  145. package/projects/facecog-liveness-verification/src/lib/types/index.ts +7 -0
  146. package/projects/facecog-liveness-verification/src/lib/types/liveness-action.type.ts +31 -0
  147. package/projects/facecog-liveness-verification/src/lib/types/liveness-backend.type.ts +5 -0
  148. package/projects/facecog-liveness-verification/src/lib/types/pose-category.type.ts +5 -0
  149. package/projects/facecog-liveness-verification/src/lib/types/pose-difficulty.type.ts +5 -0
  150. package/projects/facecog-liveness-verification/src/lib/types/verification-flow-step.type.ts +5 -0
  151. package/projects/facecog-liveness-verification/src/lib/types/verification-step-kind.type.ts +4 -0
  152. package/projects/facecog-liveness-verification/src/public-api.ts +150 -0
  153. package/projects/facecog-liveness-verification/tsconfig.lib.json +20 -0
  154. package/projects/facecog-liveness-verification/tsconfig.lib.prod.json +11 -0
  155. package/projects/facecog-liveness-verification/tsconfig.spec.json +13 -0
  156. package/projects/facecog-liveness-verification/tsconfig.wrapper.json +15 -0
  157. package/projects/facecog-liveness-verification-test/src/app/app-routing.module.ts +22 -0
  158. package/projects/facecog-liveness-verification-test/src/app/app.component.html +3 -0
  159. package/projects/facecog-liveness-verification-test/src/app/app.component.scss +0 -0
  160. package/projects/facecog-liveness-verification-test/src/app/app.component.ts +11 -0
  161. package/projects/facecog-liveness-verification-test/src/app/app.module.ts +27 -0
  162. package/projects/facecog-liveness-verification-test/src/app/home/home-routing.module.ts +16 -0
  163. package/projects/facecog-liveness-verification-test/src/app/home/home.module.ts +19 -0
  164. package/projects/facecog-liveness-verification-test/src/app/home/home.page.html +39 -0
  165. package/projects/facecog-liveness-verification-test/src/app/home/home.page.scss +97 -0
  166. package/projects/facecog-liveness-verification-test/src/app/home/home.page.spec.ts +24 -0
  167. package/projects/facecog-liveness-verification-test/src/app/home/home.page.ts +92 -0
  168. package/projects/facecog-liveness-verification-test/src/app/home/verification-modal.component.ts +106 -0
  169. package/projects/facecog-liveness-verification-test/src/assets/fonts/gilroy/Gilroy-Bold_0.ttf +0 -0
  170. package/projects/facecog-liveness-verification-test/src/assets/fonts/gilroy/Gilroy-Medium_0.ttf +0 -0
  171. package/projects/facecog-liveness-verification-test/src/assets/fonts/gilroy/Gilroy-Regular_0.ttf +0 -0
  172. package/projects/facecog-liveness-verification-test/src/assets/fonts/gilroy/Gilroy-SemiBold_0.ttf +0 -0
  173. package/projects/facecog-liveness-verification-test/src/assets/fonts/gilroy/Gilroy-Thin_0.ttf +0 -0
  174. package/projects/facecog-liveness-verification-test/src/assets/icon/favicon.png +0 -0
  175. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Five_Fingers_Left.jpg +0 -0
  176. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Left_Palm.jpg +0 -0
  177. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Ok_Sign_Right.jpg +0 -0
  178. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Peace_Sign_Left.jpg +0 -0
  179. package/projects/facecog-liveness-verification-test/src/assets/images/poses/README.md +77 -0
  180. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Right_Palm.jpg +0 -0
  181. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Speak_Phrase.jpg +0 -0
  182. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Three_Fingers_Right.jpg +0 -0
  183. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Thumbs_Up_Left.jpg +0 -0
  184. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Thumbs_Up_Right.jpg +0 -0
  185. package/projects/facecog-liveness-verification-test/src/assets/images/poses/Wave_Right.jpg +0 -0
  186. package/projects/facecog-liveness-verification-test/src/assets/images/poses/blink.jpeg +0 -0
  187. package/projects/facecog-liveness-verification-test/src/assets/images/poses/blink_twice.jpeg +0 -0
  188. package/projects/facecog-liveness-verification-test/src/assets/images/poses/center_face.png +0 -0
  189. package/projects/facecog-liveness-verification-test/src/assets/images/poses/clap.jpeg +0 -0
  190. package/projects/facecog-liveness-verification-test/src/assets/images/poses/cover_mouth.png +0 -0
  191. package/projects/facecog-liveness-verification-test/src/assets/images/poses/cover_right_eye.png +0 -0
  192. package/projects/facecog-liveness-verification-test/src/assets/images/poses/cross_arms.png +0 -0
  193. package/projects/facecog-liveness-verification-test/src/assets/images/poses/face_straight.png +0 -0
  194. package/projects/facecog-liveness-verification-test/src/assets/images/poses/follow_dot.png +0 -0
  195. package/projects/facecog-liveness-verification-test/src/assets/images/poses/look_down.png +0 -0
  196. package/projects/facecog-liveness-verification-test/src/assets/images/poses/look_up.png +0 -0
  197. package/projects/facecog-liveness-verification-test/src/assets/images/poses/move_closer.png +0 -0
  198. package/projects/facecog-liveness-verification-test/src/assets/images/poses/nod.png +0 -0
  199. package/projects/facecog-liveness-verification-test/src/assets/images/poses/open_mouth.png +0 -0
  200. package/projects/facecog-liveness-verification-test/src/assets/images/poses/raise_eyebrow.png +0 -0
  201. package/projects/facecog-liveness-verification-test/src/assets/images/poses/rotate_face.jpeg +0 -0
  202. package/projects/facecog-liveness-verification-test/src/assets/images/poses/shake_head.jpeg +0 -0
  203. package/projects/facecog-liveness-verification-test/src/assets/images/poses/smile.png +0 -0
  204. package/projects/facecog-liveness-verification-test/src/assets/images/poses/tilt_left.png +0 -0
  205. package/projects/facecog-liveness-verification-test/src/assets/images/poses/tilt_right.png +0 -0
  206. package/projects/facecog-liveness-verification-test/src/assets/images/poses/touch_chin_left.jpg +0 -0
  207. package/projects/facecog-liveness-verification-test/src/assets/images/poses/touch_left_cheek.jpeg +0 -0
  208. package/projects/facecog-liveness-verification-test/src/assets/images/poses/touch_nose_right.png +0 -0
  209. package/projects/facecog-liveness-verification-test/src/assets/images/poses/touch_right_cheek.jpeg +0 -0
  210. package/projects/facecog-liveness-verification-test/src/assets/images/poses/turn_left.png +0 -0
  211. package/projects/facecog-liveness-verification-test/src/assets/images/poses/turn_right.png +0 -0
  212. package/projects/facecog-liveness-verification-test/src/assets/images/poses/wink.jpeg +0 -0
  213. package/projects/facecog-liveness-verification-test/src/assets/images/reference-pose.jpg +0 -0
  214. package/projects/facecog-liveness-verification-test/src/assets/shapes.svg +1 -0
  215. package/projects/facecog-liveness-verification-test/src/environments/environment.prod.ts +4 -0
  216. package/projects/facecog-liveness-verification-test/src/environments/environment.ts +17 -0
  217. package/projects/facecog-liveness-verification-test/src/global.scss +288 -0
  218. package/projects/facecog-liveness-verification-test/src/index.html +31 -0
  219. package/projects/facecog-liveness-verification-test/src/main.ts +6 -0
  220. package/projects/facecog-liveness-verification-test/src/polyfills.ts +55 -0
  221. package/projects/facecog-liveness-verification-test/src/theme/nextsapien-theme.scss +174 -0
  222. package/projects/facecog-liveness-verification-test/src/theme/variables.scss +2 -0
  223. package/projects/facecog-liveness-verification-test/src/zone-flags.ts +6 -0
  224. package/projects/facecog-liveness-verification-test/tsconfig.app.json +15 -0
  225. package/projects/facecog-liveness-verification-test/tsconfig.spec.json +14 -0
  226. package/setup-jest.ts +118 -0
  227. package/tsconfig.json +41 -0
  228. package/tsconfig.spec.json +15 -0
  229. package/vercel.json +24 -0
@@ -0,0 +1,295 @@
1
+ # @naniteninja/liveness-verification
2
+
3
+ Angular library for liveness verification with pose detection and multi-backend support.
4
+
5
+ ## Features
6
+
7
+ - **40+ Predefined Poses**: Face expressions, head movements, hand gestures, and combined poses
8
+ - **Multi-Backend Support**: Amazon Rekognition, FaceTec, OpenPose, Azure, and Mock backends
9
+ - **Configurable**: Extensive configuration options for customization
10
+ - **Standalone Components**: Works with Angular 14+ standalone components
11
+ - **Observable API**: RxJS-based API for reactive programming
12
+ - **Ionic Integration**: Built-in Ionic components for mobile-first UI
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install @naniteninja/liveness-verification
18
+ ```
19
+
20
+ ## Peer Dependencies
21
+
22
+ ```bash
23
+ npm install @angular/common @angular/core @angular/forms @ionic/angular rxjs
24
+ ```
25
+
26
+ ## Quick Start
27
+
28
+ ### Module-based Usage
29
+
30
+ ```typescript
31
+ import { LivenessVerificationModule } from '@naniteninja/liveness-verification';
32
+
33
+ @NgModule({
34
+ imports: [
35
+ LivenessVerificationModule.forRoot({
36
+ apiUrl: 'https://api.example.com',
37
+ backends: ['amazon', 'facetec'],
38
+ maxRetries: 3
39
+ })
40
+ ]
41
+ })
42
+ export class AppModule {}
43
+ ```
44
+
45
+ ### Standalone Usage
46
+
47
+ ```typescript
48
+ import { provideLivenessVerification } from '@naniteninja/liveness-verification';
49
+
50
+ bootstrapApplication(AppComponent, {
51
+ providers: [
52
+ provideLivenessVerification({
53
+ apiUrl: 'https://api.example.com',
54
+ backends: ['mock']
55
+ })
56
+ ]
57
+ });
58
+ ```
59
+
60
+ ### Template Usage
61
+
62
+ ```html
63
+ <facecog-liveness-verification
64
+ [pose]="5"
65
+ (verificationComplete)="onComplete($event)"
66
+ (verificationError)="onError($event)">
67
+ </facecog-liveness-verification>
68
+ ```
69
+
70
+ ## Library Structure
71
+
72
+ ```
73
+ src/lib/
74
+ ├── models/
75
+ │ ├── types/ # Type definitions (one per file)
76
+ │ │ ├── liveness-backend.type.ts
77
+ │ │ ├── verification-flow-step.type.ts
78
+ │ │ ├── liveness-action.type.ts
79
+ │ │ ├── pose-category.type.ts
80
+ │ │ ├── pose-difficulty.type.ts
81
+ │ │ ├── detection-strategy.type.ts
82
+ │ │ └── index.ts
83
+ │ │
84
+ │ ├── interfaces/ # Interface definitions (one per file)
85
+ │ │ ├── liveness-verification-config.interface.ts
86
+ │ │ ├── verification-step-change-event.interface.ts
87
+ │ │ ├── verification-progress-event.interface.ts
88
+ │ │ ├── liveness-result.interface.ts
89
+ │ │ ├── pose-definition.interface.ts
90
+ │ │ ├── ... (14 more interfaces)
91
+ │ │ └── index.ts
92
+ │ │
93
+ │ ├── constants/ # Constant values
94
+ │ │ ├── default-liveness-config.constant.ts
95
+ │ │ ├── liveness-verification-config.token.ts
96
+ │ │ ├── pose-definitions.constant.ts
97
+ │ │ ├── category-info.constant.ts
98
+ │ │ └── index.ts
99
+ │ │
100
+ │ ├── utils/ # Utility functions
101
+ │ │ ├── pose.utils.ts
102
+ │ │ └── index.ts
103
+ │ │
104
+ │ └── index.ts # Barrel export
105
+
106
+ ├── services/
107
+ │ ├── backends/
108
+ │ │ ├── backend-adapter.interface.ts
109
+ │ │ └── mock-backend.service.ts
110
+ │ ├── camera.service.ts
111
+ │ ├── liveness-config.service.ts
112
+ │ ├── pose-selection.service.ts
113
+ │ ├── video-recorder.service.ts
114
+ │ └── index.ts
115
+
116
+ ├── liveness-verification.component.ts
117
+ ├── liveness-verification.module.ts
118
+ └── public-api.ts
119
+ ```
120
+
121
+ ## Types
122
+
123
+ ```typescript
124
+ import {
125
+ LivenessBackend, // 'amazon' | 'openpose' | 'facetec' | 'azure' | 'mock'
126
+ VerificationFlowStep, // 'intro' | 'permission' | 'preview' | 'facetec' | 'processing' | 'result'
127
+ LivenessAction, // 'blink' | 'smile' | 'turn-left' | ... (26 actions)
128
+ PoseCategory, // 'face' | 'head' | 'hand' | 'gesture' | 'combined'
129
+ PoseDifficulty, // 'easy' | 'medium' | 'hard'
130
+ DetectionStrategy // 'face-api' | 'openpose' | 'combined'
131
+ } from '@naniteninja/liveness-verification';
132
+ ```
133
+
134
+ ## Interfaces
135
+
136
+ ```typescript
137
+ import {
138
+ LivenessVerificationConfig, // Main configuration interface
139
+ LivenessResult, // Verification result
140
+ PoseDefinition, // Pose definition
141
+ VerificationStepChangeEvent, // Step change event
142
+ VerificationProgressEvent, // Progress event
143
+ BackendResponse, // Backend response
144
+ // ... and more
145
+ } from '@naniteninja/liveness-verification';
146
+ ```
147
+
148
+ ## Constants
149
+
150
+ ```typescript
151
+ import {
152
+ DEFAULT_LIVENESS_CONFIG, // Default configuration object
153
+ LIVENESS_VERIFICATION_CONFIG, // Injection token
154
+ POSE_DEFINITIONS, // Array of 40 poses
155
+ CATEGORY_INFO // Category display info
156
+ } from '@naniteninja/liveness-verification';
157
+ ```
158
+
159
+ ## Utility Functions
160
+
161
+ ```typescript
162
+ import {
163
+ getPoseById, // Get pose by ID (1-40)
164
+ getPosesByCategory, // Filter poses by category
165
+ getPosesByDifficulty // Filter poses by difficulty
166
+ } from '@naniteninja/liveness-verification';
167
+ ```
168
+
169
+ ## Services
170
+
171
+ ### PoseSelectionService
172
+
173
+ ```typescript
174
+ import { PoseSelectionService } from '@naniteninja/liveness-verification';
175
+
176
+ @Component({ ... })
177
+ export class MyComponent {
178
+ constructor(private poseSelection: PoseSelectionService) {}
179
+
180
+ selectPose(id: number) {
181
+ this.poseSelection.selectPose(id);
182
+ }
183
+
184
+ getRandomPose() {
185
+ return this.poseSelection.getRandomPose();
186
+ }
187
+ }
188
+ ```
189
+
190
+ ### LivenessConfigService
191
+
192
+ ```typescript
193
+ import { LivenessConfigService } from '@naniteninja/liveness-verification';
194
+
195
+ @Component({ ... })
196
+ export class MyComponent {
197
+ constructor(private configService: LivenessConfigService) {}
198
+
199
+ updateConfig() {
200
+ this.configService.updateConfig({
201
+ maxRetries: 5,
202
+ similarityThreshold: 0.7
203
+ });
204
+ }
205
+ }
206
+ ```
207
+
208
+ ## Configuration Options
209
+
210
+ | Property | Type | Default | Description |
211
+ |----------|------|---------|-------------|
212
+ | `apiUrl` | `string` | `'http://localhost:3002'` | Backend API URL |
213
+ | `backends` | `LivenessBackend[]` | `['mock']` | Backends to use |
214
+ | `poseId` | `number` | `undefined` | Predefined pose ID (1-40) |
215
+ | `maxRetries` | `number` | `3` | Maximum retry attempts |
216
+ | `autoCapture` | `boolean` | `true` | Auto-capture when pose matches |
217
+ | `enableVideoRecording` | `boolean` | `true` | Record video |
218
+ | `similarityThreshold` | `number` | `0.62` | Pose matching threshold |
219
+
220
+ ## Available Poses
221
+
222
+ ### Face Expressions (1-6)
223
+ Face Straight, Blink Once, Blink Twice, Open Mouth, Smile, Raise Eyebrows
224
+
225
+ ### Head Movements (7-14)
226
+ Turn Left, Turn Right, Look Up, Look Down, Tilt Left, Tilt Right, Nod, Shake Head
227
+
228
+ ### Eye & Face Tracking (15-20)
229
+ Follow Dot, Wink, Move Closer, Speak Phrase, Rotate Face, Center Face
230
+
231
+ ### Hand Gestures (21-29)
232
+ Right Palm, Left Palm, Wave Right, Thumbs Up (R/L), OK Sign, Peace Sign, Three Fingers, Five Fingers
233
+
234
+ ### Combined Poses (30-40)
235
+ Touch Nose, Touch Chin, Touch Cheek (R/L), Cover Eye, Cover Mouth, Frame Face, Cross Arms, Clap, Point
236
+
237
+ ## Events
238
+
239
+ ```typescript
240
+ interface LivenessResult {
241
+ success: boolean;
242
+ confidence: number;
243
+ verifiedImage: string;
244
+ videoBlob?: Blob;
245
+ metadata: LivenessMetadata;
246
+ error?: string;
247
+ }
248
+
249
+ interface VerificationStepChangeEvent {
250
+ step: VerificationFlowStep;
251
+ previousStep?: VerificationFlowStep;
252
+ timestamp: Date;
253
+ }
254
+
255
+ interface VerificationProgressEvent {
256
+ step: VerificationFlowStep;
257
+ progress: number; // 0-100
258
+ message: string;
259
+ }
260
+ ```
261
+
262
+ ## Push Notification Integration
263
+
264
+ ```typescript
265
+ import { PoseSelectionService, LivenessConfigService } from '@naniteninja/liveness-verification';
266
+
267
+ @Component({ ... })
268
+ export class AppComponent {
269
+ showVerification = false;
270
+
271
+ constructor(
272
+ private poseSelection: PoseSelectionService,
273
+ private configService: LivenessConfigService
274
+ ) {
275
+ this.pushService.onNotification.subscribe(notification => {
276
+ if (notification.type === 'verification_required') {
277
+ this.poseSelection.selectPose(notification.poseId);
278
+ this.configService.updateConfig({ showIntroScreen: false });
279
+ this.showVerification = true;
280
+ }
281
+ });
282
+ }
283
+
284
+ onComplete(result: LivenessResult) {
285
+ this.showVerification = false;
286
+ if (result.success) {
287
+ this.sendToBackend(result);
288
+ }
289
+ }
290
+ }
291
+ ```
292
+
293
+ ## License
294
+
295
+ MIT
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/naniteninjas-liveness-verification",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ }
7
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@naniteninja/liveness-verification",
3
+ "version": "1.10.0",
4
+ "description": "Angular library for liveness verification with pose detection and multi-backend support",
5
+ "author": "NaniteNinjas",
6
+ "repository": {
7
+ "type": "git"
8
+ },
9
+ "publishConfig": {
10
+ "access": "restricted"
11
+ },
12
+ "keywords": [
13
+ "angular",
14
+ "ionic",
15
+ "liveness",
16
+ "verification",
17
+ "pose-detection",
18
+ "face-recognition",
19
+ "mediapipe",
20
+ "tensorflow"
21
+ ],
22
+ "license": "MIT",
23
+ "peerDependencies": {
24
+ "@angular/common": "^20.0.0",
25
+ "@angular/core": "^20.0.0",
26
+ "@angular/forms": "^20.0.0",
27
+ "@ionic/angular": "^8.0.0",
28
+ "rxjs": "^7.8.0",
29
+ "@tensorflow/tfjs-core": "^4.0.0",
30
+ "@tensorflow/tfjs-backend-webgl": "^4.0.0",
31
+ "@tensorflow-models/pose-detection": "^2.0.0",
32
+ "@mediapipe/tasks-vision": "^0.10.0",
33
+ "@aws-amplify/ui-react-liveness": "^3.0.0",
34
+ "react": "^18.0.0 || ^19.0.0",
35
+ "react-dom": "^18.0.0 || ^19.0.0"
36
+ },
37
+ "dependencies": {
38
+ "tslib": "^2.3.0"
39
+ },
40
+ "ngPackage": {
41
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
42
+ "dest": "../../dist/naniteninjas-liveness-verification",
43
+ "lib": {
44
+ "entryFile": "src/public-api.ts"
45
+ }
46
+ },
47
+ "sideEffects": false
48
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Build the lib: compile wrapper, then run ng-packagr with a background
3
+ * poll that copies FaceLivenessReactWrapper.generated.js into tmp as soon
4
+ * as tmp exists (after ngc), so rollup can load it from disk (file-loader
5
+ * fallback in ng-packagr patch).
6
+ */
7
+ const { spawn } = require('child_process');
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ const projectRoot = path.resolve(__dirname, '..');
12
+ const workspaceRoot = path.resolve(projectRoot, '../..');
13
+ const distRoot = path.join(workspaceRoot, 'dist/naniteninjas-liveness-verification');
14
+ const tmpTargetDir = path.join(distRoot, 'tmp-esm2022', 'lib', 'components', 'aws-face-liveness');
15
+ const sourceFile = path.join(projectRoot, 'src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.js');
16
+ const relPath = path.relative(workspaceRoot, path.join(projectRoot, 'ng-package.json'));
17
+
18
+ function copyWrapper() {
19
+ if (!fs.existsSync(sourceFile)) return false;
20
+ if (!fs.existsSync(path.join(distRoot, 'tmp-esm2022'))) return false;
21
+ if (!fs.existsSync(tmpTargetDir)) {
22
+ fs.mkdirSync(tmpTargetDir, { recursive: true });
23
+ }
24
+ const dest = path.join(tmpTargetDir, 'FaceLivenessReactWrapper.generated.js');
25
+ fs.copyFileSync(sourceFile, dest);
26
+ return true;
27
+ }
28
+
29
+ const interval = setInterval(() => copyWrapper(), 20);
30
+ const child = spawn('npx', ['ng-packagr', '-p', relPath], {
31
+ cwd: workspaceRoot,
32
+ stdio: 'inherit',
33
+ shell: true,
34
+ });
35
+ child.on('close', (code) => {
36
+ clearInterval(interval);
37
+ process.exit(code);
38
+ });
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copies FaceLivenessReactWrapper.generated.js into ng-packagr's tmp folder
3
+ * as soon as tmp-esm2022 exists, so rollup can resolve the dynamic import.
4
+ * Run this script in the background while ng-packagr runs.
5
+ */
6
+ const fs = require('fs');
7
+ const path = require('path');
8
+
9
+ const projectRoot = path.resolve(__dirname, '..');
10
+ const distRoot = path.resolve(projectRoot, '../../dist/naniteninjas-liveness-verification');
11
+ const tmpRoot = path.join(distRoot, 'tmp-esm2022');
12
+ const tmpTargetDir = path.join(tmpRoot, 'lib', 'components', 'aws-face-liveness');
13
+ const sourceFile = path.join(projectRoot, 'src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.js');
14
+
15
+ function copyOnce() {
16
+ if (!fs.existsSync(sourceFile)) return false;
17
+ // As soon as tmp-esm2022 exists, create subdir and copy so file is there before rollup
18
+ if (!fs.existsSync(tmpRoot)) return false;
19
+ if (!fs.existsSync(tmpTargetDir)) {
20
+ fs.mkdirSync(tmpTargetDir, { recursive: true });
21
+ }
22
+ const dest = path.join(tmpTargetDir, 'FaceLivenessReactWrapper.generated.js');
23
+ fs.copyFileSync(sourceFile, dest);
24
+ return true;
25
+ }
26
+
27
+ // Poll for tmp root (created early by ngc) and copy once
28
+ const interval = setInterval(() => {
29
+ if (copyOnce()) {
30
+ clearInterval(interval);
31
+ }
32
+ }, 20);
33
+
34
+ // Stop after 2 minutes
35
+ setTimeout(() => clearInterval(interval), 120000);