@smileid/usesmileid 12.0.1 → 12.0.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/CHANGELOG.md +4 -0
- package/README.md +1 -1
- package/dist/camera/camera_defaults.d.ts +2 -0
- package/dist/camera/camera_defaults.d.ts.map +1 -1
- package/dist/camera/camera_defaults.js +2 -0
- package/dist/camera/camera_defaults.js.map +1 -1
- package/dist/core/exception/flow_exceptions.d.ts +4 -2
- package/dist/core/exception/flow_exceptions.d.ts.map +1 -1
- package/dist/core/exception/flow_exceptions.js +3 -2
- package/dist/core/exception/flow_exceptions.js.map +1 -1
- package/dist/core/exception/missing_job_type_exception.d.ts +1 -3
- package/dist/core/exception/missing_job_type_exception.d.ts.map +1 -1
- package/dist/core/exception/missing_job_type_exception.js +2 -4
- package/dist/core/exception/missing_job_type_exception.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/smile_id_api.d.ts +4 -0
- package/dist/data/api/smile_id_api.d.ts.map +1 -1
- package/dist/data/api/smile_id_api.js +30 -27
- package/dist/data/api/smile_id_api.js.map +1 -1
- package/dist/data/model/job_request.d.ts +28 -12
- package/dist/data/model/job_request.d.ts.map +1 -1
- package/dist/data/model/token_payload.d.ts +78 -0
- package/dist/data/model/token_payload.d.ts.map +1 -0
- package/dist/data/model/token_payload.js +132 -0
- package/dist/data/model/token_payload.js.map +1 -0
- package/dist/data/model/user_details_payload.d.ts +39 -0
- package/dist/data/model/user_details_payload.d.ts.map +1 -0
- package/dist/data/model/user_details_payload.js +53 -0
- package/dist/data/model/user_details_payload.js.map +1 -0
- package/dist/data/util/use_smile_id_token_decoder.d.ts +15 -3
- package/dist/data/util/use_smile_id_token_decoder.d.ts.map +1 -1
- package/dist/data/util/use_smile_id_token_decoder.js +20 -8
- package/dist/data/util/use_smile_id_token_decoder.js.map +1 -1
- package/dist/l10n/strings_en.d.ts +4 -1
- package/dist/l10n/strings_en.d.ts.map +1 -1
- package/dist/l10n/strings_en.js +4 -1
- package/dist/l10n/strings_en.js.map +1 -1
- package/dist/l10n/use_smile_id_localizations.d.ts +10 -0
- package/dist/l10n/use_smile_id_localizations.d.ts.map +1 -1
- package/dist/l10n/use_smile_id_localizations.js +59 -3
- package/dist/l10n/use_smile_id_localizations.js.map +1 -1
- package/dist/metadata/metadata_configuration_mappers.js +1 -1
- package/dist/metadata/metadata_configuration_mappers.js.map +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.js +1 -1
- package/dist/metadata/use_smile_id_metadata_factory.js.map +1 -1
- package/dist/presentation/components/use_smile_id_button.d.ts.map +1 -1
- package/dist/presentation/components/use_smile_id_button.js +8 -2
- package/dist/presentation/components/use_smile_id_button.js.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts +3 -6
- package/dist/presentation/flow/dsl/builder/screens_builder.d.ts.map +1 -1
- package/dist/presentation/flow/dsl/builder/screens_builder.js +4 -6
- package/dist/presentation/flow/dsl/builder/screens_builder.js.map +1 -1
- 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 +23 -1
- package/dist/presentation/flow/dsl/use_smile_id_flow_builder.js.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.d.ts +17 -2
- package/dist/presentation/flow/flow_navigation_manager.d.ts.map +1 -1
- package/dist/presentation/flow/flow_navigation_manager.js +77 -45
- package/dist/presentation/flow/flow_navigation_manager.js.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_processing_screen.d.ts.map +1 -1
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js +25 -5
- package/dist/presentation/flow/screen/orchestrated_processing_screen.js.map +1 -1
- package/dist/presentation/flow/use_smile_id_flow.d.ts.map +1 -1
- package/dist/presentation/flow/use_smile_id_flow.js +35 -8
- package/dist/presentation/flow/use_smile_id_flow.js.map +1 -1
- package/dist/presentation/flow/validation/flow_validator.d.ts +16 -2
- package/dist/presentation/flow/validation/flow_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/flow_validator.js +19 -27
- package/dist/presentation/flow/validation/flow_validator.js.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.d.ts +7 -0
- package/dist/presentation/flow/validation/job_type_validator.d.ts.map +1 -1
- package/dist/presentation/flow/validation/job_type_validator.js +52 -27
- package/dist/presentation/flow/validation/job_type_validator.js.map +1 -1
- package/dist/presentation/flow/validation/user_details_validator.d.ts +9 -0
- package/dist/presentation/flow/validation/user_details_validator.d.ts.map +1 -0
- package/dist/presentation/flow/validation/user_details_validator.js +40 -0
- package/dist/presentation/flow/validation/user_details_validator.js.map +1 -0
- 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/use_smile_id_capture_screen.d.ts.map +1 -1
- package/dist/presentation/screen/use_smile_id_capture_screen.js +64 -18
- package/dist/presentation/screen/use_smile_id_capture_screen.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/react_native_mock.tsx +22 -0
- package/src/__tests__/snapshots/__snapshots__/screens_structural.test.tsx.snap +14 -8
- package/src/camera/__tests__/camera_permissions.test.ts +72 -0
- package/src/camera/__tests__/camera_system_focus.test.ts +173 -0
- package/src/camera/__tests__/use_smile_id_camera_preview.test.tsx +461 -0
- package/src/camera/__tests__/use_smile_id_frame_stream_hook.test.tsx +229 -0
- package/src/camera/camera_defaults.ts +3 -0
- package/src/core/exception/__tests__/builder_validation_exceptions.test.ts +14 -0
- package/src/core/exception/flow_exceptions.test.ts +10 -0
- package/src/core/exception/flow_exceptions.ts +3 -2
- package/src/core/exception/missing_job_type_exception.ts +2 -4
- package/src/data/api/__tests__/smile_id_api.test.ts +275 -1
- package/src/data/api/interceptors/__tests__/credential_header_redaction.test.ts +144 -0
- package/src/data/api/interceptors/smile_auth_interceptor.ts +1 -1
- package/src/data/api/smile_id_api.ts +36 -49
- package/src/data/dsl/__tests__/use_smile_id_network_builder.test.ts +157 -0
- package/src/data/factory/__tests__/signed_job_submission_headers.test.ts +1 -1
- package/src/data/model/__tests__/token_payload.test.ts +224 -0
- package/src/data/model/__tests__/user_details_payload.test.ts +100 -0
- package/src/data/model/job_request.ts +27 -12
- package/src/data/model/token_payload.ts +182 -0
- package/src/data/model/user_details_payload.ts +84 -0
- package/src/data/repository/__tests__/network_retries.test.ts +1 -1
- package/src/data/repository/__tests__/repository_dispatch.test.ts +366 -0
- package/src/data/repository/__tests__/use_smile_id_repository.test.ts +1 -1
- package/src/data/security/__tests__/signing_crypto.test.ts +203 -0
- package/src/data/util/__tests__/use_smile_id_token_decoder.test.ts +179 -0
- package/src/data/util/use_smile_id_token_decoder.ts +29 -8
- package/src/l10n/__tests__/use_smile_id_localizations.test.ts +122 -5
- package/src/l10n/__tests__/use_smile_id_localizations_provider.test.tsx +112 -0
- package/src/l10n/__tests__/use_smile_id_localizations_surface.test.ts +231 -0
- package/src/l10n/strings_en.ts +5 -1
- package/src/l10n/use_smile_id_localizations.ts +80 -3
- package/src/metadata/__tests__/device_orientation_sampling.test.ts +165 -0
- package/src/metadata/__tests__/geolocation.test.ts +150 -0
- package/src/metadata/__tests__/metadata_configuration_objects.test.ts +1 -1
- package/src/metadata/__tests__/metadata_device_context.test.ts +3 -3
- package/src/metadata/__tests__/metadata_golden_fixture.json +1 -1
- package/src/metadata/__tests__/metadata_payload_golden.test.ts +4 -4
- package/src/metadata/__tests__/optional_native_modules.test.ts +234 -0
- package/src/metadata/__tests__/use_smile_id_metadata.test.ts +1 -1
- package/src/metadata/__tests__/use_smile_id_metadata_factory.test.ts +615 -0
- package/src/metadata/metadata_configuration_mappers.ts +1 -1
- package/src/metadata/use_smile_id_metadata_factory.ts +1 -1
- package/src/presentation/components/__tests__/use_smile_id_content_card.test.tsx +112 -0
- package/src/presentation/components/__tests__/use_smile_id_face_oval_image.test.tsx +190 -0
- package/src/presentation/components/__tests__/use_smile_id_learn_more_content.test.tsx +159 -0
- package/src/presentation/components/__tests__/use_smile_id_processing_center_indicator.test.tsx +88 -0
- package/src/presentation/components/use_smile_id_button.tsx +7 -2
- package/src/presentation/flow/__tests__/flow_navigation_manager.test.ts +323 -1
- package/src/presentation/flow/__tests__/use_smile_id_flow.test.tsx +651 -0
- package/src/presentation/flow/dsl/__tests__/use_smile_id_builder_component.test.tsx +120 -0
- package/src/presentation/flow/dsl/builder/screens_builder.ts +4 -6
- package/src/presentation/flow/dsl/use_smile_id_flow_builder.ts +27 -1
- package/src/presentation/flow/flow_navigation_manager.ts +102 -92
- package/src/presentation/flow/graph/__tests__/screen_renderer.test.tsx +102 -0
- package/src/presentation/flow/screen/__tests__/orchestrated_capture_screen.test.tsx +836 -0
- package/src/presentation/flow/screen/__tests__/orchestrated_consent_screen.test.tsx +165 -0
- package/src/presentation/flow/screen/__tests__/orchestrated_instructions_screen.test.tsx +163 -0
- package/src/presentation/flow/screen/__tests__/orchestrated_preview_screen.test.tsx +224 -0
- package/src/presentation/flow/screen/__tests__/orchestrated_processing_screen.test.tsx +338 -0
- package/src/presentation/flow/screen/orchestrated_processing_screen.tsx +42 -5
- package/src/presentation/flow/use_smile_id_flow.tsx +52 -8
- package/src/presentation/flow/validation/__tests__/flow_validator.test.ts +158 -0
- package/src/presentation/flow/validation/__tests__/job_type_validator.test.ts +200 -0
- package/src/presentation/flow/validation/flow_validator.ts +30 -31
- package/src/presentation/flow/validation/job_type_validator.ts +73 -39
- package/src/presentation/flow/validation/user_details_validator.ts +53 -0
- package/src/presentation/screen/__tests__/feedback_copy_table.test.ts +145 -0
- package/src/presentation/screen/__tests__/use_smile_id_capture_screen.test.tsx +348 -0
- package/src/presentation/screen/__tests__/use_smile_id_document_back_instructions.test.tsx +3 -1
- package/src/presentation/screen/__tests__/use_smile_id_permission_screen.test.tsx +68 -0
- package/src/presentation/screen/helpers/capture_screen_helpers.ts +1 -0
- package/src/presentation/screen/use_smile_id_capture_screen.tsx +69 -18
- package/src/presentation/theme/__tests__/use_use_smile_id_fonts.test.tsx +166 -0
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Sizes are measured on every push to `main` and updated automatically by CI.
|
|
|
29
29
|
- React Native 0.83+ or Expo SDK 55+
|
|
30
30
|
- Node 20.18+
|
|
31
31
|
- React 19.2+
|
|
32
|
-
- Xcode (latest stable) — iOS
|
|
32
|
+
- Xcode (latest stable) — iOS 16.4 deployment target (set by Expo SDK 56's modules; the Smile ID iOS SDK itself supports iOS 15)
|
|
33
33
|
- Android Gradle Plugin 8.x — `compileSdk` 37, `minSdk` 26 (the
|
|
34
34
|
`com.usesmileid:*` 12.0.0 AARs are built with compileSdk 37 and
|
|
35
35
|
enforce it as the consumer minimum — set `android.compileSdkVersion=37` in
|
|
@@ -16,6 +16,8 @@ export declare const CameraDefaults: {
|
|
|
16
16
|
readonly width: 1280;
|
|
17
17
|
readonly height: 720;
|
|
18
18
|
};
|
|
19
|
+
/** How long a streaming capture waits for its first analyzed frame before reporting the camera unavailable. */
|
|
20
|
+
readonly firstFrameTimeoutMs: 10000;
|
|
19
21
|
/** Longest-edge ceiling (px) for an imported document image; downscale-only. */
|
|
20
22
|
readonly documentMaxDimension: 1600;
|
|
21
23
|
/** JPEG quality (0–1) for imported document images. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera_defaults.d.ts","sourceRoot":"","sources":["../../src/camera/camera_defaults.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,eAAO,MAAM,cAAc;IACzB,wDAAwD;;IAExD,wDAAwD;;IAGxD,gFAAgF;;IAEhF,yFAAyF;;;;;IAEzF,gHAAgH;;;;;IAGhH,gFAAgF;;IAEhF,uDAAuD;;IAEvD,oFAAoF;;IAEpF,gFAAgF;;IAEhF,kFAAkF;;CAE1E,CAAC"}
|
|
1
|
+
{"version":3,"file":"camera_defaults.d.ts","sourceRoot":"","sources":["../../src/camera/camera_defaults.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,eAAO,MAAM,cAAc;IACzB,wDAAwD;;IAExD,wDAAwD;;IAGxD,gFAAgF;;IAEhF,yFAAyF;;;;;IAEzF,gHAAgH;;;;;IAGhH,+GAA+G;;IAG/G,gFAAgF;;IAEhF,uDAAuD;;IAEvD,oFAAoF;;IAEpF,gFAAgF;;IAEhF,kFAAkF;;CAE1E,CAAC"}
|
|
@@ -10,6 +10,8 @@ export const CameraDefaults = {
|
|
|
10
10
|
analysisTargetResolution: { width: 640, height: 480 },
|
|
11
11
|
/** Document analysis resolution (16:9, matched to the visible preview so the guide-rect crop stays aligned). */
|
|
12
12
|
documentAnalysisResolution: { width: 1280, height: 720 },
|
|
13
|
+
/** How long a streaming capture waits for its first analyzed frame before reporting the camera unavailable. */
|
|
14
|
+
firstFrameTimeoutMs: 10_000,
|
|
13
15
|
/** Longest-edge ceiling (px) for an imported document image; downscale-only. */
|
|
14
16
|
documentMaxDimension: 1600,
|
|
15
17
|
/** JPEG quality (0–1) for imported document images. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera_defaults.js","sourceRoot":"","sources":["../../src/camera/camera_defaults.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,wDAAwD;IACxD,sBAAsB,EAAE,GAAG;IAC3B,wDAAwD;IACxD,sBAAsB,EAAE,GAAG;IAE3B,gFAAgF;IAChF,iBAAiB,EAAE,EAAE;IACrB,yFAAyF;IACzF,wBAAwB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAW;IAC9D,gHAAgH;IAChH,0BAA0B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAW;IAEjE,gFAAgF;IAChF,oBAAoB,EAAE,IAAI;IAC1B,uDAAuD;IACvD,mBAAmB,EAAE,IAAI;IACzB,oFAAoF;IACpF,6BAA6B,EAAE,GAAG;IAClC,gFAAgF;IAChF,qBAAqB,EAAE,GAAG;IAC1B,kFAAkF;IAClF,sBAAsB,EAAE,GAAG;CACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"camera_defaults.js","sourceRoot":"","sources":["../../src/camera/camera_defaults.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,wDAAwD;IACxD,sBAAsB,EAAE,GAAG;IAC3B,wDAAwD;IACxD,sBAAsB,EAAE,GAAG;IAE3B,gFAAgF;IAChF,iBAAiB,EAAE,EAAE;IACrB,yFAAyF;IACzF,wBAAwB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAW;IAC9D,gHAAgH;IAChH,0BAA0B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAW;IAEjE,+GAA+G;IAC/G,mBAAmB,EAAE,MAAM;IAE3B,gFAAgF;IAChF,oBAAoB,EAAE,IAAI;IAC1B,uDAAuD;IACvD,mBAAmB,EAAE,IAAI;IACzB,oFAAoF;IACpF,6BAA6B,EAAE,GAAG;IAClC,gFAAgF;IAChF,qBAAqB,EAAE,GAAG;IAC1B,kFAAkF;IAClF,sBAAsB,EAAE,GAAG;CACnB,CAAC"}
|
|
@@ -18,10 +18,12 @@ export declare class ConsentDeniedException extends UseSmileIDGeneralException {
|
|
|
18
18
|
*
|
|
19
19
|
* Surfaced through `onResult.failure` so partners can distinguish a
|
|
20
20
|
* user-initiated cancellation from a submission error, mirroring the
|
|
21
|
-
* native SDKs' `ProcessingCancelledException`.
|
|
21
|
+
* native SDKs' `ProcessingCancelledException`. An optional `cause` carries a submission failure that preceded the exit.
|
|
22
22
|
*/
|
|
23
23
|
export declare class ProcessingCancelledException extends UseSmileIDGeneralException {
|
|
24
24
|
readonly errorCode: "GENERAL_OPERATION_FAILED";
|
|
25
|
-
constructor(
|
|
25
|
+
constructor(args?: {
|
|
26
|
+
cause?: unknown;
|
|
27
|
+
});
|
|
26
28
|
}
|
|
27
29
|
//# sourceMappingURL=flow_exceptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow_exceptions.d.ts","sourceRoot":"","sources":["../../../src/core/exception/flow_exceptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IACpE,QAAQ,CAAC,SAAS,6BAA+C;gBAErD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;CAQxC;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,SAAS,6BAA+C
|
|
1
|
+
{"version":3,"file":"flow_exceptions.d.ts","sourceRoot":"","sources":["../../../src/core/exception/flow_exceptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,0BAA0B;IACpE,QAAQ,CAAC,SAAS,6BAA+C;gBAErD,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;CAQxC;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,SAAS,6BAA+C;gBAErD,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAQ3C"}
|
|
@@ -23,14 +23,15 @@ export class ConsentDeniedException extends UseSmileIDGeneralException {
|
|
|
23
23
|
*
|
|
24
24
|
* Surfaced through `onResult.failure` so partners can distinguish a
|
|
25
25
|
* user-initiated cancellation from a submission error, mirroring the
|
|
26
|
-
* native SDKs' `ProcessingCancelledException`.
|
|
26
|
+
* native SDKs' `ProcessingCancelledException`. An optional `cause` carries a submission failure that preceded the exit.
|
|
27
27
|
*/
|
|
28
28
|
export class ProcessingCancelledException extends UseSmileIDGeneralException {
|
|
29
29
|
errorCode = UseSmileIDErrorCode.General.OperationFailed;
|
|
30
|
-
constructor() {
|
|
30
|
+
constructor(args = {}) {
|
|
31
31
|
super({
|
|
32
32
|
message: "Processing was cancelled",
|
|
33
33
|
suggestedFix: "The user exited the processing screen before submission completed.",
|
|
34
|
+
...(args.cause !== undefined ? { cause: args.cause } : {}),
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow_exceptions.js","sourceRoot":"","sources":["../../../src/core/exception/flow_exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAuB,SAAQ,0BAA0B;IAC3D,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC;IAEjE,YAAY,IAA2B;QACrC,KAAK,CAAC;YACJ,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EACV,sEAAsE;YACxE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,4BAA6B,SAAQ,0BAA0B;IACjE,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC;IAEjE;
|
|
1
|
+
{"version":3,"file":"flow_exceptions.js","sourceRoot":"","sources":["../../../src/core/exception/flow_exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAuB,SAAQ,0BAA0B;IAC3D,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC;IAEjE,YAAY,IAA2B;QACrC,KAAK,CAAC;YACJ,OAAO,EAAE,qBAAqB;YAC9B,YAAY,EACV,sEAAsE;YACxE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,4BAA6B,SAAQ,0BAA0B;IACjE,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,eAAe,CAAC;IAEjE,YAAY,OAA4B,EAAE;QACxC,KAAK,CAAC;YACJ,OAAO,EAAE,0BAA0B;YACnC,YAAY,EACV,oEAAoE;YACtE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { UseSmileIDBuilderException } from "./use_smile_id_builder_exception";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* never set — the orchestrator can't pick a submission path without
|
|
5
|
-
* it.
|
|
3
|
+
* `jobType` was never set, or was set to a value that is not one of the SDK's job types.
|
|
6
4
|
*/
|
|
7
5
|
export declare class MissingJobTypeException extends UseSmileIDBuilderException {
|
|
8
6
|
readonly errorCode: "BUILDER_MISSING_JOB_TYPE";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing_job_type_exception.d.ts","sourceRoot":"","sources":["../../../src/core/exception/missing_job_type_exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAG9E
|
|
1
|
+
{"version":3,"file":"missing_job_type_exception.d.ts","sourceRoot":"","sources":["../../../src/core/exception/missing_job_type_exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAG9E;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,0BAA0B;IACrE,QAAQ,CAAC,SAAS,6BAA8C;;CAUjE"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { UseSmileIDBuilderException } from "./use_smile_id_builder_exception";
|
|
2
2
|
import { UseSmileIDErrorCode } from "./use_smile_id_error_code";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* never set — the orchestrator can't pick a submission path without
|
|
6
|
-
* it.
|
|
4
|
+
* `jobType` was never set, or was set to a value that is not one of the SDK's job types.
|
|
7
5
|
*/
|
|
8
6
|
export class MissingJobTypeException extends UseSmileIDBuilderException {
|
|
9
7
|
errorCode = UseSmileIDErrorCode.Builder.MissingJobType;
|
|
10
8
|
constructor() {
|
|
11
9
|
super({
|
|
12
|
-
message: "jobType is not set — it must be configured explicitly in the network { config { } } block",
|
|
10
|
+
message: "jobType is not set to one of the SDK's job types — it must be configured explicitly in the network { config { } } block",
|
|
13
11
|
suggestedFix: "Set config.jobType in the network { config { } } block, e.g. config.jobType = JobType.DocumentVerification",
|
|
14
12
|
});
|
|
15
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing_job_type_exception.js","sourceRoot":"","sources":["../../../src/core/exception/missing_job_type_exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE
|
|
1
|
+
{"version":3,"file":"missing_job_type_exception.js","sourceRoot":"","sources":["../../../src/core/exception/missing_job_type_exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,0BAA0B;IAC5D,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAEhE;QACE,KAAK,CAAC;YACJ,OAAO,EACL,yHAAyH;YAC3H,YAAY,EACV,4GAA4G;SAC/G,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -20,7 +20,7 @@ import { currentRequestTimestamp } from "../../security/request_timestamp";
|
|
|
20
20
|
* value written by `TokenRefreshInterceptor` is observed automatically
|
|
21
21
|
* by the next outgoing request.
|
|
22
22
|
*/
|
|
23
|
-
const SDK_VERSION = "12.0.
|
|
23
|
+
const SDK_VERSION = "12.0.2"; // x-release-please-version
|
|
24
24
|
export class SmileAuthInterceptor {
|
|
25
25
|
_partnerConfig;
|
|
26
26
|
_tokenHolder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smile_auth_interceptor.js","sourceRoot":"","sources":["../../../../src/data/api/interceptors/smile_auth_interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"smile_auth_interceptor.js","sourceRoot":"","sources":["../../../../src/data/api/interceptors/smile_auth_interceptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,2BAA2B;AAOzD,MAAM,OAAO,oBAAoB;IACd,cAAc,CAAgB;IAC9B,YAAY,CAAc;IAE3C,YAAY,OAAoC;QAC9C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAqB;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACjE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,MAAkC;QAElC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC;QACD,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -106,6 +106,10 @@ export declare class SmileIDAPI {
|
|
|
106
106
|
* the part with `Content-Type: application/json` causes the parser
|
|
107
107
|
* to reject the part as "missing or invalid".
|
|
108
108
|
*
|
|
109
|
+
* `consent` is `undefined` only when the token binds complete
|
|
110
|
+
* consent and no local source exists — the part is then omitted
|
|
111
|
+
* entirely and the server injects the token's consent.
|
|
112
|
+
*
|
|
109
113
|
* The `metadata` snapshot is built by the request-construction site
|
|
110
114
|
* (the flow navigation manager) and travels on the request — this
|
|
111
115
|
* method serializes the snapshot it is handed rather than generating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smile_id_api.d.ts","sourceRoot":"","sources":["../../../src/data/api/smile_id_api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACd,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"smile_id_api.d.ts","sourceRoot":"","sources":["../../../src/data/api/smile_id_api.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACd,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,kBAAkB,EAClB,gCAAgC,EAChC,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAG9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAK9E;;;;;;;;;;;;;GAaG;AAQH,QAAA,MAAM,aAAa,kCAAyB,CAAC;AAC7C,QAAA,MAAM,gBAAgB,sCAAsB,CAAC;AAY7C,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa;IAK/D;;;;;;;;;;;;;;;;;OAiBG;IACG,qBAAqB,CACzB,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC;IAQjC;;;;;OAKG;IACG,yBAAyB,CAC7B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,qBAAqB,CAAC;IAS3B,WAAW,CACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,qBAAqB,CAAC;IAmB3B,YAAY,CAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAiB3B,oBAAoB,CACxB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC;IAI3B,4BAA4B,CAChC,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,qBAAqB,CAAC;YAOnB,yBAAyB;IAqBvC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAYrC;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAavB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,yBAAyB;YAoBnB,cAAc;CAY7B;AAmHD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAgBrE;AAED,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,GACjB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
2
|
import { SmileIDUrls } from "../smile_id_urls";
|
|
3
|
+
import { userDetailsPayloadToWire } from "../model/user_details_payload";
|
|
3
4
|
import { SmileAuthInterceptor } from "./interceptors/smile_auth_interceptor";
|
|
4
5
|
import { attachLoggingInterceptor } from "./interceptors/logging_interceptor";
|
|
5
6
|
import { REQUEST_MAC_OPT_IN_KEY } from "./interceptors/smile_request_mac_interceptor";
|
|
@@ -64,7 +65,7 @@ export class SmileIDAPI {
|
|
|
64
65
|
*/
|
|
65
66
|
async smartSelfieEnrollment(request) {
|
|
66
67
|
const formData = this._buildSelfieFormData(request);
|
|
67
|
-
|
|
68
|
+
appendUserDetailsPart(formData, request);
|
|
68
69
|
this._appendPartnerConfigParts(formData);
|
|
69
70
|
this._appendConsentAndMetadata(formData, request.consent, request.metadata);
|
|
70
71
|
return this._postMultipart("/v3/registration", formData);
|
|
@@ -78,7 +79,7 @@ export class SmileIDAPI {
|
|
|
78
79
|
async smartSelfieAuthentication(request) {
|
|
79
80
|
const formData = this._buildSelfieFormData(request);
|
|
80
81
|
appendStringPart(formData, "user_id", request.userId);
|
|
81
|
-
|
|
82
|
+
appendUserDetailsPart(formData, request);
|
|
82
83
|
this._appendPartnerConfigParts(formData);
|
|
83
84
|
this._appendConsentAndMetadata(formData, request.consent, request.metadata);
|
|
84
85
|
return this._postMultipart("/v3/authentication", formData);
|
|
@@ -89,7 +90,7 @@ export class SmileIDAPI {
|
|
|
89
90
|
// multipart/form-data`.
|
|
90
91
|
const formData = new FormData();
|
|
91
92
|
this._appendIdFields(formData, request.params);
|
|
92
|
-
|
|
93
|
+
appendUserDetailsPart(formData, request);
|
|
93
94
|
if (request.params.bankCode) {
|
|
94
95
|
appendStringPart(formData, "bank_code", request.params.bankCode);
|
|
95
96
|
}
|
|
@@ -105,7 +106,7 @@ export class SmileIDAPI {
|
|
|
105
106
|
const useEnrolled = request.params.useEnrolledImage;
|
|
106
107
|
const formData = this._buildSelfieFormData(request);
|
|
107
108
|
this._appendIdFields(formData, request.params);
|
|
108
|
-
|
|
109
|
+
appendUserDetailsPart(formData, request);
|
|
109
110
|
if (useEnrolled) {
|
|
110
111
|
appendStringPart(formData, "use_enrolled_image", "true");
|
|
111
112
|
}
|
|
@@ -133,7 +134,7 @@ export class SmileIDAPI {
|
|
|
133
134
|
if (request.idType) {
|
|
134
135
|
appendStringPart(formData, "id_type", request.idType);
|
|
135
136
|
}
|
|
136
|
-
|
|
137
|
+
appendUserDetailsPart(formData, request);
|
|
137
138
|
this._appendPartnerConfigParts(formData);
|
|
138
139
|
this._appendConsentAndMetadata(formData, request.consent, request.metadata);
|
|
139
140
|
return this._postMultipart(url, formData);
|
|
@@ -218,6 +219,10 @@ export class SmileIDAPI {
|
|
|
218
219
|
* the part with `Content-Type: application/json` causes the parser
|
|
219
220
|
* to reject the part as "missing or invalid".
|
|
220
221
|
*
|
|
222
|
+
* `consent` is `undefined` only when the token binds complete
|
|
223
|
+
* consent and no local source exists — the part is then omitted
|
|
224
|
+
* entirely and the server injects the token's consent.
|
|
225
|
+
*
|
|
221
226
|
* The `metadata` snapshot is built by the request-construction site
|
|
222
227
|
* (the flow navigation manager) and travels on the request — this
|
|
223
228
|
* method serializes the snapshot it is handed rather than generating
|
|
@@ -228,12 +233,14 @@ export class SmileIDAPI {
|
|
|
228
233
|
// wire JSON before serialization. The server validates the wire
|
|
229
234
|
// shape exactly — `consent.granted` (snake_case via `granted`
|
|
230
235
|
// already) and `consent.granted_at` are required.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
236
|
+
if (consent !== undefined) {
|
|
237
|
+
appendJsonPart(formData, "consent", {
|
|
238
|
+
granted: consent.granted,
|
|
239
|
+
granted_at: consent.grantedAt,
|
|
240
|
+
notice_language: consent.noticeLanguage,
|
|
241
|
+
notice_privacy_policy_url: consent.noticePrivacyPolicyUrl,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
237
244
|
appendJsonPart(formData, "metadata", metadata.toEntries());
|
|
238
245
|
}
|
|
239
246
|
async _postMultipart(url, body) {
|
|
@@ -287,23 +294,19 @@ function mapJobSubmissionResponse(data) {
|
|
|
287
294
|
return result;
|
|
288
295
|
}
|
|
289
296
|
/**
|
|
290
|
-
*
|
|
291
|
-
*
|
|
297
|
+
* Append the `user_details` JSON multipart part. The payload arrives
|
|
298
|
+
* pre-reduced from assembly (token-bound fields already dropped); the
|
|
299
|
+
* part is omitted entirely when nothing remains — or when `userDetails`
|
|
300
|
+
* was legitimately omitted because the token binds every required field.
|
|
292
301
|
*/
|
|
293
|
-
function
|
|
294
|
-
const
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
}
|
|
302
|
-
const trimmedPhone = details.phoneNumber?.trim();
|
|
303
|
-
if (trimmedPhone) {
|
|
304
|
-
wire["phone_number"] = trimmedPhone;
|
|
305
|
-
}
|
|
306
|
-
return wire;
|
|
302
|
+
function appendUserDetailsPart(formData, request) {
|
|
303
|
+
const details = request.userDetails;
|
|
304
|
+
if (details === undefined)
|
|
305
|
+
return;
|
|
306
|
+
const wire = userDetailsPayloadToWire(details);
|
|
307
|
+
if (Object.keys(wire).length === 0)
|
|
308
|
+
return;
|
|
309
|
+
appendJsonPart(formData, "user_details", wire);
|
|
307
310
|
}
|
|
308
311
|
/**
|
|
309
312
|
* RN-style `FormData.append` for a string part. Used as the underlying
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smile_id_api.js","sourceRoot":"","sources":["../../../src/data/api/smile_id_api.ts"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAKlD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"smile_id_api.js","sourceRoot":"","sources":["../../../src/data/api/smile_id_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ConsentInformation, EnhancedKYCParams, BiometricKYCParams
|
|
1
|
+
import type { ConsentInformation, EnhancedKYCParams, BiometricKYCParams } from "../../core/models/params";
|
|
2
|
+
import type { UserDetailsPayload } from "./user_details_payload";
|
|
2
3
|
import { JobType } from "../../core/models/job_type";
|
|
3
4
|
import type { UseSmileIDMetadata } from "../../metadata/use_smile_id_metadata";
|
|
4
5
|
/**
|
|
@@ -6,10 +7,11 @@ import type { UseSmileIDMetadata } from "../../metadata/use_smile_id_metadata";
|
|
|
6
7
|
* narrows the union and tells the repository which API method to
|
|
7
8
|
* dispatch to.
|
|
8
9
|
*
|
|
9
|
-
* Every variant intersects [BaseJobRequest], which carries the
|
|
10
|
+
* Every variant intersects [BaseJobRequest], which carries the
|
|
10
11
|
* fields shared by all submissions: the partner-captured `consent`
|
|
11
|
-
* record
|
|
12
|
-
* narrowed `jobType` literal so the
|
|
12
|
+
* record, the per-submission `metadata` snapshot, and the decoded
|
|
13
|
+
* token bindings. Variants keep a narrowed `jobType` literal so the
|
|
14
|
+
* union still discriminates.
|
|
13
15
|
*
|
|
14
16
|
* `metadata` is built at the request-construction site (the flow
|
|
15
17
|
* navigation manager) and travels on the request itself — the API
|
|
@@ -17,14 +19,22 @@ import type { UseSmileIDMetadata } from "../../metadata/use_smile_id_metadata";
|
|
|
17
19
|
* multipart part rather than generating the snapshot at submit time.
|
|
18
20
|
*/
|
|
19
21
|
export interface BaseJobRequest {
|
|
20
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Local consent record (captured on the consent screen or
|
|
24
|
+
* pre-supplied via the builder). Omitted only when no local source
|
|
25
|
+
* exists AND the token binds complete consent — the API layer then
|
|
26
|
+
* omits the `consent` multipart part and the server injects the
|
|
27
|
+
* token's consent.
|
|
28
|
+
*/
|
|
29
|
+
readonly consent?: ConsentInformation;
|
|
21
30
|
readonly metadata: UseSmileIDMetadata;
|
|
22
31
|
}
|
|
23
32
|
export type SmartSelfieEnrollmentRequest = BaseJobRequest & {
|
|
24
33
|
readonly jobType: typeof JobType.smartSelfieEnrollment;
|
|
25
34
|
readonly selfieImage: string;
|
|
26
35
|
readonly livenessImages: readonly string[];
|
|
27
|
-
|
|
36
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
37
|
+
readonly userDetails?: UserDetailsPayload;
|
|
28
38
|
/**
|
|
29
39
|
* Screen-level enhanced-liveness intent marker. The wire path is
|
|
30
40
|
* always `/v3/registration` (and `/v3/authentication` on the auth
|
|
@@ -51,7 +61,8 @@ export type SmartSelfieAuthenticationRequest = BaseJobRequest & {
|
|
|
51
61
|
readonly jobType: typeof JobType.smartSelfieAuthentication;
|
|
52
62
|
readonly selfieImage: string;
|
|
53
63
|
readonly livenessImages: readonly string[];
|
|
54
|
-
|
|
64
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
65
|
+
readonly userDetails?: UserDetailsPayload;
|
|
55
66
|
/**
|
|
56
67
|
* The `user_id` returned by a prior enrollment — the v3
|
|
57
68
|
* `/v3/authentication` endpoint requires it so the server can match
|
|
@@ -68,7 +79,8 @@ export type SmartSelfieAuthenticationRequest = BaseJobRequest & {
|
|
|
68
79
|
export type EnhancedKycRequest = BaseJobRequest & {
|
|
69
80
|
readonly jobType: typeof JobType.enhancedKyc;
|
|
70
81
|
readonly params: EnhancedKYCParams;
|
|
71
|
-
|
|
82
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
83
|
+
readonly userDetails?: UserDetailsPayload;
|
|
72
84
|
};
|
|
73
85
|
/**
|
|
74
86
|
* BVN submission stub. The variant exists in the discriminated union
|
|
@@ -80,14 +92,16 @@ export type EnhancedKycRequest = BaseJobRequest & {
|
|
|
80
92
|
export type BvnRequest = BaseJobRequest & {
|
|
81
93
|
readonly jobType: typeof JobType.bvn;
|
|
82
94
|
readonly params: EnhancedKYCParams;
|
|
83
|
-
|
|
95
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
96
|
+
readonly userDetails?: UserDetailsPayload;
|
|
84
97
|
};
|
|
85
98
|
export type BiometricKycRequest = BaseJobRequest & {
|
|
86
99
|
readonly jobType: typeof JobType.biometricKyc;
|
|
87
100
|
readonly selfieImage: string;
|
|
88
101
|
readonly livenessImages: readonly string[];
|
|
89
102
|
readonly params: BiometricKYCParams;
|
|
90
|
-
|
|
103
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
104
|
+
readonly userDetails?: UserDetailsPayload;
|
|
91
105
|
/** See `SmartSelfieEnrollmentRequest.expectedLivenessImageCount`. */
|
|
92
106
|
readonly expectedLivenessImageCount: number;
|
|
93
107
|
};
|
|
@@ -102,7 +116,8 @@ export type DocumentVerificationRequest = BaseJobRequest & {
|
|
|
102
116
|
readonly country: string;
|
|
103
117
|
/** Optional — the server classifies the document when omitted. */
|
|
104
118
|
readonly idType?: string;
|
|
105
|
-
|
|
119
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
120
|
+
readonly userDetails?: UserDetailsPayload;
|
|
106
121
|
/** See `SmartSelfieEnrollmentRequest.expectedLivenessImageCount`. */
|
|
107
122
|
readonly expectedLivenessImageCount: number;
|
|
108
123
|
};
|
|
@@ -122,7 +137,8 @@ export type EnhancedDocumentVerificationRequest = BaseJobRequest & {
|
|
|
122
137
|
readonly backDocument?: string;
|
|
123
138
|
readonly country: string;
|
|
124
139
|
readonly idType: string;
|
|
125
|
-
|
|
140
|
+
/** Omitted when the token binds every required field, or reduced to the unbound remainder. */
|
|
141
|
+
readonly userDetails?: UserDetailsPayload;
|
|
126
142
|
/** See `SmartSelfieEnrollmentRequest.expectedLivenessImageCount`. */
|
|
127
143
|
readonly expectedLivenessImageCount: number;
|
|
128
144
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job_request.d.ts","sourceRoot":"","sources":["../../../src/data/model/job_request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"job_request.d.ts","sourceRoot":"","sources":["../../../src/data/model/job_request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Tolerant wire schema for the `payload` claim. Unknown keys are
|
|
4
|
+
* stripped; a wrong-typed field degrades to `undefined` (per-field
|
|
5
|
+
* `.catch`) instead of failing the whole claim.
|
|
6
|
+
*/
|
|
7
|
+
export declare const tokenPayloadSchema: z.ZodObject<{
|
|
8
|
+
given_names: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
9
|
+
last_name: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
10
|
+
email: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
11
|
+
phone_number: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
12
|
+
consent: z.ZodCatch<z.ZodOptional<z.ZodObject<{
|
|
13
|
+
granted: z.ZodCatch<z.ZodOptional<z.ZodLiteral<true>>>;
|
|
14
|
+
granted_at: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
15
|
+
notice_language: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
notice_privacy_policy_url: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
17
|
+
}, z.core.$strip>>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
/**
|
|
20
|
+
* Consent subfields bound into the token. Token consent always wins:
|
|
21
|
+
* a complete binding (see {@link isTokenConsentComplete}) supersedes
|
|
22
|
+
* every local consent source, and a partial binding is a build-time
|
|
23
|
+
* validation error naming the missing subfields (see
|
|
24
|
+
* {@link tokenConsentMissingSubfields}).
|
|
25
|
+
*/
|
|
26
|
+
export type TokenConsent = {
|
|
27
|
+
/** Present (and `true`) only when the claim carried a literal `granted: true`. */
|
|
28
|
+
readonly granted?: boolean;
|
|
29
|
+
/** ISO-8601 timestamp from the claim's `granted_at`. */
|
|
30
|
+
readonly grantedAt?: string;
|
|
31
|
+
/** Language code from the claim's `notice_language`. */
|
|
32
|
+
readonly noticeLanguage?: string;
|
|
33
|
+
/** URL from the claim's `notice_privacy_policy_url`. */
|
|
34
|
+
readonly noticePrivacyPolicyUrl?: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Presence flags for the identity fields the token binds, parsed from
|
|
38
|
+
* the `payload` claim. A flag is `true` iff the claim carries the key
|
|
39
|
+
* with a non-empty string value (the value itself is an opaque vault
|
|
40
|
+
* reference — the server injects the real value at submission).
|
|
41
|
+
*/
|
|
42
|
+
export type TokenPayload = {
|
|
43
|
+
readonly hasGivenNames: boolean;
|
|
44
|
+
readonly hasLastName: boolean;
|
|
45
|
+
readonly hasEmail: boolean;
|
|
46
|
+
readonly hasPhoneNumber: boolean;
|
|
47
|
+
readonly consent?: TokenConsent;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Parse a raw `payload` claim value into a `TokenPayload`, or
|
|
51
|
+
* `undefined` when the claim is absent or not a JSON object. Mirrors
|
|
52
|
+
* the `sdk_config` degradation semantics: never throws, tolerates
|
|
53
|
+
* unknown keys, and degrades wrong-typed fields to absent.
|
|
54
|
+
*/
|
|
55
|
+
export declare function parseTokenPayload(rawClaim: unknown): TokenPayload | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Token consent is COMPLETE when `granted` is `true` and every other
|
|
58
|
+
* subfield is non-blank. A complete binding — granted with every
|
|
59
|
+
* notice subfield non-blank — satisfies the consent requirement
|
|
60
|
+
* without a local source. Token consent always wins, so a partial
|
|
61
|
+
* binding is a build-time validation error.
|
|
62
|
+
*/
|
|
63
|
+
export declare function isTokenConsentComplete(consent: TokenConsent | undefined): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Wire-key names of the consent subfields the binding is missing. A
|
|
66
|
+
* token that carries a consent object must carry all four subfields —
|
|
67
|
+
* a non-empty list is a build-time validation error naming exactly
|
|
68
|
+
* what the token must add.
|
|
69
|
+
*/
|
|
70
|
+
export declare function tokenConsentMissingSubfields(consent: TokenConsent): readonly string[];
|
|
71
|
+
/**
|
|
72
|
+
* Whether the token binds every user-detail field the SDK would
|
|
73
|
+
* otherwise require from the builder: `given_names` AND `last_name`
|
|
74
|
+
* AND at least one of `email` / `phone_number`. Only then may
|
|
75
|
+
* `builder.userDetails` be omitted entirely.
|
|
76
|
+
*/
|
|
77
|
+
export declare function bindsRequiredUserDetails(payload: TokenPayload | undefined): boolean;
|
|
78
|
+
//# sourceMappingURL=token_payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_payload.d.ts","sourceRoot":"","sources":["../../../src/data/model/token_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAO7B,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,wDAAwD;IACxD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAuB7E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,YAAY,GACpB,SAAS,MAAM,EAAE,CASnB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,OAAO,CAOT"}
|