@smileid/usesmileid 12.0.0-beta01 → 12.0.0
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 +11 -0
- package/README.md +701 -89
- package/dist/camera/camera_defaults.d.ts +14 -9
- package/dist/camera/camera_defaults.d.ts.map +1 -1
- package/dist/camera/camera_defaults.js +11 -9
- package/dist/camera/camera_defaults.js.map +1 -1
- package/dist/camera/orientation_degrees.d.ts +5 -6
- package/dist/camera/orientation_degrees.d.ts.map +1 -1
- package/dist/camera/orientation_degrees.js +5 -6
- package/dist/camera/orientation_degrees.js.map +1 -1
- package/dist/core/models/document_capture_mode.d.ts +8 -0
- package/dist/core/models/document_capture_mode.d.ts.map +1 -1
- package/dist/core/models/document_capture_mode.js +24 -0
- package/dist/core/models/document_capture_mode.js.map +1 -1
- package/dist/core/models/document_type.d.ts +2 -2
- package/dist/core/models/document_type.d.ts.map +1 -1
- package/dist/core/models/document_type.js +6 -4
- package/dist/core/models/document_type.js.map +1 -1
- package/dist/core/models/result.d.ts +9 -8
- package/dist/core/models/result.d.ts.map +1 -1
- package/dist/core/models/result.js +5 -6
- package/dist/core/models/result.js.map +1 -1
- package/dist/data/api/interceptors/smile_auth_interceptor.js +1 -1
- package/dist/data/api/interceptors/smile_auth_interceptor.js.map +1 -1
- package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts +11 -0
- package/dist/data/api/interceptors/smile_integrity_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_integrity_interceptor.js +13 -0
- package/dist/data/api/interceptors/smile_integrity_interceptor.js.map +1 -1
- package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts +8 -0
- package/dist/data/api/interceptors/smile_request_mac_interceptor.d.ts.map +1 -1
- package/dist/data/api/interceptors/smile_request_mac_interceptor.js +11 -0
- package/dist/data/api/interceptors/smile_request_mac_interceptor.js.map +1 -1
- package/dist/data/compression/compressible_asset.d.ts +41 -0
- package/dist/data/compression/compressible_asset.d.ts.map +1 -0
- package/dist/data/compression/compressible_asset.js +34 -0
- package/dist/data/compression/compressible_asset.js.map +1 -0
- package/dist/data/compression/payload_compression_config.d.ts +36 -0
- package/dist/data/compression/payload_compression_config.d.ts.map +1 -0
- package/dist/data/compression/payload_compression_config.js +52 -0
- package/dist/data/compression/payload_compression_config.js.map +1 -0
- package/dist/data/compression/payload_compression_runner.d.ts +29 -0
- package/dist/data/compression/payload_compression_runner.d.ts.map +1 -0
- package/dist/data/compression/payload_compression_runner.js +55 -0
- package/dist/data/compression/payload_compression_runner.js.map +1 -0
- package/dist/data/compression/payload_compressor.d.ts +40 -0
- package/dist/data/compression/payload_compressor.d.ts.map +1 -0
- package/dist/data/compression/payload_compressor.js +126 -0
- package/dist/data/compression/payload_compressor.js.map +1 -0
- package/dist/data/compression/uri_compressible_asset.d.ts +23 -0
- package/dist/data/compression/uri_compressible_asset.d.ts.map +1 -0
- package/dist/data/compression/uri_compressible_asset.js +77 -0
- package/dist/data/compression/uri_compressible_asset.js.map +1 -0
- package/dist/data/dsl/builder/cache_config_builder.d.ts +2 -1
- package/dist/data/dsl/builder/cache_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/cache_config_builder.js +2 -1
- package/dist/data/dsl/builder/cache_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/config_builder.d.ts +40 -14
- package/dist/data/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/config_builder.js +40 -14
- package/dist/data/dsl/builder/config_builder.js.map +1 -1
- package/dist/data/dsl/builder/interceptor_config_builder.d.ts +9 -7
- package/dist/data/dsl/builder/interceptor_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/interceptor_config_builder.js +9 -7
- package/dist/data/dsl/builder/interceptor_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.d.ts +16 -1
- package/dist/data/dsl/builder/retry_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/retry_config_builder.js +16 -1
- package/dist/data/dsl/builder/retry_config_builder.js.map +1 -1
- package/dist/data/dsl/builder/timeout_config_builder.d.ts +4 -0
- package/dist/data/dsl/builder/timeout_config_builder.d.ts.map +1 -1
- package/dist/data/dsl/builder/timeout_config_builder.js +4 -0
- package/dist/data/dsl/builder/timeout_config_builder.js.map +1 -1
- package/dist/data/dsl/use_smile_id_network_builder.d.ts +17 -0
- package/dist/data/dsl/use_smile_id_network_builder.d.ts.map +1 -1
- package/dist/data/dsl/use_smile_id_network_builder.js +17 -0
- package/dist/data/dsl/use_smile_id_network_builder.js.map +1 -1
- package/dist/data/factory/networking_factory.d.ts.map +1 -1
- package/dist/data/factory/networking_factory.js +11 -1
- package/dist/data/factory/networking_factory.js.map +1 -1
- package/dist/data/repository/use_smile_id_repository_impl.d.ts +6 -0
- package/dist/data/repository/use_smile_id_repository_impl.d.ts.map +1 -1
- package/dist/data/repository/use_smile_id_repository_impl.js +82 -8
- package/dist/data/repository/use_smile_id_repository_impl.js.map +1 -1
- package/dist/data/security/request_canonicalizer.d.ts.map +1 -1
- package/dist/data/security/request_canonicalizer.js +14 -2
- package/dist/data/security/request_canonicalizer.js.map +1 -1
- package/dist/data/security/security_policy.d.ts +43 -0
- package/dist/data/security/security_policy.d.ts.map +1 -0
- package/dist/data/security/security_policy.js +61 -0
- package/dist/data/security/security_policy.js.map +1 -0
- package/dist/data/util/retry_util.d.ts +1 -1
- package/dist/data/util/retry_util.d.ts.map +1 -1
- package/dist/data/util/retry_util.js +2 -1
- package/dist/data/util/retry_util.js.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.d.ts +22 -0
- package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.js +58 -24
- package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
- package/dist/l10n/strings_en.d.ts +2 -1
- package/dist/l10n/strings_en.d.ts.map +1 -1
- package/dist/l10n/strings_en.js +2 -1
- package/dist/l10n/strings_en.js.map +1 -1
- package/dist/l10n/use_smile_id_localizations.d.ts +1 -0
- package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
- package/dist/l10n/use_smile_id_localizations.js +3 -0
- package/dist/l10n/use_smile_id_localizations.js.map +1 -1
- package/dist/metadata/builder_configuration.d.ts +39 -0
- package/dist/metadata/builder_configuration.d.ts.map +1 -0
- package/dist/metadata/builder_configuration.js +34 -0
- package/dist/metadata/builder_configuration.js.map +1 -0
- package/dist/metadata/captured_image_properties.d.ts +11 -0
- package/dist/metadata/captured_image_properties.d.ts.map +1 -0
- package/dist/metadata/captured_image_properties.js +11 -0
- package/dist/metadata/captured_image_properties.js.map +1 -0
- package/dist/metadata/device_orientation_collector.d.ts +17 -0
- package/dist/metadata/device_orientation_collector.d.ts.map +1 -0
- package/dist/metadata/device_orientation_collector.js +66 -0
- package/dist/metadata/device_orientation_collector.js.map +1 -0
- package/dist/metadata/geolocation.d.ts +20 -0
- package/dist/metadata/geolocation.d.ts.map +1 -0
- package/dist/metadata/geolocation.js +40 -0
- package/dist/metadata/geolocation.js.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts +48 -0
- package/dist/metadata/metadata_configuration_mappers.d.ts.map +1 -0
- package/dist/metadata/metadata_configuration_mappers.js +171 -0
- package/dist/metadata/metadata_configuration_mappers.js.map +1 -0
- package/dist/metadata/model_configuration.d.ts +41 -0
- package/dist/metadata/model_configuration.d.ts.map +1 -0
- package/dist/metadata/model_configuration.js +44 -0
- package/dist/metadata/model_configuration.js.map +1 -0
- package/dist/metadata/optional_native_modules.d.ts +79 -3
- package/dist/metadata/optional_native_modules.d.ts.map +1 -1
- package/dist/metadata/optional_native_modules.js +108 -3
- package/dist/metadata/optional_native_modules.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata.d.ts +45 -7
- package/dist/metadata/use_smile_id_metadata.d.ts.map +1 -1
- package/dist/metadata/use_smile_id_metadata.js +85 -13
- package/dist/metadata/use_smile_id_metadata.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.d.ts +37 -0
- package/dist/metadata/use_smile_id_metadata_factory.d.ts.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.js +184 -12
- package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
- package/dist/presentation/assets/svg/document_shimmer_strings.d.ts +14 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.d.ts.map +1 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.js +14 -0
- package/dist/presentation/assets/svg/document_shimmer_strings.js.map +1 -0
- package/dist/presentation/assets/svg/instruction_svg_strings.d.ts +12 -4
- package/dist/presentation/assets/svg/instruction_svg_strings.d.ts.map +1 -1
- package/dist/presentation/assets/svg/instruction_svg_strings.js +19 -8
- package/dist/presentation/assets/svg/instruction_svg_strings.js.map +1 -1
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts +0 -5
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.d.ts.map +1 -1
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js +0 -5
- package/dist/presentation/components/helpers/enhanced_smart_selfie_animation_frames.js.map +1 -1
- package/dist/presentation/components/icons/index.d.ts +24 -8
- package/dist/presentation/components/icons/index.d.ts.map +1 -1
- package/dist/presentation/components/icons/index.js +31 -11
- package/dist/presentation/components/icons/index.js.map +1 -1
- package/dist/presentation/components/use_smile_id_attribution.d.ts +1 -1
- package/dist/presentation/components/use_smile_id_button.d.ts +2 -2
- package/dist/presentation/components/use_smile_id_button.js +4 -4
- package/dist/presentation/components/use_smile_id_button.js.map +1 -1
- package/dist/presentation/components/use_smile_id_capture_content.d.ts +13 -0
- package/dist/presentation/components/use_smile_id_capture_content.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_capture_content.js +15 -9
- package/dist/presentation/components/use_smile_id_capture_content.js.map +1 -1
- package/dist/presentation/components/use_smile_id_captured_document_image.d.ts +2 -3
- package/dist/presentation/components/use_smile_id_captured_document_image.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_captured_document_image.js +1 -3
- package/dist/presentation/components/use_smile_id_captured_document_image.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts +12 -6
- package/dist/presentation/components/use_smile_id_document_capture_controls.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_document_capture_controls.js +59 -16
- package/dist/presentation/components/use_smile_id_document_capture_controls.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_overlay.d.ts +22 -5
- package/dist/presentation/components/use_smile_id_document_overlay.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_document_overlay.js +80 -40
- package/dist/presentation/components/use_smile_id_document_overlay.js.map +1 -1
- package/dist/presentation/components/use_smile_id_document_shimmer.d.ts +15 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.d.ts.map +1 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.js +23 -0
- package/dist/presentation/components/use_smile_id_document_shimmer.js.map +1 -0
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js +1 -3
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_clip.js.map +1 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.js +84 -1
- package/dist/presentation/components/use_smile_id_guideline_thumbnail.js.map +1 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.d.ts +3 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_instructions_hero.js +18 -3
- package/dist/presentation/components/use_smile_id_instructions_hero.js.map +1 -1
- package/dist/presentation/components/use_smile_id_oval_border_palette.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_oval_border_palette.js +7 -3
- package/dist/presentation/components/use_smile_id_oval_border_palette.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts +12 -0
- package/dist/presentation/flow/dsl/builder/config_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/config_builder.js +12 -0
- package/dist/presentation/flow/dsl/builder/config_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/ml_builder.d.ts +13 -4
- package/dist/presentation/flow/dsl/builder/ml_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/ml_builder.js +3 -2
- package/dist/presentation/flow/dsl/builder/ml_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +111 -10
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.js +111 -10
- package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/theme_builder.d.ts +15 -2
- package/dist/presentation/flow/dsl/builder/theme_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/theme_builder.js +15 -2
- package/dist/presentation/flow/dsl/builder/theme_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts +6 -4
- package/dist/presentation/flow/dsl/use_smile_id_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_builder.js.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts +62 -36
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js +62 -36
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.d.ts +39 -4
- package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.js +141 -10
- package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
- package/dist/presentation/flow/model/instruction_guideline.d.ts +9 -0
- package/dist/presentation/flow/model/instruction_guideline.d.ts.map +1 -1
- package/dist/presentation/flow/model/instructions_defaults.d.ts +11 -2
- package/dist/presentation/flow/model/instructions_defaults.d.ts.map +1 -1
- package/dist/presentation/flow/model/instructions_defaults.js +73 -25
- package/dist/presentation/flow/model/instructions_defaults.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_capture_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_capture_screen.js +36 -12
- package/dist/presentation/flow/screen/orchestrated_capture_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_instructions_screen.js +1 -1
- package/dist/presentation/flow/screen/orchestrated_instructions_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.js +3 -1
- package/dist/presentation/flow/screen/orchestrated_preview_screen.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js +3 -3
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.js +14 -0
- package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
- package/dist/presentation/screen/helpers/capture_screen_helpers.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/capture_screen_helpers.js +1 -0
- package/dist/presentation/screen/helpers/capture_screen_helpers.js.map +1 -1
- package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts +1 -0
- package/dist/presentation/screen/helpers/instructions_screen_helpers.d.ts.map +1 -1
- package/dist/presentation/screen/helpers/instructions_screen_helpers.js +6 -2
- package/dist/presentation/screen/helpers/instructions_screen_helpers.js.map +1 -1
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js +3 -0
- package/dist/presentation/screen/helpers/scan_state_to_overlay_state.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts +17 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.js +153 -18
- package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts +2 -3
- package/dist/presentation/screen/use_smile_id_document_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_document_preview_screen.js +16 -11
- package/dist/presentation/screen/use_smile_id_document_preview_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts +2 -0
- package/dist/presentation/screen/use_smile_id_instructions_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.js +2 -1
- package/dist/presentation/screen/use_smile_id_instructions_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts +7 -6
- package/dist/presentation/screen/use_smile_id_preview_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_preview_screen.js +9 -8
- package/dist/presentation/screen/use_smile_id_preview_screen.js.map +1 -1
- package/dist/presentation/screen/use_smile_id_processing_screen.d.ts +2 -3
- package/dist/presentation/screen/use_smile_id_processing_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_processing_screen.js +3 -2
- package/dist/presentation/screen/use_smile_id_processing_screen.js.map +1 -1
- package/dist/presentation/theme/theme.d.ts +1 -1
- package/dist/presentation/theme/theme.d.ts.map +1 -1
- package/dist/presentation/theme/theme.js +20 -18
- package/dist/presentation/theme/theme.js.map +1 -1
- package/dist/presentation/utils/force_max_brightness.d.ts +4 -4
- package/package.json +26 -6
- package/src/__tests__/react_native_mock.tsx +8 -0
- package/src/camera/camera_defaults.ts +11 -9
- package/src/camera/orientation_degrees.ts +5 -6
- package/src/core/models/__tests__/document_type.test.ts +6 -4
- package/src/core/models/document_capture_mode.ts +27 -0
- package/src/core/models/document_type.ts +6 -4
- package/src/core/models/result.ts +9 -8
- package/src/data/api/interceptors/__tests__/smile_integrity_interceptor.test.ts +37 -1
- package/src/data/api/interceptors/__tests__/smile_request_mac_interceptor.test.ts +59 -1
- package/src/data/api/interceptors/smile_auth_interceptor.ts +1 -1
- package/src/data/api/interceptors/smile_integrity_interceptor.ts +20 -0
- package/src/data/api/interceptors/smile_request_mac_interceptor.ts +13 -0
- package/src/data/compression/__tests__/payload_compressor.test.ts +200 -0
- package/src/data/compression/__tests__/payload_compressor_real_jpeg.test.ts +222 -0
- package/src/data/compression/compressible_asset.ts +62 -0
- package/src/data/compression/payload_compression_config.ts +53 -0
- package/src/data/compression/payload_compression_runner.ts +102 -0
- package/src/data/compression/payload_compressor.ts +164 -0
- package/src/data/compression/uri_compressible_asset.ts +85 -0
- package/src/data/dsl/builder/cache_config_builder.ts +3 -1
- package/src/data/dsl/builder/config_builder.ts +45 -14
- package/src/data/dsl/builder/interceptor_config_builder.ts +9 -7
- package/src/data/dsl/builder/retry_config_builder.ts +22 -1
- package/src/data/dsl/builder/timeout_config_builder.ts +7 -0
- package/src/data/dsl/use_smile_id_network_builder.ts +17 -0
- package/src/data/factory/networking_factory.ts +14 -1
- package/src/data/repository/__tests__/network_retries.test.ts +117 -0
- package/src/data/repository/use_smile_id_repository_impl.ts +96 -9
- package/src/data/security/__tests__/security_policy.test.ts +96 -0
- package/src/data/security/__tests__/smile_id_crypto_manager.test.ts +18 -0
- package/src/data/security/request_canonicalizer.ts +15 -2
- package/src/data/security/security_policy.ts +70 -0
- package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +57 -1
- package/src/data/util/retry_util.ts +3 -2
- package/src/data/util/use_smile_id_token_decoder.ts +76 -28
- package/src/l10n/strings_en.ts +2 -1
- package/src/l10n/use_smile_id_localizations.ts +3 -0
- package/src/metadata/__tests__/device_orientation_collector.test.ts +15 -0
- package/src/metadata/__tests__/metadata_configuration_mappers.test.ts +215 -0
- package/src/metadata/__tests__/metadata_configuration_objects.test.ts +85 -0
- package/src/metadata/__tests__/metadata_device_context.test.ts +147 -0
- package/src/metadata/__tests__/metadata_golden_fixture.json +13 -0
- package/src/metadata/__tests__/metadata_payload_golden.test.ts +193 -0
- package/src/metadata/__tests__/use_smile_id_metadata.test.ts +18 -24
- package/src/metadata/builder_configuration.ts +63 -0
- package/src/metadata/captured_image_properties.ts +10 -0
- package/src/metadata/device_orientation_collector.ts +75 -0
- package/src/metadata/geolocation.ts +46 -0
- package/src/metadata/metadata_configuration_mappers.ts +234 -0
- package/src/metadata/model_configuration.ts +68 -0
- package/src/metadata/optional_native_modules.ts +157 -3
- package/src/metadata/use_smile_id_metadata.ts +140 -17
- package/src/metadata/use_smile_id_metadata_factory.ts +195 -11
- package/src/presentation/assets/si_ess_animation_all_directions.json +1300 -286
- package/src/presentation/assets/svg/document_shimmer_strings.ts +17 -0
- package/src/presentation/assets/svg/instruction_svg_strings.ts +34 -12
- package/src/presentation/components/__tests__/enhanced_smart_selfie_animation_frames.test.ts +1 -3
- package/src/presentation/components/__tests__/use_smile_id_enhanced_smart_selfie_clip.test.tsx +3 -4
- package/src/presentation/components/__tests__/use_smile_id_guideline_thumbnail.test.tsx +34 -1
- package/src/presentation/components/__tests__/use_smile_id_instructions_hero.test.tsx +27 -0
- package/src/presentation/components/__tests__/use_smile_id_oval_border_palette.test.ts +7 -5
- package/src/presentation/components/helpers/enhanced_smart_selfie_animation_frames.ts +0 -6
- package/src/presentation/components/icons/index.tsx +65 -18
- package/src/presentation/components/use_smile_id_attribution.tsx +1 -1
- package/src/presentation/components/use_smile_id_button.tsx +4 -4
- package/src/presentation/components/use_smile_id_capture_content.tsx +36 -12
- package/src/presentation/components/use_smile_id_captured_document_image.tsx +3 -8
- package/src/presentation/components/use_smile_id_document_capture_controls.tsx +103 -39
- package/src/presentation/components/use_smile_id_document_overlay.tsx +134 -44
- package/src/presentation/components/use_smile_id_document_shimmer.tsx +51 -0
- package/src/presentation/components/use_smile_id_enhanced_smart_selfie_clip.tsx +0 -3
- package/src/presentation/components/use_smile_id_guideline_thumbnail.tsx +131 -2
- package/src/presentation/components/use_smile_id_instructions_hero.tsx +100 -59
- package/src/presentation/components/use_smile_id_oval_border_palette.ts +7 -3
- package/src/presentation/flow/__tests__/document_flow_navigation.test.ts +200 -1
- package/src/presentation/flow/dsl/builder/config_builder.ts +14 -0
- package/src/presentation/flow/dsl/builder/ml_builder.ts +13 -4
- package/src/presentation/flow/dsl/builder/screens_builder.ts +111 -10
- package/src/presentation/flow/dsl/builder/theme_builder.ts +19 -2
- package/src/presentation/flow/dsl/use_smile_id_builder.tsx +6 -4
- package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +62 -36
- package/src/presentation/flow/flow_navigation_manager.ts +179 -13
- package/src/presentation/flow/model/instruction_guideline.ts +6 -0
- package/src/presentation/flow/model/instructions_defaults.ts +103 -25
- package/src/presentation/flow/screen/orchestrated_capture_screen.tsx +43 -10
- package/src/presentation/flow/screen/orchestrated_instructions_screen.tsx +1 -0
- package/src/presentation/flow/screen/orchestrated_preview_screen.tsx +4 -2
- package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +3 -3
- package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +64 -0
- package/src/presentation/flow/validation/job_type_validator.ts +24 -0
- package/src/presentation/screen/__tests__/instructions_screen_helpers.test.ts +15 -3
- package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +6 -4
- package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
- package/src/presentation/screen/helpers/instructions_screen_helpers.ts +7 -2
- package/src/presentation/screen/helpers/scan_state_to_overlay_state.ts +3 -0
- package/src/presentation/screen/use_smile_id_capture_screen.tsx +234 -36
- package/src/presentation/screen/use_smile_id_document_preview_screen.tsx +32 -22
- package/src/presentation/screen/use_smile_id_instructions_screen.tsx +4 -0
- package/src/presentation/screen/use_smile_id_preview_screen.tsx +9 -9
- package/src/presentation/screen/use_smile_id_processing_screen.tsx +7 -7
- package/src/presentation/theme/theme.ts +21 -19
- package/src/presentation/utils/force_max_brightness.tsx +4 -4
- package/dist/camera/frame_processor_plugin.d.ts +0 -28
- package/dist/camera/frame_processor_plugin.d.ts.map +0 -1
- package/dist/camera/frame_processor_plugin.js +0 -21
- package/dist/camera/frame_processor_plugin.js.map +0 -1
- package/dist/camera/use_smile_id_frame_processor.d.ts +0 -38
- package/dist/camera/use_smile_id_frame_processor.d.ts.map +0 -1
- package/dist/camera/use_smile_id_frame_processor.js +0 -2
- package/dist/camera/use_smile_id_frame_processor.js.map +0 -1
- package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts +0 -17
- package/dist/presentation/components/use_smile_id_document_frame_glyph.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_document_frame_glyph.js +0 -17
- package/dist/presentation/components/use_smile_id_document_frame_glyph.js.map +0 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts +0 -24
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js +0 -91
- package/dist/presentation/components/use_smile_id_enhanced_smart_selfie_animation.js.map +0 -1
- package/dist/presentation/components/use_smile_id_instruction_card.d.ts +0 -31
- package/dist/presentation/components/use_smile_id_instruction_card.d.ts.map +0 -1
- package/dist/presentation/components/use_smile_id_instruction_card.js +0 -43
- package/dist/presentation/components/use_smile_id_instruction_card.js.map +0 -1
- package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts +0 -24
- package/dist/presentation/screen/helpers/use_document_orientation_lock.d.ts.map +0 -1
- package/dist/presentation/screen/helpers/use_document_orientation_lock.js +0 -47
- package/dist/presentation/screen/helpers/use_document_orientation_lock.js.map +0 -1
- package/src/presentation/components/use_smile_id_document_frame_glyph.tsx +0 -162
|
@@ -30,48 +30,102 @@ export type ButtonSlot = (props: {
|
|
|
30
30
|
// --- Per-screen builders ---------------------------------------------------
|
|
31
31
|
|
|
32
32
|
export class ConsentConfigBuilder {
|
|
33
|
+
/** Your company name, shown in the consent copy. */
|
|
33
34
|
partnerName = "";
|
|
34
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Optional partner logo shown on the consent screen, rendered next to
|
|
37
|
+
* the Smile ID icon at the top.
|
|
38
|
+
*/
|
|
35
39
|
partnerIcon?: ReactNode;
|
|
40
|
+
/** URL of your privacy policy, linked from the consent screen. */
|
|
36
41
|
partnerPrivacyPolicyUrl?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Whether to show the "Powered by Smile ID" attribution. Defaults to
|
|
44
|
+
* true.
|
|
45
|
+
*/
|
|
37
46
|
showAttribution = true;
|
|
47
|
+
/**
|
|
48
|
+
* Callback invoked with the `ConsentInformation` when the user grants
|
|
49
|
+
* consent.
|
|
50
|
+
*/
|
|
38
51
|
onConsentGranted?: (info: ConsentInformation) => void;
|
|
52
|
+
/** Provides a custom allow/agree button in place of the default. */
|
|
39
53
|
allowButton?: ButtonSlot;
|
|
54
|
+
/** Provides a custom deny/cancel button in place of the default. */
|
|
40
55
|
denyButton?: ButtonSlot;
|
|
41
56
|
}
|
|
42
57
|
|
|
43
58
|
export class InstructionsConfigBuilder {
|
|
44
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* The leading, non-emphasized part of the instructions screen title.
|
|
61
|
+
* Defaults to the localized prefix.
|
|
62
|
+
*/
|
|
45
63
|
titlePrefix?: string;
|
|
46
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* The emphasized (highlighted) part of the instructions screen title.
|
|
66
|
+
* Defaults to the localized "selfie".
|
|
67
|
+
*/
|
|
47
68
|
titleEmphasis?: string;
|
|
48
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Name of the hero animation asset shown at the top of the
|
|
71
|
+
* instructions screen. Unset uses the selfie hero (or the ESS hero
|
|
72
|
+
* when enhanced liveness is on).
|
|
73
|
+
*/
|
|
49
74
|
heroAnimation?: HeroAnimationSource;
|
|
50
|
-
/**
|
|
75
|
+
/** Heading for the list of capture guidelines (rendered uppercase). */
|
|
51
76
|
guidelinesSectionTitle?: string;
|
|
52
|
-
/**
|
|
77
|
+
/** The list of guideline items shown to the user. Empty uses the defaults. */
|
|
53
78
|
guidelines: InstructionGuideline[] = [];
|
|
79
|
+
/**
|
|
80
|
+
* Whether to show the "Powered by Smile ID" attribution. Defaults to
|
|
81
|
+
* true.
|
|
82
|
+
*/
|
|
54
83
|
showAttribution = true;
|
|
55
|
-
/**
|
|
84
|
+
/** When true, draws the face-oval ring around the hero animation. */
|
|
56
85
|
showHeroOval = true;
|
|
86
|
+
/** Provides a custom continue button in place of the default. */
|
|
57
87
|
continueButton?: ButtonSlot;
|
|
58
88
|
}
|
|
59
89
|
|
|
60
90
|
export class SelfieCaptureConfigBuilder {
|
|
91
|
+
/**
|
|
92
|
+
* When true, lets an assisting agent flip to the rear camera to capture
|
|
93
|
+
* the subject. Defaults to false.
|
|
94
|
+
*/
|
|
61
95
|
allowAgentMode = false;
|
|
96
|
+
/**
|
|
97
|
+
* When true, uses the enhanced active-liveness capture path. Defaults
|
|
98
|
+
* to false.
|
|
99
|
+
*/
|
|
62
100
|
enableEnhancedLiveness = false;
|
|
63
101
|
}
|
|
64
102
|
|
|
65
103
|
export class DocumentCaptureConfigBuilder {
|
|
66
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* The kind of document being captured, which drives the capture
|
|
106
|
+
* framing and aspect ratio. **Required** — missing it fails validation.
|
|
107
|
+
*/
|
|
67
108
|
documentType?: DocumentType;
|
|
68
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
* Whether the document is captured automatically when held steady, or
|
|
111
|
+
* manually by shutter. Defaults to auto-capture with a 10s manual
|
|
112
|
+
* fallback.
|
|
113
|
+
*/
|
|
69
114
|
captureMode: DocumentCaptureMode =
|
|
70
115
|
DocumentCaptureMode.AutoCaptureWithManualFallback();
|
|
116
|
+
/**
|
|
117
|
+
* When true, lets the user pick an existing document image from the
|
|
118
|
+
* gallery. Defaults to false.
|
|
119
|
+
*/
|
|
71
120
|
allowGalleryUpload = false;
|
|
121
|
+
/** When true, captures both the front and back of the document. Defaults to true. */
|
|
72
122
|
captureBothSides = true;
|
|
123
|
+
/** When true, lets the user skip capturing the back side. Defaults to false. */
|
|
73
124
|
allowSkipBack = false;
|
|
74
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Optional fixed aspect ratio for the document frame when the ID's
|
|
127
|
+
* dimensions are known in advance — e.g. CR-80 ID card = 1.586.
|
|
128
|
+
*/
|
|
75
129
|
knownIdAspectRatio?: number;
|
|
76
130
|
|
|
77
131
|
/** The `documentType`'s aspect ratio when present, otherwise `knownIdAspectRatio`. */
|
|
@@ -81,17 +135,27 @@ export class DocumentCaptureConfigBuilder {
|
|
|
81
135
|
}
|
|
82
136
|
|
|
83
137
|
export class CaptureConfigBuilder {
|
|
138
|
+
/** What this screen captures — a selfie or a document. Required. */
|
|
84
139
|
captureType?: CaptureType;
|
|
140
|
+
/** Provides a custom start/capture button in place of the default. */
|
|
85
141
|
startButton?: ButtonSlot;
|
|
86
142
|
|
|
87
143
|
private _selfie?: SelfieCaptureConfigBuilder;
|
|
88
144
|
private _document?: DocumentCaptureConfigBuilder;
|
|
89
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Configures selfie-specific capture options (agent mode, enhanced
|
|
148
|
+
* liveness).
|
|
149
|
+
*/
|
|
90
150
|
selfie(block: (s: SelfieCaptureConfigBuilder) => void): void {
|
|
91
151
|
if (!this._selfie) this._selfie = new SelfieCaptureConfigBuilder();
|
|
92
152
|
block(this._selfie);
|
|
93
153
|
}
|
|
94
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Configures document-specific capture options (document type, capture
|
|
157
|
+
* mode, gallery upload, two-sided capture).
|
|
158
|
+
*/
|
|
95
159
|
document(block: (d: DocumentCaptureConfigBuilder) => void): void {
|
|
96
160
|
if (!this._document) this._document = new DocumentCaptureConfigBuilder();
|
|
97
161
|
block(this._document);
|
|
@@ -109,17 +173,35 @@ export class CaptureConfigBuilder {
|
|
|
109
173
|
}
|
|
110
174
|
|
|
111
175
|
export class PreviewConfigBuilder {
|
|
176
|
+
/** Whether the preview screen offers a retake action. */
|
|
112
177
|
allowRetake = true;
|
|
178
|
+
/**
|
|
179
|
+
* Whether to show the "Powered by Smile ID" attribution. Defaults to
|
|
180
|
+
* true.
|
|
181
|
+
*/
|
|
113
182
|
showAttribution = true;
|
|
183
|
+
/** Provides a custom continue button in place of the default. */
|
|
114
184
|
continueButton?: ButtonSlot;
|
|
185
|
+
/** Provides a custom cancel button in place of the default. */
|
|
115
186
|
cancelButton?: ButtonSlot;
|
|
116
187
|
}
|
|
117
188
|
|
|
118
189
|
export class ProcessingConfigBuilder {
|
|
190
|
+
/**
|
|
191
|
+
* When true, shows a numeric progress percentage while the job is
|
|
192
|
+
* processing.
|
|
193
|
+
*/
|
|
119
194
|
showProgressPercentage = true;
|
|
195
|
+
/**
|
|
196
|
+
* Whether to show the "Powered by Smile ID" attribution. Defaults to
|
|
197
|
+
* true.
|
|
198
|
+
*/
|
|
120
199
|
showAttribution = true;
|
|
200
|
+
/** Provides a custom continue button in place of the default. */
|
|
121
201
|
continueButton?: ButtonSlot;
|
|
202
|
+
/** Provides a custom retry button in place of the default. */
|
|
122
203
|
retryButton?: ButtonSlot;
|
|
204
|
+
/** Provides a custom exit button in place of the default. */
|
|
123
205
|
exitButton?: ButtonSlot;
|
|
124
206
|
}
|
|
125
207
|
|
|
@@ -144,30 +226,49 @@ export type ScreensConfig = {
|
|
|
144
226
|
export class ScreensBuilder {
|
|
145
227
|
private _steps: ScreenSpec[] = [];
|
|
146
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Adds a consent screen that collects the user's agreement to
|
|
231
|
+
* biometric data processing before capture.
|
|
232
|
+
*/
|
|
147
233
|
consent(block?: (c: ConsentConfigBuilder) => void): void {
|
|
148
234
|
const config = new ConsentConfigBuilder();
|
|
149
235
|
block?.(config);
|
|
150
236
|
this._steps.push({ kind: "consent", config });
|
|
151
237
|
}
|
|
152
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Adds an instructions screen explaining what the user is about to do.
|
|
241
|
+
*/
|
|
153
242
|
instructions(block?: (i: InstructionsConfigBuilder) => void): void {
|
|
154
243
|
const config = new InstructionsConfigBuilder();
|
|
155
244
|
block?.(config);
|
|
156
245
|
this._steps.push({ kind: "instructions", config });
|
|
157
246
|
}
|
|
158
247
|
|
|
248
|
+
/**
|
|
249
|
+
* Adds a capture screen that runs the camera and on-device detection
|
|
250
|
+
* for a selfie or document.
|
|
251
|
+
*/
|
|
159
252
|
capture(block: (c: CaptureConfigBuilder) => void): void {
|
|
160
253
|
const config = new CaptureConfigBuilder();
|
|
161
254
|
block(config);
|
|
162
255
|
this._steps.push({ kind: "capture", config });
|
|
163
256
|
}
|
|
164
257
|
|
|
258
|
+
/**
|
|
259
|
+
* Adds a preview screen that lets the user review the captured image
|
|
260
|
+
* and optionally retake it.
|
|
261
|
+
*/
|
|
165
262
|
preview(block?: (p: PreviewConfigBuilder) => void): void {
|
|
166
263
|
const config = new PreviewConfigBuilder();
|
|
167
264
|
block?.(config);
|
|
168
265
|
this._steps.push({ kind: "preview", config });
|
|
169
266
|
}
|
|
170
267
|
|
|
268
|
+
/**
|
|
269
|
+
* Adds a processing screen shown while the job is submitted, displaying
|
|
270
|
+
* success, failure, or retry states.
|
|
271
|
+
*/
|
|
171
272
|
processing(block?: (p: ProcessingConfigBuilder) => void): void {
|
|
172
273
|
const config = new ProcessingConfigBuilder();
|
|
173
274
|
block?.(config);
|
|
@@ -27,23 +27,40 @@ export type ThemeConfiguration = {
|
|
|
27
27
|
* picks light or dark at mount time based on the active color scheme.
|
|
28
28
|
*/
|
|
29
29
|
export class ThemeConfigBuilder {
|
|
30
|
+
/** Primary brand color used for key actions and accents. */
|
|
30
31
|
primaryColor?: AdaptiveColor;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Foreground color used on top of the primary color (for example
|
|
35
|
+
* button text).
|
|
36
|
+
*/
|
|
31
37
|
primaryForeground?: AdaptiveColor;
|
|
38
|
+
|
|
39
|
+
/** Secondary color used for less prominent surfaces and actions. */
|
|
32
40
|
secondaryColor?: AdaptiveColor;
|
|
41
|
+
|
|
42
|
+
/** Accent color used for highlights and selected states. */
|
|
33
43
|
accentColor?: AdaptiveColor;
|
|
34
44
|
|
|
45
|
+
/** Optional font family applied to all SDK text. */
|
|
35
46
|
fontFamily?: string;
|
|
36
47
|
|
|
48
|
+
/** Corner radius applied to buttons. */
|
|
37
49
|
buttonShape?: number;
|
|
50
|
+
|
|
51
|
+
/** Corner radius applied to cards and surfaces. */
|
|
38
52
|
cardShape?: number;
|
|
39
53
|
|
|
40
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Builds an adaptive color that resolves to the light or dark value
|
|
56
|
+
* based on the active appearance.
|
|
57
|
+
*/
|
|
41
58
|
color(light: string, dark: string): AdaptiveColor {
|
|
42
59
|
return Object.freeze({ light, dark });
|
|
43
60
|
}
|
|
44
61
|
|
|
45
62
|
/**
|
|
46
|
-
*
|
|
63
|
+
* Builds a corner-shape value from the given radius. Returns the input
|
|
47
64
|
* radius unchanged — React Native resolves shape at render time via
|
|
48
65
|
* `borderRadius`, so the `buttonShape` / `cardShape` properties are
|
|
49
66
|
* plain numbers.
|
|
@@ -10,10 +10,12 @@ import {
|
|
|
10
10
|
import type { FlowBuildResult } from "./flow_build_result";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* Entry point for a UseSmileID identity-verification flow. Host this in
|
|
14
|
+
* your UI and configure the flow inside the builder closure — declare
|
|
15
|
+
* the screens, network credentials, theme, and ML analyzers, then handle
|
|
16
|
+
* the terminal outcome via `onResult`. The component owns the
|
|
17
|
+
* build-and-dispatch lifecycle internally — partners never touch the
|
|
18
|
+
* intermediate [FlowBuildResult].
|
|
17
19
|
*
|
|
18
20
|
* export function VerifyScreen({ onComplete }) {
|
|
19
21
|
* return (
|
|
@@ -97,20 +97,20 @@ export class UseSmileIDFlowBuilder {
|
|
|
97
97
|
localizations?: UseSmileIDLocalizations;
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
100
|
+
* Invoked once when the flow terminates — with the submitted job on
|
|
101
|
+
* success, a typed error on failure, or a cancellation when the user
|
|
102
|
+
* exits before completing. Wire the returned user id / job id into
|
|
103
|
+
* your job-status pipeline. Defaults to a no-op so partners who don't
|
|
104
|
+
* need result handling still get a valid configuration; the
|
|
105
|
+
* server-issued `JobSubmissionResponse` carries `userId` / `jobId` /
|
|
106
|
+
* `status` / `message` / `createdAt`.
|
|
106
107
|
*/
|
|
107
108
|
onResult: (result: UseSmileIDResult<JobSubmissionResponse>) => void =
|
|
108
109
|
() => {};
|
|
109
110
|
|
|
110
111
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* `docs/Architecture.md § Rollout`.
|
|
112
|
+
* Invoked for every analytics event the SDK emits during the flow.
|
|
113
|
+
* Optional — leave unset to ignore analytics.
|
|
114
114
|
*/
|
|
115
115
|
onAnalyticsEvent?: (event: UseSmileIDAnalyticsEvent) => void;
|
|
116
116
|
|
|
@@ -123,11 +123,12 @@ export class UseSmileIDFlowBuilder {
|
|
|
123
123
|
private _screens?: ScreensBuilder;
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* Configures global SDK feature flags (debug mode, offline mode, crash
|
|
127
|
+
* reporting). Repeated calls compose against the same configuration —
|
|
128
|
+
* `enableCrashReporting` set in one call and `enableDebugMode` set in
|
|
129
|
+
* another both end up on the final config.
|
|
127
130
|
*
|
|
128
|
-
*
|
|
129
|
-
* `enableCrashReporting` set in one call and `enableDebugMode` set
|
|
130
|
-
* in another both end up on the final config.
|
|
131
|
+
* `b.config((c) => { c.enableCrashReporting = false; })`
|
|
131
132
|
*/
|
|
132
133
|
config(block: (c: UseSmileIDConfigBuilder) => void): void {
|
|
133
134
|
if (!this._config) this._config = new UseSmileIDConfigBuilder();
|
|
@@ -135,7 +136,10 @@ export class UseSmileIDFlowBuilder {
|
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
/**
|
|
138
|
-
*
|
|
139
|
+
* Configures the visual theme — colors, fonts, and corner shapes —
|
|
140
|
+
* applied to every SDK screen in the flow.
|
|
141
|
+
*
|
|
142
|
+
* `b.theme((t) => { t.primaryColor = t.color('#1A73E8', '#4DA3FF'); t.buttonShape = 12; })`
|
|
139
143
|
*
|
|
140
144
|
* Each call replaces the prior theme builder — partners typically
|
|
141
145
|
* configure the theme in one place, and accumulating across helpers
|
|
@@ -148,6 +152,10 @@ export class UseSmileIDFlowBuilder {
|
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
/**
|
|
155
|
+
* Configures the network stack: partner credentials, job type,
|
|
156
|
+
* timeouts, retry policy, response cache, and custom interceptors.
|
|
157
|
+
* Required for any flow that submits a job.
|
|
158
|
+
*
|
|
151
159
|
* `b.network((n) => { n.config((c) => { c.partnerConfig((p) => { p.partnerId = ...; }); }); })`
|
|
152
160
|
*
|
|
153
161
|
* Each call replaces the prior network builder. Network config
|
|
@@ -160,6 +168,9 @@ export class UseSmileIDFlowBuilder {
|
|
|
160
168
|
}
|
|
161
169
|
|
|
162
170
|
/**
|
|
171
|
+
* Registers the on-device ML analyzers used for face and document
|
|
172
|
+
* detection, keyed by capture type.
|
|
173
|
+
*
|
|
163
174
|
* `b.ml((m) => { m.analyzers((a) => { a.forCaptureType(CaptureType.selfie, (face) => face.add(useSmileIDVisionFace)); }); })`
|
|
164
175
|
*/
|
|
165
176
|
ml(block: (m: UseSmileIDMLBuilder) => void): void {
|
|
@@ -168,6 +179,10 @@ export class UseSmileIDFlowBuilder {
|
|
|
168
179
|
}
|
|
169
180
|
|
|
170
181
|
/**
|
|
182
|
+
* Declares the ordered sequence of screens the flow presents. Screens
|
|
183
|
+
* render in the order they are added; the same screen type may be
|
|
184
|
+
* added more than once.
|
|
185
|
+
*
|
|
171
186
|
* `b.screens((screens) => { screens.instructions(); screens.capture((c) => { c.captureType = CaptureType.selfie; }); })`
|
|
172
187
|
*
|
|
173
188
|
* Each screen-builder call appends a step to the orchestrator's
|
|
@@ -179,10 +194,11 @@ export class UseSmileIDFlowBuilder {
|
|
|
179
194
|
}
|
|
180
195
|
|
|
181
196
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
197
|
+
* Runs a pre-flight check of the current builder configuration and
|
|
198
|
+
* returns a `ValidationState` describing any blocking issues, without
|
|
199
|
+
* throwing. Today the only rule it surfaces is the empty-screens-block
|
|
200
|
+
* error — `b.screens` must register at least one screen before the
|
|
201
|
+
* builder can produce a flow.
|
|
186
202
|
*
|
|
187
203
|
* The full rule set (screen ordering, dependency rules, KYC and
|
|
188
204
|
* consent payload validation, etc.) runs inside `build()` and is
|
|
@@ -190,6 +206,8 @@ export class UseSmileIDFlowBuilder {
|
|
|
190
206
|
* the full picture during configuration should call
|
|
191
207
|
* `useSmileIDBuilder(...)` and pattern-match on the returned
|
|
192
208
|
* `result.kind`.
|
|
209
|
+
*
|
|
210
|
+
* @returns a `ValidationState` describing any blocking issues.
|
|
193
211
|
*/
|
|
194
212
|
validate(): ValidationState {
|
|
195
213
|
return ValidationState.invalid(
|
|
@@ -198,35 +216,38 @@ export class UseSmileIDFlowBuilder {
|
|
|
198
216
|
}
|
|
199
217
|
|
|
200
218
|
/**
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
* partner storage or
|
|
204
|
-
*
|
|
219
|
+
* Validates a `ConsentInformation` payload in isolation and returns a
|
|
220
|
+
* `ValidationState`, without throwing. Useful when the payload comes
|
|
221
|
+
* from dynamic partner storage or remote config — pre-flight it before
|
|
222
|
+
* assigning to `b.consentInformation`.
|
|
205
223
|
*/
|
|
206
224
|
validateConsent(consent: ConsentInformation): ValidationState {
|
|
207
225
|
return ValidationState.invalid(runConsentValidation(consent));
|
|
208
226
|
}
|
|
209
227
|
|
|
210
228
|
/**
|
|
211
|
-
*
|
|
212
|
-
* when the partner pulls
|
|
213
|
-
* and wants to pre-flight them
|
|
214
|
-
* `b.enhancedKYCParams`.
|
|
229
|
+
* Validates an `EnhancedKYCParams` payload in isolation and returns a
|
|
230
|
+
* `ValidationState`, without throwing. Useful when the partner pulls
|
|
231
|
+
* KYC fields from a form or remote config and wants to pre-flight them
|
|
232
|
+
* before assigning to `b.enhancedKYCParams`.
|
|
215
233
|
*/
|
|
216
234
|
validateEnhancedKYCParams(params: EnhancedKYCParams): ValidationState {
|
|
217
235
|
return ValidationState.invalid(runEnhancedKYCParamsValidation(params));
|
|
218
236
|
}
|
|
219
237
|
|
|
220
238
|
/**
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
* different param shape.
|
|
239
|
+
* Validates a `BiometricKYCParams` payload in isolation and returns a
|
|
240
|
+
* `ValidationState`, without throwing.
|
|
224
241
|
*/
|
|
225
242
|
validateBiometricKYCParams(params: BiometricKYCParams): ValidationState {
|
|
226
243
|
return ValidationState.invalid(runBiometricKYCParamsValidation(params));
|
|
227
244
|
}
|
|
228
245
|
|
|
229
|
-
/**
|
|
246
|
+
/**
|
|
247
|
+
* Validates a `DocumentVerificationParams` payload in isolation and
|
|
248
|
+
* returns a `ValidationState`, without throwing. Only `country` is
|
|
249
|
+
* required; `idType` is optional.
|
|
250
|
+
*/
|
|
230
251
|
validateDocumentVerificationParams(
|
|
231
252
|
params: DocumentVerificationParams,
|
|
232
253
|
): ValidationState {
|
|
@@ -235,7 +256,11 @@ export class UseSmileIDFlowBuilder {
|
|
|
235
256
|
);
|
|
236
257
|
}
|
|
237
258
|
|
|
238
|
-
/**
|
|
259
|
+
/**
|
|
260
|
+
* Validates an `EnhancedDocumentVerificationParams` payload in
|
|
261
|
+
* isolation and returns a `ValidationState`, without throwing. Both
|
|
262
|
+
* `country` and `idType` are required.
|
|
263
|
+
*/
|
|
239
264
|
validateEnhancedDocumentVerificationParams(
|
|
240
265
|
params: EnhancedDocumentVerificationParams,
|
|
241
266
|
): ValidationState {
|
|
@@ -245,11 +270,12 @@ export class UseSmileIDFlowBuilder {
|
|
|
245
270
|
}
|
|
246
271
|
|
|
247
272
|
/**
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
* the in-build
|
|
273
|
+
* Validates a `UserDetails` payload in isolation and returns a
|
|
274
|
+
* `ValidationState`, without throwing. Useful when the partner pulls
|
|
275
|
+
* user PII from a form or remote config and wants to pre-flight it
|
|
276
|
+
* before assigning to `b.userDetails`. Surfaces the same dotted-path
|
|
277
|
+
* field names (`userDetails.givenNames` etc.) that the in-build
|
|
278
|
+
* validator emits.
|
|
253
279
|
*/
|
|
254
280
|
validateUserDetails(userDetails: UserDetails): ValidationState {
|
|
255
281
|
return ValidationState.invalid(runUserDetailsValidation(userDetails));
|