@authbridge/web-sdk 1.2.2
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/README.md +333 -0
- package/dist/App.svelte.d.ts +1 -0
- package/dist/ConfigurationProvider.svelte.d.ts +1 -0
- package/dist/Routes.svelte.d.ts +1 -0
- package/dist/authbridge-logo.png +0 -0
- package/dist/authbridge-sdk.js +21677 -0
- package/dist/authbridge-sdk.js.map +1 -0
- package/dist/authbridge-sdk.umd.cjs +75 -0
- package/dist/authbridge-sdk.umd.cjs.map +1 -0
- package/dist/decline.svg +19 -0
- package/dist/dev.d.ts +2 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/document-photo-back-start.svg +37 -0
- package/dist/final.svg +10 -0
- package/dist/fonts/Avenir-Black.ttf +0 -0
- package/dist/fonts/Avenir-Book.ttf +0 -0
- package/dist/fonts/Avenir-Heavy.ttf +0 -0
- package/dist/fonts/Avenir-Light.ttf +0 -0
- package/dist/fonts/Avenir-Regular.ttf +0 -0
- package/dist/icons/apple-touch-icon.png +0 -0
- package/dist/icons/icon-192.png +0 -0
- package/dist/icons/icon-512.png +0 -0
- package/dist/icons/icon-maskable-512.png +0 -0
- package/dist/images/authbridge-icon.svg +5 -0
- package/dist/images/back-white.svg +3 -0
- package/dist/images/back.svg +3 -0
- package/dist/images/close.svg +4 -0
- package/dist/images/decline.svg +5 -0
- package/dist/images/document-photo-back-start.svg +95 -0
- package/dist/images/drivers-licence-back.svg +100 -0
- package/dist/images/final.svg +4 -0
- package/dist/images/resubmit.svg +5 -0
- package/dist/images/selfie-start.svg +26 -0
- package/dist/images/welcome.svg +70 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.html +610 -0
- package/dist/lib/atoms/Button/Button.svelte.d.ts +1 -0
- package/dist/lib/atoms/Button/Button.test.d.ts +2 -0
- package/dist/lib/atoms/Button/Button.test.d.ts.map +1 -0
- package/dist/lib/atoms/Button/index.d.ts +2 -0
- package/dist/lib/atoms/Button/index.d.ts.map +1 -0
- package/dist/lib/atoms/ButtonWithIcon/ButtonWithIcon.svelte.d.ts +1 -0
- package/dist/lib/atoms/ButtonWithIcon/index.d.ts +2 -0
- package/dist/lib/atoms/ButtonWithIcon/index.d.ts.map +1 -0
- package/dist/lib/atoms/CameraButton/CameraButton.svelte.d.ts +1 -0
- package/dist/lib/atoms/CameraButton/index.d.ts +2 -0
- package/dist/lib/atoms/CameraButton/index.d.ts.map +1 -0
- package/dist/lib/atoms/Container/Container.svelte.d.ts +1 -0
- package/dist/lib/atoms/Container/index.d.ts +2 -0
- package/dist/lib/atoms/Container/index.d.ts.map +1 -0
- package/dist/lib/atoms/DocumentOption/DocumentOption.svelte.d.ts +1 -0
- package/dist/lib/atoms/DocumentOption/index.d.ts +2 -0
- package/dist/lib/atoms/DocumentOption/index.d.ts.map +1 -0
- package/dist/lib/atoms/ErrorText/ErrorText.svelte.d.ts +1 -0
- package/dist/lib/atoms/ErrorText/index.d.ts +1 -0
- package/dist/lib/atoms/ErrorText/index.d.ts.map +1 -0
- package/dist/lib/atoms/FaceOval/FaceOval.svelte.d.ts +1 -0
- package/dist/lib/atoms/FaceOval/index.d.ts +2 -0
- package/dist/lib/atoms/FaceOval/index.d.ts.map +1 -0
- package/dist/lib/atoms/FlyingText/FlyingText.svelte.d.ts +1 -0
- package/dist/lib/atoms/FlyingText/index.d.ts +2 -0
- package/dist/lib/atoms/FlyingText/index.d.ts.map +1 -0
- package/dist/lib/atoms/IconButton/IconButton.svelte.d.ts +1 -0
- package/dist/lib/atoms/IconButton/index.d.ts +2 -0
- package/dist/lib/atoms/IconButton/index.d.ts.map +1 -0
- package/dist/lib/atoms/IconCloseButton/IconCloseButton.svelte.d.ts +1 -0
- package/dist/lib/atoms/IconCloseButton/index.d.ts +2 -0
- package/dist/lib/atoms/IconCloseButton/index.d.ts.map +1 -0
- package/dist/lib/atoms/Icons/Card.svelte.d.ts +1 -0
- package/dist/lib/atoms/Icons/Icon.svelte.d.ts +1 -0
- package/dist/lib/atoms/Icons/License.svelte.d.ts +1 -0
- package/dist/lib/atoms/Icons/Passport.svelte.d.ts +1 -0
- package/dist/lib/atoms/Icons/PassportTwo.svelte.d.ts +1 -0
- package/dist/lib/atoms/Icons/Voter.svelte.d.ts +1 -0
- package/dist/lib/atoms/Image/Image.svelte.d.ts +1 -0
- package/dist/lib/atoms/Image/index.d.ts +2 -0
- package/dist/lib/atoms/Image/index.d.ts.map +1 -0
- package/dist/lib/atoms/Image/types.d.ts +7 -0
- package/dist/lib/atoms/Image/types.d.ts.map +1 -0
- package/dist/lib/atoms/Input/Input.svelte.d.ts +1 -0
- package/dist/lib/atoms/Input/index.d.ts +3 -0
- package/dist/lib/atoms/Input/index.d.ts.map +1 -0
- package/dist/lib/atoms/Input/types.d.ts +6 -0
- package/dist/lib/atoms/Input/types.d.ts.map +1 -0
- package/dist/lib/atoms/ListItem/ListItem.svelte.d.ts +1 -0
- package/dist/lib/atoms/ListItem/index.d.ts +2 -0
- package/dist/lib/atoms/ListItem/index.d.ts.map +1 -0
- package/dist/lib/atoms/Loader/Loader.svelte.d.ts +1 -0
- package/dist/lib/atoms/Loader/index.d.ts +2 -0
- package/dist/lib/atoms/Loader/index.d.ts.map +1 -0
- package/dist/lib/atoms/NextStepButton/Loader/Loader.svelte.d.ts +1 -0
- package/dist/lib/atoms/NextStepButton/Loader/index.d.ts +2 -0
- package/dist/lib/atoms/NextStepButton/Loader/index.d.ts.map +1 -0
- package/dist/lib/atoms/NextStepButton/NextStepButton.svelte.d.ts +1 -0
- package/dist/lib/atoms/NextStepButton/index.d.ts +2 -0
- package/dist/lib/atoms/NextStepButton/index.d.ts.map +1 -0
- package/dist/lib/atoms/Overlay/Overlay.svelte.d.ts +1 -0
- package/dist/lib/atoms/Overlay/index.d.ts +2 -0
- package/dist/lib/atoms/Overlay/index.d.ts.map +1 -0
- package/dist/lib/atoms/Overlay/utils.d.ts +3 -0
- package/dist/lib/atoms/Overlay/utils.d.ts.map +1 -0
- package/dist/lib/atoms/Paragraph/Paragraph.svelte.d.ts +1 -0
- package/dist/lib/atoms/Paragraph/index.d.ts +2 -0
- package/dist/lib/atoms/Paragraph/index.d.ts.map +1 -0
- package/dist/lib/atoms/Photo/Photo.svelte.d.ts +1 -0
- package/dist/lib/atoms/Photo/index.d.ts +2 -0
- package/dist/lib/atoms/Photo/index.d.ts.map +1 -0
- package/dist/lib/atoms/PrivacyLink/PrivacyLink.svelte.d.ts +1 -0
- package/dist/lib/atoms/PrivacyLink/index.d.ts +2 -0
- package/dist/lib/atoms/PrivacyLink/index.d.ts.map +1 -0
- package/dist/lib/atoms/QualityFeedback/QualityFeedback.svelte.d.ts +1 -0
- package/dist/lib/atoms/QualityFeedback/index.d.ts +2 -0
- package/dist/lib/atoms/QualityFeedback/index.d.ts.map +1 -0
- package/dist/lib/atoms/Title/Title.svelte.d.ts +1 -0
- package/dist/lib/atoms/Title/index.d.ts +2 -0
- package/dist/lib/atoms/Title/index.d.ts.map +1 -0
- package/dist/lib/atoms/VideoContainer/VideoContainer.svelte.d.ts +1 -0
- package/dist/lib/atoms/VideoContainer/index.d.ts +2 -0
- package/dist/lib/atoms/VideoContainer/index.d.ts.map +1 -0
- package/dist/lib/atoms/index.d.ts +21 -0
- package/dist/lib/atoms/index.d.ts.map +1 -0
- package/dist/lib/components/LivenessCheck.svelte.d.ts +1 -0
- package/dist/lib/components/LivenessCheck.test.d.ts +2 -0
- package/dist/lib/components/LivenessCheck.test.d.ts.map +1 -0
- package/dist/lib/components/VerificationResult.svelte.d.ts +1 -0
- package/dist/lib/components/VerificationResult.test.d.ts +5 -0
- package/dist/lib/components/VerificationResult.test.d.ts.map +1 -0
- package/dist/lib/configuration/configuration.d.ts +3 -0
- package/dist/lib/configuration/configuration.d.ts.map +1 -0
- package/dist/lib/configuration/translation.json.d.ts +1284 -0
- package/dist/lib/contexts/app-state/index.d.ts +5 -0
- package/dist/lib/contexts/app-state/index.d.ts.map +1 -0
- package/dist/lib/contexts/app-state/stores.d.ts +103 -0
- package/dist/lib/contexts/app-state/stores.d.ts.map +1 -0
- package/dist/lib/contexts/app-state/stores.test.d.ts +6 -0
- package/dist/lib/contexts/app-state/stores.test.d.ts.map +1 -0
- package/dist/lib/contexts/app-state/types.d.ts +72 -0
- package/dist/lib/contexts/app-state/types.d.ts.map +1 -0
- package/dist/lib/contexts/app-state/utils.d.ts +3 -0
- package/dist/lib/contexts/app-state/utils.d.ts.map +1 -0
- package/dist/lib/contexts/configuration/getters.d.ts +10 -0
- package/dist/lib/contexts/configuration/getters.d.ts.map +1 -0
- package/dist/lib/contexts/configuration/index.d.ts +4 -0
- package/dist/lib/contexts/configuration/index.d.ts.map +1 -0
- package/dist/lib/contexts/configuration/store.d.ts +3 -0
- package/dist/lib/contexts/configuration/store.d.ts.map +1 -0
- package/dist/lib/contexts/configuration/types.d.ts +203 -0
- package/dist/lib/contexts/configuration/types.d.ts.map +1 -0
- package/dist/lib/contexts/flows/hooks.d.ts +10 -0
- package/dist/lib/contexts/flows/hooks.d.ts.map +1 -0
- package/dist/lib/contexts/flows/index.d.ts +3 -0
- package/dist/lib/contexts/flows/index.d.ts.map +1 -0
- package/dist/lib/contexts/flows/types.d.ts +13 -0
- package/dist/lib/contexts/flows/types.d.ts.map +1 -0
- package/dist/lib/contexts/navigation/constants.d.ts +12 -0
- package/dist/lib/contexts/navigation/constants.d.ts.map +1 -0
- package/dist/lib/contexts/navigation/hooks.d.ts +6 -0
- package/dist/lib/contexts/navigation/hooks.d.ts.map +1 -0
- package/dist/lib/contexts/navigation/index.d.ts +3 -0
- package/dist/lib/contexts/navigation/index.d.ts.map +1 -0
- package/dist/lib/contexts/navigation/types.d.ts +8 -0
- package/dist/lib/contexts/navigation/types.d.ts.map +1 -0
- package/dist/lib/contexts/translation/T.svelte.d.ts +1 -0
- package/dist/lib/contexts/translation/hooks.d.ts +4 -0
- package/dist/lib/contexts/translation/hooks.d.ts.map +1 -0
- package/dist/lib/contexts/translation/index.d.ts +4 -0
- package/dist/lib/contexts/translation/index.d.ts.map +1 -0
- package/dist/lib/contexts/translation/language-detection.test.d.ts +7 -0
- package/dist/lib/contexts/translation/language-detection.test.d.ts.map +1 -0
- package/dist/lib/contexts/translation/translation.test.d.ts +10 -0
- package/dist/lib/contexts/translation/translation.test.d.ts.map +1 -0
- package/dist/lib/contexts/translation/types.d.ts +4 -0
- package/dist/lib/contexts/translation/types.d.ts.map +1 -0
- package/dist/lib/hooks/createToggle/createToggle.d.ts +5 -0
- package/dist/lib/hooks/createToggle/createToggle.d.ts.map +1 -0
- package/dist/lib/molecules/DocumentOption/DocumentOption.svelte.d.ts +1 -0
- package/dist/lib/molecules/DocumentOption/index.d.ts +3 -0
- package/dist/lib/molecules/DocumentOption/index.d.ts.map +1 -0
- package/dist/lib/molecules/DocumentOption/types.d.ts +7 -0
- package/dist/lib/molecules/DocumentOption/types.d.ts.map +1 -0
- package/dist/lib/molecules/List/List.svelte.d.ts +1 -0
- package/dist/lib/molecules/List/index.d.ts +3 -0
- package/dist/lib/molecules/List/index.d.ts.map +1 -0
- package/dist/lib/molecules/List/types.d.ts +7 -0
- package/dist/lib/molecules/List/types.d.ts.map +1 -0
- package/dist/lib/molecules/List/utils.d.ts +3 -0
- package/dist/lib/molecules/List/utils.d.ts.map +1 -0
- package/dist/lib/molecules/NavigationButtons/NavigationButtons.svelte.d.ts +1 -0
- package/dist/lib/molecules/NavigationButtons/index.d.ts +3 -0
- package/dist/lib/molecules/NavigationButtons/index.d.ts.map +1 -0
- package/dist/lib/molecules/NavigationButtons/types.d.ts +13 -0
- package/dist/lib/molecules/NavigationButtons/types.d.ts.map +1 -0
- package/dist/lib/molecules/index.d.ts +4 -0
- package/dist/lib/molecules/index.d.ts.map +1 -0
- package/dist/lib/organisms/DocumentOptions/DocumentOptions.svelte.d.ts +1 -0
- package/dist/lib/organisms/DocumentOptions/index.d.ts +3 -0
- package/dist/lib/organisms/DocumentOptions/index.d.ts.map +1 -0
- package/dist/lib/organisms/DocumentOptions/types.d.ts +16 -0
- package/dist/lib/organisms/DocumentOptions/types.d.ts.map +1 -0
- package/dist/lib/organisms/DocumentOptions/utils.d.ts +4 -0
- package/dist/lib/organisms/DocumentOptions/utils.d.ts.map +1 -0
- package/dist/lib/organisms/index.d.ts +2 -0
- package/dist/lib/organisms/index.d.ts.map +1 -0
- package/dist/lib/pages/CameraPermissionDenied.svelte.d.ts +1 -0
- package/dist/lib/pages/CheckDocument.svelte.d.ts +1 -0
- package/dist/lib/pages/CheckDocumentPhotoBack.svelte.d.ts +1 -0
- package/dist/lib/pages/CheckSelfie.svelte.d.ts +1 -0
- package/dist/lib/pages/Decline.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentPhoto.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentPhoto.test.d.ts +2 -0
- package/dist/lib/pages/DocumentPhoto.test.d.ts.map +1 -0
- package/dist/lib/pages/DocumentPhotoBack.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentPhotoBackStart.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentSelect.test.d.ts +2 -0
- package/dist/lib/pages/DocumentSelect.test.d.ts.map +1 -0
- package/dist/lib/pages/DocumentSelection.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentStart.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentUpload.svelte.d.ts +1 -0
- package/dist/lib/pages/DocumentUpload.test.d.ts +2 -0
- package/dist/lib/pages/DocumentUpload.test.d.ts.map +1 -0
- package/dist/lib/pages/ErrorPage.svelte.d.ts +1 -0
- package/dist/lib/pages/Final.svelte.d.ts +1 -0
- package/dist/lib/pages/Loading.svelte.d.ts +1 -0
- package/dist/lib/pages/POACapture.svelte.d.ts +1 -0
- package/dist/lib/pages/POAReview.svelte.d.ts +1 -0
- package/dist/lib/pages/POASelect.svelte.d.ts +1 -0
- package/dist/lib/pages/Resubmission.svelte.d.ts +1 -0
- package/dist/lib/pages/ReviewSubmit.svelte.d.ts +1 -0
- package/dist/lib/pages/ReviewSubmit.test.d.ts +2 -0
- package/dist/lib/pages/ReviewSubmit.test.d.ts.map +1 -0
- package/dist/lib/pages/Selfie.svelte.d.ts +1 -0
- package/dist/lib/pages/SelfieCapture.svelte.d.ts +1 -0
- package/dist/lib/pages/SelfieCapture.test.d.ts +2 -0
- package/dist/lib/pages/SelfieCapture.test.d.ts.map +1 -0
- package/dist/lib/pages/SelfieStart.svelte.d.ts +1 -0
- package/dist/lib/pages/SessionExpired.svelte.d.ts +1 -0
- package/dist/lib/pages/UnsupportedBrowser.svelte.d.ts +1 -0
- package/dist/lib/pages/Welcome.svelte.d.ts +1 -0
- package/dist/lib/pages/Welcome.test.d.ts +2 -0
- package/dist/lib/pages/Welcome.test.d.ts.map +1 -0
- package/dist/lib/pages/index.d.ts +26 -0
- package/dist/lib/pages/index.d.ts.map +1 -0
- package/dist/lib/services/analytics.d.ts +8 -0
- package/dist/lib/services/analytics.d.ts.map +1 -0
- package/dist/lib/services/api/liveness.d.ts +33 -0
- package/dist/lib/services/api/liveness.d.ts.map +1 -0
- package/dist/lib/services/api/liveness.test.d.ts +6 -0
- package/dist/lib/services/api/liveness.test.d.ts.map +1 -0
- package/dist/lib/services/api/verification-polling.test.d.ts +6 -0
- package/dist/lib/services/api/verification-polling.test.d.ts.map +1 -0
- package/dist/lib/services/api/verification.d.ts +65 -0
- package/dist/lib/services/api/verification.d.ts.map +1 -0
- package/dist/lib/services/api/verification.test.d.ts +9 -0
- package/dist/lib/services/api/verification.test.d.ts.map +1 -0
- package/dist/lib/services/camera-manager/index.d.ts +2 -0
- package/dist/lib/services/camera-manager/index.d.ts.map +1 -0
- package/dist/lib/services/camera-manager/utils.d.ts +2 -0
- package/dist/lib/services/camera-manager/utils.d.ts.map +1 -0
- package/dist/lib/services/file-validation/index.d.ts +3 -0
- package/dist/lib/services/file-validation/index.d.ts.map +1 -0
- package/dist/lib/services/file-validation/validator.d.ts +27 -0
- package/dist/lib/services/file-validation/validator.d.ts.map +1 -0
- package/dist/lib/services/file-validation/validator.test.d.ts +2 -0
- package/dist/lib/services/file-validation/validator.test.d.ts.map +1 -0
- package/dist/lib/services/flow-event-bus/enums.d.ts +7 -0
- package/dist/lib/services/flow-event-bus/enums.d.ts.map +1 -0
- package/dist/lib/services/flow-event-bus/flow-event-bus.d.ts +3 -0
- package/dist/lib/services/flow-event-bus/flow-event-bus.d.ts.map +1 -0
- package/dist/lib/services/flow-event-bus/interfaces.d.ts +35 -0
- package/dist/lib/services/flow-event-bus/interfaces.d.ts.map +1 -0
- package/dist/lib/services/flow-event-bus/types.d.ts +3 -0
- package/dist/lib/services/flow-event-bus/types.d.ts.map +1 -0
- package/dist/lib/services/http/index.d.ts +7 -0
- package/dist/lib/services/http/index.d.ts.map +1 -0
- package/dist/lib/services/http/types.d.ts +12 -0
- package/dist/lib/services/http/types.d.ts.map +1 -0
- package/dist/lib/services/image-compression/compressor.d.ts +24 -0
- package/dist/lib/services/image-compression/compressor.d.ts.map +1 -0
- package/dist/lib/services/image-compression/compressor.test.d.ts +2 -0
- package/dist/lib/services/image-compression/compressor.test.d.ts.map +1 -0
- package/dist/lib/services/image-compression/index.d.ts +3 -0
- package/dist/lib/services/image-compression/index.d.ts.map +1 -0
- package/dist/lib/services/liveness-detection/detector.d.ts +73 -0
- package/dist/lib/services/liveness-detection/detector.d.ts.map +1 -0
- package/dist/lib/services/liveness-detection/detector.test.d.ts +2 -0
- package/dist/lib/services/liveness-detection/detector.test.d.ts.map +1 -0
- package/dist/lib/services/liveness-detection/index.d.ts +2 -0
- package/dist/lib/services/liveness-detection/index.d.ts.map +1 -0
- package/dist/lib/services/merge-service/index.d.ts +2 -0
- package/dist/lib/services/merge-service/index.d.ts.map +1 -0
- package/dist/lib/services/merge-service/utils.d.ts +4 -0
- package/dist/lib/services/merge-service/utils.d.ts.map +1 -0
- package/dist/lib/services/preload-service/index.d.ts +2 -0
- package/dist/lib/services/preload-service/index.d.ts.map +1 -0
- package/dist/lib/services/preload-service/utils.d.ts +6 -0
- package/dist/lib/services/preload-service/utils.d.ts.map +1 -0
- package/dist/lib/services/session-service/index.d.ts +21 -0
- package/dist/lib/services/session-service/index.d.ts.map +1 -0
- package/dist/lib/services/session-service/session-service.test.d.ts +2 -0
- package/dist/lib/services/session-service/session-service.test.d.ts.map +1 -0
- package/dist/lib/services/theme-manager/index.d.ts +2 -0
- package/dist/lib/services/theme-manager/index.d.ts.map +1 -0
- package/dist/lib/services/theme-manager/utils.d.ts +3 -0
- package/dist/lib/services/theme-manager/utils.d.ts.map +1 -0
- package/dist/lib/stores/branding.d.ts +34 -0
- package/dist/lib/stores/branding.d.ts.map +1 -0
- package/dist/lib/ui-packs/default/theme.d.ts +3 -0
- package/dist/lib/ui-packs/default/theme.d.ts.map +1 -0
- package/dist/lib/ui-packs/future/theme.d.ts +3 -0
- package/dist/lib/ui-packs/future/theme.d.ts.map +1 -0
- package/dist/lib/ui-packs/index.d.ts +7 -0
- package/dist/lib/ui-packs/index.d.ts.map +1 -0
- package/dist/lib/ui-packs/store.d.ts +3 -0
- package/dist/lib/ui-packs/store.d.ts.map +1 -0
- package/dist/lib/ui-packs/utils.d.ts +5 -0
- package/dist/lib/ui-packs/utils.d.ts.map +1 -0
- package/dist/lib/utils/check-connection.d.ts +2 -0
- package/dist/lib/utils/check-connection.d.ts.map +1 -0
- package/dist/lib/utils/configuration-manager.d.ts +19 -0
- package/dist/lib/utils/configuration-manager.d.ts.map +1 -0
- package/dist/lib/utils/css-utils.d.ts +4 -0
- package/dist/lib/utils/css-utils.d.ts.map +1 -0
- package/dist/lib/utils/event-service/constants.d.ts +4 -0
- package/dist/lib/utils/event-service/constants.d.ts.map +1 -0
- package/dist/lib/utils/event-service/index.d.ts +5 -0
- package/dist/lib/utils/event-service/index.d.ts.map +1 -0
- package/dist/lib/utils/event-service/types.d.ts +154 -0
- package/dist/lib/utils/event-service/types.d.ts.map +1 -0
- package/dist/lib/utils/event-service/utils.d.ts +80 -0
- package/dist/lib/utils/event-service/utils.d.ts.map +1 -0
- package/dist/lib/utils/fingerprint.d.ts +19 -0
- package/dist/lib/utils/fingerprint.d.ts.map +1 -0
- package/dist/lib/utils/form-utils.d.ts +5 -0
- package/dist/lib/utils/form-utils.d.ts.map +1 -0
- package/dist/lib/utils/get-config-from-query-params.d.ts +21 -0
- package/dist/lib/utils/get-config-from-query-params.d.ts.map +1 -0
- package/dist/lib/utils/is-mobile.d.ts +2 -0
- package/dist/lib/utils/is-mobile.d.ts.map +1 -0
- package/dist/lib/utils/object-utils.d.ts +3 -0
- package/dist/lib/utils/object-utils.d.ts.map +1 -0
- package/dist/lib/utils/photo-utils.d.ts +27 -0
- package/dist/lib/utils/photo-utils.d.ts.map +1 -0
- package/dist/lib/utils/photo-utils.test.d.ts +2 -0
- package/dist/lib/utils/photo-utils.test.d.ts.map +1 -0
- package/dist/lib/utils/step-manager.d.ts +3 -0
- package/dist/lib/utils/step-manager.d.ts.map +1 -0
- package/dist/lib/utils/string-utils/resolve-string-template.d.ts +2 -0
- package/dist/lib/utils/string-utils/resolve-string-template.d.ts.map +1 -0
- package/dist/lib/utils/string-utils/resolve-string-template.test.d.ts +2 -0
- package/dist/lib/utils/string-utils/resolve-string-template.test.d.ts.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/manifest.json +31 -0
- package/dist/pwa-styles.css +83 -0
- package/dist/pwa-test.html +272 -0
- package/dist/resubmit.svg +18 -0
- package/dist/selfie-start.svg +55 -0
- package/dist/tests-setup.d.ts +2 -0
- package/dist/tests-setup.d.ts.map +1 -0
- package/dist/types/AuthBridgeSDK.d.ts +112 -0
- package/dist/types/AuthBridgeSDK.d.ts.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/welcome.svg +30 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/event-service/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { IAppState } from '../../contexts/app-state';
|
|
2
|
+
import { EActionNames, EVerificationErrorCodes, IDocumentVerificationResponse } from './types';
|
|
3
|
+
import { IEventOptions } from '../../services/flow-event-bus/interfaces';
|
|
4
|
+
export declare const subscribe: () => void;
|
|
5
|
+
export declare const sendIframeEvent: (eventOptions: IEventOptions) => void;
|
|
6
|
+
export declare const sendFlowCompleteEvent: (verificationResponse: IDocumentVerificationResponse) => void;
|
|
7
|
+
export declare const sendVerificationUpdateEvent: (details: IDocumentVerificationResponse, shouldExit?: boolean) => void;
|
|
8
|
+
export declare const sendNavigationUpdateEvent: () => void;
|
|
9
|
+
export declare const sendButtonClickEvent: (actionName: EActionNames, status: IDocumentVerificationResponse, as: IAppState, shouldExit?: boolean) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Emits a verification.started event when user clicks "Start Verification"
|
|
12
|
+
* @param sessionId - The current session ID
|
|
13
|
+
* @param clientId - Optional client ID
|
|
14
|
+
*/
|
|
15
|
+
export declare const sendVerificationStartedEvent: (sessionId: string, clientId?: string) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Emits a verification.error event when initialization fails
|
|
18
|
+
* @param errorCode - The error code
|
|
19
|
+
* @param message - Human-readable error message
|
|
20
|
+
* @param sessionId - The session ID (may be null if session was invalid)
|
|
21
|
+
*/
|
|
22
|
+
export declare const sendVerificationErrorEvent: (errorCode: EVerificationErrorCodes, message: string, sessionId?: string | null) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Emits a document.selected event when user selects a document type
|
|
25
|
+
* @param documentType - The selected document type
|
|
26
|
+
*/
|
|
27
|
+
export declare const sendDocumentSelectedEvent: (documentType: "omang" | "passport" | "driversLicense") => void;
|
|
28
|
+
/**
|
|
29
|
+
* Emits a document.captured event when user captures a document photo
|
|
30
|
+
* @param documentType - The document type being captured
|
|
31
|
+
* @param side - Which side of the document (front or back)
|
|
32
|
+
* @param imageSize - Size of the compressed image in bytes
|
|
33
|
+
* @param compressionRatio - Ratio of original size to compressed size
|
|
34
|
+
* @param captureTime - Time taken to capture and compress in milliseconds
|
|
35
|
+
* @param cameraResolution - Camera resolution used (e.g., "1920x1080")
|
|
36
|
+
*/
|
|
37
|
+
export declare const sendDocumentCapturedEvent: (documentType: "omang" | "passport" | "driversLicense", side: "front" | "back", imageSize: number, compressionRatio: number, captureTime: number, cameraResolution: string) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Emits a document.uploaded event when user uploads a document file
|
|
40
|
+
* @param documentType - The document type being uploaded
|
|
41
|
+
* @param side - Which side of the document (front or back)
|
|
42
|
+
* @param fileName - Name of the uploaded file
|
|
43
|
+
* @param originalSize - Original file size in bytes
|
|
44
|
+
* @param compressedSize - Compressed file size in bytes
|
|
45
|
+
* @param compressionRatio - Ratio of original size to compressed size
|
|
46
|
+
* @param uploadTime - Time taken to upload and compress in milliseconds
|
|
47
|
+
* @param uploadMethod - How the file was uploaded (button or dragDrop)
|
|
48
|
+
*/
|
|
49
|
+
export declare const sendDocumentUploadedEvent: (documentType: "omang" | "passport" | "driversLicense", side: "front" | "back", fileName: string, originalSize: number, compressedSize: number, compressionRatio: number, uploadTime: number, uploadMethod: "button" | "dragDrop") => void;
|
|
50
|
+
/**
|
|
51
|
+
* Send selfie.captured event
|
|
52
|
+
* @param fileName - Name of the selfie file
|
|
53
|
+
* @param originalSize - Original file size in bytes
|
|
54
|
+
* @param compressedSize - Compressed file size in bytes
|
|
55
|
+
* @param compressionRatio - Ratio of original size to compressed size
|
|
56
|
+
* @param captureTime - Time taken to capture and compress in milliseconds
|
|
57
|
+
* @param cameraResolution - Camera resolution used (e.g., "1920x1080")
|
|
58
|
+
* @param livenessChecks - Results of liveness detection checks
|
|
59
|
+
* @param totalAttempts - Total number of capture attempts
|
|
60
|
+
* @param faceQuality - Face quality metrics
|
|
61
|
+
*/
|
|
62
|
+
export declare const sendSelfieCapturedEvent: (fileName: string, originalSize: number, compressedSize: number, compressionRatio: number, captureTime: number, cameraResolution: string, livenessChecks: {
|
|
63
|
+
blink: {
|
|
64
|
+
passed: boolean;
|
|
65
|
+
attempts: number;
|
|
66
|
+
};
|
|
67
|
+
turnLeft: {
|
|
68
|
+
passed: boolean;
|
|
69
|
+
attempts: number;
|
|
70
|
+
};
|
|
71
|
+
turnRight: {
|
|
72
|
+
passed: boolean;
|
|
73
|
+
attempts: number;
|
|
74
|
+
};
|
|
75
|
+
}, totalAttempts: number, faceQuality: {
|
|
76
|
+
centered: boolean;
|
|
77
|
+
distance: "optimal" | "tooClose" | "tooFar";
|
|
78
|
+
message: string;
|
|
79
|
+
}) => void;
|
|
80
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/event-service/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EACL,YAAY,EAEZ,uBAAuB,EACxB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EACV,6BAA6B,EAQ9B,MAAM,SAAS,CAAC;AAKjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAiD9E,eAAO,MAAM,SAAS,YAiBrB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,cAAc,aAAa,SAG1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,sBAAsB,6BAA6B,SAgBxF,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,SAAS,6BAA6B,EACtC,oBAAkB,SASnB,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAmBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,YAAY,EACxB,QAAQ,6BAA6B,EACrC,IAAI,SAAS,EACb,oBAAkB,SAenB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,WAAW,MAAM,EACjB,WAAW,MAAM,SAqBlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GACrC,WAAW,uBAAuB,EAClC,SAAS,MAAM,EACf,YAAW,MAAM,GAAG,IAAW,SA0BhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,OAAO,GAAG,UAAU,GAAG,gBAAgB,SA2BtD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,OAAO,GAAG,UAAU,GAAG,gBAAgB,EACrD,MAAM,OAAO,GAAG,MAAM,EACtB,WAAW,MAAM,EACjB,kBAAkB,MAAM,EACxB,aAAa,MAAM,EACnB,kBAAkB,MAAM,SAgCzB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,OAAO,GAAG,UAAU,GAAG,gBAAgB,EACrD,MAAM,OAAO,GAAG,MAAM,EACtB,UAAU,MAAM,EAChB,cAAc,MAAM,EACpB,gBAAgB,MAAM,EACtB,kBAAkB,MAAM,EACxB,YAAY,MAAM,EAClB,cAAc,QAAQ,GAAG,UAAU,SAkCpC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,cAAc,MAAM,EACpB,gBAAgB,MAAM,EACtB,kBAAkB,MAAM,EACxB,aAAa,MAAM,EACnB,kBAAkB,MAAM,EACxB,gBAAgB;IACd,KAAK,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,QAAQ,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,SAAS,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD,EACD,eAAe,MAAM,EACrB,aAAa;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB,SA0CF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { default as FingerprintJS } from '@fingerprintjs/fingerprintjs';
|
|
2
|
+
/**
|
|
3
|
+
* Get device fingerprint (visitor ID)
|
|
4
|
+
* Returns a unique identifier for the device/browser, or null if fingerprinting fails.
|
|
5
|
+
*
|
|
6
|
+
* Note: Returns null instead of a fallback value to prevent false positives in fraud detection.
|
|
7
|
+
* Ad blockers, privacy extensions, or browser restrictions may cause fingerprinting to fail.
|
|
8
|
+
* The backend should handle null fingerprints gracefully by skipping device velocity checks.
|
|
9
|
+
*
|
|
10
|
+
* @returns Device fingerprint string, or null if fingerprinting fails
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDeviceFingerprint(): Promise<string | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Get full fingerprint result with confidence score
|
|
15
|
+
*
|
|
16
|
+
* @returns Full fingerprint result, or null if fingerprinting fails
|
|
17
|
+
*/
|
|
18
|
+
export declare function getFullFingerprint(): Promise<Awaited<ReturnType<Awaited<ReturnType<typeof FingerprintJS.load>>['get']>> | null>;
|
|
19
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/fingerprint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,aAAa,MAAM,8BAA8B,CAAC;AAgBzD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASnE;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAQrI"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IStepConfiguration } from '../contexts/configuration';
|
|
2
|
+
import { IFormProps } from '../contexts/configuration/types';
|
|
3
|
+
export declare const setValuesFromStore: (formProps: IFormProps, values: Record<string, string>) => void;
|
|
4
|
+
export declare const getDefaultValues: (step: IStepConfiguration, formProps: IFormProps) => Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=form-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/form-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAYlE,eAAO,MAAM,kBAAkB,GAAI,WAAW,UAAU,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,IAM1F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,kBAAkB,EACxB,WAAW,UAAU,KACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBvB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query parameter configuration schema
|
|
3
|
+
*/
|
|
4
|
+
interface QueryParamsConfig {
|
|
5
|
+
flowName?: string;
|
|
6
|
+
clientId?: string;
|
|
7
|
+
id?: string;
|
|
8
|
+
token?: string;
|
|
9
|
+
firstName?: string;
|
|
10
|
+
lastName?: string;
|
|
11
|
+
phone?: string;
|
|
12
|
+
email?: string;
|
|
13
|
+
language?: string;
|
|
14
|
+
type?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @description Gets config specific query params as an object - see -docs url here-
|
|
18
|
+
*/
|
|
19
|
+
export declare const getConfigFromQueryParams: () => QueryParamsConfig;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=get-config-from-query-params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-config-from-query-params.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/get-config-from-query-params.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAaD;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAO,iBAuC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-mobile.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/is-mobile.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,eAcpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/object-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,YAE3C,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IAppConfiguration, IAppConfigurationUI } from '../contexts/configuration';
|
|
2
|
+
import { DocumentType, IDocument } from '../contexts/app-state';
|
|
3
|
+
export type FileEventTarget = EventTarget & {
|
|
4
|
+
files: FileList;
|
|
5
|
+
};
|
|
6
|
+
export interface ICameraEvent extends Event {
|
|
7
|
+
currentTarget: EventTarget & HTMLInputElement;
|
|
8
|
+
}
|
|
9
|
+
export declare const nativeCameraHandler: (e: ICameraEvent) => Promise<string>;
|
|
10
|
+
export declare const clearDocs: (type: DocumentType, configuration: IAppConfiguration, uiPack: IAppConfigurationUI, documents: IDocument[]) => IDocument[];
|
|
11
|
+
export declare const addDocument: (type: DocumentType, base64: string, configuration: IAppConfiguration, uiPack: IAppConfigurationUI, documents: IDocument[], document: IDocument) => IDocument[];
|
|
12
|
+
export declare const updateDocument: (type: DocumentType, base64: string, documents: IDocument[]) => IDocument[];
|
|
13
|
+
/**
|
|
14
|
+
* Quality feedback types for real-time camera analysis
|
|
15
|
+
*/
|
|
16
|
+
export interface QualityFeedback {
|
|
17
|
+
lighting: 'tooDark' | 'tooBright' | 'good';
|
|
18
|
+
blur: 'tooBlurry' | 'moveCloser' | 'good';
|
|
19
|
+
glare: 'detected' | 'good';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Analyze image quality from video stream for real-time feedback
|
|
23
|
+
* @param videoElement - HTMLVideoElement with active camera stream
|
|
24
|
+
* @returns QualityFeedback object with lighting, blur, and glare status
|
|
25
|
+
*/
|
|
26
|
+
export declare function analyzeImageQuality(videoElement: HTMLVideoElement): QualityFeedback;
|
|
27
|
+
//# sourceMappingURL=photo-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/photo-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,uBAAuB,CAAC;AAItE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAChE,MAAM,WAAW,YAAa,SAAQ,KAAK;IACzC,aAAa,EAAE,WAAW,GAAG,gBAAgB,CAAC;CAC/C;AAED,eAAO,MAAM,mBAAmB,GAAI,GAAG,YAAY,KAAG,OAAO,CAAC,MAAM,CA4BnE,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,MAAM,YAAY,EAClB,eAAe,iBAAiB,EAChC,QAAQ,mBAAmB,EAC3B,WAAW,SAAS,EAAE,KACrB,SAAS,EAYX,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,MAAM,YAAY,EAClB,QAAQ,MAAM,EACd,eAAe,iBAAiB,EAChC,QAAQ,mBAAmB,EAC3B,WAAW,SAAS,EAAE,EACtB,UAAU,SAAS,KAClB,SAAS,EASX,CAAC;AAmBF,eAAO,MAAM,cAAc,GACzB,MAAM,YAAY,EAClB,QAAQ,MAAM,EACd,WAAW,SAAS,EAAE,KACrB,SAAS,EAQX,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;IAC1C,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,GAAG,eAAe,CAuCnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo-utils.test.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/photo-utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/step-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,eAAO,MAAM,uBAAuB,GAAI,MAAM,kBAAkB,uBACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-string-template.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/string-utils/resolve-string-template.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,EAAE,MAAM,QAAQ,WAGhE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-string-template.test.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/string-utils/resolve-string-template.test.ts"],"names":[],"mappings":""}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;AAQlF,eAAO,MAAM,KAAK,EAAE,kBAgFnB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AuthBridge Verify",
|
|
3
|
+
"short_name": "Verify",
|
|
4
|
+
"description": "Complete your identity verification",
|
|
5
|
+
"start_url": "/",
|
|
6
|
+
"scope": "/",
|
|
7
|
+
"display": "standalone",
|
|
8
|
+
"orientation": "portrait-primary",
|
|
9
|
+
"background_color": "#FFFFFF",
|
|
10
|
+
"theme_color": "#7C3AED",
|
|
11
|
+
"icons": [
|
|
12
|
+
{
|
|
13
|
+
"src": "/icons/icon-192.png",
|
|
14
|
+
"sizes": "192x192",
|
|
15
|
+
"type": "image/png"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"src": "/icons/icon-512.png",
|
|
19
|
+
"sizes": "512x512",
|
|
20
|
+
"type": "image/png"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"src": "/icons/icon-maskable-512.png",
|
|
24
|
+
"sizes": "512x512",
|
|
25
|
+
"type": "image/png",
|
|
26
|
+
"purpose": "maskable"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"categories": ["business", "utilities"],
|
|
30
|
+
"lang": "en"
|
|
31
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PWA Enhancement Styles
|
|
3
|
+
* Story 9.6: Orientation handling for mobile devices
|
|
4
|
+
*
|
|
5
|
+
* Note: All selectors are namespaced with [data-authbridge] or .authbridge-
|
|
6
|
+
* to prevent conflicts with client applications embedding the SDK.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* Ensure video container adapts to orientation */
|
|
10
|
+
@media (orientation: landscape) {
|
|
11
|
+
/* Landscape mode: optimize for wider viewport */
|
|
12
|
+
[data-authbridge] .container,
|
|
13
|
+
.authbridge-container {
|
|
14
|
+
flex-direction: row;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Ensure video fills available space in landscape */
|
|
18
|
+
[data-authbridge] video,
|
|
19
|
+
.authbridge-video {
|
|
20
|
+
max-height: 100vh;
|
|
21
|
+
max-width: 100vw;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Adjust overlay for landscape */
|
|
25
|
+
[data-authbridge] .overlay,
|
|
26
|
+
.authbridge-overlay {
|
|
27
|
+
max-width: 80vw;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@media (orientation: portrait) {
|
|
32
|
+
/* Portrait mode: default vertical layout */
|
|
33
|
+
[data-authbridge] .container,
|
|
34
|
+
.authbridge-container {
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Ensure video fills available space in portrait */
|
|
39
|
+
[data-authbridge] video,
|
|
40
|
+
.authbridge-video {
|
|
41
|
+
max-height: 70vh;
|
|
42
|
+
max-width: 100vw;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Ensure camera capture works in both orientations */
|
|
47
|
+
@media (max-width: 576px) {
|
|
48
|
+
/* Mobile-specific adjustments */
|
|
49
|
+
[data-authbridge] .container,
|
|
50
|
+
.authbridge-container {
|
|
51
|
+
padding: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Ensure buttons are accessible in landscape */
|
|
55
|
+
@media (orientation: landscape) {
|
|
56
|
+
[data-authbridge] .header,
|
|
57
|
+
.authbridge-header {
|
|
58
|
+
padding: 8px 16px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
[data-authbridge] button,
|
|
62
|
+
.authbridge-button {
|
|
63
|
+
min-height: 44px; /* iOS touch target minimum */
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* PWA standalone mode adjustments */
|
|
69
|
+
@media (display-mode: standalone) {
|
|
70
|
+
/* Remove any browser chrome artifacts */
|
|
71
|
+
body {
|
|
72
|
+
overscroll-behavior: none;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Ensure safe area for notched devices */
|
|
76
|
+
[data-authbridge] .container,
|
|
77
|
+
.authbridge-container {
|
|
78
|
+
padding-top: env(safe-area-inset-top);
|
|
79
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
80
|
+
padding-left: env(safe-area-inset-left);
|
|
81
|
+
padding-right: env(safe-area-inset-right);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
|
6
|
+
<title>AuthBridge Verify - PWA Test</title>
|
|
7
|
+
|
|
8
|
+
<!-- PWA Manifest -->
|
|
9
|
+
<link rel="manifest" href="/manifest.json">
|
|
10
|
+
|
|
11
|
+
<!-- Theme Color -->
|
|
12
|
+
<meta name="theme-color" content="#7C3AED">
|
|
13
|
+
|
|
14
|
+
<!-- iOS PWA Support -->
|
|
15
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
16
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
17
|
+
<meta name="apple-mobile-web-app-title" content="AuthBridge Verify">
|
|
18
|
+
<link rel="apple-touch-icon" href="/icons/apple-touch-icon.png">
|
|
19
|
+
|
|
20
|
+
<!-- Favicon -->
|
|
21
|
+
<link rel="icon" type="image/png" href="/icons/icon-192.png">
|
|
22
|
+
|
|
23
|
+
<!-- PWA Styles -->
|
|
24
|
+
<link rel="stylesheet" href="/pwa-styles.css">
|
|
25
|
+
|
|
26
|
+
<style>
|
|
27
|
+
* {
|
|
28
|
+
margin: 0;
|
|
29
|
+
padding: 0;
|
|
30
|
+
box-sizing: border-box;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
body {
|
|
34
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
|
|
35
|
+
background: linear-gradient(135deg, #7C3AED 0%, #5B21B6 100%);
|
|
36
|
+
min-height: 100vh;
|
|
37
|
+
display: flex;
|
|
38
|
+
flex-direction: column;
|
|
39
|
+
align-items: center;
|
|
40
|
+
justify-content: center;
|
|
41
|
+
padding: 20px;
|
|
42
|
+
color: white;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.container {
|
|
46
|
+
text-align: center;
|
|
47
|
+
max-width: 400px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.logo {
|
|
51
|
+
width: 120px;
|
|
52
|
+
height: 120px;
|
|
53
|
+
margin-bottom: 24px;
|
|
54
|
+
border-radius: 24px;
|
|
55
|
+
box-shadow: 0 8px 32px rgba(0,0,0,0.2);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
h1 {
|
|
59
|
+
font-size: 28px;
|
|
60
|
+
font-weight: 700;
|
|
61
|
+
margin-bottom: 12px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
p {
|
|
65
|
+
font-size: 16px;
|
|
66
|
+
opacity: 0.9;
|
|
67
|
+
margin-bottom: 32px;
|
|
68
|
+
line-height: 1.5;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.install-instructions {
|
|
72
|
+
background: rgba(255,255,255,0.15);
|
|
73
|
+
border-radius: 16px;
|
|
74
|
+
padding: 24px;
|
|
75
|
+
margin-bottom: 24px;
|
|
76
|
+
backdrop-filter: blur(10px);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.install-instructions h2 {
|
|
80
|
+
font-size: 18px;
|
|
81
|
+
margin-bottom: 16px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.install-instructions ol {
|
|
85
|
+
text-align: left;
|
|
86
|
+
padding-left: 20px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.install-instructions li {
|
|
90
|
+
margin-bottom: 12px;
|
|
91
|
+
line-height: 1.4;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.status {
|
|
95
|
+
background: rgba(255,255,255,0.1);
|
|
96
|
+
border-radius: 12px;
|
|
97
|
+
padding: 16px;
|
|
98
|
+
font-size: 14px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.status-item {
|
|
102
|
+
display: flex;
|
|
103
|
+
justify-content: space-between;
|
|
104
|
+
margin-bottom: 8px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.status-item:last-child {
|
|
108
|
+
margin-bottom: 0;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.check {
|
|
112
|
+
color: #4ADE80;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.cross {
|
|
116
|
+
color: #F87171;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
#install-btn {
|
|
120
|
+
display: none;
|
|
121
|
+
background: white;
|
|
122
|
+
color: #7C3AED;
|
|
123
|
+
border: none;
|
|
124
|
+
padding: 16px 32px;
|
|
125
|
+
font-size: 18px;
|
|
126
|
+
font-weight: 600;
|
|
127
|
+
border-radius: 12px;
|
|
128
|
+
cursor: pointer;
|
|
129
|
+
margin-top: 24px;
|
|
130
|
+
transition: transform 0.2s, box-shadow 0.2s;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
#install-btn:hover {
|
|
134
|
+
transform: translateY(-2px);
|
|
135
|
+
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.standalone-mode {
|
|
139
|
+
display: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@media (display-mode: standalone) {
|
|
143
|
+
.browser-mode {
|
|
144
|
+
display: none;
|
|
145
|
+
}
|
|
146
|
+
.standalone-mode {
|
|
147
|
+
display: block;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
</style>
|
|
151
|
+
</head>
|
|
152
|
+
<body>
|
|
153
|
+
<div class="container">
|
|
154
|
+
<img src="/icons/icon-192.png" alt="AuthBridge Logo" class="logo">
|
|
155
|
+
|
|
156
|
+
<h1>AuthBridge Verify</h1>
|
|
157
|
+
|
|
158
|
+
<div class="browser-mode">
|
|
159
|
+
<p>Install this app on your device for the best verification experience.</p>
|
|
160
|
+
|
|
161
|
+
<div class="install-instructions">
|
|
162
|
+
<h2>📱 How to Install</h2>
|
|
163
|
+
<ol>
|
|
164
|
+
<li><strong>Android Chrome:</strong> Tap ⋮ menu → "Install app" or "Add to Home screen"</li>
|
|
165
|
+
<li><strong>iOS Safari:</strong> Tap Share → "Add to Home Screen"</li>
|
|
166
|
+
<li>Confirm the app name and tap Add</li>
|
|
167
|
+
</ol>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<div class="status">
|
|
171
|
+
<div class="status-item">
|
|
172
|
+
<span>PWA Manifest</span>
|
|
173
|
+
<span id="manifest-status">Checking...</span>
|
|
174
|
+
</div>
|
|
175
|
+
<div class="status-item">
|
|
176
|
+
<span>HTTPS</span>
|
|
177
|
+
<span id="https-status">Checking...</span>
|
|
178
|
+
</div>
|
|
179
|
+
<div class="status-item">
|
|
180
|
+
<span>Standalone Ready</span>
|
|
181
|
+
<span id="standalone-status">Checking...</span>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<button id="install-btn">Install App</button>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div class="standalone-mode">
|
|
189
|
+
<p>🎉 You're running in standalone mode!</p>
|
|
190
|
+
<p>The PWA is working correctly. This app now runs without browser chrome.</p>
|
|
191
|
+
|
|
192
|
+
<div class="status" style="margin-top: 24px;">
|
|
193
|
+
<div class="status-item">
|
|
194
|
+
<span>Display Mode</span>
|
|
195
|
+
<span class="check">✓ Standalone</span>
|
|
196
|
+
</div>
|
|
197
|
+
<div class="status-item">
|
|
198
|
+
<span>PWA Installed</span>
|
|
199
|
+
<span class="check">✓ Success</span>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<script>
|
|
206
|
+
// Check PWA status
|
|
207
|
+
async function checkPWAStatus() {
|
|
208
|
+
// Check HTTPS
|
|
209
|
+
const httpsStatus = document.getElementById('https-status');
|
|
210
|
+
if (location.protocol === 'https:') {
|
|
211
|
+
httpsStatus.innerHTML = '<span class="check">✓ Secure</span>';
|
|
212
|
+
} else {
|
|
213
|
+
httpsStatus.innerHTML = '<span class="cross">✗ Not HTTPS</span>';
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Check manifest
|
|
217
|
+
const manifestStatus = document.getElementById('manifest-status');
|
|
218
|
+
try {
|
|
219
|
+
const response = await fetch('/manifest.json');
|
|
220
|
+
if (response.ok) {
|
|
221
|
+
const manifest = await response.json();
|
|
222
|
+
if (manifest.name && manifest.icons) {
|
|
223
|
+
manifestStatus.innerHTML = '<span class="check">✓ Valid</span>';
|
|
224
|
+
} else {
|
|
225
|
+
manifestStatus.innerHTML = '<span class="cross">✗ Invalid</span>';
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
manifestStatus.innerHTML = '<span class="cross">✗ Not found</span>';
|
|
229
|
+
}
|
|
230
|
+
} catch (e) {
|
|
231
|
+
manifestStatus.innerHTML = '<span class="cross">✗ Error</span>';
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Check standalone capability
|
|
235
|
+
const standaloneStatus = document.getElementById('standalone-status');
|
|
236
|
+
if ('standalone' in navigator || window.matchMedia('(display-mode: standalone)').matches) {
|
|
237
|
+
standaloneStatus.innerHTML = '<span class="check">✓ Supported</span>';
|
|
238
|
+
} else {
|
|
239
|
+
standaloneStatus.innerHTML = '<span class="check">✓ Ready</span>';
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Handle install prompt
|
|
244
|
+
let deferredPrompt;
|
|
245
|
+
const installBtn = document.getElementById('install-btn');
|
|
246
|
+
|
|
247
|
+
window.addEventListener('beforeinstallprompt', (e) => {
|
|
248
|
+
e.preventDefault();
|
|
249
|
+
deferredPrompt = e;
|
|
250
|
+
installBtn.style.display = 'block';
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
installBtn.addEventListener('click', async () => {
|
|
254
|
+
if (deferredPrompt) {
|
|
255
|
+
deferredPrompt.prompt();
|
|
256
|
+
const { outcome } = await deferredPrompt.userChoice;
|
|
257
|
+
console.log('Install outcome:', outcome);
|
|
258
|
+
deferredPrompt = null;
|
|
259
|
+
installBtn.style.display = 'none';
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
window.addEventListener('appinstalled', () => {
|
|
264
|
+
console.log('PWA installed successfully');
|
|
265
|
+
installBtn.style.display = 'none';
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// Run checks on load
|
|
269
|
+
checkPWAStatus();
|
|
270
|
+
</script>
|
|
271
|
+
</body>
|
|
272
|
+
</html>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg width="215" height="215" viewBox="0 0 215 215" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g filter="url(#filter0_f_1134_8943)">
|
|
3
|
+
<rect x="40" y="40" width="135" height="135" rx="67.5" fill="black" fill-opacity="0.5"/>
|
|
4
|
+
</g>
|
|
5
|
+
<rect x="70" y="69" width="75" height="76" rx="37.5" fill="url(#paint0_linear_1134_8943)"/>
|
|
6
|
+
<path d="M95.6863 107H118.314" stroke="white" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
+
<defs>
|
|
8
|
+
<filter id="filter0_f_1134_8943" x="0" y="0" width="215" height="215" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
|
9
|
+
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
|
10
|
+
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
|
|
11
|
+
<feGaussianBlur stdDeviation="20" result="effect1_foregroundBlur_1134_8943"/>
|
|
12
|
+
</filter>
|
|
13
|
+
<linearGradient id="paint0_linear_1134_8943" x1="107.5" y1="69" x2="107.5" y2="145" gradientUnits="userSpaceOnUse">
|
|
14
|
+
<stop stop-color="white"/>
|
|
15
|
+
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
|
16
|
+
</linearGradient>
|
|
17
|
+
</defs>
|
|
18
|
+
</svg>
|