@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,43 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * recovery-codes.test.ts
5
+ *
6
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE file for details.
9
+ */
10
+
11
+ import { RecoveryCodes } from './recovery-codes.js';
12
+ import { createJourneyStep } from '../step.utils.js';
13
+ import {
14
+ displayRecoveryCodesResponse,
15
+ expectedDeviceName,
16
+ expectedRecoveryCodes,
17
+ otherResponse,
18
+ } from './script-text.mock.data.js';
19
+
20
+ describe('Class for managing the Display Recovery Codes node', () => {
21
+ it('should return true if Display Recovery Codes step', () => {
22
+ const step = createJourneyStep(displayRecoveryCodesResponse);
23
+ const isDisplayStep = RecoveryCodes.isDisplayStep(step);
24
+ expect(isDisplayStep).toBe(true);
25
+ });
26
+
27
+ it('should return false if not Display Recovery Codes step', () => {
28
+ const step = createJourneyStep(otherResponse);
29
+ const isDisplayStep = RecoveryCodes.isDisplayStep(step);
30
+ expect(isDisplayStep).toBe(false);
31
+ });
32
+
33
+ it('should return the Recovery Codes as array of strings', () => {
34
+ const step = createJourneyStep(displayRecoveryCodesResponse);
35
+ const recoveryCodes = RecoveryCodes.getCodes(step);
36
+ expect(recoveryCodes).toStrictEqual(expectedRecoveryCodes);
37
+ });
38
+ it('should return a display name from the getDisplayName method', () => {
39
+ const step = createJourneyStep(displayRecoveryCodesResponse);
40
+ const displayName = RecoveryCodes.getDeviceName(step);
41
+ expect(displayName).toStrictEqual(expectedDeviceName);
42
+ });
43
+ });
@@ -0,0 +1,72 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * index.ts
5
+ *
6
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE file for details.
9
+ */
10
+
11
+ import { callbackType } from '@forgerock/sdk-types';
12
+
13
+ import { parseDeviceNameText, parseDisplayRecoveryCodesText } from './script-parser.js';
14
+
15
+ import type { TextOutputCallback } from '../callbacks/text-output-callback.js';
16
+ import type { JourneyStep } from '../step.utils.js';
17
+
18
+ /**
19
+ * Utility for handling recovery code nodes.
20
+ *
21
+ * Example:
22
+ *
23
+ * ```js
24
+ * // Determine if step is Display Recovery Codes step
25
+ * const isDisplayRecoveryCodesStep = RecoveryCodes.isDisplayStep(step);
26
+ * if (isDisplayRecoveryCodesStep) {
27
+ * const recoveryCodes = RecoveryCodes.getCodes(step);
28
+ * // Do the UI needful
29
+ * }
30
+ * ```
31
+ */
32
+ export abstract class RecoveryCodes {
33
+ public static getDeviceName(step: JourneyStep): string {
34
+ const text = this.getDisplayCallback(step)?.getOutputByName('message', '') ?? '';
35
+ return parseDeviceNameText(text);
36
+ }
37
+ /**
38
+ * Retrieves the recovery codes by parsing the JavaScript message text in callback.
39
+ *
40
+ * @param step The step to evaluate
41
+ * @return Recovery Code values in array
42
+ */
43
+ public static getCodes(step: JourneyStep): string[] {
44
+ const text = this.getDisplayCallback(step)?.getOutputByName('message', '');
45
+ return parseDisplayRecoveryCodesText(text || '');
46
+ }
47
+
48
+ /**
49
+ * Determines if the given step is a Display Recovery Codes step.
50
+ *
51
+ * @param step The step to evaluate
52
+ * @return Is this step a Display Recovery Codes step
53
+ */
54
+ public static isDisplayStep(step: JourneyStep): boolean {
55
+ return !!this.getDisplayCallback(step);
56
+ }
57
+
58
+ /**
59
+ * Gets the recovery codes step.
60
+ *
61
+ * @param step The step to evaluate
62
+ * @return gets the Display Recovery Codes' callback
63
+ */
64
+ private static getDisplayCallback(step: JourneyStep): TextOutputCallback | undefined {
65
+ return step
66
+ .getCallbacksOfType<TextOutputCallback>(callbackType.TextOutputCallback)
67
+ .find((x) => {
68
+ const cb = x.getOutputByName<string | undefined>('message', undefined);
69
+ return cb && (cb.includes('Recovery Codes') || cb.includes('recovery codes'));
70
+ });
71
+ }
72
+ }
@@ -0,0 +1,34 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * script-parser.test.ts
5
+ *
6
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE file for details.
9
+ */
10
+
11
+ import { parseDeviceNameText, parseDisplayRecoveryCodesText } from './script-parser.js';
12
+ import {
13
+ displayRecoveryCodes,
14
+ expectedRecoveryCodes,
15
+ securityKeyCustomNameResponse,
16
+ securityKeyResponse,
17
+ } from './script-text.mock.data.js';
18
+
19
+ describe('Parsing of the Display Recovery Codes script text', () => {
20
+ it('should parse the Display Recovery Codes Text', () => {
21
+ const result = parseDisplayRecoveryCodesText(displayRecoveryCodes);
22
+ expect(result).toStrictEqual(expectedRecoveryCodes);
23
+ });
24
+ it('should parse the display name from recovery codes script', () => {
25
+ const text = securityKeyResponse;
26
+ const result = parseDeviceNameText(text);
27
+ expect(result).toStrictEqual('New Security Key');
28
+ });
29
+ it('should parse a custom name out of the recovery text', () => {
30
+ const text = securityKeyCustomNameResponse;
31
+ const result = parseDeviceNameText(text);
32
+ expect(result).toStrictEqual('My Custom Device Name');
33
+ });
34
+ });
@@ -0,0 +1,50 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * script-parser.ts
5
+ *
6
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE file for details.
9
+ */
10
+
11
+ export function parseDisplayRecoveryCodesText(text: string): string[] {
12
+ /**
13
+ * e.g. ` ...
14
+ * "<div class=\"text-center\">\n" +
15
+ * "iZmEtxvQ00\n" +
16
+ * "</div>\n" +
17
+ * ... `
18
+ */
19
+
20
+ const recoveryCodesMatches = text.match(/\s[\w\W]"([\w]*)\\/g);
21
+ const recoveryCodes =
22
+ Array.isArray(recoveryCodesMatches) &&
23
+ recoveryCodesMatches.map((substr: string) => {
24
+ // e.g. `"iZmEtxvQ00\`
25
+ const arr = substr.match(/"([\w]*)\\/);
26
+ return Array.isArray(arr) ? arr[1] : '';
27
+ });
28
+ return recoveryCodes || [];
29
+ }
30
+
31
+ /**
32
+ *
33
+ * @param text
34
+ * @returns string
35
+ */
36
+ export function parseDeviceNameText(text: string): string {
37
+ /**
38
+ * We default the device name to 'New Security Key'
39
+ * If the user has a device name, it will be wrapped in <em> tags
40
+ * e.g. ` ... <em>My Security Key</em> ... `
41
+ * We want to remove the <em> tags and just return the device name
42
+ * e.g. ` ... My Security Key ... `
43
+ */
44
+ const displayName =
45
+ text
46
+ ?.match(/<em\s*.*>\s*.*<\/em>/g)?.[0]
47
+ ?.replace('<em>', '')
48
+ ?.replace('</em>', '') ?? 'New Security Key';
49
+ return displayName;
50
+ }
@@ -0,0 +1,120 @@
1
+ /* eslint-disable no-useless-escape */
2
+ /*
3
+ * @forgerock/ping-javascript-sdk
4
+ *
5
+ * script-text.mock.data.ts
6
+ *
7
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
8
+ * This software may be modified and distributed under the terms
9
+ * of the MIT license. See the LICENSE file for details.
10
+ */
11
+
12
+ import { callbackType } from '@forgerock/sdk-types';
13
+
14
+ const displayRecoveryCodes = `/*
15
+ * Copyright 2018 ForgeRock AS. All Rights Reserved
16
+ *
17
+ * Use of this code requires a commercial software license with ForgeRock AS.
18
+ * or with one of its affiliates. All use shall be exclusively subject
19
+ * to such license between the licensee and ForgeRock AS.
20
+ */\n\nvar newLocation = document.getElementById(\"wrapper\");\nvar oldHtml = newLocation.getElementsByTagName(\"fieldset\")[0].innerHTML;\nnewLocation.getElementsByTagName(\"fieldset\")[0].innerHTML = \"<div class=\\\"panel panel-default\\\">\\n\" +
21
+ \" <div class=\\\"panel-body text-center\\\">\\n\" +
22
+ \" <h3>Your Recovery Codes</h3>\\n\" +
23
+ \" <h4>You must make a copy of these WebAuthn authenticator recovery codes. They cannot be displayed again.</h4>\\n\" +
24
+ \" </div>\\n\" +
25
+ \"<div class=\\\"text-center\\\">\\n\" +
26
+ \"iZmEtxvQ00\\n\" +
27
+ \"</div>\\n\" +
28
+ \"<div class=\\\"text-center\\\">\\n\" +
29
+ \"Eqw3GFVamY\\n\" +
30
+ \"</div>\\n\" +
31
+ \"<div class=\\\"text-center\\\">\\n\" +
32
+ \"nNPqIEtIpS\\n\" +
33
+ \"</div>\\n\" +
34
+ \"<div class=\\\"text-center\\\">\\n\" +
35
+ \"vGhNQpDjP8\\n\" +
36
+ \"</div>\\n\" +
37
+ \"<div class=\\\"text-center\\\">\\n\" +
38
+ \"ItA4W3iBaA\\n\" +
39
+ \"</div>\\n\" +
40
+ \"<div class=\\\"text-center\\\">\\n\" +
41
+ \"JmLQP6XyIo\\n\" +
42
+ \"</div>\\n\" +
43
+ \"<div class=\\\"text-center\\\">\\n\" +
44
+ \"G2e6foNKke\\n\" +
45
+ \"</div>\\n\" +
46
+ \"<div class=\\\"text-center\\\">\\n\" +
47
+ \"h2SqAqvT21\\n\" +
48
+ \"</div>\\n\" +
49
+ \"<div class=\\\"text-center\\\">\\n\" +
50
+ \"q6VX1ojNbI\\n\" +
51
+ \"</div>\\n\" +
52
+ \"<div class=\\\"text-center\\\">\\n\" +
53
+ \"IZKIQXAfY2\\n\" +
54
+ \"</div>\\n\" +
55
+ \"<div class=\\\"panel-body text-center\\\">\\n\" +
56
+ \" <p>Use one of these codes to authenticate if you lose your device, which has been named: <em>New Security Key</em></p>\\n\" +
57
+ \"</div>\\n\" +
58
+ \"</div>\" + oldHtml;\ndocument.body.appendChild(newLocation);\n\n\n
59
+ `;
60
+
61
+ const displayRecoveryCodesResponse = {
62
+ authId: 'foo',
63
+ callbacks: [
64
+ {
65
+ type: callbackType.TextOutputCallback,
66
+ output: [
67
+ {
68
+ name: 'message',
69
+ value:
70
+ '/*\n * Copyright 2018 ForgeRock AS. All Rights Reserved\n *\n * Use of this code requires a commercial software license with ForgeRock AS.\n * or with one of its affiliates. All use shall be exclusively subject\n * to such license between the licensee and ForgeRock AS.\n */\n\nvar newLocation = document.getElementById("wrapper");\nvar oldHtml = newLocation.getElementsByTagName("fieldset")[0].innerHTML;\nnewLocation.getElementsByTagName("fieldset")[0].innerHTML = "<div class=\\"panel panel-default\\">\\n" +\n " <div class=\\"panel-body text-center\\">\\n" +\n " <h3>Your Recovery Codes</h3>\\n" +\n " <h4>You must make a copy of these WebAuthn authenticator recovery codes. They cannot be displayed again.</h4>\\n" +\n " </div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "iZmEtxvQ00\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "Eqw3GFVamY\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "nNPqIEtIpS\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "vGhNQpDjP8\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "ItA4W3iBaA\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "JmLQP6XyIo\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "G2e6foNKke\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "h2SqAqvT21\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "q6VX1ojNbI\\n" +\n "</div>\\n" +\n "<div class=\\"text-center\\">\\n" +\n "IZKIQXAfY2\\n" +\n "</div>\\n" +\n "<div class=\\"panel-body text-center\\">\\n" +\n " <p>Use one of these codes to authenticate if you lose your device, which has been named: <em>New Security Key</em></p>\\n" +\n "</div>\\n" +\n "</div>" + oldHtml;\ndocument.body.appendChild(newLocation);\n\n\n',
71
+ },
72
+ { name: 'messageType', value: '4' },
73
+ ],
74
+ },
75
+ ],
76
+ };
77
+ const expectedDeviceName = 'New Security Key';
78
+
79
+ const expectedRecoveryCodes = [
80
+ 'iZmEtxvQ00',
81
+ 'Eqw3GFVamY',
82
+ 'nNPqIEtIpS',
83
+ 'vGhNQpDjP8',
84
+ 'ItA4W3iBaA',
85
+ 'JmLQP6XyIo',
86
+ 'G2e6foNKke',
87
+ 'h2SqAqvT21',
88
+ 'q6VX1ojNbI',
89
+ 'IZKIQXAfY2',
90
+ ];
91
+
92
+ const otherResponse = {
93
+ authId: 'foo',
94
+ callbacks: [
95
+ {
96
+ type: callbackType.TextOutputCallback,
97
+ output: [
98
+ {
99
+ name: 'message',
100
+ value:
101
+ '/*\n * Copyright 2018 ForgeRock AS. All Rights Reserved\n *\n * Use of this code requires a commercial software license with ForgeRock AS.\n * or with one of its affiliates. All use shall be exclusively subject\n * to such license between the licensee and ForgeRock AS.\n */\n\nvar new Location = foo;',
102
+ },
103
+ { name: 'messageType', value: '4' },
104
+ ],
105
+ },
106
+ ],
107
+ };
108
+
109
+ const securityKeyResponse = `/* * Copyright 2018 ForgeRock AS. All Rights Reserved * * Use of this code requires a commercial software license with ForgeRock AS. * or with one of its affiliates. All use shall be exclusively subject * to such license between the licensee and ForgeRock AS. */ var newLocation = document.getElementById("wrapper"); var oldHtml = newLocation.getElementsByTagName("fieldset")[0].innerHTML; newLocation.getElementsByTagName("fieldset")[0].innerHTML = "<div class=\"panel panel-default\">\n" + " <div class=\"panel-body text-center\">\n" + " <h3>Your Recovery Codes</h3>\n" + " <h4>You must make a copy of these recovery codes. They cannot be displayed again.</h4>\n" + " </div>\n" + "<div class=\"text-center\">\n" + "kw50qtmm32\n" + "</div>\n" + "<div class=\"text-center\">\n" + "Rt2Td8AK2s\n" + "</div>\n" + "<div class=\"text-center\">\n" + "6vZrIRCBJB\n" + "</div>\n" + "<div class=\"text-center\">\n" + "HCmL01Yiyv\n" + "</div>\n" + "<div class=\"text-center\">\n" + "BvDsSpazA2\n" + "</div>\n" + "<div class=\"text-center\">\n" + "T6pbKLyW2l\n" + "</div>\n" + "<div class=\"text-center\">\n" + "gZR0u6XubS\n" + "</div>\n" + "<div class=\"text-center\">\n" + "VZ1bH94IfO\n" + "</div>\n" + "<div class=\"text-center\">\n" + "O9BZ4bLefQ\n" + "</div>\n" + "<div class=\"text-center\">\n" + "NKNrBxlHCt\n" + "</div>\n" + "<div class=\"panel-body text-center\">\n" + " <p>Use one of these codes to authenticate if you lose your device, which has been named: <em>New Security Key</em></p>\n" + "</div>\n" + "</div>" + oldHtml; document.body.appendChild(newLocation);`;
110
+ const securityKeyCustomNameResponse = `/* * Copyright 2018 ForgeRock AS. All Rights Reserved * * Use of this code requires a commercial software license with ForgeRock AS. * or with one of its affiliates. All use shall be exclusively subject * to such license between the licensee and ForgeRock AS. */ var newLocation = document.getElementById("wrapper"); var oldHtml = newLocation.getElementsByTagName("fieldset")[0].innerHTML; newLocation.getElementsByTagName("fieldset")[0].innerHTML = "<div class=\"panel panel-default\">\n" + " <div class=\"panel-body text-center\">\n" + " <h3>Your Recovery Codes</h3>\n" + " <h4>You must make a copy of these recovery codes. They cannot be displayed again.</h4>\n" + " </div>\n" + "<div class=\"text-center\">\n" + "kw50qtmm32\n" + "</div>\n" + "<div class=\"text-center\">\n" + "Rt2Td8AK2s\n" + "</div>\n" + "<div class=\"text-center\">\n" + "6vZrIRCBJB\n" + "</div>\n" + "<div class=\"text-center\">\n" + "HCmL01Yiyv\n" + "</div>\n" + "<div class=\"text-center\">\n" + "BvDsSpazA2\n" + "</div>\n" + "<div class=\"text-center\">\n" + "T6pbKLyW2l\n" + "</div>\n" + "<div class=\"text-center\">\n" + "gZR0u6XubS\n" + "</div>\n" + "<div class=\"text-center\">\n" + "VZ1bH94IfO\n" + "</div>\n" + "<div class=\"text-center\">\n" + "O9BZ4bLefQ\n" + "</div>\n" + "<div class=\"text-center\">\n" + "NKNrBxlHCt\n" + "</div>\n" + "<div class=\"panel-body text-center\">\n" + " <p>Use one of these codes to authenticate if you lose your device, which has been named: <em>My Custom Device Name</em></p>\n" + "</div>\n" + "</div>" + oldHtml; document.body.appendChild(newLocation);`;
111
+
112
+ export {
113
+ displayRecoveryCodes,
114
+ displayRecoveryCodesResponse,
115
+ expectedDeviceName,
116
+ expectedRecoveryCodes,
117
+ otherResponse,
118
+ securityKeyCustomNameResponse,
119
+ securityKeyResponse,
120
+ };
@@ -0,0 +1,104 @@
1
+ /*
2
+ * Copyright (c) 2025 Ping Identity Corporation. All rights reserved.
3
+ *
4
+ * This software may be modified and distributed under the terms
5
+ * of the MIT license. See the LICENSE file for details.
6
+ */
7
+
8
+ import { callbackType } from '@forgerock/sdk-types';
9
+ import { describe, it, expect } from 'vitest';
10
+
11
+ import type { Step } from '@forgerock/sdk-types';
12
+
13
+ import { createJourneyStep } from './step.utils.js';
14
+ import { NameCallback } from './callbacks/name-callback.js';
15
+
16
+ describe('fr-step.ts', () => {
17
+ const stepPayload: Step = {
18
+ authId: '123',
19
+ callbacks: [
20
+ {
21
+ type: callbackType.NameCallback,
22
+ input: [{ name: 'IDToken1', value: '' }],
23
+ output: [{ name: 'prompt', value: 'Username' }],
24
+ },
25
+ {
26
+ type: callbackType.PasswordCallback,
27
+ input: [{ name: 'IDToken2', value: '' }],
28
+ output: [{ name: 'prompt', value: 'Password' }],
29
+ },
30
+ {
31
+ type: callbackType.NameCallback, // Duplicate for testing
32
+ input: [{ name: 'IDToken3', value: '' }],
33
+ output: [{ name: 'prompt', value: 'Username 2' }],
34
+ },
35
+ ],
36
+ description: 'Step description',
37
+ header: 'Step header',
38
+ stage: 'Step stage',
39
+ };
40
+
41
+ it('should correctly initialize with a payload', () => {
42
+ const step = createJourneyStep(stepPayload);
43
+ expect(step.payload).toEqual(stepPayload);
44
+ expect(step.callbacks).toHaveLength(3);
45
+ expect(step.callbacks[0]).toBeInstanceOf(NameCallback);
46
+ });
47
+
48
+ it('should get a single callback of a specific type', () => {
49
+ const singleCallbackPayload: Step = { ...stepPayload, callbacks: [stepPayload.callbacks![1]] };
50
+ const step = createJourneyStep(singleCallbackPayload);
51
+ const cb = step.getCallbackOfType(callbackType.PasswordCallback);
52
+ expect(cb).toBeDefined();
53
+ expect(cb.getType()).toBe(callbackType.PasswordCallback);
54
+ });
55
+
56
+ it('should throw an error if getCallbackOfType finds no matching callbacks', () => {
57
+ const step = createJourneyStep(stepPayload);
58
+ const err = `Expected 1 callback of type "TermsAndConditionsCallback", but found 0`;
59
+ expect(() => step.getCallbackOfType(callbackType.TermsAndConditionsCallback)).toThrow(err);
60
+ });
61
+
62
+ it('should throw an error if getCallbackOfType finds multiple matching callbacks', () => {
63
+ const step = createJourneyStep(stepPayload);
64
+ const err = `Expected 1 callback of type "NameCallback", but found 2`;
65
+ expect(() => step.getCallbackOfType(callbackType.NameCallback)).toThrow(err);
66
+ });
67
+
68
+ it('should get all callbacks of a specific type', () => {
69
+ const step = createJourneyStep(stepPayload);
70
+ const callbacks = step.getCallbacksOfType(callbackType.NameCallback);
71
+ expect(callbacks).toHaveLength(2);
72
+ expect(callbacks[0].getType()).toBe(callbackType.NameCallback);
73
+ expect(callbacks[1].getType()).toBe(callbackType.NameCallback);
74
+ });
75
+
76
+ it('should return an empty array if getCallbacksOfType finds no matches', () => {
77
+ const step = createJourneyStep(stepPayload);
78
+ const callbacks = step.getCallbacksOfType(callbackType.TermsAndConditionsCallback);
79
+ expect(callbacks).toHaveLength(0);
80
+ });
81
+
82
+ it('should set the value of a specific callback', () => {
83
+ const singleCallbackPayload: Step = { ...stepPayload, callbacks: [stepPayload.callbacks![1]] };
84
+ const step = createJourneyStep(singleCallbackPayload);
85
+ step.setCallbackValue(callbackType.PasswordCallback, 'password123');
86
+ const cb = step.getCallbackOfType(callbackType.PasswordCallback);
87
+ expect(cb.getInputValue()).toBe('password123');
88
+ });
89
+
90
+ it('should return the description', () => {
91
+ const step = createJourneyStep(stepPayload);
92
+ expect(step.getDescription()).toBe('Step description');
93
+ });
94
+
95
+ it('should return the header', () => {
96
+ const step = createJourneyStep(stepPayload);
97
+ expect(step.getHeader()).toBe('Step header');
98
+ });
99
+
100
+ it('should return the stage', () => {
101
+ const step = createJourneyStep(stepPayload);
102
+ expect(step.getStage()).toBe('Step stage');
103
+ });
104
+ });
@@ -0,0 +1,22 @@
1
+ /*
2
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
3
+ *
4
+ * This software may be modified and distributed under the terms
5
+ * of the MIT license. See the LICENSE file for details.
6
+ */
7
+
8
+ import type { AuthResponse, CallbackType, Step, StepType } from '@forgerock/sdk-types';
9
+
10
+ import type { BaseCallback } from './callbacks/base-callback.js';
11
+
12
+ export type JourneyStep = AuthResponse & {
13
+ type: StepType.Step;
14
+ payload: Step;
15
+ callbacks: BaseCallback[];
16
+ getCallbackOfType: <T extends BaseCallback>(type: CallbackType) => T;
17
+ getCallbacksOfType: <T extends BaseCallback>(type: CallbackType) => T[];
18
+ setCallbackValue: (type: CallbackType, value: unknown) => void;
19
+ getDescription: () => string | undefined;
20
+ getHeader: () => string | undefined;
21
+ getStage: () => string | undefined;
22
+ };
@@ -0,0 +1,99 @@
1
+ /*
2
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
3
+ *
4
+ * This software may be modified and distributed under the terms
5
+ * of the MIT license. See the LICENSE file for details.
6
+ */
7
+
8
+ import { type CallbackType, type Callback, type Step } from '@forgerock/sdk-types';
9
+
10
+ import { StepType } from '@forgerock/sdk-types';
11
+
12
+ import { createCallback } from './callbacks/factory.js';
13
+
14
+ import type { BaseCallback } from './callbacks/base-callback.js';
15
+ import type { JourneyStep } from './step.types.js';
16
+ import type { CallbackFactory } from './callbacks/factory.js';
17
+
18
+ function getCallbacksOfType<T extends BaseCallback>(
19
+ callbacks: BaseCallback[],
20
+ type: CallbackType,
21
+ ): T[] {
22
+ return callbacks.filter((x) => x.getType() === type) as T[];
23
+ }
24
+
25
+ function getCallbackOfType<T extends BaseCallback>(
26
+ callbacks: BaseCallback[],
27
+ type: CallbackType,
28
+ ): T {
29
+ const callbacksOfType = getCallbacksOfType<T>(callbacks, type);
30
+ if (callbacksOfType.length !== 1) {
31
+ throw new Error(`Expected 1 callback of type "${type}", but found ${callbacksOfType.length}`);
32
+ }
33
+ return callbacksOfType[0];
34
+ }
35
+
36
+ function setCallbackValue(callbacks: BaseCallback[], type: CallbackType, value: unknown): void {
37
+ const callbacksToUpdate = getCallbacksOfType(callbacks, type);
38
+ if (callbacksToUpdate.length !== 1) {
39
+ throw new Error(`Expected 1 callback of type "${type}", but found ${callbacksToUpdate.length}`);
40
+ }
41
+ callbacksToUpdate[0].setInputValue(value);
42
+ }
43
+
44
+ function getDescription(payload: Step): string | undefined {
45
+ return payload.description;
46
+ }
47
+
48
+ function getHeader(payload: Step): string | undefined {
49
+ return payload.header;
50
+ }
51
+
52
+ function getStage(payload: Step): string | undefined {
53
+ return payload.stage;
54
+ }
55
+
56
+ function convertCallbacks(
57
+ callbacks: Callback[],
58
+ callbackFactory?: CallbackFactory,
59
+ ): BaseCallback[] {
60
+ const converted = callbacks.map((x: Callback) => {
61
+ // This gives preference to the provided factory and falls back to our default implementation
62
+ return (callbackFactory || createCallback)(x) || createCallback(x);
63
+ });
64
+ return converted;
65
+ }
66
+
67
+ function createJourneyStep(payload: Step, callbackFactory?: CallbackFactory): JourneyStep {
68
+ // Redux Toolkit freezes data, so we need to clone it before making any changes
69
+ const unfrozenPayload =
70
+ typeof structuredClone === 'function'
71
+ ? structuredClone(payload)
72
+ : (JSON.parse(JSON.stringify(payload)) as Step);
73
+
74
+ const convertedCallbacks = unfrozenPayload.callbacks
75
+ ? convertCallbacks(unfrozenPayload.callbacks, callbackFactory)
76
+ : [];
77
+ return {
78
+ payload: unfrozenPayload,
79
+ callbacks: convertedCallbacks,
80
+ type: StepType.Step,
81
+ getCallbackOfType: <T extends BaseCallback>(type: CallbackType) =>
82
+ getCallbackOfType<T>(convertedCallbacks, type),
83
+ getCallbacksOfType: <T extends BaseCallback>(type: CallbackType) =>
84
+ getCallbacksOfType<T>(convertedCallbacks, type),
85
+ setCallbackValue: (type: CallbackType, value: unknown) =>
86
+ setCallbackValue(convertedCallbacks, type, value),
87
+ getDescription: () => getDescription(payload),
88
+ getHeader: () => getHeader(payload),
89
+ getStage: () => getStage(payload),
90
+ };
91
+ }
92
+
93
+ /**
94
+ * A function that can populate the provided authentication tree step.
95
+ */
96
+
97
+ type JourneyStepHandler = (step: JourneyStep) => void;
98
+
99
+ export { createJourneyStep, JourneyStep, JourneyStepHandler };
@@ -0,0 +1,36 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * enums.ts
5
+ *
6
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE file for details.
9
+ */
10
+
11
+ enum WebAuthnOutcome {
12
+ Error = 'ERROR',
13
+ Unsupported = 'unsupported',
14
+ }
15
+
16
+ enum WebAuthnOutcomeType {
17
+ AbortError = 'AbortError',
18
+ DataError = 'DataError',
19
+ ConstraintError = 'ConstraintError',
20
+ EncodingError = 'EncodingError',
21
+ InvalidError = 'InvalidError',
22
+ NetworkError = 'NetworkError',
23
+ NotAllowedError = 'NotAllowedError',
24
+ NotSupportedError = 'NotSupportedError',
25
+ SecurityError = 'SecurityError',
26
+ TimeoutError = 'TimeoutError',
27
+ UnknownError = 'UnknownError',
28
+ }
29
+
30
+ enum WebAuthnStepType {
31
+ None = 0,
32
+ Authentication = 1,
33
+ Registration = 2,
34
+ }
35
+
36
+ export { WebAuthnOutcome, WebAuthnOutcomeType, WebAuthnStepType };
@@ -0,0 +1,24 @@
1
+ /*
2
+ * @forgerock/ping-javascript-sdk
3
+ *
4
+ * helpers.mock.data.ts
5
+ *
6
+ * Copyright (c) 2020 - 2025 Ping Identity Corporation. All rights reserved.
7
+ * This software may be modified and distributed under the terms
8
+ * of the MIT license. See the LICENSE file for details.
9
+ */
10
+
11
+ export const allowCredentials70 =
12
+ 'allowCredentials: [{ "type": "public-key", "id": new Int8Array([1, -16, 9, 79, 6, -2, -82, 51, 124, -94, 95, 23, -86, 70, -43, 89, 91, -9, 45, -22, 91, -51, 84, 93, 24, -64, 38, 101, 126, -53, 87, 70, -49, -88, -105, 116, 33, 75, -39, -92, -5, 115, 12, 52, 124, -100, 85, 104, -15, 5, -13, 25, -74, 101, 71, -115, -102, 16, 10, -9, -19, -110, 65, 118, -28, 89, -15, -115, -81, 22, -104, 123, 17, -92, 49, 109, -38, -51, 100, 96, -65, 25, -48, 28, 106, -45, 17, -45, -37, 46, -5, -6, -26, -23, -108, 13, -66, -55, -117, -107, 119, 7, -32, 34, 46, 0, -29, -111, -32, 45, -15, -113, 110, 123, -44, 6, 10, 65, 99, 25, 105, 69, -127, 76, 127, -33, -89, -56, 74, 25, 43, -43, -56, 9, 87, 80, 124, -32, -39, 115, 17, 18, 78, 121, 69, -36, -44, -28, -109, -126, 58, 64, 80, -4, 21, 63, -19]).buffer }]';
13
+
14
+ export const allowMultipleCredentials70 =
15
+ 'allowCredentials: [{ "type": "public-key", "id": new Int8Array([-33, 120, 18, 124, 16, 5, -127, -51, 68, 85, 76, -92, -3, 25, 116, 91, 71, 53, 106, -114, -86, 9, -81, -96, -32, -110, 66, -23, -5, 104, 96, 46, 43, -66, -110, 8, -70, 11, 51, -93, 19, 124, 81, 78, 58, -97, 89, -87, -26, -112, 95, -83, 118, -25, 118, 3, 35, -96, 120, -76, -87, 83, -101, 82]).buffer },{ "type": "public-key", "id": new Int8Array([1, 73, 82, 23, 76, -5, -53, -48, -104, -17, -42, 45, 7, 35, 35, -72, -7, 37, 9, 37, 117, 42, 66, 116, 58, 25, -68, 53, 113, -10, 102, 3, -60, -81, -74, 96, -5, 111, -56, 110, -101, -54, -31, -123, -100, 3, 37, -69, -114, -19, -25, -62, 18, 122, 39, 11, 83, 60, -58, 3, 116, 10, -80, -35, 6, -128, -51, -92, 100, -115, -22, -122, 21, -65, 97, 67, -49, 26, 42, -11, 90, 121, -63, 112, -16, 118, -99, -73, -89, -67, 72, -80, 18, -72, 109, 4, -14, 1, -93, 17, -17, -70, -2, -5, -116, 111, -128, 7, 62, -34, -43, 110, 89, 113, -65, -95, 113, -5, -104, -100, -73, 42, 2, 112, -21, 41, 41, 91, 108, -102, 47, -77, -52, 70, 107, -4, 25, -120, 114, 30, 23, 103, 120, 17, 55, 91, -110, -58, -110, 13, -56, 57, -126, 36, 40, 89, -9]).buffer }]';
16
+
17
+ export const acceptableCredentials653 =
18
+ '{ "type": "public-key", "id": new Int8Array([53, -21, 26, -99, 5, 4, -112, -76, -126, 90, -35, -7, -31, -92, 19, -71, -39, 73, 52, -10, -14, -7, -59, -7, -36, -111, 64, 101, 29, 89, 90, -56, 108, 42, 32, -19, -113, 118, -114, 49, 109, -70, 68, -89, 36, -36, -103, -128, 34, -24, -40, -71, -125, -120, -80, 63, 25, -33, 2, 26, 111, -52, -15, -52]).buffer }';
19
+
20
+ export const acceptableMultipleCredentials653 =
21
+ '{ "type": "public-key", "id": new Int8Array([17, 88, -12, 26, -50, -48, -38, 36, -69, -105, -68, -38, 66, -53, -37, -50, -109, -126, 122, 26, 25, -45, 96, 37, -124, 102, 124, 94, -98, -59, 113, 94, 115, -111, -69, 45, 37, -83, 118, -115, -4, -49, 34, 115, -24, -49, -37, -17, -127, -15, 62, 18, 93, 122, -109, 53, -52, 44, -63, -74, 109, 2, -110, 45]).buffer },{ "type": "public-key", "id": new Int8Array([1, 83, -98, 32, 110, -62, 78, 53, -63, -118, 12, 122, -72, -15, 85, 48, -39, -97, -73, 108, -122, -60, 56, -112, -89, -118, 111, 0, -4, 13, -50, -43, -53, 28, 114, 82, 22, -76, 15, 51, -95, 26, -90, -93, -51, 115, -28, 85, -105, -27, 111, 70, 106, -28, 45, 126, 44, 63, -16, 97, -55, 31, -24, 57, -92, 48, 26, 127, -39, 75, 12, 13, 100, -77, 13, -48, 49, 52, 31, 85, 9, 63, -122, -90, -54, -87, -110, -1, 115, -122, -69, -15, 83, 57, 95, -31, -92, -116, 89, -109, -98, 21, 24, -80, -28, 103, -28, -82, -39, 114, -29, -46, -76, 123, -69, -44, 124, 10, 53, -103, 19, -43, -12, 62, -83, -86, 95, -78, 70, -105, 116, -25, 106, 54, -72, -119, 91, 91, -71, -49, 22, 25, -108, 112, -14, 55, 9, 75, 89, -91, -59, 45]).buffer }';
22
+
23
+ export const pubKeyCredParamsStr =
24
+ '[ { "type": "public-key", "alg": -257 }, { "type": "public-key", "alg": -7 } ]';