@authme/engine 2.2.0-rc.9 → 2.2.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 +22 -0
- package/assets/engine-worker.js +240 -379
- package/package.json +4 -3
- package/src/lib/engine.d.ts +1 -0
- package/src/lib/engine.js +75 -2
- package/src/lib/engine.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [2.2.0](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.13...v2.2.0) (2022-12-19)
|
|
6
|
+
|
|
7
|
+
## [2.2.0-rc.13](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.12...v2.2.0-rc.13) (2022-12-19)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- 1.close btn add stop sdk method. 2.implement loading-sdk lottie. 3.delete vehicles license item ([83738bd](https://github.com/AuthMe01/web-client-sdk/commit/83738bd1630c539157222bc7a909962cc65696ae))
|
|
12
|
+
|
|
13
|
+
## [2.2.0-rc.12](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.11...v2.2.0-rc.12) (2022-12-16)
|
|
14
|
+
|
|
15
|
+
## [2.2.0-rc.11](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.10...v2.2.0-rc.11) (2022-12-16)
|
|
16
|
+
|
|
17
|
+
## [2.2.0-rc.10](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.9...v2.2.0-rc.10) (2022-12-15)
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
- improve model loading performance ([0021a16](https://github.com/AuthMe01/web-client-sdk/commit/0021a164074bd9e4a219db1ef8e25932d3786ea8))
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
- waitTime problem ([5805979](https://github.com/AuthMe01/web-client-sdk/commit/5805979180cc009e0c82bba2b2094e70db6bf1bf))
|
|
26
|
+
|
|
5
27
|
## [2.2.0-rc.9](https://github.com/AuthMe01/web-client-sdk/compare/v2.2.0-rc.8...v2.2.0-rc.9) (2022-12-09)
|
|
6
28
|
|
|
7
29
|
### Features
|
package/assets/engine-worker.js
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
let wasm_loaded = false;
|
|
4
4
|
let wasm_loading = false;
|
|
5
5
|
|
|
6
|
-
let modelSession = {};
|
|
7
|
-
|
|
8
6
|
function importScriptsViaJsContent(jsContent) {
|
|
9
7
|
const objectUrl = URL.createObjectURL(
|
|
10
8
|
new Blob([jsContent], { type: 'text/javascript' })
|
|
@@ -13,40 +11,8 @@
|
|
|
13
11
|
URL.revokeObjectURL(objectUrl);
|
|
14
12
|
}
|
|
15
13
|
|
|
16
|
-
function base64toBlob(data) {
|
|
17
|
-
const byteChars = self.atob(data);
|
|
18
|
-
const byteNumbers = new Array(byteChars.length);
|
|
19
|
-
for (let i = 0; i < byteChars.length; i++) {
|
|
20
|
-
byteNumbers[i] = byteChars.charCodeAt(i);
|
|
21
|
-
}
|
|
22
|
-
const byteArray = new Uint8Array(byteNumbers);
|
|
23
|
-
return new Blob([byteArray], { type: 'application/octet-stream' });
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async function fetchModel(code) {
|
|
27
|
-
const method = self.config.dataTransferMethod || 'binary';
|
|
28
|
-
|
|
29
|
-
const resp = await fetch(
|
|
30
|
-
`${self.config.apiBaseUrl}/api/model-management/v1/model/${code}${
|
|
31
|
-
method === 'binary' ? '/file' : ''
|
|
32
|
-
}`,
|
|
33
|
-
{
|
|
34
|
-
headers: {
|
|
35
|
-
Authorization: 'Bearer ' + self.config.token,
|
|
36
|
-
},
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
if (method === 'binary') {
|
|
41
|
-
return resp.blob();
|
|
42
|
-
} else {
|
|
43
|
-
const data = await resp.json();
|
|
44
|
-
return base64toBlob(data.data);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
14
|
async function loadWasm({ engineJsContent, engineWasmContent }) {
|
|
49
|
-
return new Promise((res, rej)
|
|
15
|
+
return new Promise(function loadWasmExecutor(res, rej) {
|
|
50
16
|
// console.log('load wasm');
|
|
51
17
|
if (wasm_loaded || wasm_loading) {
|
|
52
18
|
res(true);
|
|
@@ -65,7 +31,7 @@
|
|
|
65
31
|
},
|
|
66
32
|
};
|
|
67
33
|
importScriptsViaJsContent(engineJsContent);
|
|
68
|
-
|
|
34
|
+
async function tryInitEngineLib() {
|
|
69
35
|
try {
|
|
70
36
|
const module = await AuthmeMLEngineLib({
|
|
71
37
|
wasmBinary: engineWasmContent,
|
|
@@ -89,64 +55,207 @@
|
|
|
89
55
|
console.warn(
|
|
90
56
|
'init Authme EngineLib error:',
|
|
91
57
|
error,
|
|
92
|
-
' Try after
|
|
58
|
+
' Try after 3 second.'
|
|
93
59
|
);
|
|
94
|
-
await waitTime(
|
|
60
|
+
await waitTime(3000);
|
|
95
61
|
await tryInitEngineLib();
|
|
96
62
|
}
|
|
97
|
-
}
|
|
63
|
+
}
|
|
98
64
|
tryInitEngineLib();
|
|
99
65
|
}
|
|
100
66
|
});
|
|
101
67
|
}
|
|
102
68
|
|
|
103
|
-
//
|
|
104
|
-
|
|
69
|
+
// Base
|
|
70
|
+
const baseFunctions = {
|
|
105
71
|
instance: null,
|
|
106
|
-
|
|
107
|
-
|
|
72
|
+
sessions: {},
|
|
73
|
+
_getModelVersions(constructorName) {
|
|
74
|
+
const versionVector =
|
|
75
|
+
self.EngineLib[constructorName]['getModelVersion']();
|
|
76
|
+
const models = [];
|
|
77
|
+
for (let i = 0; i < versionVector.size(); i++) {
|
|
78
|
+
let item = versionVector.get(i);
|
|
79
|
+
models.push({
|
|
80
|
+
name: `${item.szName}`,
|
|
81
|
+
version: `${item.szVersion}`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return models;
|
|
108
85
|
},
|
|
109
|
-
|
|
110
|
-
|
|
86
|
+
|
|
87
|
+
// worker 專心處理 cpu 密集 (model 載入) 的工作,
|
|
88
|
+
// 至於純 IO 下載的任務就交給 main thread 處理就好。
|
|
89
|
+
loadModel({ modelName, modelArrayBuffer }) {
|
|
90
|
+
let fileMounted = false;
|
|
91
|
+
try {
|
|
92
|
+
const FS = self.EngineLib.FS;
|
|
93
|
+
FS.mkdir(`/${modelName}/`);
|
|
94
|
+
FS.mount(
|
|
95
|
+
FS.filesystems.WORKERFS,
|
|
96
|
+
{
|
|
97
|
+
blobs: [
|
|
98
|
+
{
|
|
99
|
+
name: modelName,
|
|
100
|
+
data: new Blob([modelArrayBuffer], {
|
|
101
|
+
type: 'application/octet-stream',
|
|
102
|
+
}),
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
`/${modelName}/`
|
|
107
|
+
);
|
|
108
|
+
fileMounted = true;
|
|
109
|
+
} catch (error) {
|
|
110
|
+
if (error?.errno === 20) {
|
|
111
|
+
// File Exist
|
|
112
|
+
fileMounted = true;
|
|
113
|
+
} else {
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (fileMounted) {
|
|
119
|
+
const session = self.EngineLib.createInferenceSession(
|
|
120
|
+
modelName,
|
|
121
|
+
`/${modelName}/${modelName}`
|
|
122
|
+
);
|
|
123
|
+
this.sessions[modelName] = session;
|
|
124
|
+
}
|
|
111
125
|
},
|
|
112
|
-
|
|
113
|
-
|
|
126
|
+
async _init(constructorName) {
|
|
127
|
+
// 暫時將縮排透過遺留下來,減少 review 無變動的資訊。
|
|
128
|
+
{
|
|
129
|
+
{
|
|
130
|
+
{
|
|
131
|
+
const instance = new self.EngineLib[constructorName]();
|
|
132
|
+
instance.initial(
|
|
133
|
+
...this._getModelVersions(constructorName).map(
|
|
134
|
+
({ name }) => this.sessions[name]
|
|
135
|
+
)
|
|
136
|
+
);
|
|
137
|
+
const engine = instance;
|
|
138
|
+
const uiParams = engine.getUIParams();
|
|
139
|
+
uiParams.previewPosition.fLeft = 0;
|
|
140
|
+
uiParams.previewPosition.fTop = 0;
|
|
141
|
+
uiParams.previewPosition.fRight = 1;
|
|
142
|
+
uiParams.previewPosition.fBottom = 1;
|
|
143
|
+
engine.setUIParams(uiParams);
|
|
144
|
+
this.instance = instance;
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
114
149
|
},
|
|
115
|
-
|
|
116
|
-
return
|
|
150
|
+
start() {
|
|
151
|
+
return this.instance?.start();
|
|
117
152
|
},
|
|
118
|
-
|
|
119
|
-
return
|
|
153
|
+
stop() {
|
|
154
|
+
return this.instance?.stop();
|
|
120
155
|
},
|
|
121
|
-
|
|
122
|
-
|
|
156
|
+
_setFrameSize(params) {
|
|
157
|
+
config.frame.width = Math.floor(params.width);
|
|
158
|
+
config.frame.height = Math.floor(params.height);
|
|
159
|
+
if (this.instance) {
|
|
160
|
+
const engine = this.instance;
|
|
161
|
+
const uiParams = engine.getUIParams();
|
|
162
|
+
uiParams.analyzeSize.iHeight = config.frame.height;
|
|
163
|
+
uiParams.analyzeSize.iWidth = config.frame.width;
|
|
164
|
+
engine.setUIParams(uiParams);
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
123
167
|
},
|
|
124
|
-
|
|
125
|
-
return
|
|
126
|
-
self.PassportService.instance
|
|
127
|
-
).constructor.toJson(params);
|
|
168
|
+
setFrameSize(params) {
|
|
169
|
+
return this._setFrameSize(params);
|
|
128
170
|
},
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
if (
|
|
132
|
-
|
|
133
|
-
|
|
171
|
+
_recognition(params) {
|
|
172
|
+
const engine = this.instance;
|
|
173
|
+
if (engine) {
|
|
174
|
+
try {
|
|
175
|
+
const data = params.data;
|
|
176
|
+
const heapInfo = putOnHeap(data);
|
|
177
|
+
const result = engine.run(
|
|
178
|
+
heapInfo.byteOffset,
|
|
179
|
+
heapInfo.length,
|
|
180
|
+
config.frame.width,
|
|
181
|
+
config.frame.height
|
|
182
|
+
);
|
|
183
|
+
self.EngineLib._free(heapInfo.dataPtr);
|
|
184
|
+
return result;
|
|
185
|
+
} catch (error) {
|
|
186
|
+
// console.warn(error);
|
|
187
|
+
// console.warn('[Recognition Error]: ' + error?.message);
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
134
190
|
}
|
|
135
|
-
|
|
191
|
+
console.warn('engine not initialized');
|
|
192
|
+
},
|
|
193
|
+
recognition(params) {
|
|
194
|
+
return this._recognition(params);
|
|
195
|
+
},
|
|
196
|
+
getParams() {
|
|
197
|
+
return this.instance.getParams();
|
|
198
|
+
},
|
|
199
|
+
setParams(params) {
|
|
200
|
+
return this.instance.setParams(params.params);
|
|
201
|
+
},
|
|
202
|
+
getDebugImage(params) {
|
|
203
|
+
const data = params.data;
|
|
204
|
+
const heapInfo = putOnHeap(data);
|
|
205
|
+
let imageData;
|
|
206
|
+
const pointer = this.instance.getDebugImage(
|
|
207
|
+
heapInfo.byteOffset,
|
|
208
|
+
heapInfo.length,
|
|
209
|
+
config.frame.width,
|
|
210
|
+
config.frame.height
|
|
211
|
+
);
|
|
212
|
+
self.EngineLib._free(heapInfo.dataPtr);
|
|
213
|
+
if (pointer) {
|
|
214
|
+
imageData = self.EngineLib.HEAPU8.slice(
|
|
215
|
+
pointer,
|
|
216
|
+
pointer + config.frame.width * config.frame.height * 4
|
|
217
|
+
);
|
|
218
|
+
self.EngineLib._free(pointer);
|
|
219
|
+
}
|
|
220
|
+
return imageData;
|
|
221
|
+
},
|
|
222
|
+
destroy() {
|
|
223
|
+
if (this.instance) {
|
|
224
|
+
this.instance.delete();
|
|
225
|
+
this.instance = null;
|
|
226
|
+
}
|
|
227
|
+
for (const session of Object.values(this.sessions)) {
|
|
228
|
+
self.EngineLib.deleteSession(session);
|
|
229
|
+
}
|
|
230
|
+
this.sessions = {};
|
|
136
231
|
},
|
|
137
|
-
|
|
138
|
-
return
|
|
232
|
+
getJsonReport() {
|
|
233
|
+
return this.instance?.getJsonReport();
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
// PassportService
|
|
238
|
+
self.PassportService = {
|
|
239
|
+
...baseFunctions,
|
|
240
|
+
|
|
241
|
+
getModelVersions() {
|
|
242
|
+
return this._getModelVersions('PassportService');
|
|
139
243
|
},
|
|
140
|
-
|
|
141
|
-
return
|
|
244
|
+
init() {
|
|
245
|
+
return this._init('PassportService');
|
|
142
246
|
},
|
|
143
|
-
|
|
144
|
-
return
|
|
247
|
+
toJson(params) {
|
|
248
|
+
return Object.getPrototypeOf(this.instance).constructor.toJson(params);
|
|
145
249
|
},
|
|
146
|
-
|
|
147
|
-
|
|
250
|
+
recognition(params) {
|
|
251
|
+
const result = this._recognition(params);
|
|
252
|
+
if (result) {
|
|
253
|
+
result.eStatus = result.eStatus.constructor.name;
|
|
254
|
+
result.tField = JSON.parse(self.PassportService.toJson(result.tField));
|
|
255
|
+
}
|
|
256
|
+
return result;
|
|
148
257
|
},
|
|
149
|
-
setMaskPosition
|
|
258
|
+
setMaskPosition(params) {
|
|
150
259
|
const positions = params.positions;
|
|
151
260
|
return self.PassportService.instance?.setMatchROI(
|
|
152
261
|
positions[0][0],
|
|
@@ -163,25 +272,16 @@
|
|
|
163
272
|
|
|
164
273
|
// Card OCR
|
|
165
274
|
self.CardOCR = {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return
|
|
170
|
-
},
|
|
171
|
-
start: function () {
|
|
172
|
-
return self.Base.start(self.CardOCR);
|
|
173
|
-
},
|
|
174
|
-
stop: function () {
|
|
175
|
-
return self.Base.stop(self.CardOCR);
|
|
176
|
-
},
|
|
177
|
-
getJsonReport: function () {
|
|
178
|
-
return self.Base.getJsonReport(self.CardOCR);
|
|
275
|
+
...baseFunctions,
|
|
276
|
+
|
|
277
|
+
getModelVersions() {
|
|
278
|
+
return this._getModelVersions('CardOCR');
|
|
179
279
|
},
|
|
180
|
-
|
|
181
|
-
return
|
|
280
|
+
init() {
|
|
281
|
+
return this._init('CardOCR');
|
|
182
282
|
},
|
|
183
|
-
recognition
|
|
184
|
-
const result =
|
|
283
|
+
recognition(params) {
|
|
284
|
+
const result = this._recognition(params);
|
|
185
285
|
if (result) {
|
|
186
286
|
if (result.pointer > 0) {
|
|
187
287
|
result.imageData = self.EngineLib.HEAPU8.slice(
|
|
@@ -196,11 +296,8 @@
|
|
|
196
296
|
}
|
|
197
297
|
return result;
|
|
198
298
|
},
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
},
|
|
202
|
-
setType: function (params) {
|
|
203
|
-
const engine = self.CardOCR.instance;
|
|
299
|
+
setType(params) {
|
|
300
|
+
const engine = this.instance;
|
|
204
301
|
if (engine) {
|
|
205
302
|
const engineParams = engine.getParams();
|
|
206
303
|
engineParams.eTargetCardType =
|
|
@@ -211,9 +308,9 @@
|
|
|
211
308
|
}
|
|
212
309
|
return false;
|
|
213
310
|
},
|
|
214
|
-
setMaskPosition
|
|
311
|
+
setMaskPosition(params) {
|
|
215
312
|
const positions = params.positions;
|
|
216
|
-
return
|
|
313
|
+
return this.instance?.setCardMatchROI(
|
|
217
314
|
positions[0][0],
|
|
218
315
|
positions[0][1],
|
|
219
316
|
positions[1][0],
|
|
@@ -224,44 +321,27 @@
|
|
|
224
321
|
positions[3][1]
|
|
225
322
|
);
|
|
226
323
|
},
|
|
227
|
-
getParams: function () {
|
|
228
|
-
return self.Base.getParams(self.CardOCR);
|
|
229
|
-
},
|
|
230
|
-
setParams: function (params) {
|
|
231
|
-
return self.Base.setParams(self.CardOCR, params);
|
|
232
|
-
},
|
|
233
|
-
destroy: function () {
|
|
234
|
-
return self.Base.destroy(self.CardOCR);
|
|
235
|
-
},
|
|
236
324
|
};
|
|
237
325
|
|
|
238
326
|
// Id Card Anti Fraud
|
|
239
327
|
self.IdCardAntiFraud = {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
328
|
+
...baseFunctions,
|
|
329
|
+
|
|
330
|
+
getModelVersions() {
|
|
331
|
+
return this._getModelVersions('IdCardAntiFraudService');
|
|
332
|
+
},
|
|
333
|
+
async init() {
|
|
334
|
+
await this._init('IdCardAntiFraudService');
|
|
335
|
+
if (this.instance) {
|
|
336
|
+
const engine = this.instance;
|
|
245
337
|
const engineParams = engine.getParams();
|
|
246
338
|
engineParams.timeoutSec = 52;
|
|
247
339
|
engine.setParams(engineParams);
|
|
248
340
|
return true;
|
|
249
341
|
}
|
|
250
342
|
},
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
},
|
|
254
|
-
stop: function () {
|
|
255
|
-
return self.Base.stop(self.IdCardAntiFraud);
|
|
256
|
-
},
|
|
257
|
-
getJsonReport: function () {
|
|
258
|
-
return self.Base.getJsonReport(self.IdCardAntiFraud);
|
|
259
|
-
},
|
|
260
|
-
setFrameSize: function (params) {
|
|
261
|
-
return self.Base.setFrameSize(self.IdCardAntiFraud, params);
|
|
262
|
-
},
|
|
263
|
-
recognition: function (params) {
|
|
264
|
-
const result = self.Base.recognition(self.IdCardAntiFraud, params);
|
|
343
|
+
recognition(params) {
|
|
344
|
+
const result = this._recognition(params);
|
|
265
345
|
if (result) {
|
|
266
346
|
result.eStatus = result.eStatus.constructor.name;
|
|
267
347
|
result.eStage = result.eStage.constructor.name;
|
|
@@ -275,9 +355,9 @@
|
|
|
275
355
|
}
|
|
276
356
|
return result;
|
|
277
357
|
},
|
|
278
|
-
setMaskPosition
|
|
358
|
+
setMaskPosition(params) {
|
|
279
359
|
const positions = params.positions;
|
|
280
|
-
return
|
|
360
|
+
return this.instance?.setFrontalCardVertices(
|
|
281
361
|
positions[0][0],
|
|
282
362
|
positions[0][1],
|
|
283
363
|
positions[1][0],
|
|
@@ -288,68 +368,53 @@
|
|
|
288
368
|
positions[3][1]
|
|
289
369
|
);
|
|
290
370
|
},
|
|
291
|
-
setStage
|
|
292
|
-
if (
|
|
371
|
+
setStage(params) {
|
|
372
|
+
if (this.instance) {
|
|
293
373
|
const stageList = new self.EngineLib.FraudStageList();
|
|
294
|
-
params
|
|
295
|
-
stageList.push_back(
|
|
296
|
-
|
|
297
|
-
|
|
374
|
+
for (const stage of params) {
|
|
375
|
+
stageList.push_back(
|
|
376
|
+
self.EngineLib.EAuthMeIDCardAntiFraudStage[stage]
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
this.instance.setStage(stageList);
|
|
298
380
|
}
|
|
299
381
|
},
|
|
300
|
-
getParams: function () {
|
|
301
|
-
return self.Base.getParams(self.IdCardAntiFraud);
|
|
302
|
-
},
|
|
303
|
-
setParams: function (params) {
|
|
304
|
-
return self.Base.setParams(self.IdCardAntiFraud, params);
|
|
305
|
-
},
|
|
306
|
-
getDebugImage: function (params) {
|
|
307
|
-
return self.Base.getDebugImage(self.IdCardAntiFraud, params);
|
|
308
|
-
},
|
|
309
|
-
destroy: function () {
|
|
310
|
-
return self.Base.destroy(self.IdCardAntiFraud);
|
|
311
|
-
},
|
|
312
382
|
};
|
|
313
383
|
|
|
314
384
|
self.Fas = {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
start: function () {
|
|
320
|
-
return self.Base.start(self.Fas);
|
|
321
|
-
},
|
|
322
|
-
stop: function () {
|
|
323
|
-
return self.Base.stop(self.Fas);
|
|
385
|
+
...baseFunctions,
|
|
386
|
+
|
|
387
|
+
getModelVersions() {
|
|
388
|
+
return this._getModelVersions('CFASService');
|
|
324
389
|
},
|
|
325
|
-
|
|
326
|
-
return
|
|
390
|
+
init() {
|
|
391
|
+
return this._init('CFASService');
|
|
327
392
|
},
|
|
328
|
-
setFrameSize
|
|
329
|
-
|
|
393
|
+
setFrameSize(params) {
|
|
394
|
+
this._setFrameSize(params);
|
|
330
395
|
if (config.frame.width / config.frame.height >= 1) {
|
|
331
|
-
const params =
|
|
396
|
+
const params = this.instance.getParams();
|
|
332
397
|
params.fFaceRoiPreviewRatioW = 0.3;
|
|
333
|
-
|
|
398
|
+
this.instance.setParams(params);
|
|
334
399
|
}
|
|
335
400
|
},
|
|
336
|
-
setStage
|
|
337
|
-
if (
|
|
401
|
+
setStage(params) {
|
|
402
|
+
if (this.instance) {
|
|
338
403
|
const stageList = new self.EngineLib.FASStageList();
|
|
339
|
-
params.stageList
|
|
340
|
-
stageList.push_back(self.EngineLib.EAuthMeFASServiceStage[
|
|
341
|
-
}
|
|
342
|
-
|
|
404
|
+
for (const stage of params.stageList) {
|
|
405
|
+
stageList.push_back(self.EngineLib.EAuthMeFASServiceStage[stage]);
|
|
406
|
+
}
|
|
407
|
+
this.instance.setStage(stageList);
|
|
343
408
|
}
|
|
344
409
|
},
|
|
345
410
|
getStageParams({ stageIndex }) {
|
|
346
|
-
return
|
|
411
|
+
return this.instance.getStageParams(stageIndex);
|
|
347
412
|
},
|
|
348
413
|
setStageParams({ stageIndex, value }) {
|
|
349
|
-
|
|
414
|
+
this.instance.setStageParams(value, stageIndex);
|
|
350
415
|
},
|
|
351
|
-
recognition
|
|
352
|
-
const result =
|
|
416
|
+
recognition(params) {
|
|
417
|
+
const result = this._recognition(params);
|
|
353
418
|
if (result) {
|
|
354
419
|
result.eStatus = result.eStatus.constructor.name;
|
|
355
420
|
result.eStage = result.eStage.constructor.name;
|
|
@@ -361,175 +426,25 @@
|
|
|
361
426
|
}
|
|
362
427
|
return result;
|
|
363
428
|
},
|
|
364
|
-
getParams: function () {
|
|
365
|
-
return self.Base.getParams(self.Fas);
|
|
366
|
-
},
|
|
367
|
-
setParams: function (params) {
|
|
368
|
-
return self.Base.setParams(self.Fas, params);
|
|
369
|
-
},
|
|
370
|
-
getDebugImage: function (params) {
|
|
371
|
-
return self.Base.getDebugImage(self.Fas, params);
|
|
372
|
-
},
|
|
373
|
-
destroy: function () {
|
|
374
|
-
return self.Base.destroy(self.Fas);
|
|
375
|
-
},
|
|
376
|
-
};
|
|
377
|
-
|
|
378
|
-
// Base
|
|
379
|
-
self.Base = {
|
|
380
|
-
init: async function (target, constructorName) {
|
|
381
|
-
return new Promise((res, rej) => {
|
|
382
|
-
try {
|
|
383
|
-
setTimeout(async () => {
|
|
384
|
-
const models = [];
|
|
385
|
-
const versionVector =
|
|
386
|
-
self.EngineLib[constructorName]['getModelVersion']();
|
|
387
|
-
target.sessionUsed = [];
|
|
388
|
-
for (let i = 0; i < versionVector.size(); i++) {
|
|
389
|
-
let item = versionVector.get(i);
|
|
390
|
-
target.sessionUsed.push(item.szName);
|
|
391
|
-
models.push({
|
|
392
|
-
name: item.szName,
|
|
393
|
-
version: item.szVersion,
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
let queryModelString = models
|
|
398
|
-
.map((x) => 'models=' + x.name + '[' + x.version + ']')
|
|
399
|
-
.join('&');
|
|
400
|
-
let modelPath = await loadModels(queryModelString);
|
|
401
|
-
let modelPointer = models.map(({ name }, index) => {
|
|
402
|
-
if (modelSession[name]) {
|
|
403
|
-
return modelSession[name];
|
|
404
|
-
} else {
|
|
405
|
-
modelSession[name] = self.EngineLib.createInferenceSession(
|
|
406
|
-
name,
|
|
407
|
-
modelPath[index]
|
|
408
|
-
);
|
|
409
|
-
return modelSession[name];
|
|
410
|
-
}
|
|
411
|
-
});
|
|
412
|
-
const instance = new self.EngineLib[constructorName]();
|
|
413
|
-
instance.initial(...modelPointer);
|
|
414
|
-
const engine = instance;
|
|
415
|
-
const uiParams = engine.getUIParams();
|
|
416
|
-
uiParams.previewPosition.fLeft = 0;
|
|
417
|
-
uiParams.previewPosition.fTop = 0;
|
|
418
|
-
uiParams.previewPosition.fRight = 1;
|
|
419
|
-
uiParams.previewPosition.fBottom = 1;
|
|
420
|
-
engine.setUIParams(uiParams);
|
|
421
|
-
target.instance = instance;
|
|
422
|
-
res(true);
|
|
423
|
-
}, 10);
|
|
424
|
-
} catch (error) {
|
|
425
|
-
rej(error.message);
|
|
426
|
-
}
|
|
427
|
-
});
|
|
428
|
-
},
|
|
429
|
-
start: function (target) {
|
|
430
|
-
return target?.instance?.start();
|
|
431
|
-
},
|
|
432
|
-
stop: function (target) {
|
|
433
|
-
return target?.instance?.stop();
|
|
434
|
-
},
|
|
435
|
-
setFrameSize: function (target, params) {
|
|
436
|
-
config.frame.width = Math.floor(params.width);
|
|
437
|
-
config.frame.height = Math.floor(params.height);
|
|
438
|
-
if (target.instance) {
|
|
439
|
-
const engine = target.instance;
|
|
440
|
-
const uiParams = engine.getUIParams();
|
|
441
|
-
uiParams.analyzeSize.iHeight = config.frame.height;
|
|
442
|
-
uiParams.analyzeSize.iWidth = config.frame.width;
|
|
443
|
-
engine.setUIParams(uiParams);
|
|
444
|
-
return true;
|
|
445
|
-
}
|
|
446
|
-
},
|
|
447
|
-
recognition: function (target, params) {
|
|
448
|
-
const engine = target.instance;
|
|
449
|
-
if (engine) {
|
|
450
|
-
try {
|
|
451
|
-
const data = params.data;
|
|
452
|
-
const heapInfo = putOnHeap(data);
|
|
453
|
-
const result = engine.run(
|
|
454
|
-
heapInfo.byteOffset,
|
|
455
|
-
heapInfo.length,
|
|
456
|
-
config.frame.width,
|
|
457
|
-
config.frame.height
|
|
458
|
-
);
|
|
459
|
-
self.EngineLib._free(heapInfo.dataPtr);
|
|
460
|
-
return result;
|
|
461
|
-
} catch (error) {
|
|
462
|
-
// console.warn(error);
|
|
463
|
-
// console.warn('[Recognition Error]: ' + error?.message);
|
|
464
|
-
return null;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
console.warn('engine not initialized');
|
|
468
|
-
},
|
|
469
|
-
getParams: function (target) {
|
|
470
|
-
return target.instance.getParams();
|
|
471
|
-
},
|
|
472
|
-
setParams: function (target, params) {
|
|
473
|
-
return target.instance.setParams(params.params);
|
|
474
|
-
},
|
|
475
|
-
getDebugImage: function (target, params) {
|
|
476
|
-
const data = params.data;
|
|
477
|
-
const heapInfo = putOnHeap(data);
|
|
478
|
-
let imageData;
|
|
479
|
-
const pointer = target.instance.getDebugImage(
|
|
480
|
-
heapInfo.byteOffset,
|
|
481
|
-
heapInfo.length,
|
|
482
|
-
config.frame.width,
|
|
483
|
-
config.frame.height
|
|
484
|
-
);
|
|
485
|
-
self.EngineLib._free(heapInfo.dataPtr);
|
|
486
|
-
if (pointer) {
|
|
487
|
-
imageData = self.EngineLib.HEAPU8.slice(
|
|
488
|
-
pointer,
|
|
489
|
-
pointer + config.frame.width * config.frame.height * 4
|
|
490
|
-
);
|
|
491
|
-
self.EngineLib._free(pointer);
|
|
492
|
-
}
|
|
493
|
-
return imageData;
|
|
494
|
-
},
|
|
495
|
-
destroy: function (target) {
|
|
496
|
-
if (target.instance) {
|
|
497
|
-
target.instance.delete();
|
|
498
|
-
target.instance = null;
|
|
499
|
-
}
|
|
500
|
-
if (target.sessionUsed) {
|
|
501
|
-
target.sessionUsed.forEach((name) => {
|
|
502
|
-
if (modelSession[name]) {
|
|
503
|
-
self.EngineLib.deleteSession(modelSession[name]);
|
|
504
|
-
modelSession[name] = null;
|
|
505
|
-
}
|
|
506
|
-
});
|
|
507
|
-
target.sessionUsed = [];
|
|
508
|
-
}
|
|
509
|
-
},
|
|
510
|
-
getJsonReport: function (target) {
|
|
511
|
-
return target?.instance?.getJsonReport();
|
|
512
|
-
},
|
|
513
429
|
};
|
|
514
430
|
|
|
515
431
|
self.Core = {
|
|
516
|
-
|
|
432
|
+
async setConfig(config) {
|
|
517
433
|
self.config = {
|
|
518
434
|
...self.config,
|
|
519
435
|
...config,
|
|
520
436
|
};
|
|
521
437
|
return true;
|
|
522
438
|
},
|
|
523
|
-
|
|
439
|
+
async loadEngine({ engineJsContent, engineWasmContent }) {
|
|
524
440
|
return await loadWasm({ engineJsContent, engineWasmContent });
|
|
525
441
|
},
|
|
526
|
-
|
|
442
|
+
async verify(params) {
|
|
527
443
|
for (let index = 0; index < 20; index++) {
|
|
528
444
|
if (self.EngineLib) {
|
|
529
445
|
let result = self.EngineLib.verifySDK(params.cert, params.authToken);
|
|
530
446
|
return result.constructor.name;
|
|
531
447
|
}
|
|
532
|
-
await waitTime(500);
|
|
533
448
|
}
|
|
534
449
|
return false;
|
|
535
450
|
},
|
|
@@ -537,12 +452,12 @@
|
|
|
537
452
|
|
|
538
453
|
addEventListener(
|
|
539
454
|
'message',
|
|
540
|
-
async function ({ data }) {
|
|
455
|
+
async function onWorkerMessage({ data }) {
|
|
541
456
|
const { module, command, id, value } = data;
|
|
542
457
|
const fn = self[module][command];
|
|
543
458
|
if (fn) {
|
|
544
459
|
// console.log(`call ${module}.${command} :`, value);
|
|
545
|
-
const result = await fn(value);
|
|
460
|
+
const result = await fn.call(self[module], value);
|
|
546
461
|
// console.log(`worker return value for ${command}:`, result);
|
|
547
462
|
postMessage({
|
|
548
463
|
module,
|
|
@@ -563,60 +478,6 @@
|
|
|
563
478
|
},
|
|
564
479
|
};
|
|
565
480
|
|
|
566
|
-
async function loadModel(modelInfo) {
|
|
567
|
-
const { name, code } = modelInfo;
|
|
568
|
-
const modelData = await fetchModel(code);
|
|
569
|
-
console.log(modelData);
|
|
570
|
-
try {
|
|
571
|
-
const FS = self.EngineLib.FS;
|
|
572
|
-
FS.mkdir(name);
|
|
573
|
-
FS.mount(
|
|
574
|
-
FS.filesystems.WORKERFS,
|
|
575
|
-
{
|
|
576
|
-
blobs: [
|
|
577
|
-
{
|
|
578
|
-
name,
|
|
579
|
-
data: modelData,
|
|
580
|
-
},
|
|
581
|
-
],
|
|
582
|
-
},
|
|
583
|
-
'/' + name
|
|
584
|
-
);
|
|
585
|
-
} catch (error) {
|
|
586
|
-
if (error?.errno === 20) {
|
|
587
|
-
// File Exist
|
|
588
|
-
return `/${name}/${name}`;
|
|
589
|
-
} else {
|
|
590
|
-
throw error;
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
return `/${name}/${name}`;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
async function loadModels(modelString) {
|
|
598
|
-
const start = performance.now();
|
|
599
|
-
const resp = await fetch(
|
|
600
|
-
self.config.apiBaseUrl + '/api/model-management/v1/model?' + modelString,
|
|
601
|
-
{
|
|
602
|
-
headers: {
|
|
603
|
-
Authorization: 'Bearer ' + self.config.token,
|
|
604
|
-
},
|
|
605
|
-
}
|
|
606
|
-
);
|
|
607
|
-
if (!resp.ok) {
|
|
608
|
-
throw new Error('[HTTP Error] Status: ' + resp.status);
|
|
609
|
-
}
|
|
610
|
-
const result = await resp.json();
|
|
611
|
-
const modelPath = [];
|
|
612
|
-
for (let i = 0; i < result.models.length; i++) {
|
|
613
|
-
modelPath.push(await loadModel(result.models[i]));
|
|
614
|
-
}
|
|
615
|
-
const end = performance.now();
|
|
616
|
-
// console.log('Load Model Time: ', +end - start + ' ms');
|
|
617
|
-
return modelPath;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
481
|
function putOnHeap(data) {
|
|
621
482
|
const Module = self.EngineLib;
|
|
622
483
|
const uint8ArrData = new Uint8Array(data);
|
|
@@ -633,7 +494,7 @@
|
|
|
633
494
|
};
|
|
634
495
|
}
|
|
635
496
|
|
|
636
|
-
|
|
497
|
+
function waitTime(ms) {
|
|
637
498
|
return new Promise((res) => {
|
|
638
499
|
setTimeout(() => {
|
|
639
500
|
res(true);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authme/engine",
|
|
3
|
-
"version": "2.2.0
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"devDependencies": {
|
|
5
5
|
"rxjs": "~7.4.0"
|
|
6
6
|
},
|
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
"typings": "./src/index.d.ts",
|
|
9
9
|
"dependencies": {},
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@authme/core": "2.2.0
|
|
12
|
-
"@authme/util": "2.2.0
|
|
11
|
+
"@authme/core": "2.2.0",
|
|
12
|
+
"@authme/util": "2.2.0",
|
|
13
13
|
"three": "^0.136.0",
|
|
14
|
+
"lottie-web": "^5.9.2",
|
|
14
15
|
"tslib": "^2.3.0"
|
|
15
16
|
}
|
|
16
17
|
}
|
package/src/lib/engine.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare abstract class AuthmeEngineModuleBase<T = any> {
|
|
|
27
27
|
protected received: boolean;
|
|
28
28
|
protected moduleName: EngineModule;
|
|
29
29
|
constructor(engine: MlEngine);
|
|
30
|
+
_engineRunAsync(command: string, value?: any): Promise<any>;
|
|
30
31
|
init(): Promise<boolean>;
|
|
31
32
|
startSession(): Promise<void>;
|
|
32
33
|
stop(): Promise<void>;
|
package/src/lib/engine.js
CHANGED
|
@@ -7,6 +7,29 @@ const util_1 = require("@authme/util");
|
|
|
7
7
|
const rxjs_1 = require("rxjs");
|
|
8
8
|
const enum_1 = require("./enum");
|
|
9
9
|
const interface_1 = require("./interface");
|
|
10
|
+
const getDownloadOrder = (function () {
|
|
11
|
+
// model 越大,在後續 worker service 載入與解密的時間越長,
|
|
12
|
+
// 所以盡可能讓越大的檔案排在越前面下載,以便讓耗費時間長的任務先排在背景執行。
|
|
13
|
+
//
|
|
14
|
+
// 但由於 api server 目前沒有提供檔案大小的相關資訊,
|
|
15
|
+
// 所以將順序相關的資訊寫死在 sdk 裡。
|
|
16
|
+
const DOWNLOAD_ORDER = Object.fromEntries([
|
|
17
|
+
'FACE_03',
|
|
18
|
+
'FACE_00',
|
|
19
|
+
'IDCardAntiFraud_00',
|
|
20
|
+
'FACE_01',
|
|
21
|
+
'OCR_00',
|
|
22
|
+
'FACE_02',
|
|
23
|
+
'OCR_02',
|
|
24
|
+
'MRZ_00',
|
|
25
|
+
'OCR_01',
|
|
26
|
+
'MRZ_01', // 375k
|
|
27
|
+
].map((key, index) => [key, index]));
|
|
28
|
+
return function getDownloadOrder(key) {
|
|
29
|
+
var _a;
|
|
30
|
+
return (_a = DOWNLOAD_ORDER[key]) !== null && _a !== void 0 ? _a : Number.MAX_VALUE;
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
10
33
|
function isSimdSupported() {
|
|
11
34
|
try {
|
|
12
35
|
// Test for WebAssembly SIMD capability (for both browsers and Node.js)
|
|
@@ -45,6 +68,45 @@ function createWorkerWithObjectUrlAsync(url) {
|
|
|
45
68
|
return worker;
|
|
46
69
|
});
|
|
47
70
|
}
|
|
71
|
+
function convertToModelQueryString(modelVersion) {
|
|
72
|
+
return `models=${modelVersion.name}[${modelVersion.version}]`;
|
|
73
|
+
}
|
|
74
|
+
function fetchModelCodesAsync(modelVersions) {
|
|
75
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const queryString = modelVersions.map(convertToModelQueryString).join('&');
|
|
77
|
+
const response = yield (0, core_1.sendRequest)('/api/model-management/v1/model?' + queryString);
|
|
78
|
+
return response.models;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function base64ToBufferAsync(base64) {
|
|
82
|
+
const dataUrl = 'data:application/octet-binary;base64,' + base64;
|
|
83
|
+
return fetch(dataUrl).then((res) => res.arrayBuffer());
|
|
84
|
+
}
|
|
85
|
+
function fetchModelContentAsync(code, dataTransferMethod) {
|
|
86
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
const payload = yield (0, core_1.sendRequest)(`/api/model-management/v1/model/${code}${dataTransferMethod === 'binary' ? '/file' : ''}`);
|
|
88
|
+
if (dataTransferMethod === 'binary') {
|
|
89
|
+
return payload;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return yield base64ToBufferAsync(payload.data);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function fetchModelContents(modelVersions, dataTransferMethod) {
|
|
97
|
+
return (0, rxjs_1.of)(modelVersions).pipe((0, rxjs_1.concatMap)((modelVersions) => (0, rxjs_1.defer)(() => fetchModelCodesAsync(modelVersions))), (0, rxjs_1.concatAll)(), (0, rxjs_1.mergeMap)(({ name, code }) => (0, rxjs_1.defer)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
return ({
|
|
99
|
+
modelName: name,
|
|
100
|
+
modelArrayBuffer: yield fetchModelContentAsync(code, dataTransferMethod),
|
|
101
|
+
});
|
|
102
|
+
})), 1
|
|
103
|
+
// 下載 model 過程會分為 wait time & download time,
|
|
104
|
+
// concurrent 設定越高,只能起到降低 wait time 的作用,但會拉長單一檔案完成下載的時間,
|
|
105
|
+
// 這會延遲 worker service 裡,載入與解密的時間。
|
|
106
|
+
//
|
|
107
|
+
// 所以 concurrent 建議設定為 1 或 2,盡量讓已下載好的 model 儘早進行載入與解密。
|
|
108
|
+
));
|
|
109
|
+
}
|
|
48
110
|
class AuthmeFunctionModule {
|
|
49
111
|
init(config) {
|
|
50
112
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -147,7 +209,13 @@ class AuthmeEngineModuleBase {
|
|
|
147
209
|
this.received = true;
|
|
148
210
|
this.engine = engine;
|
|
149
211
|
}
|
|
212
|
+
_engineRunAsync(command, value) {
|
|
213
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
214
|
+
return (0, rxjs_1.firstValueFrom)(this.engine.run(this.moduleName, command, value));
|
|
215
|
+
});
|
|
216
|
+
}
|
|
150
217
|
init() {
|
|
218
|
+
var _a;
|
|
151
219
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
152
220
|
if (this.initialized) {
|
|
153
221
|
return true;
|
|
@@ -157,8 +225,13 @@ class AuthmeEngineModuleBase {
|
|
|
157
225
|
}
|
|
158
226
|
this.initializing = true;
|
|
159
227
|
try {
|
|
160
|
-
const
|
|
161
|
-
(0,
|
|
228
|
+
const modelVersions = (yield this._engineRunAsync('getModelVersions'));
|
|
229
|
+
const stream$ = fetchModelContents(modelVersions.sort((a, b) => getDownloadOrder(a.name) - getDownloadOrder(b.name)), (_a = this.engine.getConfig().dataTransferMethod) !== null && _a !== void 0 ? _a : 'binary').pipe((0, rxjs_1.concatMap)(({ modelName, modelArrayBuffer }) => (0, rxjs_1.of)(this._engineRunAsync('loadModel', { modelName, modelArrayBuffer }))), (0, rxjs_1.reduce)((promises, item) => {
|
|
230
|
+
promises.push(item);
|
|
231
|
+
return promises;
|
|
232
|
+
}, []), (0, rxjs_1.concatMap)((promises) => (0, rxjs_1.defer)(() => Promise.all(promises))));
|
|
233
|
+
yield (0, rxjs_1.firstValueFrom)(stream$);
|
|
234
|
+
const result = yield this._engineRunAsync('init');
|
|
162
235
|
this.initialized = true;
|
|
163
236
|
return result;
|
|
164
237
|
}
|
package/src/lib/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../../libs/engine/src/lib/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../../../libs/engine/src/lib/engine.ts"],"names":[],"mappings":"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"}
|