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
package/angular.json ADDED
@@ -0,0 +1,156 @@
1
+ {
2
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3
+ "version": 1,
4
+ "newProjectRoot": "projects",
5
+ "projects": {
6
+ "facecog-liveness-verification": {
7
+ "projectType": "library",
8
+ "root": "projects/facecog-liveness-verification",
9
+ "sourceRoot": "projects/facecog-liveness-verification/src",
10
+ "prefix": "facecog",
11
+ "architect": {
12
+ "build": {
13
+ "builder": "@angular/build:ng-packagr",
14
+ "configurations": {
15
+ "production": {
16
+ "tsConfig": "projects/facecog-liveness-verification/tsconfig.lib.prod.json"
17
+ },
18
+ "development": {
19
+ "tsConfig": "projects/facecog-liveness-verification/tsconfig.lib.json"
20
+ }
21
+ },
22
+ "defaultConfiguration": "production"
23
+ },
24
+ "test": {
25
+ "builder": "@angular/build:karma",
26
+ "options": {
27
+ "tsConfig": "projects/facecog-liveness-verification/tsconfig.spec.json",
28
+ "polyfills": [
29
+ "zone.js",
30
+ "zone.js/testing"
31
+ ]
32
+ }
33
+ }
34
+ }
35
+ },
36
+ "facecog-liveness-verification-test": {
37
+ "projectType": "application",
38
+ "schematics": {
39
+ "@schematics/angular:component": {
40
+ "style": "scss"
41
+ }
42
+ },
43
+ "root": "projects/facecog-liveness-verification-test",
44
+ "sourceRoot": "projects/facecog-liveness-verification-test/src",
45
+ "prefix": "app",
46
+ "architect": {
47
+ "build": {
48
+ "builder": "@angular-devkit/build-angular:browser",
49
+ "options": {
50
+ "outputPath": "www",
51
+ "index": "projects/facecog-liveness-verification-test/src/index.html",
52
+ "main": "projects/facecog-liveness-verification-test/src/main.ts",
53
+ "polyfills": "projects/facecog-liveness-verification-test/src/polyfills.ts",
54
+ "tsConfig": "projects/facecog-liveness-verification-test/tsconfig.app.json",
55
+ "inlineStyleLanguage": "scss",
56
+ "assets": [
57
+ {
58
+ "glob": "**/*",
59
+ "input": "projects/facecog-liveness-verification-test/src/assets",
60
+ "output": "assets"
61
+ },
62
+ {
63
+ "glob": "**/*.svg",
64
+ "input": "node_modules/ionicons/dist/ionicons/svg",
65
+ "output": "./svg"
66
+ }
67
+ ],
68
+ "styles": [
69
+ "projects/facecog-liveness-verification-test/src/global.scss",
70
+ "projects/facecog-liveness-verification-test/src/theme/variables.scss"
71
+ ],
72
+ "scripts": []
73
+ },
74
+ "configurations": {
75
+ "production": {
76
+ "budgets": [
77
+ {
78
+ "type": "initial",
79
+ "maximumWarning": "2mb",
80
+ "maximumError": "5mb"
81
+ },
82
+ {
83
+ "type": "anyComponentStyle",
84
+ "maximumWarning": "20kb",
85
+ "maximumError": "30kb"
86
+ }
87
+ ],
88
+ "fileReplacements": [
89
+ {
90
+ "replace": "projects/facecog-liveness-verification-test/src/environments/environment.ts",
91
+ "with": "projects/facecog-liveness-verification-test/src/environments/environment.prod.ts"
92
+ }
93
+ ],
94
+ "outputHashing": "all"
95
+ },
96
+ "development": {
97
+ "buildOptimizer": false,
98
+ "optimization": false,
99
+ "vendorChunk": true,
100
+ "extractLicenses": false,
101
+ "sourceMap": true,
102
+ "namedChunks": true
103
+ },
104
+ "ci": {
105
+ "progress": false
106
+ }
107
+ },
108
+ "defaultConfiguration": "production"
109
+ },
110
+ "serve": {
111
+ "builder": "@angular-devkit/build-angular:dev-server",
112
+ "configurations": {
113
+ "production": {
114
+ "buildTarget": "facecog-liveness-verification-test:build:production"
115
+ },
116
+ "development": {
117
+ "buildTarget": "facecog-liveness-verification-test:build:development"
118
+ },
119
+ "ci": {
120
+ "progress": false
121
+ }
122
+ },
123
+ "defaultConfiguration": "development"
124
+ },
125
+ "extract-i18n": {
126
+ "builder": "@angular-devkit/build-angular:extract-i18n",
127
+ "options": {
128
+ "buildTarget": "facecog-liveness-verification-test:build"
129
+ }
130
+ },
131
+ "lint": {
132
+ "builder": "@angular-eslint/builder:lint",
133
+ "options": {
134
+ "lintFilePatterns": [
135
+ "projects/facecog-liveness-verification-test/**/*.ts",
136
+ "projects/facecog-liveness-verification-test/**/*.html"
137
+ ]
138
+ }
139
+ }
140
+ }
141
+ }
142
+ },
143
+ "cli": {
144
+ "schematicCollections": [
145
+ "@ionic/angular-toolkit"
146
+ ]
147
+ },
148
+ "schematics": {
149
+ "@ionic/angular-toolkit:component": {
150
+ "styleext": "scss"
151
+ },
152
+ "@ionic/angular-toolkit:page": {
153
+ "styleext": "scss"
154
+ }
155
+ }
156
+ }
@@ -0,0 +1,9 @@
1
+ import type { CapacitorConfig } from '@capacitor/cli';
2
+
3
+ const config: CapacitorConfig = {
4
+ appId: 'io.ionic.starter',
5
+ appName: 'selfie-liveness-verification',
6
+ webDir: 'www'
7
+ };
8
+
9
+ export default config;
@@ -0,0 +1,20 @@
1
+ services:
2
+ # Development build - serves with hot-reload
3
+ selfie-liveness-dev:
4
+ image: node:20-alpine
5
+ container_name: selfie-liveness-development
6
+ working_dir: /app
7
+ volumes:
8
+ - .:/app
9
+ - /app/node_modules
10
+ ports:
11
+ - "8100:8100"
12
+ command: sh -c "npm install && npm run start -- --host=0.0.0.0 --port=8100"
13
+ environment:
14
+ - NODE_ENV=development
15
+ networks:
16
+ - selfie-network
17
+
18
+ networks:
19
+ selfie-network:
20
+ driver: bridge
@@ -0,0 +1,18 @@
1
+ services:
2
+ # Production build - serves optimized build with Nginx
3
+ selfie-liveness-app:
4
+ build:
5
+ context: .
6
+ dockerfile: Dockerfile
7
+ container_name: selfie-liveness-production
8
+ ports:
9
+ - "8080:80"
10
+ restart: unless-stopped
11
+ environment:
12
+ - NODE_ENV=production
13
+ networks:
14
+ - selfie-network
15
+
16
+ networks:
17
+ selfie-network:
18
+ driver: bridge
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "selfie-liveness-verification",
3
+ "integrations": {
4
+ "capacitor": {}
5
+ },
6
+ "type": "angular"
7
+ }
package/jest.config.js ADDED
@@ -0,0 +1,38 @@
1
+ /** @type {import('jest').Config} */
2
+ module.exports = {
3
+ testEnvironment: 'jsdom',
4
+ moduleFileExtensions: ['ts', 'html', 'js', 'json', 'mjs'],
5
+ transform: {
6
+ '^.+\\.(ts|js|mjs|html|svg)$': [
7
+ 'jest-preset-angular',
8
+ {
9
+ tsconfig: '<rootDir>/tsconfig.spec.json',
10
+ stringifyContentPathRegex: '\\.(html|svg)$',
11
+ },
12
+ ],
13
+ },
14
+ setupFiles: ['<rootDir>/setup-jest.ts'],
15
+ testPathIgnorePatterns: ['/node_modules/', '/dist/'],
16
+ roots: ['<rootDir>/projects/facecog-liveness-verification/src'],
17
+ collectCoverageFrom: [
18
+ 'projects/facecog-liveness-verification/src/lib/**/*.ts',
19
+ '!projects/facecog-liveness-verification/src/lib/**/*.spec.ts',
20
+ '!projects/facecog-liveness-verification/src/lib/**/index.ts',
21
+ '!projects/facecog-liveness-verification/src/lib/**/*.d.ts',
22
+ '!projects/facecog-liveness-verification/src/lib/components/aws-face-liveness/**',
23
+ '!projects/facecog-liveness-verification/src/lib/components/facetec-scan/**',
24
+ '!projects/facecog-liveness-verification/src/lib/components/camera-verification/**',
25
+ '!projects/facecog-liveness-verification/src/lib/components/liveness-verification/**',
26
+ '!projects/facecog-liveness-verification/src/lib/components/dialogs/**',
27
+ '!projects/facecog-liveness-verification/src/lib/services/pose-detection/**',
28
+ '!projects/facecog-liveness-verification/src/lib/services/custom-poses-api.service.ts',
29
+ '!projects/facecog-liveness-verification/src/lib/services/aws-face-liveness.service.ts',
30
+ '!projects/facecog-liveness-verification/src/lib/liveness-verification.module.ts',
31
+ ],
32
+ coverageDirectory: '<rootDir>/coverage/facecog-liveness-verification',
33
+ coverageReporters: ['text', 'text-summary', 'lcov'],
34
+ transformIgnorePatterns: [
35
+ 'node_modules/(?!(@ionic|@stencil|ionicons|@angular|rxjs|tslib)/)',
36
+ ],
37
+ testTimeout: 15000,
38
+ };
package/nginx.conf ADDED
@@ -0,0 +1,50 @@
1
+ events {
2
+ worker_connections 1024;
3
+ }
4
+
5
+ http {
6
+ include /etc/nginx/mime.types;
7
+ default_type application/octet-stream;
8
+
9
+ # Logging
10
+ access_log /var/log/nginx/access.log;
11
+ error_log /var/log/nginx/error.log;
12
+
13
+ # Gzip compression
14
+ gzip on;
15
+ gzip_vary on;
16
+ gzip_proxied any;
17
+ gzip_comp_level 6;
18
+ gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml;
19
+
20
+ server {
21
+ listen 80;
22
+ server_name localhost;
23
+ root /usr/share/nginx/html;
24
+ index index.html;
25
+
26
+ # Security headers
27
+ add_header X-Frame-Options "SAMEORIGIN" always;
28
+ add_header X-Content-Type-Options "nosniff" always;
29
+ add_header X-XSS-Protection "1; mode=block" always;
30
+
31
+ # Camera and media permissions headers
32
+ add_header Permissions-Policy "camera=*, microphone=*" always;
33
+
34
+ # Enable SPA routing - all routes serve index.html
35
+ location / {
36
+ try_files $uri $uri/ /index.html;
37
+ }
38
+
39
+ # Cache static assets
40
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
41
+ expires 1y;
42
+ add_header Cache-Control "public, immutable";
43
+ }
44
+
45
+ # Disable cache for index.html
46
+ location = /index.html {
47
+ add_header Cache-Control "no-store, no-cache, must-revalidate";
48
+ }
49
+ }
50
+ }
package/package.json ADDED
@@ -0,0 +1,131 @@
1
+ {
2
+ "name": "facecog-liveness-showcase",
3
+ "version": "0.0.1",
4
+ "author": "NaniteNinjas",
5
+ "homepage": "https://github.com/naniteninjas",
6
+ "scripts": {
7
+ "ng": "ng",
8
+ "start": "ng serve facecog-liveness-verification-test",
9
+ "build": "ng build facecog-liveness-verification-test",
10
+ "build:prod": "ng build facecog-liveness-verification-test --configuration production",
11
+ "vercel-build": "ng build facecog-liveness-verification-test --configuration production",
12
+ "watch": "ng build facecog-liveness-verification-test --watch --configuration development",
13
+ "lint": "ng lint facecog-liveness-verification-test",
14
+ "build:lib": "cd projects/facecog-liveness-verification && npx tsc -p tsconfig.wrapper.json && (mv src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.js src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.js 2>/dev/null || true) && cd ../.. && node projects/facecog-liveness-verification/scripts/build-with-wrapper-copy.js",
15
+ "npm:pack": "cd dist/naniteninjas-liveness-verification && npm pack",
16
+ "npm:pub": "cd dist/naniteninjas-liveness-verification && npm publish",
17
+ "package": "npm run build:lib && npm run npm:pack",
18
+ "bump:lib": "cd projects/facecog-liveness-verification && npm version patch",
19
+ "postinstall": "patch-package",
20
+ "test": "jest --config jest.config.js",
21
+ "test:coverage": "jest --config jest.config.js --coverage"
22
+ },
23
+ "dependencies": {
24
+ "@angular/animations": "^20.0.0",
25
+ "@angular/cdk": "^20.2.8",
26
+ "@angular/common": "^20.0.0",
27
+ "@angular/compiler": "^20.0.0",
28
+ "@angular/core": "^20.0.0",
29
+ "@angular/forms": "^20.0.0",
30
+ "@angular/google-maps": "^20.2.8",
31
+ "@angular/material": "^20.2.8",
32
+ "@angular/material-moment-adapter": "^20.2.8",
33
+ "@angular/platform-browser": "^20.0.0",
34
+ "@angular/platform-browser-dynamic": "^20.0.0",
35
+ "@angular/router": "^20.0.0",
36
+ "@aws-amplify/ui-react": "^6.13.2",
37
+ "@aws-amplify/ui-react-liveness": "^3.5.0",
38
+ "@capacitor/app": "7.1.0",
39
+ "@capacitor/camera": "^7.0.2",
40
+ "@capacitor/core": "7.4.3",
41
+ "@capacitor/filesystem": "^7.1.4",
42
+ "@capacitor/haptics": "7.0.2",
43
+ "@capacitor/keyboard": "7.0.3",
44
+ "@capacitor/status-bar": "7.0.3",
45
+ "@ionic/angular": "^8.0.0",
46
+ "@mediapipe/pose": "^0.5.1675469404",
47
+ "@mediapipe/tasks-vision": "^0.10.22-rc.20250304",
48
+ "@naniteninja/ionic-lib": "^1.0.207",
49
+ "@ngx-pwa/local-storage": "^20.0.0",
50
+ "@ngx-translate/core": "^17.0.0",
51
+ "@primeuix/styled": "^0.7.4",
52
+ "@primeuix/utils": "^0.6.1",
53
+ "@tensorflow-models/pose-detection": "^2.1.3",
54
+ "@tensorflow/tfjs-backend-webgl": "^4.22.0",
55
+ "@tensorflow/tfjs-backend-webgpu": "^4.22.0",
56
+ "@tensorflow/tfjs-converter": "^4.22.0",
57
+ "@tensorflow/tfjs-core": "^4.22.0",
58
+ "@types/react": "^19.2.7",
59
+ "@types/react-dom": "^19.2.3",
60
+ "ang-jsoneditor": "^4.0.2",
61
+ "aws-amplify": "^6.15.9",
62
+ "d3": "^7.9.0",
63
+ "date-fns": "^4.1.0",
64
+ "emoji-picker-element": "^1.27.0",
65
+ "face-api.js": "^0.22.2",
66
+ "google-libphonenumber": "^3.2.43",
67
+ "inputmask": "^5.0.9",
68
+ "ionicons": "^7.0.0",
69
+ "moment": "^2.30.1",
70
+ "ng-otp-input": "^2.0.9",
71
+ "ngx-bootstrap": "^20.0.2",
72
+ "ngx-image-compress": "^18.1.5",
73
+ "ngx-image-cropper": "^7.2.1",
74
+ "ngx-infinite-scroll": "^20.0.0",
75
+ "ngx-mask": "^20.0.3",
76
+ "ngx-popperjs": "^17.0.1",
77
+ "primeng": "^16.9.1",
78
+ "react": "^19.2.3",
79
+ "react-dom": "^19.2.3",
80
+ "rrule": "^2.8.1",
81
+ "rxjs": "~7.8.0",
82
+ "swiper": "^12.0.2",
83
+ "tslib": "^2.3.0",
84
+ "zone.js": "~0.15.0"
85
+ },
86
+ "devDependencies": {
87
+ "@angular-devkit/build-angular": "^20.0.0",
88
+ "@angular-eslint/builder": "^20.0.0",
89
+ "@angular-eslint/eslint-plugin": "^20.0.0",
90
+ "@angular-eslint/eslint-plugin-template": "^20.0.0",
91
+ "@angular-eslint/schematics": "^20.0.0",
92
+ "@angular-eslint/template-parser": "^20.0.0",
93
+ "@angular/build": "^20.3.5",
94
+ "@angular/cli": "^20.0.0",
95
+ "@angular/compiler-cli": "^20.0.0",
96
+ "@angular/language-service": "^20.0.0",
97
+ "@capacitor/cli": "7.4.3",
98
+ "@ionic/angular-toolkit": "^12.0.0",
99
+ "@jest/globals": "^30.2.0",
100
+ "@types/d3": "^7.4.3",
101
+ "@types/google-libphonenumber": "^7.4.30",
102
+ "@types/jasmine": "~5.1.0",
103
+ "@types/jest": "^30.0.0",
104
+ "@typescript-eslint/eslint-plugin": "^8.18.0",
105
+ "@typescript-eslint/parser": "^8.18.0",
106
+ "eslint": "^9.16.0",
107
+ "eslint-plugin-import": "^2.29.1",
108
+ "eslint-plugin-jsdoc": "^48.2.1",
109
+ "eslint-plugin-prefer-arrow": "1.2.2",
110
+ "jasmine-core": "~5.1.0",
111
+ "jasmine-spec-reporter": "~5.0.0",
112
+ "jest": "^30.2.0",
113
+ "jest-environment-jsdom": "^30.2.0",
114
+ "jest-preset-angular": "^16.1.1",
115
+ "jsoneditor": "^10.4.1",
116
+ "karma": "~6.4.0",
117
+ "karma-chrome-launcher": "~3.2.0",
118
+ "karma-coverage": "~2.2.0",
119
+ "karma-jasmine": "~5.1.0",
120
+ "karma-jasmine-html-reporter": "~2.1.0",
121
+ "ng-packagr": "^20.3.0",
122
+ "patch-package": "^8.0.1",
123
+ "ts-jest": "^29.4.6",
124
+ "typescript": "~5.8.0"
125
+ },
126
+ "description": "FaceCog Liveness Verification Showcase - Demo application for @naniteninja/liveness-verification library",
127
+ "optionalDependencies": {
128
+ "@capacitor/motion": "^7.0.1",
129
+ "capacitor-screenshot": "^7.3.0"
130
+ }
131
+ }
@@ -0,0 +1,60 @@
1
+ diff --git a/node_modules/ng-packagr/src/lib/flatten/file-loader-plugin.js b/node_modules/ng-packagr/src/lib/flatten/file-loader-plugin.js
2
+ index 3126ecb..6023896 100644
3
+ --- a/node_modules/ng-packagr/src/lib/flatten/file-loader-plugin.js
4
+ +++ b/node_modules/ng-packagr/src/lib/flatten/file-loader-plugin.js
5
+ @@ -66,13 +66,18 @@ function fileLoaderPlugin(fileCache, resolutionExtensions) {
6
+ log.debug(`file-loader ${id}`);
7
+ const idPosix = (0, path_1.ensureUnixPath)(id);
8
+ const data = fileCache.get(idPosix);
9
+ - if (!data) {
10
+ - throw new Error(`Could not load '${id}' from memory.`);
11
+ + if (data) {
12
+ + return {
13
+ + code: data.content,
14
+ + map: (_a = fileCache.get(`${idPosix}.map`)) === null || _a === void 0 ? void 0 : _a.content,
15
+ + };
16
+ }
17
+ - return {
18
+ - code: data.content,
19
+ - map: (_a = fileCache.get(`${idPosix}.map`)) === null || _a === void 0 ? void 0 : _a.content,
20
+ - };
21
+ + const fs = require('node:fs');
22
+ + if (fs.existsSync(id)) {
23
+ + const content = fs.readFileSync(id, 'utf-8');
24
+ + return { code: content };
25
+ + }
26
+ + throw new Error(`Could not load '${id}' from memory.`);
27
+ },
28
+ };
29
+ }
30
+ diff --git a/node_modules/ng-packagr/src/lib/ng-package/entry-point/compile-ngc.transform.js b/node_modules/ng-packagr/src/lib/ng-package/entry-point/compile-ngc.transform.js
31
+ index 68bc2c2..12df1ca 100644
32
+ --- a/node_modules/ng-packagr/src/lib/ng-package/entry-point/compile-ngc.transform.js
33
+ +++ b/node_modules/ng-packagr/src/lib/ng-package/entry-point/compile-ngc.transform.js
34
+ @@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.compileNgcTransformFactory = void 0;
38
+ +const fs = require("fs");
39
+ const ora_1 = __importDefault(require("ora"));
40
+ const path = __importStar(require("path"));
41
+ const typescript_1 = __importDefault(require("typescript"));
42
+ @@ -94,6 +95,18 @@ const compileNgcTransformFactory = (StylesheetProcessor, options) => {
43
+ }
44
+ }
45
+ spinner.succeed();
46
+ + // Copy pre-built FaceLivenessReactWrapper.generated.js into tmp so rollup can resolve it
47
+ + const { esm2022: outEsm2022 } = entryPoint.data.destinationFiles;
48
+ + const wrapperSrc = path.join(projectBasePath, 'src/lib/components/aws-face-liveness/FaceLivenessReactWrapper.generated.js');
49
+ + const tmpDir = path.dirname(outEsm2022);
50
+ + const wrapperDestDir = path.join(tmpDir, 'lib/components/aws-face-liveness');
51
+ + const wrapperDest = path.join(wrapperDestDir, 'FaceLivenessReactWrapper.generated.js');
52
+ + if (fs.existsSync(wrapperSrc)) {
53
+ + if (!fs.existsSync(wrapperDestDir)) {
54
+ + fs.mkdirSync(wrapperDestDir, { recursive: true });
55
+ + }
56
+ + fs.copyFileSync(wrapperSrc, wrapperDest);
57
+ + }
58
+ return graph;
59
+ });
60
+ };