@smileid/usesmileid 12.1.0 → 12.1.1
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
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
Full release notes: [Smile ID docs](https://docs.usesmileid.com/developer-resources/sdks/mobile/release-notes/react-native-expo).
|
|
2
2
|
|
|
3
|
+
## 12.1.1
|
|
4
|
+
|
|
5
|
+
See the repository CHANGELOG for the 12.1.1 release notes.
|
|
6
|
+
|
|
7
|
+
|
|
3
8
|
## 12.1.0
|
|
4
9
|
|
|
5
10
|
See the repository CHANGELOG for the 12.1.0 release notes.
|
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ Sizes are measured on every push to `main` and updated automatically by CI.
|
|
|
32
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.11.1+ — `compileSdk` 36 or newer (React Native's default; nothing to set) and `minSdk` 24, matching the native Smile ID SDK and the kamera engine. The ML Kit config plugins set the Kotlin and KSP versions the AARs were compiled with. The 12.0.0–12.0.2 AARs required compileSdk 37 and `minSdk` 26 instead; on those releases, install platform 37 before Gradle runs (on EAS, an `eas-build-pre-install` script: `yes | sdkmanager --licenses >/dev/null; sdkmanager "platforms;android-37.0"`).
|
|
34
34
|
|
|
35
|
-
`12.1.
|
|
35
|
+
`12.1.1` is built and verified against Expo SDK 57 and React Native 0.86. The floors above are the supported minimum and keep working.
|
|
36
36
|
|
|
37
37
|
## Installation
|
|
38
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{sourceSdkIdentifier as t}from"@smileid/usesmileid_bridge";import{currentRequestTimestamp as s}from"../../security/request_timestamp";const n="12.1.
|
|
1
|
+
"use strict";import{sourceSdkIdentifier as t}from"@smileid/usesmileid_bridge";import{currentRequestTimestamp as s}from"../../security/request_timestamp";const n="12.1.1";export class SmileAuthInterceptor{_partnerConfig;_tokenHolder;constructor(e){this._partnerConfig=e.partnerConfig,this._tokenHolder=e.tokenHolder}attach(e){return{request:e.interceptors.request.use(async r=>this._onRequest(r))}}async _onRequest(e){return e.headers.set("smileid-token",this._tokenHolder.current),e.headers.set("smileid-source-sdk",t()),e.headers.set("smileid-source-sdk-version",n),e.headers.set("smileid-partner-id",this._partnerConfig.partnerId),this._partnerConfig.callbackUrl&&e.headers.set("callback-url",this._partnerConfig.callbackUrl),e.headers.set("smileid-request-timestamp",s()),e}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{GlobalPrivacyControl as v}from"../core/models/global_privacy_control";import{AnalyzerFactoryKey as c}from"@smileid/usesmileid_bridge";import{CaptureType as u}from"../core/models/ml_config";import{autoCaptureWireValue as g}from"../core/models/document_capture_mode";import{flowShowAttribution as y}from"../presentation/flow/config/attribution_resolver";import{builderConfigurationToJson as b}from"./builder_configuration";import{MODEL_DESCRIPTOR_UNKNOWN as C,ModelProvider as r,modelConfigurationToJson as w}from"./model_configuration";export function flowConfigurationToBuilderConfiguration(e){const i=e.screens.steps;let n;const t=[];let f=!1,a=!1,d=!1;for(const o of i)switch(o.kind){case"consent":n=o.config;break;case"instructions":f=!0;break;case"capture":t.push(o.config);break;case"preview":a=!0;break;case"processing":d=!0;break}const l=t.find(o=>o.selfieConfig)?.selfieConfig,s=t.find(o=>o.documentConfig)?.documentConfig,p=l!==void 0||t.some(o=>o.captureType===u.selfie),m=s!==void 0||t.some(o=>o.captureType===u.document);return{consentScreenUsed:n!==void 0,consentIconProvided:n?.partnerIcon!=null,consentIconDimensions:null,consentAttributionShown:n!==void 0&&y(e),instructionsScreenUsed:f,selfiePreviewEnabled:a&&p,documentPreviewEnabled:a&&m,submissionSkipped:!d,allowAgentMode:l?.allowAgentMode??!1,enhancedLivenessEnabled:l?.enableEnhancedLiveness??!1,autoCaptureEnabled:g(s?.captureMode),allowGalleryUpload:s?.allowGalleryUpload??!1,captureBothSides:s?.captureBothSides??!1,allowSkipBack:s?.allowSkipBack??!1,globalPrivacyControl:e.config?.globalPrivacyControl??v.OptOut}}export function flowConfigurationToModelConfiguration(e){const i=e.ml?.analyzers.selfieConfig?.analyzerFactoryKey;return{faceModel:T(i),documentModel:S}}export function configurationMetadataEntries(e){const i=[{name:"builder_configuration_object",value:JSON.stringify(b(flowConfigurationToBuilderConfiguration(e)))},{name:"model_configuration_object",value:JSON.stringify(w(flowConfigurationToModelConfiguration(e)))}],n=flowConfigurationToSelfieLivenessTelemetry(e);return n.activeLivenessType!==null&&i.push({name:"active_liveness_type",value:n.activeLivenessType},{name:"active_liveness_version",value:n.activeLivenessVersion},{name:"selfie_image_origin",value:n.selfieImageOrigin}),i}export function flowConfigurationToSelfieLivenessTelemetry(e){let i,n=!1;for(const t of e.screens.steps)t.kind==="capture"&&(i??=t.config.selfieConfig,t.config.captureType===u.selfie&&(n=!0));return!n&&i===void 0?{activeLivenessType:null,activeLivenessVersion:null,selfieImageOrigin:null}:{activeLivenessType:_(i),activeLivenessVersion:"2.0.0",selfieImageOrigin:O(i)}}function _(e){return e?.enableEnhancedLiveness?"head_pose":"smile"}function O(e){return e?.allowAgentMode?"back_camera":"front_camera"}function T(e){switch(e){case c.MLKitFace:return{provider:r.Google,name:"play-services-mlkit-face-detection",version:"17.1.0",bundled:!1};case c.HuaweiFace:return{provider:r.Huawei,name:"ml-computer-vision-face",version:"3.18.1.300",bundled:!1};case c.VisionFace:return{provider:r.Apple,name:"vision_face_detector",version:"system",bundled:!0};default:return C}}const S={provider:r.Smile,name:"noop_document_detector",version:"12.1.
|
|
1
|
+
"use strict";import{GlobalPrivacyControl as v}from"../core/models/global_privacy_control";import{AnalyzerFactoryKey as c}from"@smileid/usesmileid_bridge";import{CaptureType as u}from"../core/models/ml_config";import{autoCaptureWireValue as g}from"../core/models/document_capture_mode";import{flowShowAttribution as y}from"../presentation/flow/config/attribution_resolver";import{builderConfigurationToJson as b}from"./builder_configuration";import{MODEL_DESCRIPTOR_UNKNOWN as C,ModelProvider as r,modelConfigurationToJson as w}from"./model_configuration";export function flowConfigurationToBuilderConfiguration(e){const i=e.screens.steps;let n;const t=[];let f=!1,a=!1,d=!1;for(const o of i)switch(o.kind){case"consent":n=o.config;break;case"instructions":f=!0;break;case"capture":t.push(o.config);break;case"preview":a=!0;break;case"processing":d=!0;break}const l=t.find(o=>o.selfieConfig)?.selfieConfig,s=t.find(o=>o.documentConfig)?.documentConfig,p=l!==void 0||t.some(o=>o.captureType===u.selfie),m=s!==void 0||t.some(o=>o.captureType===u.document);return{consentScreenUsed:n!==void 0,consentIconProvided:n?.partnerIcon!=null,consentIconDimensions:null,consentAttributionShown:n!==void 0&&y(e),instructionsScreenUsed:f,selfiePreviewEnabled:a&&p,documentPreviewEnabled:a&&m,submissionSkipped:!d,allowAgentMode:l?.allowAgentMode??!1,enhancedLivenessEnabled:l?.enableEnhancedLiveness??!1,autoCaptureEnabled:g(s?.captureMode),allowGalleryUpload:s?.allowGalleryUpload??!1,captureBothSides:s?.captureBothSides??!1,allowSkipBack:s?.allowSkipBack??!1,globalPrivacyControl:e.config?.globalPrivacyControl??v.OptOut}}export function flowConfigurationToModelConfiguration(e){const i=e.ml?.analyzers.selfieConfig?.analyzerFactoryKey;return{faceModel:T(i),documentModel:S}}export function configurationMetadataEntries(e){const i=[{name:"builder_configuration_object",value:JSON.stringify(b(flowConfigurationToBuilderConfiguration(e)))},{name:"model_configuration_object",value:JSON.stringify(w(flowConfigurationToModelConfiguration(e)))}],n=flowConfigurationToSelfieLivenessTelemetry(e);return n.activeLivenessType!==null&&i.push({name:"active_liveness_type",value:n.activeLivenessType},{name:"active_liveness_version",value:n.activeLivenessVersion},{name:"selfie_image_origin",value:n.selfieImageOrigin}),i}export function flowConfigurationToSelfieLivenessTelemetry(e){let i,n=!1;for(const t of e.screens.steps)t.kind==="capture"&&(i??=t.config.selfieConfig,t.config.captureType===u.selfie&&(n=!0));return!n&&i===void 0?{activeLivenessType:null,activeLivenessVersion:null,selfieImageOrigin:null}:{activeLivenessType:_(i),activeLivenessVersion:"2.0.0",selfieImageOrigin:O(i)}}function _(e){return e?.enableEnhancedLiveness?"head_pose":"smile"}function O(e){return e?.allowAgentMode?"back_camera":"front_camera"}function T(e){switch(e){case c.MLKitFace:return{provider:r.Google,name:"play-services-mlkit-face-detection",version:"17.1.0",bundled:!1};case c.HuaweiFace:return{provider:r.Huawei,name:"ml-computer-vision-face",version:"3.18.1.300",bundled:!1};case c.VisionFace:return{provider:r.Apple,name:"vision_face_detector",version:"system",bundled:!0};default:return C}}const S={provider:r.Smile,name:"noop_document_detector",version:"12.1.1",bundled:!0};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import{Dimensions as d,Platform as n}from"react-native";import{Attestation as w,DeviceIntegrityProvider as b,PrivilegesProvider as S}from"@smileid/usesmileid_bridge";import{UseSmileIDMetadata as A}from"./use_smile_id_metadata";import{loadAsyncStorage as D,loadExpoBattery as O,loadExpoCellular as C,loadExpoDevice as l,loadExpoNetwork as M}from"./optional_native_modules";import{resolveGeolocation as k}from"./geolocation";import{resolveDimensions as u}from"../data/model/sdk_config_capture";import{SdkConfigSource as h}from"../data/model/sdk_config_source";import{CameraDefaults as o}from"../camera/camera_defaults";const m="12.1.
|
|
1
|
+
"use strict";import{Dimensions as d,Platform as n}from"react-native";import{Attestation as w,DeviceIntegrityProvider as b,PrivilegesProvider as S}from"@smileid/usesmileid_bridge";import{UseSmileIDMetadata as A}from"./use_smile_id_metadata";import{loadAsyncStorage as D,loadExpoBattery as O,loadExpoCellular as C,loadExpoDevice as l,loadExpoNetwork as M}from"./optional_native_modules";import{resolveGeolocation as k}from"./geolocation";import{resolveDimensions as u}from"../data/model/sdk_config_capture";import{SdkConfigSource as h}from"../data/model/sdk_config_source";import{CameraDefaults as o}from"../camera/camera_defaults";const m="12.1.1",U="12.0.0",N="react-native-expo",p="com.usesmileid.metadata.sdk_launch_count";export class UseSmileIDMetadataFactory{_sessionId;_deviceOs;_deviceModel;_appName;_hostApplication;_systemArchitecture;_memoryInfoMb;_buildBrand;_buildDevice;_buildFingerprint;_buildProduct;_carrierInfo;_batteryStatus;_sdkLaunchCount;_geolocation;_privileges;_deviceIntegrity;_clientIp="";_networkConnection="";_hardwareAttestation;constructor(t={}){this._sessionId=generateSessionId(),this._deviceOs=x(),this._appName=t.appName??"",this._hostApplication=t.hostApplication??"";const e=l();e?(this._deviceModel=resolveDeviceModel(e),this._systemArchitecture=e.supportedCpuArchitectures?.[0]?.trim()??"",this._memoryInfoMb=typeof e.totalMemory=="number"&&e.totalMemory>0?Math.round(e.totalMemory/(1024*1024)):0,this._buildBrand=e.brand?.trim()??"",this._buildDevice=(n.OS==="ios"?e.modelId:e.designName)?.trim()??"",this._buildFingerprint=e.osBuildFingerprint?.trim()??"",this._buildProduct=e.productName?.trim()??""):(this._deviceModel="",this._systemArchitecture="",this._memoryInfoMb=0,this._buildBrand="",this._buildDevice="",this._buildFingerprint="",this._buildProduct=""),this._carrierInfo=C()?.carrier?.trim()??"",this._warmupAsync(),this._warmUpHardwareAttestation()}get sessionId(){return this._sessionId}async warmup(){return this._warmupAsync()}async _warmupAsync(){const t=M();if(!t)return;const e=t.getNetworkStateAsync().then(s=>{this._networkConnection=(s.type??"").toString()}).catch(()=>{}),r=t.getIpAddressAsync?t.getIpAddressAsync().then(s=>{this._clientIp=s??""}).catch(()=>{}):Promise.resolve();await Promise.all([e,r,this._warmUpBatteryStatus(),this._warmUpLaunchCount(),this._warmUpGeolocation(),this._warmUpPrivileges(),this._warmUpDeviceIntegrity()])}async _warmUpGeolocation(){const t=await k();t&&(this._geolocation=t)}async _warmUpPrivileges(){const t=await S.privileges();t.length>0&&(this._privileges=t)}async _warmUpDeviceIntegrity(){this._deviceIntegrity=await b.signals()}async _warmUpLaunchCount(){const t=D();if(t)try{const r=(Number(await t.getItem(p))||0)+1;await t.setItem(p,String(r)),this._sdkLaunchCount=r}catch{}}async _warmUpBatteryStatus(){const t=O();if(t)try{switch(await t.getBatteryStateAsync()){case 1:this._batteryStatus=0;break;case 2:case 3:this._batteryStatus=1;break;default:this._batteryStatus=-1}}catch{}}async _warmUpHardwareAttestation(){try{this._hardwareAttestation=await w.generateHardwareAttestation(this._sessionId)}catch{}}make(t){const e=this._hardwareAttestation,r=n.OS==="android"&&e?{hardwareAttestationSecurityLevel:e.securityLevel,...e.certificateChain&&e.certificateChain.length>0?{attestationCertificateChain:e.certificateChain}:{}}:{},s=n.OS==="ios"&&e?{supportsAppAttest:e.supportsAppAttest}:{},a=u(t?.selfie),_=t!==void 0?h.sdkConfig:h.defaultSource,f=a?.width??o.selfieJpegTargetWidth,g=a?.height??o.selfieJpegTargetHeight,c=u(t?.liveness),y=c?.width??o.selfieJpegTargetWidth,v=c?.height??o.selfieJpegTargetHeight,I={sdkVersion:m,sdk:N,deviceOs:this._deviceOs,deviceModel:this._deviceModel,appName:this._appName,sessionId:this._sessionId,clientIp:this._clientIp,networkConnection:this._networkConnection,carrierInfo:this._carrierInfo,timezone:L(),timezoneOffsetMinutes:E(),locale:B(),screenResolution:H(),memoryInfoMb:this._memoryInfoMb,deviceOrientation:F(),systemArchitecture:this._systemArchitecture,numberOfCameras:0,hostApplication:this._hostApplication,securityPolicyVersion:U,...r,...s,sdkConfigSource:_,imageWidth:f,imageHeight:g,livenessImageWidth:y,livenessImageHeight:v,buildBrand:this._buildBrand,buildDevice:this._buildDevice,buildFingerprint:this._buildFingerprint,buildProduct:this._buildProduct,buildHardware:this._deviceIntegrity?.buildHardware??"",buildSource:this._deviceIntegrity?.buildSource??"",packageName:this._deviceIntegrity?.packageName??"",fingerprint:this._deviceIntegrity?.fingerprint??"",localTimeOfEnrolment:T(),wrapperName:"react_native_expo",wrapperVersion:m,...this._deviceIntegrity?.vpn!==void 0?{vpn:this._deviceIntegrity.vpn}:{},...this._deviceIntegrity?.certificateDigest!==void 0?{certificateDigest:this._deviceIntegrity.certificateDigest}:{},...this._batteryStatus!==void 0?{batteryStatus:this._batteryStatus}:{},...this._sdkLaunchCount!==void 0?{sdkLaunchCount:this._sdkLaunchCount}:{},...this._geolocation!==void 0?{geolocation:this._geolocation}:{},...this._privileges!==void 0?{privileges:this._privileges}:{}};return new A(I)}}export function resolveDeviceModel(i=l()){if(!i)return"";const t=i.brand?.trim()??"",e=i.modelName?.trim()??"";return[t,e].filter(Boolean).join(" ")}function x(){const i=n.OS==="ios"?"iOS":n.OS==="android"?"Android":n.OS,t=P();return t?`${i} ${t}`:i}function P(){if(n.OS==="android"){const i=n.constants?.Release;if(i!=null&&`${i}`!="")return`${i}`}return typeof n.Version<"u"?String(n.Version):""}function T(){try{return new Date().toISOString()}catch{return""}}function L(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}function E(){return-new Date().getTimezoneOffset()}function B(){try{return Intl.DateTimeFormat().resolvedOptions().locale??""}catch{return""}}function H(){try{const{width:i,height:t,scale:e}=d.get("screen");if(!i||!t)return"";const r=Math.round(i*(e||1)),s=Math.round(t*(e||1));return`${r} \xD7 ${s}`}catch{return""}}function F(){try{const{width:i,height:t}=d.get("window");return!i||!t?"":t>=i?"Portrait":"Landscape"}catch{return""}}export function generateSessionId(){const i=globalThis.crypto;if(i&&typeof i.randomUUID=="function")return i.randomUUID();const t=r=>r.toString(16),e=()=>Math.floor(Math.random()*65536);return[t(e())+t(e()),t(e()),"4"+t(e()).slice(-3),t(e()&16383|32768),t(e())+t(e())+t(e())].map(r=>r.padStart(r.length===4?4:r.length===12?12:4,"0")).join("-")}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smileid/usesmileid",
|
|
3
|
-
"version": "12.1.
|
|
3
|
+
"version": "12.1.1",
|
|
4
4
|
"description": "Official Smile ID React Native (Expo) SDK for identity verification: selfie capture, liveness checks, and document verification powered by on-device ML.",
|
|
5
5
|
"homepage": "https://usesmileid.com",
|
|
6
6
|
"repository": {
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"CHANGELOG.md"
|
|
49
49
|
],
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@smileid/kamera": "
|
|
51
|
+
"@smileid/kamera": "1.0.6",
|
|
52
52
|
"axios": "^1.20.0",
|
|
53
53
|
"zod": "^4.5.4",
|
|
54
|
-
"@smileid/usesmileid_bridge": "12.1.
|
|
55
|
-
"@smileid/usesmileid_platform_interface": "12.1.
|
|
54
|
+
"@smileid/usesmileid_bridge": "12.1.1",
|
|
55
|
+
"@smileid/usesmileid_platform_interface": "12.1.1"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"@react-native-async-storage/async-storage": ">=1.21.0",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
}
|
|
106
106
|
},
|
|
107
107
|
"devDependencies": {
|
|
108
|
-
"@smileid/kamera-testing": "1.0.
|
|
108
|
+
"@smileid/kamera-testing": "1.0.6",
|
|
109
109
|
"@types/react": "^19.2.18",
|
|
110
110
|
"expo": "~57.0.20",
|
|
111
111
|
"expo-brightness": "~57.0.1",
|