@ha_tecno/live-id-sdk 2.12.3 → 2.13.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.
Files changed (109) hide show
  1. package/lib/commonjs/components/Typograph/typograph.js +28 -0
  2. package/lib/commonjs/components/Typograph/typograph.js.map +1 -0
  3. package/lib/commonjs/components/index.js +14 -0
  4. package/lib/commonjs/components/index.js.map +1 -1
  5. package/lib/commonjs/index.js +12 -0
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsBiometrics.js +185 -0
  8. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsBiometrics.js.map +1 -0
  9. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsLifeCertificate.js +165 -0
  10. package/lib/commonjs/screens/RegisterOperations/registerOperationPointsLifeCertificate.js.map +1 -0
  11. package/lib/commonjs/screens/RegisterOperations/styles.js +47 -0
  12. package/lib/commonjs/screens/RegisterOperations/styles.js.map +1 -0
  13. package/lib/commonjs/screens/index.js +14 -0
  14. package/lib/commonjs/screens/index.js.map +1 -1
  15. package/lib/commonjs/services/index.js +18 -0
  16. package/lib/commonjs/services/index.js.map +1 -1
  17. package/lib/commonjs/services/services.js +106 -1
  18. package/lib/commonjs/services/services.js.map +1 -1
  19. package/lib/commonjs/store/modules/operationPoints/index.js +19 -0
  20. package/lib/commonjs/store/modules/operationPoints/index.js.map +1 -0
  21. package/lib/commonjs/store/modules/operationPoints/selectors.js +13 -0
  22. package/lib/commonjs/store/modules/operationPoints/selectors.js.map +1 -0
  23. package/lib/commonjs/store/modules/operationPoints/slice.js +233 -0
  24. package/lib/commonjs/store/modules/operationPoints/slice.js.map +1 -0
  25. package/lib/commonjs/store/modules/operationPoints/types.js +2 -0
  26. package/lib/commonjs/store/modules/operationPoints/types.js.map +1 -0
  27. package/lib/commonjs/utils/index.js +12 -0
  28. package/lib/commonjs/utils/index.js.map +1 -1
  29. package/lib/commonjs/utils/utils.js +9 -1
  30. package/lib/commonjs/utils/utils.js.map +1 -1
  31. package/lib/module/components/Typograph/typograph.js +21 -0
  32. package/lib/module/components/Typograph/typograph.js.map +1 -0
  33. package/lib/module/components/index.js +3 -1
  34. package/lib/module/components/index.js.map +1 -1
  35. package/lib/module/index.js +2 -2
  36. package/lib/module/index.js.map +1 -1
  37. package/lib/module/screens/RegisterOperations/registerOperationPointsBiometrics.js +176 -0
  38. package/lib/module/screens/RegisterOperations/registerOperationPointsBiometrics.js.map +1 -0
  39. package/lib/module/screens/RegisterOperations/registerOperationPointsLifeCertificate.js +157 -0
  40. package/lib/module/screens/RegisterOperations/registerOperationPointsLifeCertificate.js.map +1 -0
  41. package/lib/module/screens/RegisterOperations/styles.js +41 -0
  42. package/lib/module/screens/RegisterOperations/styles.js.map +1 -0
  43. package/lib/module/screens/index.js +3 -1
  44. package/lib/module/screens/index.js.map +1 -1
  45. package/lib/module/services/index.js +2 -2
  46. package/lib/module/services/index.js.map +1 -1
  47. package/lib/module/services/services.js +102 -0
  48. package/lib/module/services/services.js.map +1 -1
  49. package/lib/module/store/modules/operationPoints/index.js +3 -0
  50. package/lib/module/store/modules/operationPoints/index.js.map +1 -0
  51. package/lib/module/store/modules/operationPoints/selectors.js +6 -0
  52. package/lib/module/store/modules/operationPoints/selectors.js.map +1 -0
  53. package/lib/module/store/modules/operationPoints/slice.js +227 -0
  54. package/lib/module/store/modules/operationPoints/slice.js.map +1 -0
  55. package/lib/module/store/modules/operationPoints/types.js +2 -0
  56. package/lib/module/store/modules/operationPoints/types.js.map +1 -0
  57. package/lib/module/utils/index.js +2 -2
  58. package/lib/module/utils/index.js.map +1 -1
  59. package/lib/module/utils/utils.js +7 -1
  60. package/lib/module/utils/utils.js.map +1 -1
  61. package/lib/typescript/src/components/Typograph/typograph.d.ts +10 -0
  62. package/lib/typescript/src/components/Typograph/typograph.d.ts.map +1 -0
  63. package/lib/typescript/src/components/index.d.ts +3 -1
  64. package/lib/typescript/src/components/index.d.ts.map +1 -1
  65. package/lib/typescript/src/index.d.ts +2 -2
  66. package/lib/typescript/src/index.d.ts.map +1 -1
  67. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsBiometrics.d.ts +7 -0
  68. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsBiometrics.d.ts.map +1 -0
  69. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsLifeCertificate.d.ts +7 -0
  70. package/lib/typescript/src/screens/RegisterOperations/registerOperationPointsLifeCertificate.d.ts.map +1 -0
  71. package/lib/typescript/src/screens/RegisterOperations/styles.d.ts +40 -0
  72. package/lib/typescript/src/screens/RegisterOperations/styles.d.ts.map +1 -0
  73. package/lib/typescript/src/screens/index.d.ts +3 -1
  74. package/lib/typescript/src/screens/index.d.ts.map +1 -1
  75. package/lib/typescript/src/services/index.d.ts +2 -2
  76. package/lib/typescript/src/services/index.d.ts.map +1 -1
  77. package/lib/typescript/src/services/services.d.ts +4 -1
  78. package/lib/typescript/src/services/services.d.ts.map +1 -1
  79. package/lib/typescript/src/services/types.d.ts +29 -0
  80. package/lib/typescript/src/services/types.d.ts.map +1 -1
  81. package/lib/typescript/src/store/modules/operationPoints/index.d.ts +3 -0
  82. package/lib/typescript/src/store/modules/operationPoints/index.d.ts.map +1 -0
  83. package/lib/typescript/src/store/modules/operationPoints/selectors.d.ts +24 -0
  84. package/lib/typescript/src/store/modules/operationPoints/selectors.d.ts.map +1 -0
  85. package/lib/typescript/src/store/modules/operationPoints/slice.d.ts +4 -0
  86. package/lib/typescript/src/store/modules/operationPoints/slice.d.ts.map +1 -0
  87. package/lib/typescript/src/store/modules/operationPoints/types.d.ts +51 -0
  88. package/lib/typescript/src/store/modules/operationPoints/types.d.ts.map +1 -0
  89. package/lib/typescript/src/utils/index.d.ts +2 -2
  90. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  91. package/lib/typescript/src/utils/utils.d.ts +3 -1
  92. package/lib/typescript/src/utils/utils.d.ts.map +1 -1
  93. package/package.json +2 -1
  94. package/src/components/Typograph/typograph.tsx +24 -0
  95. package/src/components/index.ts +3 -1
  96. package/src/index.tsx +14 -2
  97. package/src/screens/RegisterOperations/registerOperationPointsBiometrics.tsx +168 -0
  98. package/src/screens/RegisterOperations/registerOperationPointsLifeCertificate.tsx +175 -0
  99. package/src/screens/RegisterOperations/styles.ts +41 -0
  100. package/src/screens/index.ts +9 -1
  101. package/src/services/index.ts +18 -2
  102. package/src/services/services.ts +113 -1
  103. package/src/services/types.ts +33 -0
  104. package/src/store/modules/operationPoints/index.ts +3 -0
  105. package/src/store/modules/operationPoints/selectors.ts +7 -0
  106. package/src/store/modules/operationPoints/slice.ts +240 -0
  107. package/src/store/modules/operationPoints/types.ts +61 -0
  108. package/src/utils/index.ts +2 -2
  109. package/src/utils/utils.ts +9 -1
@@ -0,0 +1,240 @@
1
+ import { create } from "zustand";
2
+ import {
3
+ ExposureMapOperationPoints,
4
+ InitialState,
5
+ OperationPointsState,
6
+ SendImagesBase64Payload,
7
+ SetImageBase64Payload,
8
+ sendVideosLifeCertificatePayload
9
+ } from "./types";
10
+ import { Platform } from "react-native";
11
+ import {
12
+ getConfigOperationPoints,
13
+ sendImagesForRegisterOperationPoints,
14
+ sendVideoForRegisterOperationPoints
15
+ } from "../../../services";
16
+ import { getModel } from "react-native-device-info";
17
+ import { scale0to1, scale0to1Inverse } from "../../../utils";
18
+
19
+ const initialState: InitialState = {
20
+ state: {
21
+ loading: "idle",
22
+ hasConfigOperationPointsBiometrics: "idle",
23
+ hasConfigOperationPointsLifeCertificate: "idle",
24
+ base64Images: [],
25
+ exposureScaleZeroToOneBiometrics: Platform.OS === "android" ? 0.12 : 0.3,
26
+ exposureScaleZeroToOneLifeCertificate: Platform.OS === "android" ? 0.12 : 0.3,
27
+ registered: false,
28
+ helpStep: "introduction"
29
+ }
30
+ };
31
+
32
+ const resetState = () => {
33
+ slice.setState((state) => ({
34
+ state: {
35
+ ...state.state,
36
+ loading: "idle",
37
+ base64Images: [],
38
+ registered: false,
39
+ helpStep: "introduction"
40
+ }
41
+ }));
42
+ };
43
+
44
+ const loadingPending = () => {
45
+ slice.setState((state) => ({
46
+ state: {
47
+ ...state.state,
48
+ loading: "pending"
49
+ }
50
+ }));
51
+ };
52
+
53
+ const setImageBase64 = (imageBase64: SetImageBase64Payload) => {
54
+ slice.setState((state) => ({
55
+ state: {
56
+ ...state.state,
57
+ base64Images: [...state.state.base64Images, imageBase64]
58
+ }
59
+ }));
60
+ };
61
+
62
+ const changeExposureBiometrics = () => {
63
+ resetState();
64
+ const exposureMap: ExposureMapOperationPoints = {
65
+ 0.12: 0.2,
66
+ 0.2: 0.35,
67
+ 0.3: 0.4,
68
+ 0.35: 0.5,
69
+ 0.4: 0.5,
70
+ 0.5: Platform.OS === "android" ? 0.65 : 0.6,
71
+ 0.65: 0.8,
72
+ 0.6: 0.7,
73
+ 0.7: 0.3,
74
+ 0.8: 0.12
75
+ };
76
+ slice.setState((state) => {
77
+ const { exposureScaleZeroToOneBiometrics } = state.state;
78
+ return {
79
+ state: {
80
+ ...state.state,
81
+ exposureScaleZeroToOneBiometrics:
82
+ exposureMap[exposureScaleZeroToOneBiometrics] || exposureScaleZeroToOneBiometrics
83
+ }
84
+ };
85
+ });
86
+ };
87
+
88
+ const changeExposureLifeCertificate = () => {
89
+ resetState();
90
+ const exposureMap: ExposureMapOperationPoints = {
91
+ 0.12: 0.2,
92
+ 0.2: 0.35,
93
+ 0.3: 0.4,
94
+ 0.35: 0.5,
95
+ 0.4: 0.5,
96
+ 0.5: Platform.OS === "android" ? 0.65 : 0.6,
97
+ 0.65: 0.8,
98
+ 0.6: 0.7,
99
+ 0.7: 0.3,
100
+ 0.8: 0.12
101
+ };
102
+ slice.setState((state) => {
103
+ const { exposureScaleZeroToOneLifeCertificate } = state.state;
104
+ return {
105
+ state: {
106
+ ...state.state,
107
+ exposureScaleZeroToOneLifeCertificate:
108
+ exposureMap[exposureScaleZeroToOneLifeCertificate] || exposureScaleZeroToOneLifeCertificate
109
+ }
110
+ };
111
+ });
112
+ };
113
+
114
+ const handleStepHelp = () => {
115
+ slice.setState((state) => {
116
+ const { helpStep } = state.state;
117
+ return {
118
+ state: {
119
+ ...state.state,
120
+ helpStep: helpStep === "introduction" ? "instruction" : "introduction"
121
+ }
122
+ };
123
+ });
124
+ };
125
+
126
+ // separar a lógica do store
127
+ const getConfigDefault = async (operation: "finger" | "liveness") => {
128
+ const configs = await getConfigOperationPoints();
129
+ const deviceModel = getModel();
130
+ const deviceType = Platform.OS;
131
+ const configsDeviceType = configs.filter(
132
+ (config) => config.deviceType === deviceType && config.serviceType === operation
133
+ );
134
+ const configDeviceModel = configsDeviceType.find((config) => config.deviceModels.includes(deviceModel));
135
+ return configDeviceModel === undefined ? false : true;
136
+ };
137
+
138
+ const getConfigDefaultBiometrics = async () => {
139
+ const payload = await getConfigDefault("finger");
140
+ slice.setState((state) => ({
141
+ state: {
142
+ ...state.state,
143
+ hasConfigOperationPointsBiometrics: payload ? "notEmpty" : "empty"
144
+ }
145
+ }));
146
+ resetState();
147
+ };
148
+
149
+ const getConfigDefaultLifeCertificate = async () => {
150
+ const payload = await getConfigDefault("liveness");
151
+ slice.setState((state) => ({
152
+ state: {
153
+ ...state.state,
154
+ hasConfigOperationPointsLifeCertificate: payload ? "notEmpty" : "empty"
155
+ }
156
+ }));
157
+ resetState();
158
+ };
159
+
160
+ // separar a lógica do store
161
+ const sendImagesBase64 = async ({
162
+ exposureScaleZeroToOneBiometrics,
163
+ base64Images,
164
+ exposureMax,
165
+ exposureMin,
166
+ zoomMax,
167
+ zoomMin
168
+ }: SendImagesBase64Payload) => {
169
+ loadingPending();
170
+ const deviceModel = getModel();
171
+ const zoom = 3;
172
+ const zoomScaleZeroToOne = scale0to1(zoom, zoomMin, zoomMax);
173
+ const exposure = scale0to1Inverse(exposureScaleZeroToOneBiometrics, exposureMin, exposureMax);
174
+ const { message, status } = await sendImagesForRegisterOperationPoints({
175
+ deviceModel,
176
+ images: base64Images,
177
+ exposure,
178
+ exposureMin,
179
+ exposureMax,
180
+ exposureScaleZeroToOneBiometrics,
181
+ zoom,
182
+ zoomMin,
183
+ zoomMax,
184
+ zoomScaleZeroToOne
185
+ });
186
+ slice.setState((state) => ({
187
+ state: {
188
+ ...state.state,
189
+ loading: status === 200 ? "succeeded" : "failed",
190
+ status: status,
191
+ message: message
192
+ }
193
+ }));
194
+ };
195
+
196
+ // separar a lógica do store
197
+ const sendVideosLifeCertificate = async ({
198
+ exposureMax,
199
+ exposureMin,
200
+ videoPath,
201
+ exposureScaleZeroToOneLifeCertificate
202
+ }: sendVideosLifeCertificatePayload) => {
203
+ loadingPending();
204
+ const deviceModel = getModel();
205
+ const exposure = scale0to1Inverse(exposureScaleZeroToOneLifeCertificate, exposureMin, exposureMax);
206
+ const { message, status, hasConfig } = await sendVideoForRegisterOperationPoints({
207
+ deviceModel,
208
+ exposure,
209
+ videoPath,
210
+ exposureMax,
211
+ exposureMin,
212
+ exposureScaleZeroToOneLifeCertificate
213
+ });
214
+ slice.setState((state) => ({
215
+ state: {
216
+ ...state.state,
217
+ registered: hasConfig ?? false,
218
+ loading: status === 200 && hasConfig ? "succeeded" : "failed",
219
+ status: status,
220
+ message: message
221
+ }
222
+ }));
223
+ };
224
+
225
+ const slice = create<OperationPointsState>(() => ({
226
+ ...initialState,
227
+ dispatch: {
228
+ setImageBase64,
229
+ resetState,
230
+ changeExposureBiometrics,
231
+ changeExposureLifeCertificate,
232
+ handleStepHelp,
233
+ getConfigDefaultBiometrics,
234
+ getConfigDefaultLifeCertificate,
235
+ sendImagesBase64,
236
+ sendVideosLifeCertificate
237
+ }
238
+ }));
239
+
240
+ export default slice;
@@ -0,0 +1,61 @@
1
+ type ScaleZeroToOneAndroid = 0.12 | 0.2 | 0.35 | 0.5 | 0.65 | 0.8;
2
+ type ScaleZeroToOneIOS = 0.3 | 0.4 | 0.5 | 0.6 | 0.7;
3
+
4
+ type StatusConfigOperationPoints = "empty" | "notEmpty" | "idle";
5
+
6
+ type State = {
7
+ exposureScaleZeroToOneBiometrics: ScaleZeroToOneIOS | ScaleZeroToOneAndroid;
8
+ exposureScaleZeroToOneLifeCertificate: ScaleZeroToOneIOS | ScaleZeroToOneAndroid;
9
+ loading: "idle" | "pending" | "succeeded" | "failed";
10
+ hasConfigOperationPointsBiometrics: StatusConfigOperationPoints;
11
+ hasConfigOperationPointsLifeCertificate: StatusConfigOperationPoints;
12
+ base64Images: string[];
13
+ status?: number;
14
+ message?: string;
15
+ registered: boolean;
16
+ helpStep: "introduction" | "instruction";
17
+ };
18
+
19
+ type Dispatch = {
20
+ setImageBase64: (imageBase64: SetImageBase64Payload) => void;
21
+ resetState: () => void;
22
+ changeExposureBiometrics: () => void;
23
+ changeExposureLifeCertificate: () => void;
24
+ handleStepHelp: () => void;
25
+ getConfigDefaultBiometrics: () => void;
26
+ getConfigDefaultLifeCertificate: () => void;
27
+ sendImagesBase64: (payload: SendImagesBase64Payload) => void;
28
+ sendVideosLifeCertificate: (payload: sendVideosLifeCertificatePayload) => void;
29
+ };
30
+
31
+ export type InitialState = {
32
+ state: State;
33
+ };
34
+
35
+ export type OperationPointsState = {
36
+ state: State;
37
+ dispatch: Dispatch;
38
+ };
39
+
40
+ export type ExposureMapOperationPoints = Record<
41
+ State["exposureScaleZeroToOneBiometrics"],
42
+ State["exposureScaleZeroToOneBiometrics"]
43
+ >;
44
+
45
+ export type SetImageBase64Payload = string;
46
+
47
+ export type SendImagesBase64Payload = {
48
+ base64Images: string[];
49
+ exposureScaleZeroToOneBiometrics: State["exposureScaleZeroToOneBiometrics"];
50
+ exposureMin: number;
51
+ exposureMax: number;
52
+ zoomMin: number;
53
+ zoomMax: number;
54
+ };
55
+
56
+ export type sendVideosLifeCertificatePayload = {
57
+ exposureMin: number;
58
+ exposureMax: number;
59
+ videoPath: string;
60
+ exposureScaleZeroToOneLifeCertificate: State["exposureScaleZeroToOneLifeCertificate"];
61
+ };
@@ -1,5 +1,5 @@
1
1
  import getConfigCamera from "./getConfigCamera";
2
- import { randomHeartRate, filteredFingers } from "./utils";
2
+ import { randomHeartRate, filteredFingers, scale0to1, scale0to1Inverse } from "./utils";
3
3
  import { useIsForeground } from "./hooks/useIsForeground";
4
4
 
5
- export { getConfigCamera, useIsForeground, randomHeartRate, filteredFingers };
5
+ export { getConfigCamera, useIsForeground, randomHeartRate, filteredFingers, scale0to1, scale0to1Inverse };
@@ -11,4 +11,12 @@ const filteredFingers = (
11
11
  return items.filter((item) => !registeredFingers.includes(item.value));
12
12
  };
13
13
 
14
- export { randomHeartRate, filteredFingers };
14
+ const scale0to1 = (value: number, min: number, max: number) => {
15
+ return (value - min) / (max - min);
16
+ };
17
+
18
+ const scale0to1Inverse = (scaledValue: number, min: number, max: number) => {
19
+ return scaledValue * (max - min) + min;
20
+ };
21
+
22
+ export { randomHeartRate, filteredFingers, scale0to1, scale0to1Inverse };