@getyoti/react-face-capture 1.2.0 → 1.3.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 +25 -0
- package/README.md +13 -2
- package/index.css +1 -1
- package/index.d.ts +11 -0
- package/index.js +1 -1
- package/package.json +2 -3
- package/vanilla/index.css +1 -1
- package/vanilla/index.js +1 -1
- package/vanilla/index.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v1.3.0
|
|
4
|
+
|
|
5
|
+
### New features
|
|
6
|
+
|
|
7
|
+
- The secure payload has a new field `verification`.
|
|
8
|
+
- Increased the protection against requests from untrusted devices. The
|
|
9
|
+
malicious and suspicious requests will return a new error code
|
|
10
|
+
`UNTRUSTED_SECURE_SESSION`.
|
|
11
|
+
- The `manualCaptureFallback` time has been increased to 10 seconds.
|
|
12
|
+
- Implemented localisation languages:
|
|
13
|
+
|
|
14
|
+
- `BG-bg`: Bulgarian
|
|
15
|
+
- `fa-IR`: Persian
|
|
16
|
+
- `pt-BR`: Portuguese (Brazil)
|
|
17
|
+
- `pt` and `pt-BR` are both Brazilian. `pt` is now deprecated and it will be
|
|
18
|
+
removed on future releases.
|
|
19
|
+
- `pt-PT`: Portuguese (Portugal)
|
|
20
|
+
|
|
21
|
+
### Fixes
|
|
22
|
+
|
|
23
|
+
- Secure session initialisation request is not longer cached.
|
|
24
|
+
- Added missing fields in the typing file.
|
|
25
|
+
- Camera feedback messages are shown only after the camera permissions were
|
|
26
|
+
giving not before.
|
|
27
|
+
|
|
3
28
|
## v1.2.0
|
|
4
29
|
|
|
5
30
|
### New features
|
package/README.md
CHANGED
|
@@ -41,6 +41,8 @@ _Note: Edge is only supported on desktop versions._
|
|
|
41
41
|
|
|
42
42
|
Finally, some devices might experience poor performance when attempting to detect a face. This is because the underlying library TensorFlow.js can still be too demanding for older less performant devices.
|
|
43
43
|
|
|
44
|
+
_Note: `iPhone 7` and older will take a longer time to load the face detector model than more recent devices, and in most cases, will fall back from auto to manual capture mode. If this behaviour is not desired, as an integrator you could disable the manual capture mode altogether, implementing manualCaptureFallback = false. Note, this could increase the load time for old and low-quality devices._
|
|
45
|
+
|
|
44
46
|
## React face capture module
|
|
45
47
|
|
|
46
48
|
### Install dependency
|
|
@@ -98,6 +100,7 @@ new CopyPlugin([
|
|
|
98
100
|
Current languages supported:
|
|
99
101
|
|
|
100
102
|
- `en`: English
|
|
103
|
+
- `bg-BG`: Bulgarian
|
|
101
104
|
- `ar`: Arabic
|
|
102
105
|
- `cs`: Czech
|
|
103
106
|
- `da`: Danish
|
|
@@ -106,6 +109,7 @@ Current languages supported:
|
|
|
106
109
|
- `es`: Spanish (Spain)
|
|
107
110
|
- `es-419`: Spanish (Latin America)
|
|
108
111
|
- `et`: Estonian
|
|
112
|
+
- `fa-IR` : Persian
|
|
109
113
|
- `fi`: Finnish
|
|
110
114
|
- `fr`: French
|
|
111
115
|
- `he`: Hebrew
|
|
@@ -121,7 +125,9 @@ Current languages supported:
|
|
|
121
125
|
- `nb`: Norwegian
|
|
122
126
|
- `nl`: Dutch
|
|
123
127
|
- `pl`: Polish
|
|
124
|
-
- `pt`: Portuguese
|
|
128
|
+
- `pt`: Portuguese `[deprecated]`
|
|
129
|
+
- `pt-BR`: Portuguese (Brazil)
|
|
130
|
+
- `pt-PT`: Portuguese (Portugal)
|
|
125
131
|
- `ro`: Romanian
|
|
126
132
|
- `ru`: Russian
|
|
127
133
|
- `sv`: Swedish
|
|
@@ -176,7 +182,8 @@ be returned in `onSuccess` callback:
|
|
|
176
182
|
"secure": {
|
|
177
183
|
"version": "<fcm_version>",
|
|
178
184
|
"token": "<session_token>",
|
|
179
|
-
"signature": "<result_signature>"
|
|
185
|
+
"signature": "<result_signature>",
|
|
186
|
+
"verification": "<verification_data>"
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
189
|
```
|
|
@@ -191,6 +198,10 @@ on demand so the front-end must be able to handle that requests. Keep in mind if
|
|
|
191
198
|
your front-end uses any mechanism to prevent data injection attacks or
|
|
192
199
|
cross-site scripting like SCP you will need to allow the FCM requests.
|
|
193
200
|
|
|
201
|
+
##### Virtual cameras
|
|
202
|
+
|
|
203
|
+
The secure mode detects modifications on the camera stream source and fraudulent camera hardware. In these scenarios, it will return an `UNTRUSTED_SECURE_SESSION` error code when calling the Yoti BE service.
|
|
204
|
+
|
|
194
205
|
### Example
|
|
195
206
|
|
|
196
207
|
```js
|
package/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.mtcvKOHbFdRFpAH7ZHwW{align-items:center;background-color:#2875bc;border:none;border-radius:5px;color:#fff;cursor:pointer;display:block;display:flex;font-size:14px;font-weight:500;justify-content:center;letter-spacing:.5px;margin:auto;min-width:134px;outline:none;padding:12px 20px;text-transform:uppercase;transition:background-color .15s ease-out 0s;width:100%}.mtcvKOHbFdRFpAH7ZHwW.kYH4ilWb5sFtCcwqD29n{max-width:350px;width:45%}.mtcvKOHbFdRFpAH7ZHwW:hover{background-color:#27619b}.mtcvKOHbFdRFpAH7ZHwW:disabled{background-color:#6ba7df}.GusgiqC_1nbmjyHkruu0 use{fill:currentColor}.dDcfK_agfQV9XSYSuuxR{align-items:center;bottom:-8px;box-sizing:border-box;display:inline-block;justify-content:center;padding:16px;position:absolute;text-align:center;width:100%}._XKP_3EMO0LKJr53EW21{height:auto;transform:scaleX(-1);width:100%}._cYL8AOtgycwZXRT1onC{min-height:300px}.bX5GJJw3AqsCwBDA6qWZ{visibility:hidden}.RxkomAqHmrdu47_oGii4{bottom:-8px;box-sizing:border-box;display:grid;font-size:40px;grid-template-columns:repeat(3,80px) 50px;justify-content:center;padding:16px;position:absolute;text-align:center;width:100%}.ZSTtG9h6K6_0_axlDNnV,.__OOQVMtxL3v8uCw9eKy,.hwSkw4zQBundKmrqIwqC{color:#333b40;font-family:sans-serif;font-size:40px;font-weight:700;height:50px;line-height:55px;text-align:center;width:51px}.__OOQVMtxL3v8uCw9eKy{opacity:.5}.Gf_S7QnzULbIZZZ7roY2,.OZI1jG8pdtaOfb2ZsB2n,.XOix2SeWtEFksSSmLt9v{fill:#333b40}.Gf_S7QnzULbIZZZ7roY2 use,.OZI1jG8pdtaOfb2ZsB2n use,.XOix2SeWtEFksSSmLt9v use{fill:inherit}.ZSTtG9h6K6_0_axlDNnV svg,.__OOQVMtxL3v8uCw9eKy svg,.hwSkw4zQBundKmrqIwqC svg{font-size:50px}.Gf_S7QnzULbIZZZ7roY2{opacity:.5}.aM6UBOeSFg8vwirw8BEs{position:absolute}.HPEPfcUpwWOVOJSPP9R_{box-sizing:border-box;color:#546072;height:100%;left:0;position:absolute;right:0}.HPEPfcUpwWOVOJSPP9R_._0fft05LhDRetV8QdNSI{color:#1b9f4a}.HPEPfcUpwWOVOJSPP9R_.JHe4OqVjOOuBZXJn_axE{color:#db970e}.xsnSbKRs6MZbpP2odJGk{box-sizing:border-box;position:absolute;width:100%}.xsnSbKRs6MZbpP2odJGk.lSsJ_kvBTJOO0shULKLn{height:43.5%;top:28.3%}.xsnSbKRs6MZbpP2odJGk._6X0Zl0a0b8R2wCqGS_K{height:71.7%;top:11.5%}@keyframes TgYAVlLOGfJ_hl3TBdkC{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.X_Bq5FImnGbO6TLe3Len{align-items:center;display:flex;height:100%;justify-content:center;line-height:0;text-align:center}.WPX6_jcjLpB6aH420ZCd{animation:TgYAVlLOGfJ_hl3TBdkC 1.5s infinite}.bPwt8l_jKvlB2llQ7azY{height:35.71px;width:35.71px}.bPwt8l_jKvlB2llQ7azY use{fill:#333b40}.Ds2gos19dHtdm4Aer1pq{display:flex;height:100%;justify-content:center;position:absolute;top:0;width:100%}.x_r8eQXclQHy5Jjno7pU{display:block;height:100%;margin:auto;position:absolute}.IpX4dJbHat9i3luoCwef{align-items:start;background-color:#fff;border-radius:.3em;box-shadow:0 8px 15px #333b401a;box-sizing:border-box;color:#333b40;display:flex;font-family:sans-serif;font-size:16px;font-size:var(--message-font-size);font-weight:900;justify-content:start;left:50%;padding:.4em 0;position:absolute;text-align:center}.a_0VmnisbKCGWfubHrmj{margin-bottom:50px;top:4.6%;transform:translate(-50%);width:90%}.CqNtyAmFAcDIeu8mRGPD{top:5.5%;transform:translate(-50%);width:51.25%}.rlF15FcuMGotbEHYe5KW{align-items:start;font-size:calc(var(--message-font-size) + 3px)}._CvVxyqwMB2D7fkKx_NZ{display:flex;justify-content:center;order:1;width:14%}._znJxLRvhRnuCU0KBY3_{order:2;width:72%}._2_U2DYHedfGUyvS1oS5{display:flex;flex-direction:column;overflow:hidden;position:relative}.mteIzegCA0cNMXt96BYN{position:relative}.Va8swWS5S29Uvou7UNnc{height:100%;position:absolute;width:100%}
|
|
1
|
+
.mtcvKOHbFdRFpAH7ZHwW{align-items:center;background-color:#2875bc;border:none;border-radius:5px;color:#fff;cursor:pointer;display:block;display:flex;font-size:14px;font-weight:500;justify-content:center;letter-spacing:.5px;margin:auto;min-width:134px;outline:none;padding:12px 20px;text-transform:uppercase;transition:background-color .15s ease-out 0s;width:100%}.mtcvKOHbFdRFpAH7ZHwW.kYH4ilWb5sFtCcwqD29n{max-width:350px;width:45%}.mtcvKOHbFdRFpAH7ZHwW:hover{background-color:#27619b}.mtcvKOHbFdRFpAH7ZHwW:disabled{background-color:#6ba7df}.GusgiqC_1nbmjyHkruu0 use{fill:currentColor}.dDcfK_agfQV9XSYSuuxR{align-items:center;bottom:-8px;box-sizing:border-box;display:inline-block;justify-content:center;padding:16px;position:absolute;text-align:center;width:100%}._XKP_3EMO0LKJr53EW21{height:auto;transform:scaleX(-1);width:100%}._cYL8AOtgycwZXRT1onC{min-height:300px}.bX5GJJw3AqsCwBDA6qWZ{visibility:hidden}.RxkomAqHmrdu47_oGii4{bottom:-8px;box-sizing:border-box;display:grid;font-size:40px;grid-template-columns:repeat(3,80px) 50px;justify-content:center;padding:16px;position:absolute;text-align:center;width:100%}.ZSTtG9h6K6_0_axlDNnV,.__OOQVMtxL3v8uCw9eKy,.hwSkw4zQBundKmrqIwqC{color:#333b40;font-family:sans-serif;font-size:40px;font-weight:700;height:50px;line-height:55px;text-align:center;width:51px}.__OOQVMtxL3v8uCw9eKy{opacity:.5}.Gf_S7QnzULbIZZZ7roY2,.OZI1jG8pdtaOfb2ZsB2n,.XOix2SeWtEFksSSmLt9v{fill:#333b40}.Gf_S7QnzULbIZZZ7roY2 use,.OZI1jG8pdtaOfb2ZsB2n use,.XOix2SeWtEFksSSmLt9v use{fill:inherit}.ZSTtG9h6K6_0_axlDNnV svg,.__OOQVMtxL3v8uCw9eKy svg,.hwSkw4zQBundKmrqIwqC svg{font-size:50px}.Gf_S7QnzULbIZZZ7roY2{opacity:.5}.aM6UBOeSFg8vwirw8BEs{position:absolute}.HPEPfcUpwWOVOJSPP9R_{box-sizing:border-box;color:#546072;height:100%;left:0;position:absolute;right:0}.HPEPfcUpwWOVOJSPP9R_._0fft05LhDRetV8QdNSI{color:#1b9f4a}.HPEPfcUpwWOVOJSPP9R_.JHe4OqVjOOuBZXJn_axE{color:#db970e}.xsnSbKRs6MZbpP2odJGk{box-sizing:border-box;position:absolute;width:100%}.xsnSbKRs6MZbpP2odJGk.lSsJ_kvBTJOO0shULKLn{height:43.5%;top:28.3%}.xsnSbKRs6MZbpP2odJGk._6X0Zl0a0b8R2wCqGS_K{height:71.7%;top:11.5%}@keyframes TgYAVlLOGfJ_hl3TBdkC{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.X_Bq5FImnGbO6TLe3Len{align-items:center;display:flex;height:100%;justify-content:center;line-height:0;text-align:center}.WPX6_jcjLpB6aH420ZCd{animation:TgYAVlLOGfJ_hl3TBdkC 1.5s infinite}.bPwt8l_jKvlB2llQ7azY{height:35.71px;width:35.71px}.bPwt8l_jKvlB2llQ7azY use{fill:#333b40}.Ds2gos19dHtdm4Aer1pq{display:flex;height:100%;justify-content:center;position:absolute;top:0;width:100%}.x_r8eQXclQHy5Jjno7pU{display:block;height:100%;margin:auto;position:absolute}.IpX4dJbHat9i3luoCwef{align-items:flex-start;background-color:#fff;border-radius:.3em;box-shadow:0 8px 15px #333b401a;box-sizing:border-box;color:#333b40;display:flex;font-family:sans-serif;font-size:16px;font-size:var(--message-font-size);font-weight:900;justify-content:flex-start;left:50%;padding:.4em 0;position:absolute;text-align:center}.a_0VmnisbKCGWfubHrmj{margin-bottom:50px;top:4.6%;transform:translate(-50%);width:90%}.CqNtyAmFAcDIeu8mRGPD{top:5.5%;transform:translate(-50%);width:51.25%}.rlF15FcuMGotbEHYe5KW{align-items:flex-start;font-size:calc(var(--message-font-size) + 3px)}._CvVxyqwMB2D7fkKx_NZ{display:flex;justify-content:center;order:1;width:14%}._znJxLRvhRnuCU0KBY3_{order:2;width:72%}._2_U2DYHedfGUyvS1oS5{display:flex;flex-direction:column;overflow:hidden;position:relative}.mteIzegCA0cNMXt96BYN{position:relative}.Va8swWS5S29Uvou7UNnc{height:100%;position:absolute;width:100%}
|
package/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ declare module '@getyoti/react-face-capture' {
|
|
|
13
13
|
FACE_DETECTION_INIT_ERROR = 'FACE_DETECTION_INIT_ERROR',
|
|
14
14
|
CAPTURE_LOAD_ERROR = 'CAPTURE_LOAD_ERROR',
|
|
15
15
|
INTERNAL_ERROR = 'INTERNAL_ERROR',
|
|
16
|
+
VIDEO_STREAM_INTERRUPTED = 'VIDEO_STREAM_INTERRUPTED',
|
|
17
|
+
SECURE_SESSION_EXPIRED = 'SECURE_SESSION_EXPIRED',
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
/**
|
|
@@ -79,13 +81,16 @@ declare module '@getyoti/react-face-capture' {
|
|
|
79
81
|
*/
|
|
80
82
|
export enum LANGUAGE_CODE {
|
|
81
83
|
AR = 'ar',
|
|
84
|
+
BG_BG = 'bg-BG',
|
|
82
85
|
CS = 'cs',
|
|
83
86
|
DA = 'da',
|
|
84
87
|
DE = 'de',
|
|
88
|
+
EL = 'el',
|
|
85
89
|
EN = 'en',
|
|
86
90
|
ES = 'es',
|
|
87
91
|
ES_419 = 'es-419',
|
|
88
92
|
ET = 'et',
|
|
93
|
+
FA_IR = 'fa-IR',
|
|
89
94
|
FI = 'fi',
|
|
90
95
|
FR = 'fr',
|
|
91
96
|
HE = 'he',
|
|
@@ -101,7 +106,12 @@ declare module '@getyoti/react-face-capture' {
|
|
|
101
106
|
NB = 'nb',
|
|
102
107
|
NL = 'nl',
|
|
103
108
|
PL = 'pl',
|
|
109
|
+
/**
|
|
110
|
+
* @deprecated Use {@link LANGUAGE_CODE.PT_BR} or {@link LANGUAGE_CODE.PT_PT} instead.
|
|
111
|
+
*/
|
|
104
112
|
PT = 'pt',
|
|
113
|
+
PT_BR = 'pt-BR',
|
|
114
|
+
PT_PT = 'pt-PT',
|
|
105
115
|
RO = 'ro',
|
|
106
116
|
RU = 'ru',
|
|
107
117
|
SV = 'sv',
|
|
@@ -119,6 +129,7 @@ declare module '@getyoti/react-face-capture' {
|
|
|
119
129
|
version: string;
|
|
120
130
|
token: string;
|
|
121
131
|
signature: string;
|
|
132
|
+
verification: string;
|
|
122
133
|
}
|
|
123
134
|
|
|
124
135
|
/**
|