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