@forgerock/journey-client 0.0.0-beta-20251222204813

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 (528) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE +21 -0
  3. package/README.md +143 -0
  4. package/coverage/base.css +224 -0
  5. package/coverage/block-navigation.js +87 -0
  6. package/coverage/coverage-final.json +1 -0
  7. package/coverage/favicon.png +0 -0
  8. package/coverage/index.html +101 -0
  9. package/coverage/prettify.css +1 -0
  10. package/coverage/prettify.js +2 -0
  11. package/coverage/sort-arrow-sprite.png +0 -0
  12. package/coverage/sorter.js +210 -0
  13. package/dist/package.json +62 -0
  14. package/dist/src/index.d.ts +2 -0
  15. package/dist/src/index.d.ts.map +1 -0
  16. package/dist/src/index.js +7 -0
  17. package/dist/src/lib/callbacks/attribute-input-callback.d.ts +44 -0
  18. package/dist/src/lib/callbacks/attribute-input-callback.d.ts.map +1 -0
  19. package/dist/src/lib/callbacks/attribute-input-callback.js +71 -0
  20. package/dist/src/lib/callbacks/base-callback.d.ts +45 -0
  21. package/dist/src/lib/callbacks/base-callback.d.ts.map +1 -0
  22. package/dist/src/lib/callbacks/base-callback.js +88 -0
  23. package/dist/src/lib/callbacks/choice-callback.d.ts +33 -0
  24. package/dist/src/lib/callbacks/choice-callback.d.ts.map +1 -0
  25. package/dist/src/lib/callbacks/choice-callback.js +57 -0
  26. package/dist/src/lib/callbacks/confirmation-callback.d.ts +41 -0
  27. package/dist/src/lib/callbacks/confirmation-callback.d.ts.map +1 -0
  28. package/dist/src/lib/callbacks/confirmation-callback.js +69 -0
  29. package/dist/src/lib/callbacks/device-profile-callback.d.ts +30 -0
  30. package/dist/src/lib/callbacks/device-profile-callback.d.ts.map +1 -0
  31. package/dist/src/lib/callbacks/device-profile-callback.js +43 -0
  32. package/dist/src/lib/callbacks/factory.d.ts +8 -0
  33. package/dist/src/lib/callbacks/factory.d.ts.map +1 -0
  34. package/dist/src/lib/callbacks/factory.js +87 -0
  35. package/dist/src/lib/callbacks/hidden-value-callback.d.ts +13 -0
  36. package/dist/src/lib/callbacks/hidden-value-callback.d.ts.map +1 -0
  37. package/dist/src/lib/callbacks/hidden-value-callback.js +19 -0
  38. package/dist/src/lib/callbacks/kba-create-callback.d.ts +34 -0
  39. package/dist/src/lib/callbacks/kba-create-callback.d.ts.map +1 -0
  40. package/dist/src/lib/callbacks/kba-create-callback.js +59 -0
  41. package/dist/src/lib/callbacks/metadata-callback.d.ts +17 -0
  42. package/dist/src/lib/callbacks/metadata-callback.d.ts.map +1 -0
  43. package/dist/src/lib/callbacks/metadata-callback.js +25 -0
  44. package/dist/src/lib/callbacks/name-callback.d.ts +21 -0
  45. package/dist/src/lib/callbacks/name-callback.d.ts.map +1 -0
  46. package/dist/src/lib/callbacks/name-callback.js +31 -0
  47. package/dist/src/lib/callbacks/password-callback.d.ts +29 -0
  48. package/dist/src/lib/callbacks/password-callback.d.ts.map +1 -0
  49. package/dist/src/lib/callbacks/password-callback.js +43 -0
  50. package/dist/src/lib/callbacks/ping-protect-evaluation-callback.d.ts +52 -0
  51. package/dist/src/lib/callbacks/ping-protect-evaluation-callback.d.ts.map +1 -0
  52. package/dist/src/lib/callbacks/ping-protect-evaluation-callback.js +64 -0
  53. package/dist/src/lib/callbacks/ping-protect-initialize-callback.d.ts +29 -0
  54. package/dist/src/lib/callbacks/ping-protect-initialize-callback.d.ts.map +1 -0
  55. package/dist/src/lib/callbacks/ping-protect-initialize-callback.js +40 -0
  56. package/dist/src/lib/callbacks/polling-wait-callback.d.ts +21 -0
  57. package/dist/src/lib/callbacks/polling-wait-callback.d.ts.map +1 -0
  58. package/dist/src/lib/callbacks/polling-wait-callback.js +31 -0
  59. package/dist/src/lib/callbacks/recaptcha-callback.d.ts +21 -0
  60. package/dist/src/lib/callbacks/recaptcha-callback.d.ts.map +1 -0
  61. package/dist/src/lib/callbacks/recaptcha-callback.js +31 -0
  62. package/dist/src/lib/callbacks/recaptcha-enterprise-callback.d.ts +41 -0
  63. package/dist/src/lib/callbacks/recaptcha-enterprise-callback.d.ts.map +1 -0
  64. package/dist/src/lib/callbacks/recaptcha-enterprise-callback.js +65 -0
  65. package/dist/src/lib/callbacks/redirect-callback.d.ts +17 -0
  66. package/dist/src/lib/callbacks/redirect-callback.d.ts.map +1 -0
  67. package/dist/src/lib/callbacks/redirect-callback.js +25 -0
  68. package/dist/src/lib/callbacks/select-idp-callback.d.ts +28 -0
  69. package/dist/src/lib/callbacks/select-idp-callback.d.ts.map +1 -0
  70. package/dist/src/lib/callbacks/select-idp-callback.js +35 -0
  71. package/dist/src/lib/callbacks/suspended-text-output-callback.d.ts +13 -0
  72. package/dist/src/lib/callbacks/suspended-text-output-callback.d.ts.map +1 -0
  73. package/dist/src/lib/callbacks/suspended-text-output-callback.js +19 -0
  74. package/dist/src/lib/callbacks/terms-and-conditions-callback.d.ts +29 -0
  75. package/dist/src/lib/callbacks/terms-and-conditions-callback.d.ts.map +1 -0
  76. package/dist/src/lib/callbacks/terms-and-conditions-callback.js +45 -0
  77. package/dist/src/lib/callbacks/text-input-callback.d.ts +21 -0
  78. package/dist/src/lib/callbacks/text-input-callback.d.ts.map +1 -0
  79. package/dist/src/lib/callbacks/text-input-callback.js +31 -0
  80. package/dist/src/lib/callbacks/text-output-callback.d.ts +22 -0
  81. package/dist/src/lib/callbacks/text-output-callback.d.ts.map +1 -0
  82. package/dist/src/lib/callbacks/text-output-callback.js +32 -0
  83. package/dist/src/lib/callbacks/validated-create-password-callback.d.ts +37 -0
  84. package/dist/src/lib/callbacks/validated-create-password-callback.d.ts.map +1 -0
  85. package/dist/src/lib/callbacks/validated-create-password-callback.js +63 -0
  86. package/dist/src/lib/callbacks/validated-create-username-callback.d.ts +37 -0
  87. package/dist/src/lib/callbacks/validated-create-username-callback.d.ts.map +1 -0
  88. package/dist/src/lib/callbacks/validated-create-username-callback.js +64 -0
  89. package/dist/src/lib/client.store.d.ts +37 -0
  90. package/dist/src/lib/client.store.d.ts.map +1 -0
  91. package/dist/src/lib/client.store.js +147 -0
  92. package/dist/src/lib/client.store.utils.d.ts +81 -0
  93. package/dist/src/lib/client.store.utils.d.ts.map +1 -0
  94. package/dist/src/lib/client.store.utils.js +28 -0
  95. package/dist/src/lib/config.types.d.ts +8 -0
  96. package/dist/src/lib/config.types.d.ts.map +1 -0
  97. package/dist/src/lib/config.types.js +7 -0
  98. package/dist/src/lib/device/defaults.d.ts +13 -0
  99. package/dist/src/lib/device/defaults.d.ts.map +1 -0
  100. package/dist/src/lib/device/defaults.js +78 -0
  101. package/dist/src/lib/device/device-profile.d.ts +41 -0
  102. package/dist/src/lib/device/device-profile.d.ts.map +1 -0
  103. package/dist/src/lib/device/device-profile.js +216 -0
  104. package/dist/src/lib/device/device-profile.mock.data.d.ts +109 -0
  105. package/dist/src/lib/device/device-profile.mock.data.d.ts.map +1 -0
  106. package/dist/src/lib/device/device-profile.mock.data.js +117 -0
  107. package/dist/src/lib/device/interfaces.d.ts +43 -0
  108. package/dist/src/lib/device/interfaces.d.ts.map +1 -0
  109. package/dist/src/lib/device/interfaces.js +10 -0
  110. package/dist/src/lib/interfaces.d.ts +15 -0
  111. package/dist/src/lib/interfaces.d.ts.map +1 -0
  112. package/dist/src/lib/interfaces.js +7 -0
  113. package/dist/src/lib/journey.api.d.ts +15 -0
  114. package/dist/src/lib/journey.api.d.ts.map +1 -0
  115. package/dist/src/lib/journey.api.js +129 -0
  116. package/dist/src/lib/journey.slice.d.ts +12 -0
  117. package/dist/src/lib/journey.slice.d.ts.map +1 -0
  118. package/dist/src/lib/journey.slice.js +18 -0
  119. package/dist/src/lib/journey.utils.d.ts +7 -0
  120. package/dist/src/lib/journey.utils.d.ts.map +1 -0
  121. package/dist/src/lib/journey.utils.js +33 -0
  122. package/dist/src/lib/login-failure.utils.d.ts +16 -0
  123. package/dist/src/lib/login-failure.utils.d.ts.map +1 -0
  124. package/dist/src/lib/login-failure.utils.js +34 -0
  125. package/dist/src/lib/login-success.utils.d.ts +16 -0
  126. package/dist/src/lib/login-success.utils.d.ts.map +1 -0
  127. package/dist/src/lib/login-success.utils.js +25 -0
  128. package/dist/src/lib/policy/interfaces.d.ts +11 -0
  129. package/dist/src/lib/policy/interfaces.d.ts.map +1 -0
  130. package/dist/src/lib/policy/interfaces.js +6 -0
  131. package/dist/src/lib/policy/message-creator.d.ts +3 -0
  132. package/dist/src/lib/policy/message-creator.d.ts.map +1 -0
  133. package/dist/src/lib/policy/message-creator.js +58 -0
  134. package/dist/src/lib/policy/policy.d.ts +57 -0
  135. package/dist/src/lib/policy/policy.d.ts.map +1 -0
  136. package/dist/src/lib/policy/policy.js +108 -0
  137. package/dist/src/lib/qr-code/qr-code.d.ts +35 -0
  138. package/dist/src/lib/qr-code/qr-code.d.ts.map +1 -0
  139. package/dist/src/lib/qr-code/qr-code.js +73 -0
  140. package/dist/src/lib/qr-code/qr-code.mock.data.d.ts +66 -0
  141. package/dist/src/lib/qr-code/qr-code.mock.data.d.ts.map +1 -0
  142. package/dist/src/lib/qr-code/qr-code.mock.data.js +175 -0
  143. package/dist/src/lib/recovery-codes/recovery-codes.d.ts +40 -0
  144. package/dist/src/lib/recovery-codes/recovery-codes.d.ts.map +1 -0
  145. package/dist/src/lib/recovery-codes/recovery-codes.js +64 -0
  146. package/dist/src/lib/recovery-codes/script-parser.d.ts +8 -0
  147. package/dist/src/lib/recovery-codes/script-parser.d.ts.map +1 -0
  148. package/dist/src/lib/recovery-codes/script-parser.js +45 -0
  149. package/dist/src/lib/recovery-codes/script-text.mock.data.d.ts +27 -0
  150. package/dist/src/lib/recovery-codes/script-text.mock.data.d.ts.map +1 -0
  151. package/dist/src/lib/recovery-codes/script-text.mock.data.js +103 -0
  152. package/dist/src/lib/step.types.d.ts +14 -0
  153. package/dist/src/lib/step.types.d.ts.map +1 -0
  154. package/dist/src/lib/step.types.js +7 -0
  155. package/dist/src/lib/step.utils.d.ts +10 -0
  156. package/dist/src/lib/step.utils.d.ts.map +1 -0
  157. package/dist/src/lib/step.utils.js +62 -0
  158. package/dist/src/lib/webauthn/enums.d.ts +24 -0
  159. package/dist/src/lib/webauthn/enums.d.ts.map +1 -0
  160. package/dist/src/lib/webauthn/enums.js +35 -0
  161. package/dist/src/lib/webauthn/helpers.d.ts +18 -0
  162. package/dist/src/lib/webauthn/helpers.d.ts.map +1 -0
  163. package/dist/src/lib/webauthn/helpers.js +103 -0
  164. package/dist/src/lib/webauthn/helpers.mock.data.d.ts +6 -0
  165. package/dist/src/lib/webauthn/helpers.mock.data.d.ts.map +1 -0
  166. package/dist/src/lib/webauthn/helpers.mock.data.js +14 -0
  167. package/dist/src/lib/webauthn/interfaces.d.ts +92 -0
  168. package/dist/src/lib/webauthn/interfaces.d.ts.map +1 -0
  169. package/dist/src/lib/webauthn/interfaces.js +34 -0
  170. package/dist/src/lib/webauthn/script-text.mock.data.d.ts +76 -0
  171. package/dist/src/lib/webauthn/script-text.mock.data.d.ts.map +1 -0
  172. package/dist/src/lib/webauthn/script-text.mock.data.js +451 -0
  173. package/dist/src/lib/webauthn/webauthn.d.ts +124 -0
  174. package/dist/src/lib/webauthn/webauthn.d.ts.map +1 -0
  175. package/dist/src/lib/webauthn/webauthn.js +383 -0
  176. package/dist/src/lib/webauthn/webauthn.mock.data.d.ts +331 -0
  177. package/dist/src/lib/webauthn/webauthn.mock.data.d.ts.map +1 -0
  178. package/dist/src/lib/webauthn/webauthn.mock.data.js +446 -0
  179. package/dist/src/types.d.ts +31 -0
  180. package/dist/src/types.d.ts.map +1 -0
  181. package/dist/src/types.js +34 -0
  182. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  183. package/eslint.config.mjs +19 -0
  184. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/attribute-input-callback.test.d.ts +1 -0
  185. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/fr-auth-callback.test.d.ts +1 -0
  186. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/ping-protect-evaluation-callback.test.d.ts +1 -0
  187. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/ping-protect-initialize-callback.test.d.ts +1 -0
  188. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/recaptcha-enterprise-callback.test.d.ts +1 -0
  189. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/text-input-callback.test.d.ts +1 -0
  190. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/validated-create-password-callback.test.d.ts +1 -0
  191. package/out-tsc/vitest/packages/journey-client/src/lib/callbacks/validated-create-username-callback.test.d.ts +1 -0
  192. package/out-tsc/vitest/packages/journey-client/src/lib/fr-device/device-profile.test.d.ts +1 -0
  193. package/out-tsc/vitest/packages/journey-client/src/lib/fr-policy/fr-policy.test.d.ts +1 -0
  194. package/out-tsc/vitest/packages/journey-client/tsconfig.spec.tsbuildinfo +1 -0
  195. package/out-tsc/vitest/packages/journey-client/vite.config.d.ts +2 -0
  196. package/out-tsc/vitest/src/lib/callbacks/attribute-input-callback-operators.test.d.ts +2 -0
  197. package/out-tsc/vitest/src/lib/callbacks/attribute-input-callback-operators.test.d.ts.map +1 -0
  198. package/out-tsc/vitest/src/lib/callbacks/attribute-input-callback.operators.test.d.ts +2 -0
  199. package/out-tsc/vitest/src/lib/callbacks/attribute-input-callback.operators.test.d.ts.map +1 -0
  200. package/out-tsc/vitest/src/lib/callbacks/attribute-input-callback.test.d.ts +2 -0
  201. package/out-tsc/vitest/src/lib/callbacks/attribute-input-callback.test.d.ts.map +1 -0
  202. package/out-tsc/vitest/src/lib/callbacks/base-callback.test.d.ts +2 -0
  203. package/out-tsc/vitest/src/lib/callbacks/base-callback.test.d.ts.map +1 -0
  204. package/out-tsc/vitest/src/lib/callbacks/callback-types.test.d.ts +2 -0
  205. package/out-tsc/vitest/src/lib/callbacks/callback-types.test.d.ts.map +1 -0
  206. package/out-tsc/vitest/src/lib/callbacks/callback-utils.test.d.ts +2 -0
  207. package/out-tsc/vitest/src/lib/callbacks/callback-utils.test.d.ts.map +1 -0
  208. package/out-tsc/vitest/src/lib/callbacks/choice-callback-operators.test.d.ts +2 -0
  209. package/out-tsc/vitest/src/lib/callbacks/choice-callback-operators.test.d.ts.map +1 -0
  210. package/out-tsc/vitest/src/lib/callbacks/choice-callback.operators.test.d.ts +2 -0
  211. package/out-tsc/vitest/src/lib/callbacks/choice-callback.operators.test.d.ts.map +1 -0
  212. package/out-tsc/vitest/src/lib/callbacks/choice-callback.test.d.ts +2 -0
  213. package/out-tsc/vitest/src/lib/callbacks/choice-callback.test.d.ts.map +1 -0
  214. package/out-tsc/vitest/src/lib/callbacks/confirmation-callback-operators.test.d.ts +2 -0
  215. package/out-tsc/vitest/src/lib/callbacks/confirmation-callback-operators.test.d.ts.map +1 -0
  216. package/out-tsc/vitest/src/lib/callbacks/confirmation-callback.operators.test.d.ts +2 -0
  217. package/out-tsc/vitest/src/lib/callbacks/confirmation-callback.operators.test.d.ts.map +1 -0
  218. package/out-tsc/vitest/src/lib/callbacks/confirmation-callback.test.d.ts +2 -0
  219. package/out-tsc/vitest/src/lib/callbacks/confirmation-callback.test.d.ts.map +1 -0
  220. package/out-tsc/vitest/src/lib/callbacks/device-profile-callback.test.d.ts +2 -0
  221. package/out-tsc/vitest/src/lib/callbacks/device-profile-callback.test.d.ts.map +1 -0
  222. package/out-tsc/vitest/src/lib/callbacks/factory.test.d.ts +2 -0
  223. package/out-tsc/vitest/src/lib/callbacks/factory.test.d.ts.map +1 -0
  224. package/out-tsc/vitest/src/lib/callbacks/fr-auth-callback.test.d.ts +2 -0
  225. package/out-tsc/vitest/src/lib/callbacks/fr-auth-callback.test.d.ts.map +1 -0
  226. package/out-tsc/vitest/src/lib/callbacks/hidden-value-callback-operators.test.d.ts +2 -0
  227. package/out-tsc/vitest/src/lib/callbacks/hidden-value-callback-operators.test.d.ts.map +1 -0
  228. package/out-tsc/vitest/src/lib/callbacks/hidden-value-callback.operators.test.d.ts +2 -0
  229. package/out-tsc/vitest/src/lib/callbacks/hidden-value-callback.operators.test.d.ts.map +1 -0
  230. package/out-tsc/vitest/src/lib/callbacks/hidden-value-callback.test.d.ts +2 -0
  231. package/out-tsc/vitest/src/lib/callbacks/hidden-value-callback.test.d.ts.map +1 -0
  232. package/out-tsc/vitest/src/lib/callbacks/kba-create-callback-operators.test.d.ts +2 -0
  233. package/out-tsc/vitest/src/lib/callbacks/kba-create-callback-operators.test.d.ts.map +1 -0
  234. package/out-tsc/vitest/src/lib/callbacks/kba-create-callback.operators.test.d.ts +2 -0
  235. package/out-tsc/vitest/src/lib/callbacks/kba-create-callback.operators.test.d.ts.map +1 -0
  236. package/out-tsc/vitest/src/lib/callbacks/kba-create-callback.test.d.ts +2 -0
  237. package/out-tsc/vitest/src/lib/callbacks/kba-create-callback.test.d.ts.map +1 -0
  238. package/out-tsc/vitest/src/lib/callbacks/metadata-callback-operators.test.d.ts +2 -0
  239. package/out-tsc/vitest/src/lib/callbacks/metadata-callback-operators.test.d.ts.map +1 -0
  240. package/out-tsc/vitest/src/lib/callbacks/metadata-callback.operators.test.d.ts +2 -0
  241. package/out-tsc/vitest/src/lib/callbacks/metadata-callback.operators.test.d.ts.map +1 -0
  242. package/out-tsc/vitest/src/lib/callbacks/metadata-callback.test.d.ts +2 -0
  243. package/out-tsc/vitest/src/lib/callbacks/metadata-callback.test.d.ts.map +1 -0
  244. package/out-tsc/vitest/src/lib/callbacks/name-callback-operators.test.d.ts +2 -0
  245. package/out-tsc/vitest/src/lib/callbacks/name-callback-operators.test.d.ts.map +1 -0
  246. package/out-tsc/vitest/src/lib/callbacks/name-callback.operators.test.d.ts +2 -0
  247. package/out-tsc/vitest/src/lib/callbacks/name-callback.operators.test.d.ts.map +1 -0
  248. package/out-tsc/vitest/src/lib/callbacks/name-callback.test.d.ts +2 -0
  249. package/out-tsc/vitest/src/lib/callbacks/name-callback.test.d.ts.map +1 -0
  250. package/out-tsc/vitest/src/lib/callbacks/password-callback-operators.test.d.ts +2 -0
  251. package/out-tsc/vitest/src/lib/callbacks/password-callback-operators.test.d.ts.map +1 -0
  252. package/out-tsc/vitest/src/lib/callbacks/password-callback.operators.test.d.ts +2 -0
  253. package/out-tsc/vitest/src/lib/callbacks/password-callback.operators.test.d.ts.map +1 -0
  254. package/out-tsc/vitest/src/lib/callbacks/password-callback.test.d.ts +2 -0
  255. package/out-tsc/vitest/src/lib/callbacks/password-callback.test.d.ts.map +1 -0
  256. package/out-tsc/vitest/src/lib/callbacks/ping-protect-evaluation-callback-operators.test.d.ts +2 -0
  257. package/out-tsc/vitest/src/lib/callbacks/ping-protect-evaluation-callback-operators.test.d.ts.map +1 -0
  258. package/out-tsc/vitest/src/lib/callbacks/ping-protect-evaluation-callback.operators.test.d.ts +2 -0
  259. package/out-tsc/vitest/src/lib/callbacks/ping-protect-evaluation-callback.operators.test.d.ts.map +1 -0
  260. package/out-tsc/vitest/src/lib/callbacks/ping-protect-evaluation-callback.test.d.ts +2 -0
  261. package/out-tsc/vitest/src/lib/callbacks/ping-protect-evaluation-callback.test.d.ts.map +1 -0
  262. package/out-tsc/vitest/src/lib/callbacks/ping-protect-initialize-callback-operators.test.d.ts +2 -0
  263. package/out-tsc/vitest/src/lib/callbacks/ping-protect-initialize-callback-operators.test.d.ts.map +1 -0
  264. package/out-tsc/vitest/src/lib/callbacks/ping-protect-initialize-callback.operators.test.d.ts +2 -0
  265. package/out-tsc/vitest/src/lib/callbacks/ping-protect-initialize-callback.operators.test.d.ts.map +1 -0
  266. package/out-tsc/vitest/src/lib/callbacks/ping-protect-initialize-callback.test.d.ts +2 -0
  267. package/out-tsc/vitest/src/lib/callbacks/ping-protect-initialize-callback.test.d.ts.map +1 -0
  268. package/out-tsc/vitest/src/lib/callbacks/polling-wait-callback-operators.test.d.ts +2 -0
  269. package/out-tsc/vitest/src/lib/callbacks/polling-wait-callback-operators.test.d.ts.map +1 -0
  270. package/out-tsc/vitest/src/lib/callbacks/polling-wait-callback.operators.test.d.ts +2 -0
  271. package/out-tsc/vitest/src/lib/callbacks/polling-wait-callback.operators.test.d.ts.map +1 -0
  272. package/out-tsc/vitest/src/lib/callbacks/polling-wait-callback.test.d.ts +2 -0
  273. package/out-tsc/vitest/src/lib/callbacks/polling-wait-callback.test.d.ts.map +1 -0
  274. package/out-tsc/vitest/src/lib/callbacks/recaptcha-callback-operators.test.d.ts +2 -0
  275. package/out-tsc/vitest/src/lib/callbacks/recaptcha-callback-operators.test.d.ts.map +1 -0
  276. package/out-tsc/vitest/src/lib/callbacks/recaptcha-callback.operators.test.d.ts +2 -0
  277. package/out-tsc/vitest/src/lib/callbacks/recaptcha-callback.operators.test.d.ts.map +1 -0
  278. package/out-tsc/vitest/src/lib/callbacks/recaptcha-callback.test.d.ts +2 -0
  279. package/out-tsc/vitest/src/lib/callbacks/recaptcha-callback.test.d.ts.map +1 -0
  280. package/out-tsc/vitest/src/lib/callbacks/recaptcha-enterprise-callback-operators.test.d.ts +2 -0
  281. package/out-tsc/vitest/src/lib/callbacks/recaptcha-enterprise-callback-operators.test.d.ts.map +1 -0
  282. package/out-tsc/vitest/src/lib/callbacks/recaptcha-enterprise-callback.operators.test.d.ts +2 -0
  283. package/out-tsc/vitest/src/lib/callbacks/recaptcha-enterprise-callback.operators.test.d.ts.map +1 -0
  284. package/out-tsc/vitest/src/lib/callbacks/recaptcha-enterprise-callback.test.d.ts +2 -0
  285. package/out-tsc/vitest/src/lib/callbacks/recaptcha-enterprise-callback.test.d.ts.map +1 -0
  286. package/out-tsc/vitest/src/lib/callbacks/redirect-callback-operators.test.d.ts +2 -0
  287. package/out-tsc/vitest/src/lib/callbacks/redirect-callback-operators.test.d.ts.map +1 -0
  288. package/out-tsc/vitest/src/lib/callbacks/redirect-callback.operators.test.d.ts +2 -0
  289. package/out-tsc/vitest/src/lib/callbacks/redirect-callback.operators.test.d.ts.map +1 -0
  290. package/out-tsc/vitest/src/lib/callbacks/redirect-callback.test.d.ts +2 -0
  291. package/out-tsc/vitest/src/lib/callbacks/redirect-callback.test.d.ts.map +1 -0
  292. package/out-tsc/vitest/src/lib/callbacks/select-idp-callback-operators.test.d.ts +2 -0
  293. package/out-tsc/vitest/src/lib/callbacks/select-idp-callback-operators.test.d.ts.map +1 -0
  294. package/out-tsc/vitest/src/lib/callbacks/select-idp-callback.operators.test.d.ts +2 -0
  295. package/out-tsc/vitest/src/lib/callbacks/select-idp-callback.operators.test.d.ts.map +1 -0
  296. package/out-tsc/vitest/src/lib/callbacks/select-idp-callback.test.d.ts +2 -0
  297. package/out-tsc/vitest/src/lib/callbacks/select-idp-callback.test.d.ts.map +1 -0
  298. package/out-tsc/vitest/src/lib/callbacks/suspended-text-output-callback-operators.test.d.ts +2 -0
  299. package/out-tsc/vitest/src/lib/callbacks/suspended-text-output-callback-operators.test.d.ts.map +1 -0
  300. package/out-tsc/vitest/src/lib/callbacks/suspended-text-output-callback.operators.test.d.ts +2 -0
  301. package/out-tsc/vitest/src/lib/callbacks/suspended-text-output-callback.operators.test.d.ts.map +1 -0
  302. package/out-tsc/vitest/src/lib/callbacks/suspended-text-output-callback.test.d.ts +2 -0
  303. package/out-tsc/vitest/src/lib/callbacks/suspended-text-output-callback.test.d.ts.map +1 -0
  304. package/out-tsc/vitest/src/lib/callbacks/terms-and-conditions-callback-operators.test.d.ts +2 -0
  305. package/out-tsc/vitest/src/lib/callbacks/terms-and-conditions-callback-operators.test.d.ts.map +1 -0
  306. package/out-tsc/vitest/src/lib/callbacks/terms-and-conditions-callback.operators.test.d.ts +2 -0
  307. package/out-tsc/vitest/src/lib/callbacks/terms-and-conditions-callback.operators.test.d.ts.map +1 -0
  308. package/out-tsc/vitest/src/lib/callbacks/terms-and-conditions-callback.test.d.ts +2 -0
  309. package/out-tsc/vitest/src/lib/callbacks/terms-and-conditions-callback.test.d.ts.map +1 -0
  310. package/out-tsc/vitest/src/lib/callbacks/text-input-callback-operators.test.d.ts +2 -0
  311. package/out-tsc/vitest/src/lib/callbacks/text-input-callback-operators.test.d.ts.map +1 -0
  312. package/out-tsc/vitest/src/lib/callbacks/text-input-callback.operators.test.d.ts +2 -0
  313. package/out-tsc/vitest/src/lib/callbacks/text-input-callback.operators.test.d.ts.map +1 -0
  314. package/out-tsc/vitest/src/lib/callbacks/text-input-callback.test.d.ts +2 -0
  315. package/out-tsc/vitest/src/lib/callbacks/text-input-callback.test.d.ts.map +1 -0
  316. package/out-tsc/vitest/src/lib/callbacks/text-output-callback-operators.test.d.ts +2 -0
  317. package/out-tsc/vitest/src/lib/callbacks/text-output-callback-operators.test.d.ts.map +1 -0
  318. package/out-tsc/vitest/src/lib/callbacks/text-output-callback.operators.test.d.ts +2 -0
  319. package/out-tsc/vitest/src/lib/callbacks/text-output-callback.operators.test.d.ts.map +1 -0
  320. package/out-tsc/vitest/src/lib/callbacks/text-output-callback.test.d.ts +2 -0
  321. package/out-tsc/vitest/src/lib/callbacks/text-output-callback.test.d.ts.map +1 -0
  322. package/out-tsc/vitest/src/lib/callbacks/validated-create-password-callback-operators.test.d.ts +2 -0
  323. package/out-tsc/vitest/src/lib/callbacks/validated-create-password-callback-operators.test.d.ts.map +1 -0
  324. package/out-tsc/vitest/src/lib/callbacks/validated-create-password-callback.operators.test.d.ts +2 -0
  325. package/out-tsc/vitest/src/lib/callbacks/validated-create-password-callback.operators.test.d.ts.map +1 -0
  326. package/out-tsc/vitest/src/lib/callbacks/validated-create-password-callback.test.d.ts +2 -0
  327. package/out-tsc/vitest/src/lib/callbacks/validated-create-password-callback.test.d.ts.map +1 -0
  328. package/out-tsc/vitest/src/lib/callbacks/validated-create-username-callback-operators.test.d.ts +2 -0
  329. package/out-tsc/vitest/src/lib/callbacks/validated-create-username-callback-operators.test.d.ts.map +1 -0
  330. package/out-tsc/vitest/src/lib/callbacks/validated-create-username-callback.operators.test.d.ts +2 -0
  331. package/out-tsc/vitest/src/lib/callbacks/validated-create-username-callback.operators.test.d.ts.map +1 -0
  332. package/out-tsc/vitest/src/lib/callbacks/validated-create-username-callback.test.d.ts +2 -0
  333. package/out-tsc/vitest/src/lib/callbacks/validated-create-username-callback.test.d.ts.map +1 -0
  334. package/out-tsc/vitest/src/lib/client.store.test.d.ts +2 -0
  335. package/out-tsc/vitest/src/lib/client.store.test.d.ts.map +1 -0
  336. package/out-tsc/vitest/src/lib/device/device-profile.test.d.ts +2 -0
  337. package/out-tsc/vitest/src/lib/device/device-profile.test.d.ts.map +1 -0
  338. package/out-tsc/vitest/src/lib/fr-device/device-profile.test.d.ts +2 -0
  339. package/out-tsc/vitest/src/lib/fr-device/device-profile.test.d.ts.map +1 -0
  340. package/out-tsc/vitest/src/lib/fr-policy/fr-policy.test.d.ts +2 -0
  341. package/out-tsc/vitest/src/lib/fr-policy/fr-policy.test.d.ts.map +1 -0
  342. package/out-tsc/vitest/src/lib/fr-qrcode/fr-qrcode.test.d.ts +2 -0
  343. package/out-tsc/vitest/src/lib/fr-qrcode/fr-qrcode.test.d.ts.map +1 -0
  344. package/out-tsc/vitest/src/lib/fr-recovery-codes/recovery-codes.test.d.ts +2 -0
  345. package/out-tsc/vitest/src/lib/fr-recovery-codes/recovery-codes.test.d.ts.map +1 -0
  346. package/out-tsc/vitest/src/lib/fr-recovery-codes/script-parser.test.d.ts +2 -0
  347. package/out-tsc/vitest/src/lib/fr-recovery-codes/script-parser.test.d.ts.map +1 -0
  348. package/out-tsc/vitest/src/lib/fr-step.test.d.ts +2 -0
  349. package/out-tsc/vitest/src/lib/fr-step.test.d.ts.map +1 -0
  350. package/out-tsc/vitest/src/lib/fr-webauthn/fr-webauthn.test.d.ts +2 -0
  351. package/out-tsc/vitest/src/lib/fr-webauthn/fr-webauthn.test.d.ts.map +1 -0
  352. package/out-tsc/vitest/src/lib/fr-webauthn/helpers.test.d.ts +2 -0
  353. package/out-tsc/vitest/src/lib/fr-webauthn/helpers.test.d.ts.map +1 -0
  354. package/out-tsc/vitest/src/lib/fr-webauthn/script-parser.test.d.ts +2 -0
  355. package/out-tsc/vitest/src/lib/fr-webauthn/script-parser.test.d.ts.map +1 -0
  356. package/out-tsc/vitest/src/lib/journey-client.test.d.ts +2 -0
  357. package/out-tsc/vitest/src/lib/journey-client.test.d.ts.map +1 -0
  358. package/out-tsc/vitest/src/lib/journey-device/device-profile.test.d.ts +2 -0
  359. package/out-tsc/vitest/src/lib/journey-device/device-profile.test.d.ts.map +1 -0
  360. package/out-tsc/vitest/src/lib/journey-login-failure.utils.test.d.ts +2 -0
  361. package/out-tsc/vitest/src/lib/journey-login-failure.utils.test.d.ts.map +1 -0
  362. package/out-tsc/vitest/src/lib/journey-login-success.utils.test.d.ts +2 -0
  363. package/out-tsc/vitest/src/lib/journey-login-success.utils.test.d.ts.map +1 -0
  364. package/out-tsc/vitest/src/lib/journey-policy/fr-policy.test.d.ts +2 -0
  365. package/out-tsc/vitest/src/lib/journey-policy/fr-policy.test.d.ts.map +1 -0
  366. package/out-tsc/vitest/src/lib/journey-policy/journey-policy.test.d.ts +2 -0
  367. package/out-tsc/vitest/src/lib/journey-policy/journey-policy.test.d.ts.map +1 -0
  368. package/out-tsc/vitest/src/lib/journey-qrcode/journey-qrcode.test.d.ts +2 -0
  369. package/out-tsc/vitest/src/lib/journey-qrcode/journey-qrcode.test.d.ts.map +1 -0
  370. package/out-tsc/vitest/src/lib/journey-step.test.d.ts +2 -0
  371. package/out-tsc/vitest/src/lib/journey-step.test.d.ts.map +1 -0
  372. package/out-tsc/vitest/src/lib/journey-webauthn/enums.d.ts +24 -0
  373. package/out-tsc/vitest/src/lib/journey-webauthn/enums.d.ts.map +1 -0
  374. package/out-tsc/vitest/src/lib/journey-webauthn/helpers.d.ts +18 -0
  375. package/out-tsc/vitest/src/lib/journey-webauthn/helpers.d.ts.map +1 -0
  376. package/out-tsc/vitest/src/lib/journey-webauthn/helpers.mock.data.d.ts +6 -0
  377. package/out-tsc/vitest/src/lib/journey-webauthn/helpers.mock.data.d.ts.map +1 -0
  378. package/out-tsc/vitest/src/lib/journey-webauthn/helpers.test.d.ts +2 -0
  379. package/out-tsc/vitest/src/lib/journey-webauthn/helpers.test.d.ts.map +1 -0
  380. package/out-tsc/vitest/src/lib/journey-webauthn/index.d.ts +123 -0
  381. package/out-tsc/vitest/src/lib/journey-webauthn/index.d.ts.map +1 -0
  382. package/out-tsc/vitest/src/lib/journey-webauthn/interfaces.d.ts +93 -0
  383. package/out-tsc/vitest/src/lib/journey-webauthn/interfaces.d.ts.map +1 -0
  384. package/out-tsc/vitest/src/lib/journey-webauthn/journey-webauthn.mock.data.d.ts +331 -0
  385. package/out-tsc/vitest/src/lib/journey-webauthn/journey-webauthn.mock.data.d.ts.map +1 -0
  386. package/out-tsc/vitest/src/lib/journey-webauthn/journey-webauthn.test.d.ts +2 -0
  387. package/out-tsc/vitest/src/lib/journey-webauthn/journey-webauthn.test.d.ts.map +1 -0
  388. package/out-tsc/vitest/src/lib/journey-webauthn/script-parser.d.ts +4 -0
  389. package/out-tsc/vitest/src/lib/journey-webauthn/script-parser.d.ts.map +1 -0
  390. package/out-tsc/vitest/src/lib/journey-webauthn/script-parser.test.d.ts +2 -0
  391. package/out-tsc/vitest/src/lib/journey-webauthn/script-parser.test.d.ts.map +1 -0
  392. package/out-tsc/vitest/src/lib/journey-webauthn/script-text.mock.data.d.ts +76 -0
  393. package/out-tsc/vitest/src/lib/journey-webauthn/script-text.mock.data.d.ts.map +1 -0
  394. package/out-tsc/vitest/src/lib/journey-webauthn/webauthn-utils.d.ts +38 -0
  395. package/out-tsc/vitest/src/lib/journey-webauthn/webauthn-utils.d.ts.map +1 -0
  396. package/out-tsc/vitest/src/lib/journey.api.test.d.ts +2 -0
  397. package/out-tsc/vitest/src/lib/journey.api.test.d.ts.map +1 -0
  398. package/out-tsc/vitest/src/lib/journey.store.test.d.ts +2 -0
  399. package/out-tsc/vitest/src/lib/journey.store.test.d.ts.map +1 -0
  400. package/out-tsc/vitest/src/lib/login-failure.utils.test.d.ts +2 -0
  401. package/out-tsc/vitest/src/lib/login-failure.utils.test.d.ts.map +1 -0
  402. package/out-tsc/vitest/src/lib/login-success.utils.test.d.ts +2 -0
  403. package/out-tsc/vitest/src/lib/login-success.utils.test.d.ts.map +1 -0
  404. package/out-tsc/vitest/src/lib/object-utils.test.d.ts +2 -0
  405. package/out-tsc/vitest/src/lib/object-utils.test.d.ts.map +1 -0
  406. package/out-tsc/vitest/src/lib/policy/policy.test.d.ts +2 -0
  407. package/out-tsc/vitest/src/lib/policy/policy.test.d.ts.map +1 -0
  408. package/out-tsc/vitest/src/lib/qr-code/qr-code.test.d.ts +2 -0
  409. package/out-tsc/vitest/src/lib/qr-code/qr-code.test.d.ts.map +1 -0
  410. package/out-tsc/vitest/src/lib/recovery-codes/index.d.ts +37 -0
  411. package/out-tsc/vitest/src/lib/recovery-codes/index.d.ts.map +1 -0
  412. package/out-tsc/vitest/src/lib/recovery-codes/recovery-codes.test.d.ts +2 -0
  413. package/out-tsc/vitest/src/lib/recovery-codes/recovery-codes.test.d.ts.map +1 -0
  414. package/out-tsc/vitest/src/lib/recovery-codes/script-parser.d.ts +9 -0
  415. package/out-tsc/vitest/src/lib/recovery-codes/script-parser.d.ts.map +1 -0
  416. package/out-tsc/vitest/src/lib/recovery-codes/script-parser.test.d.ts +2 -0
  417. package/out-tsc/vitest/src/lib/recovery-codes/script-parser.test.d.ts.map +1 -0
  418. package/out-tsc/vitest/src/lib/recovery-codes/script-text.mock.data.d.ts +27 -0
  419. package/out-tsc/vitest/src/lib/recovery-codes/script-text.mock.data.d.ts.map +1 -0
  420. package/out-tsc/vitest/src/lib/step-utils.test.d.ts +2 -0
  421. package/out-tsc/vitest/src/lib/step-utils.test.d.ts.map +1 -0
  422. package/out-tsc/vitest/src/lib/step.test.d.ts +2 -0
  423. package/out-tsc/vitest/src/lib/step.test.d.ts.map +1 -0
  424. package/out-tsc/vitest/src/lib/webauthn/helpers.test.d.ts +2 -0
  425. package/out-tsc/vitest/src/lib/webauthn/helpers.test.d.ts.map +1 -0
  426. package/out-tsc/vitest/src/lib/webauthn/webauthn.test.d.ts +2 -0
  427. package/out-tsc/vitest/src/lib/webauthn/webauthn.test.d.ts.map +1 -0
  428. package/out-tsc/vitest/tsconfig.spec.tsbuildinfo +1 -0
  429. package/out-tsc/vitest/vite.config.d.ts +3 -0
  430. package/out-tsc/vitest/vite.config.d.ts.map +1 -0
  431. package/package.json +62 -0
  432. package/src/index.ts +8 -0
  433. package/src/lib/callbacks/attribute-input-callback.test.ts +89 -0
  434. package/src/lib/callbacks/attribute-input-callback.ts +81 -0
  435. package/src/lib/callbacks/base-callback.test.ts +42 -0
  436. package/src/lib/callbacks/base-callback.ts +101 -0
  437. package/src/lib/callbacks/choice-callback.test.ts +77 -0
  438. package/src/lib/callbacks/choice-callback.ts +64 -0
  439. package/src/lib/callbacks/confirmation-callback.test.ts +94 -0
  440. package/src/lib/callbacks/confirmation-callback.ts +78 -0
  441. package/src/lib/callbacks/device-profile-callback.test.ts +68 -0
  442. package/src/lib/callbacks/device-profile-callback.ts +51 -0
  443. package/src/lib/callbacks/factory.test.ts +89 -0
  444. package/src/lib/callbacks/factory.ts +95 -0
  445. package/src/lib/callbacks/hidden-value-callback.test.ts +26 -0
  446. package/src/lib/callbacks/hidden-value-callback.ts +21 -0
  447. package/src/lib/callbacks/kba-create-callback.test.ts +62 -0
  448. package/src/lib/callbacks/kba-create-callback.ts +68 -0
  449. package/src/lib/callbacks/metadata-callback.test.ts +31 -0
  450. package/src/lib/callbacks/metadata-callback.ts +28 -0
  451. package/src/lib/callbacks/name-callback.test.ts +42 -0
  452. package/src/lib/callbacks/name-callback.ts +35 -0
  453. package/src/lib/callbacks/password-callback.test.ts +60 -0
  454. package/src/lib/callbacks/password-callback.ts +49 -0
  455. package/src/lib/callbacks/ping-protect-evaluation-callback.test.ts +69 -0
  456. package/src/lib/callbacks/ping-protect-evaluation-callback.ts +70 -0
  457. package/src/lib/callbacks/ping-protect-initialize-callback.test.ts +153 -0
  458. package/src/lib/callbacks/ping-protect-initialize-callback.ts +44 -0
  459. package/src/lib/callbacks/polling-wait-callback.test.ts +36 -0
  460. package/src/lib/callbacks/polling-wait-callback.ts +35 -0
  461. package/src/lib/callbacks/recaptcha-callback.test.ts +42 -0
  462. package/src/lib/callbacks/recaptcha-callback.ts +35 -0
  463. package/src/lib/callbacks/recaptcha-enterprise-callback.test.ts +86 -0
  464. package/src/lib/callbacks/recaptcha-enterprise-callback.ts +72 -0
  465. package/src/lib/callbacks/redirect-callback.test.ts +31 -0
  466. package/src/lib/callbacks/redirect-callback.ts +28 -0
  467. package/src/lib/callbacks/select-idp-callback.test.ts +51 -0
  468. package/src/lib/callbacks/select-idp-callback.ts +48 -0
  469. package/src/lib/callbacks/suspended-text-output-callback.test.ts +35 -0
  470. package/src/lib/callbacks/suspended-text-output-callback.ts +21 -0
  471. package/src/lib/callbacks/terms-and-conditions-callback.test.ts +55 -0
  472. package/src/lib/callbacks/terms-and-conditions-callback.ts +51 -0
  473. package/src/lib/callbacks/text-input-callback.test.ts +43 -0
  474. package/src/lib/callbacks/text-input-callback.ts +35 -0
  475. package/src/lib/callbacks/text-output-callback.test.ts +36 -0
  476. package/src/lib/callbacks/text-output-callback.ts +36 -0
  477. package/src/lib/callbacks/validated-create-password-callback.test.ts +84 -0
  478. package/src/lib/callbacks/validated-create-password-callback.ts +75 -0
  479. package/src/lib/callbacks/validated-create-username-callback.test.ts +84 -0
  480. package/src/lib/callbacks/validated-create-username-callback.ts +76 -0
  481. package/src/lib/client.store.test.ts +324 -0
  482. package/src/lib/client.store.ts +194 -0
  483. package/src/lib/client.store.utils.ts +46 -0
  484. package/src/lib/config.types.ts +17 -0
  485. package/src/lib/device/defaults.ts +79 -0
  486. package/src/lib/device/device-profile.mock.data.ts +120 -0
  487. package/src/lib/device/device-profile.test.ts +128 -0
  488. package/src/lib/device/device-profile.ts +287 -0
  489. package/src/lib/device/interfaces.ts +63 -0
  490. package/src/lib/device/sample-profile.json +45 -0
  491. package/src/lib/interfaces.ts +25 -0
  492. package/src/lib/journey.api.ts +198 -0
  493. package/src/lib/journey.slice.ts +33 -0
  494. package/src/lib/journey.utils.ts +44 -0
  495. package/src/lib/login-failure.utils.test.ts +31 -0
  496. package/src/lib/login-failure.utils.ts +62 -0
  497. package/src/lib/login-success.utils.test.ts +29 -0
  498. package/src/lib/login-success.utils.ts +43 -0
  499. package/src/lib/policy/interfaces.ts +16 -0
  500. package/src/lib/policy/message-creator.ts +66 -0
  501. package/src/lib/policy/policy.test.ts +202 -0
  502. package/src/lib/policy/policy.ts +134 -0
  503. package/src/lib/qr-code/qr-code.mock.data.ts +184 -0
  504. package/src/lib/qr-code/qr-code.test.ts +78 -0
  505. package/src/lib/qr-code/qr-code.ts +96 -0
  506. package/src/lib/recovery-codes/recovery-codes.test.ts +43 -0
  507. package/src/lib/recovery-codes/recovery-codes.ts +72 -0
  508. package/src/lib/recovery-codes/script-parser.test.ts +34 -0
  509. package/src/lib/recovery-codes/script-parser.ts +50 -0
  510. package/src/lib/recovery-codes/script-text.mock.data.ts +120 -0
  511. package/src/lib/step.test.ts +104 -0
  512. package/src/lib/step.types.ts +22 -0
  513. package/src/lib/step.utils.ts +99 -0
  514. package/src/lib/webauthn/enums.ts +36 -0
  515. package/src/lib/webauthn/helpers.mock.data.ts +24 -0
  516. package/src/lib/webauthn/helpers.test.ts +54 -0
  517. package/src/lib/webauthn/helpers.ts +124 -0
  518. package/src/lib/webauthn/interfaces.ts +112 -0
  519. package/src/lib/webauthn/script-text.mock.data.ts +463 -0
  520. package/src/lib/webauthn/webauthn.mock.data.ts +478 -0
  521. package/src/lib/webauthn/webauthn.test.ts +100 -0
  522. package/src/lib/webauthn/webauthn.ts +508 -0
  523. package/src/types.ts +50 -0
  524. package/tsconfig.json +28 -0
  525. package/tsconfig.lib.json +37 -0
  526. package/tsconfig.spec.json +42 -0
  527. package/vite.config.ts +0 -0
  528. package/vitest.setup.ts +1 -0
@@ -0,0 +1,124 @@
1
+ import { WebAuthnOutcome, WebAuthnStepType } from './enums.js';
2
+ import type { HiddenValueCallback } from '../callbacks/hidden-value-callback.js';
3
+ import type { JourneyStep } from '../step.utils.js';
4
+ import type { AttestationType, RelyingParty, WebAuthnAuthenticationMetadata, WebAuthnCallbacks, WebAuthnRegistrationMetadata } from './interfaces.js';
5
+ import type { MetadataCallback } from '../callbacks/metadata-callback.js';
6
+ import type { TextOutputCallback } from '../callbacks/text-output-callback.js';
7
+ type OutcomeWithName<ClientId extends string, Attestation extends AttestationType, PubKeyCred extends PublicKeyCredential, Name = ''> = Name extends infer P extends string ? `${ClientId}::${Attestation}::${PubKeyCred['id']}${P extends '' ? '' : `::${P}`}` : never;
8
+ /**
9
+ * Utility for integrating a web browser's WebAuthn API.
10
+ *
11
+ * Example:
12
+ *
13
+ * ```js
14
+ * // Determine if a step is a WebAuthn step
15
+ * const stepType = WebAuthn.getWebAuthnStepType(step);
16
+ * if (stepType === WebAuthnStepType.Registration) {
17
+ * // Register a new device
18
+ * await WebAuthn.register(step);
19
+ * } else if (stepType === WebAuthnStepType.Authentication) {
20
+ * // Authenticate with a registered device
21
+ * await WebAuthn.authenticate(step);
22
+ * }
23
+ * ```
24
+ */
25
+ export declare abstract class WebAuthn {
26
+ /**
27
+ * Determines if the given step is a WebAuthn step.
28
+ *
29
+ * @param step The step to evaluate
30
+ * @return A WebAuthnStepType value
31
+ */
32
+ static getWebAuthnStepType(step: JourneyStep): WebAuthnStepType;
33
+ /**
34
+ * Populates the step with the necessary authentication outcome.
35
+ *
36
+ * @param step The step that contains WebAuthn authentication data
37
+ * @return The populated step
38
+ */
39
+ static authenticate(step: JourneyStep): Promise<JourneyStep>;
40
+ /**
41
+ * Populates the step with the necessary registration outcome.
42
+ *
43
+ * @param step The step that contains WebAuthn registration data
44
+ * @return The populated step
45
+ */
46
+ static register<T extends string = ''>(step: JourneyStep, deviceName?: T): Promise<JourneyStep>;
47
+ /**
48
+ * Returns an object containing the two WebAuthn callbacks.
49
+ *
50
+ * @param step The step that contains WebAuthn callbacks
51
+ * @return The WebAuthn callbacks
52
+ */
53
+ static getCallbacks(step: JourneyStep): WebAuthnCallbacks;
54
+ /**
55
+ * Returns the WebAuthn metadata callback containing data to pass to the browser
56
+ * Web Authentication API.
57
+ *
58
+ * @param step The step that contains WebAuthn callbacks
59
+ * @return The metadata callback
60
+ */
61
+ static getMetadataCallback(step: JourneyStep): MetadataCallback | undefined;
62
+ /**
63
+ * Returns the WebAuthn hidden value callback where the outcome should be populated.
64
+ *
65
+ * @param step The step that contains WebAuthn callbacks
66
+ * @return The hidden value callback
67
+ */
68
+ static getOutcomeCallback(step: JourneyStep): HiddenValueCallback | undefined;
69
+ /**
70
+ * Returns the WebAuthn metadata callback containing data to pass to the browser
71
+ * Web Authentication API.
72
+ *
73
+ * @param step The step that contains WebAuthn callbacks
74
+ * @return The metadata callback
75
+ */
76
+ static getTextOutputCallback(step: JourneyStep): TextOutputCallback | undefined;
77
+ /**
78
+ * Retrieves the credential from the browser Web Authentication API.
79
+ *
80
+ * @param options The public key options associated with the request
81
+ * @return The credential
82
+ */
83
+ static getAuthenticationCredential(options: PublicKeyCredentialRequestOptions): Promise<PublicKeyCredential | null>;
84
+ /**
85
+ * Converts an authentication credential into the outcome expected by OpenAM.
86
+ *
87
+ * @param credential The credential to convert
88
+ * @return The outcome string
89
+ */
90
+ static getAuthenticationOutcome(credential: PublicKeyCredential | null): OutcomeWithName<string, AttestationType, PublicKeyCredential> | OutcomeWithName<string, AttestationType, PublicKeyCredential, string>;
91
+ /**
92
+ * Retrieves the credential from the browser Web Authentication API.
93
+ *
94
+ * @param options The public key options associated with the request
95
+ * @return The credential
96
+ */
97
+ static getRegistrationCredential(options: PublicKeyCredentialCreationOptions): Promise<PublicKeyCredential | null>;
98
+ /**
99
+ * Converts a registration credential into the outcome expected by OpenAM.
100
+ *
101
+ * @param credential The credential to convert
102
+ * @return The outcome string
103
+ */
104
+ static getRegistrationOutcome(credential: PublicKeyCredential | null): OutcomeWithName<string, AttestationType, PublicKeyCredential>;
105
+ /**
106
+ * Converts authentication tree metadata into options required by the browser
107
+ * Web Authentication API.
108
+ *
109
+ * @param metadata The metadata provided in the authentication tree MetadataCallback
110
+ * @return The Web Authentication API request options
111
+ */
112
+ static createAuthenticationPublicKey(metadata: WebAuthnAuthenticationMetadata): PublicKeyCredentialRequestOptions;
113
+ /**
114
+ * Converts authentication tree metadata into options required by the browser
115
+ * Web Authentication API.
116
+ *
117
+ * @param metadata The metadata provided in the authentication tree MetadataCallback
118
+ * @return The Web Authentication API request options
119
+ */
120
+ static createRegistrationPublicKey(metadata: WebAuthnRegistrationMetadata): PublicKeyCredentialCreationOptions;
121
+ }
122
+ export { WebAuthnOutcome, WebAuthnStepType };
123
+ export type { RelyingParty, WebAuthnAuthenticationMetadata, WebAuthnCallbacks, WebAuthnRegistrationMetadata, };
124
+ //# sourceMappingURL=webauthn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webauthn.d.ts","sourceRoot":"","sources":["../../../../src/lib/webauthn/webauthn.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAuB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,8BAA8B,EAC9B,iBAAiB,EACjB,4BAA4B,EAE7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,KAAK,eAAe,CAClB,QAAQ,SAAS,MAAM,EACvB,WAAW,SAAS,eAAe,EACnC,UAAU,SAAS,mBAAmB,EACtC,IAAI,GAAG,EAAE,IACP,IAAI,SAAS,MAAM,CAAC,SAAS,MAAM,GACnC,GAAG,QAAQ,KAAK,WAAW,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,GACjF,KAAK,CAAC;AAIV;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,QAAQ;IAC5B;;;;;OAKG;WACW,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB;IA6BtE;;;;;OAKG;WACiB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAqDzE;;;;;OAKG;WAIiB,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,EAChD,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,WAAW,CAAC;IAyDvB;;;;;OAKG;WACW,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB;IAiBhE;;;;;;OAMG;WACW,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,gBAAgB,GAAG,SAAS;IAQlF;;;;;OAKG;WACW,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,mBAAmB,GAAG,SAAS;IAMpF;;;;;;OAMG;WACW,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,GAAG,SAAS;IAStF;;;;;OAKG;WACiB,2BAA2B,CAC7C,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAWtC;;;;;OAKG;WACW,wBAAwB,CACpC,UAAU,EAAE,mBAAmB,GAAG,IAAI,GAEpC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,mBAAmB,CAAC,GAC7D,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,CAAC;IA6CzE;;;;;OAKG;WACiB,yBAAyB,CAC3C,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAatC;;;;;OAKG;WACW,sBAAsB,CAClC,UAAU,EAAE,mBAAmB,GAAG,IAAI,GACrC,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,mBAAmB,CAAC;IAqBhE;;;;;;OAMG;WACW,6BAA6B,CACzC,QAAQ,EAAE,8BAA8B,GACvC,iCAAiC;IAsBpC;;;;;;OAMG;WACW,2BAA2B,CACvC,QAAQ,EAAE,4BAA4B,GACrC,kCAAkC;CA0CtC;AAED,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,8BAA8B,EAC9B,iBAAiB,EACjB,4BAA4B,GAC7B,CAAC"}
@@ -0,0 +1,383 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * index.ts
5
+ *
6
+ * Copyright (c) 2024 - 2025 Ping Identity Corporation. All rights reserved.
7
+ *
8
+ * This software may be modified and distributed under the terms
9
+ * of the MIT license. See the LICENSE file for details.
10
+ */
11
+ import { callbackType } from '@forgerock/sdk-types';
12
+ import { WebAuthnOutcome, WebAuthnOutcomeType, WebAuthnStepType } from './enums.js';
13
+ import { arrayBufferToString, parseCredentials, parsePubKeyArray, parseRelyingPartyId, } from './helpers.js';
14
+ /**
15
+ * Utility for integrating a web browser's WebAuthn API.
16
+ *
17
+ * Example:
18
+ *
19
+ * ```js
20
+ * // Determine if a step is a WebAuthn step
21
+ * const stepType = WebAuthn.getWebAuthnStepType(step);
22
+ * if (stepType === WebAuthnStepType.Registration) {
23
+ * // Register a new device
24
+ * await WebAuthn.register(step);
25
+ * } else if (stepType === WebAuthnStepType.Authentication) {
26
+ * // Authenticate with a registered device
27
+ * await WebAuthn.authenticate(step);
28
+ * }
29
+ * ```
30
+ */
31
+ export class WebAuthn {
32
+ /**
33
+ * Determines if the given step is a WebAuthn step.
34
+ *
35
+ * @param step The step to evaluate
36
+ * @return A WebAuthnStepType value
37
+ */
38
+ static getWebAuthnStepType(step) {
39
+ const outcomeCallback = this.getOutcomeCallback(step);
40
+ const metadataCallback = this.getMetadataCallback(step);
41
+ const textOutputCallback = this.getTextOutputCallback(step);
42
+ if (outcomeCallback && metadataCallback) {
43
+ const metadata = metadataCallback.getOutputValue('data');
44
+ if (metadata?.pubKeyCredParams) {
45
+ return WebAuthnStepType.Registration;
46
+ }
47
+ return WebAuthnStepType.Authentication;
48
+ }
49
+ if (outcomeCallback && textOutputCallback) {
50
+ const message = textOutputCallback.getMessage();
51
+ if (message.includes('pubKeyCredParams')) {
52
+ return WebAuthnStepType.Registration;
53
+ }
54
+ return WebAuthnStepType.Authentication;
55
+ }
56
+ else {
57
+ return WebAuthnStepType.None;
58
+ }
59
+ }
60
+ /**
61
+ * Populates the step with the necessary authentication outcome.
62
+ *
63
+ * @param step The step that contains WebAuthn authentication data
64
+ * @return The populated step
65
+ */
66
+ static async authenticate(step) {
67
+ const { hiddenCallback, metadataCallback, textOutputCallback } = this.getCallbacks(step);
68
+ if (hiddenCallback && (metadataCallback || textOutputCallback)) {
69
+ let outcome;
70
+ let credential = null;
71
+ try {
72
+ let publicKey;
73
+ if (metadataCallback) {
74
+ const meta = metadataCallback.getOutputValue('data');
75
+ publicKey = this.createAuthenticationPublicKey(meta);
76
+ credential = await this.getAuthenticationCredential(publicKey);
77
+ outcome = this.getAuthenticationOutcome(credential);
78
+ }
79
+ else {
80
+ throw new Error('No metadata callback found for WebAuthn authentication. Please disable JavaScript in server node.');
81
+ }
82
+ }
83
+ catch (error) {
84
+ if (!(error instanceof Error))
85
+ throw error;
86
+ // NotSupportedError is a special case
87
+ if (error.name === WebAuthnOutcomeType.NotSupportedError) {
88
+ hiddenCallback.setInputValue(WebAuthnOutcome.Unsupported);
89
+ throw error;
90
+ }
91
+ hiddenCallback.setInputValue(`${WebAuthnOutcome.Error}::${error.name}:${error.message}`);
92
+ throw error;
93
+ }
94
+ if (metadataCallback) {
95
+ const meta = metadataCallback.getOutputValue('data');
96
+ if (meta?.supportsJsonResponse && credential && 'authenticatorAttachment' in credential) {
97
+ hiddenCallback.setInputValue(JSON.stringify({
98
+ authenticatorAttachment: credential.authenticatorAttachment,
99
+ legacyData: outcome,
100
+ }));
101
+ return step;
102
+ }
103
+ }
104
+ hiddenCallback.setInputValue(outcome);
105
+ return step;
106
+ }
107
+ else {
108
+ const e = new Error('Incorrect callbacks for WebAuthn authentication');
109
+ e.name = WebAuthnOutcomeType.DataError;
110
+ hiddenCallback?.setInputValue(`${WebAuthnOutcome.Error}::${e.name}:${e.message}`);
111
+ throw e;
112
+ }
113
+ }
114
+ /**
115
+ * Populates the step with the necessary registration outcome.
116
+ *
117
+ * @param step The step that contains WebAuthn registration data
118
+ * @return The populated step
119
+ */
120
+ // Can make this generic const in Typescript 5.0 > and the name itself will
121
+ // be inferred from the type so `typeof deviceName` will not just return string
122
+ // but the actual name of the deviceName passed in as a generic.
123
+ static async register(step, deviceName) {
124
+ const { hiddenCallback, metadataCallback, textOutputCallback } = this.getCallbacks(step);
125
+ if (hiddenCallback && (metadataCallback || textOutputCallback)) {
126
+ let outcome;
127
+ let credential = null;
128
+ try {
129
+ let publicKey;
130
+ if (metadataCallback) {
131
+ const meta = metadataCallback.getOutputValue('data');
132
+ publicKey = this.createRegistrationPublicKey(meta);
133
+ credential = await this.getRegistrationCredential(publicKey);
134
+ outcome = this.getRegistrationOutcome(credential);
135
+ }
136
+ else {
137
+ throw new Error('No metadata callback found for WebAuthn registration. Please disable JavaScript in server node.');
138
+ }
139
+ }
140
+ catch (error) {
141
+ if (!(error instanceof Error))
142
+ throw error;
143
+ // NotSupportedError is a special case
144
+ if (error.name === WebAuthnOutcomeType.NotSupportedError) {
145
+ hiddenCallback.setInputValue(WebAuthnOutcome.Unsupported);
146
+ throw error;
147
+ }
148
+ hiddenCallback.setInputValue(`${WebAuthnOutcome.Error}::${error.name}:${error.message}`);
149
+ throw error;
150
+ }
151
+ if (metadataCallback) {
152
+ const meta = metadataCallback.getOutputValue('data');
153
+ if (meta?.supportsJsonResponse && credential && 'authenticatorAttachment' in credential) {
154
+ hiddenCallback.setInputValue(JSON.stringify({
155
+ authenticatorAttachment: credential.authenticatorAttachment,
156
+ legacyData: deviceName && deviceName.length > 0 ? `${outcome}::${deviceName}` : outcome,
157
+ }));
158
+ return step;
159
+ }
160
+ }
161
+ hiddenCallback.setInputValue(deviceName && deviceName.length > 0 ? `${outcome}::${deviceName}` : outcome);
162
+ return step;
163
+ }
164
+ else {
165
+ const e = new Error('Incorrect callbacks for WebAuthn registration');
166
+ e.name = WebAuthnOutcomeType.DataError;
167
+ hiddenCallback?.setInputValue(`${WebAuthnOutcome.Error}::${e.name}:${e.message}`);
168
+ throw e;
169
+ }
170
+ }
171
+ /**
172
+ * Returns an object containing the two WebAuthn callbacks.
173
+ *
174
+ * @param step The step that contains WebAuthn callbacks
175
+ * @return The WebAuthn callbacks
176
+ */
177
+ static getCallbacks(step) {
178
+ const hiddenCallback = this.getOutcomeCallback(step);
179
+ const metadataCallback = this.getMetadataCallback(step);
180
+ const textOutputCallback = this.getTextOutputCallback(step);
181
+ const returnObj = {
182
+ hiddenCallback,
183
+ };
184
+ if (metadataCallback) {
185
+ returnObj.metadataCallback = metadataCallback;
186
+ }
187
+ else if (textOutputCallback) {
188
+ returnObj.textOutputCallback = textOutputCallback;
189
+ }
190
+ return returnObj;
191
+ }
192
+ /**
193
+ * Returns the WebAuthn metadata callback containing data to pass to the browser
194
+ * Web Authentication API.
195
+ *
196
+ * @param step The step that contains WebAuthn callbacks
197
+ * @return The metadata callback
198
+ */
199
+ static getMetadataCallback(step) {
200
+ return step.getCallbacksOfType(callbackType.MetadataCallback).find((x) => {
201
+ const cb = x.getOutputByName('data', undefined);
202
+ // eslint-disable-next-line no-prototype-builtins
203
+ return cb && cb.hasOwnProperty('relyingPartyId');
204
+ });
205
+ }
206
+ /**
207
+ * Returns the WebAuthn hidden value callback where the outcome should be populated.
208
+ *
209
+ * @param step The step that contains WebAuthn callbacks
210
+ * @return The hidden value callback
211
+ */
212
+ static getOutcomeCallback(step) {
213
+ return step
214
+ .getCallbacksOfType(callbackType.HiddenValueCallback)
215
+ .find((x) => x.getOutputByName('id', '') === 'webAuthnOutcome');
216
+ }
217
+ /**
218
+ * Returns the WebAuthn metadata callback containing data to pass to the browser
219
+ * Web Authentication API.
220
+ *
221
+ * @param step The step that contains WebAuthn callbacks
222
+ * @return The metadata callback
223
+ */
224
+ static getTextOutputCallback(step) {
225
+ return step
226
+ .getCallbacksOfType(callbackType.TextOutputCallback)
227
+ .find((x) => {
228
+ const cb = x.getOutputByName('message', undefined);
229
+ return cb && cb.includes('webAuthnOutcome');
230
+ });
231
+ }
232
+ /**
233
+ * Retrieves the credential from the browser Web Authentication API.
234
+ *
235
+ * @param options The public key options associated with the request
236
+ * @return The credential
237
+ */
238
+ static async getAuthenticationCredential(options) {
239
+ // Feature check before we attempt registering a device
240
+ if (!window.PublicKeyCredential) {
241
+ const e = new Error('PublicKeyCredential not supported by this browser');
242
+ e.name = WebAuthnOutcomeType.NotSupportedError;
243
+ throw e;
244
+ }
245
+ const credential = await navigator.credentials.get({ publicKey: options });
246
+ return credential;
247
+ }
248
+ /**
249
+ * Converts an authentication credential into the outcome expected by OpenAM.
250
+ *
251
+ * @param credential The credential to convert
252
+ * @return The outcome string
253
+ */
254
+ static getAuthenticationOutcome(credential) {
255
+ if (credential === null) {
256
+ const e = new Error('No credential generated from authentication');
257
+ e.name = WebAuthnOutcomeType.UnknownError;
258
+ throw e;
259
+ }
260
+ try {
261
+ const clientDataJSON = arrayBufferToString(credential.response.clientDataJSON);
262
+ const assertionResponse = credential.response;
263
+ const authenticatorData = new Int8Array(assertionResponse.authenticatorData).toString();
264
+ const signature = new Int8Array(assertionResponse.signature).toString();
265
+ // Current native typing for PublicKeyCredential does not include `userHandle`
266
+ // eslint-disable-next-line
267
+ // @ts-ignore
268
+ const userHandle = arrayBufferToString(credential.response.userHandle);
269
+ let stringOutput = `${clientDataJSON}::${authenticatorData}::${signature}::${credential.id}`;
270
+ // Check if Username is stored on device
271
+ if (userHandle) {
272
+ stringOutput = `${stringOutput}::${userHandle}`;
273
+ return stringOutput;
274
+ }
275
+ return stringOutput;
276
+ }
277
+ catch {
278
+ const e = new Error('Transforming credential object to string failed');
279
+ e.name = WebAuthnOutcomeType.EncodingError;
280
+ throw e;
281
+ }
282
+ }
283
+ /**
284
+ * Retrieves the credential from the browser Web Authentication API.
285
+ *
286
+ * @param options The public key options associated with the request
287
+ * @return The credential
288
+ */
289
+ static async getRegistrationCredential(options) {
290
+ // Feature check before we attempt registering a device
291
+ if (!window.PublicKeyCredential) {
292
+ const e = new Error('PublicKeyCredential not supported by this browser');
293
+ e.name = WebAuthnOutcomeType.NotSupportedError;
294
+ throw e;
295
+ }
296
+ const credential = await navigator.credentials.create({
297
+ publicKey: options,
298
+ });
299
+ return credential;
300
+ }
301
+ /**
302
+ * Converts a registration credential into the outcome expected by OpenAM.
303
+ *
304
+ * @param credential The credential to convert
305
+ * @return The outcome string
306
+ */
307
+ static getRegistrationOutcome(credential) {
308
+ if (credential === null) {
309
+ const e = new Error('No credential generated from registration');
310
+ e.name = WebAuthnOutcomeType.UnknownError;
311
+ throw e;
312
+ }
313
+ try {
314
+ const clientDataJSON = arrayBufferToString(credential.response.clientDataJSON);
315
+ const attestationResponse = credential.response;
316
+ const attestationObject = new Int8Array(attestationResponse.attestationObject).toString();
317
+ return `${clientDataJSON}::${attestationObject}::${credential.id}`;
318
+ }
319
+ catch {
320
+ const e = new Error('Transforming credential object to string failed');
321
+ e.name = WebAuthnOutcomeType.EncodingError;
322
+ throw e;
323
+ }
324
+ }
325
+ /**
326
+ * Converts authentication tree metadata into options required by the browser
327
+ * Web Authentication API.
328
+ *
329
+ * @param metadata The metadata provided in the authentication tree MetadataCallback
330
+ * @return The Web Authentication API request options
331
+ */
332
+ static createAuthenticationPublicKey(metadata) {
333
+ const { acceptableCredentials, allowCredentials, challenge, relyingPartyId, timeout, userVerification, } = metadata;
334
+ const rpId = parseRelyingPartyId(relyingPartyId);
335
+ const allowCredentialsValue = parseCredentials(allowCredentials || acceptableCredentials || '');
336
+ return {
337
+ challenge: Uint8Array.from(atob(challenge), (c) => c.charCodeAt(0)).buffer,
338
+ timeout,
339
+ // only add key-value pair if proper value is provided
340
+ ...(allowCredentialsValue && { allowCredentials: allowCredentialsValue }),
341
+ ...(userVerification && { userVerification }),
342
+ ...(rpId && { rpId }),
343
+ };
344
+ }
345
+ /**
346
+ * Converts authentication tree metadata into options required by the browser
347
+ * Web Authentication API.
348
+ *
349
+ * @param metadata The metadata provided in the authentication tree MetadataCallback
350
+ * @return The Web Authentication API request options
351
+ */
352
+ static createRegistrationPublicKey(metadata) {
353
+ const { pubKeyCredParams: pubKeyCredParamsString } = metadata;
354
+ const pubKeyCredParams = parsePubKeyArray(pubKeyCredParamsString);
355
+ if (!pubKeyCredParams) {
356
+ const e = new Error('Missing pubKeyCredParams property from registration options');
357
+ e.name = WebAuthnOutcomeType.DataError;
358
+ throw e;
359
+ }
360
+ const excludeCredentials = parseCredentials(metadata.excludeCredentials);
361
+ const { attestationPreference, authenticatorSelection, challenge, relyingPartyId, relyingPartyName, timeout, userId, userName, displayName, } = metadata;
362
+ const rpId = parseRelyingPartyId(relyingPartyId);
363
+ const rp = {
364
+ name: relyingPartyName,
365
+ ...(rpId && { id: rpId }),
366
+ };
367
+ return {
368
+ attestation: attestationPreference,
369
+ authenticatorSelection: JSON.parse(authenticatorSelection),
370
+ challenge: Uint8Array.from(atob(challenge), (c) => c.charCodeAt(0)).buffer,
371
+ ...(excludeCredentials.length && { excludeCredentials }),
372
+ pubKeyCredParams,
373
+ rp,
374
+ timeout,
375
+ user: {
376
+ displayName: displayName || userName,
377
+ id: Int8Array.from(userId.split('').map((c) => c.charCodeAt(0))),
378
+ name: displayName || userName,
379
+ },
380
+ };
381
+ }
382
+ }
383
+ export { WebAuthnOutcome, WebAuthnStepType };