@authme/engine 2.2.1-rc.1 → 2.2.1-rc.5

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 (38) hide show
  1. package/index.cjs +617 -0
  2. package/index.js +609 -0
  3. package/package.json +11 -13
  4. package/src/index.d.ts +4 -3
  5. package/src/lib/engine.d.ts +52 -50
  6. package/src/lib/enum/auth.enum.d.ts +3 -3
  7. package/src/lib/enum/fas-recognition.enum.d.ts +46 -46
  8. package/src/lib/enum/id-recognition.enum.d.ts +64 -64
  9. package/src/lib/enum/index.d.ts +4 -4
  10. package/src/lib/enum/module.enum.d.ts +8 -8
  11. package/src/lib/interface/basic-type.interface.d.ts +12 -12
  12. package/src/lib/interface/config.interface.d.ts +7 -7
  13. package/src/lib/interface/index.d.ts +3 -3
  14. package/src/lib/interface/worker-command.interface.d.ts +7 -7
  15. package/src/lib/version.d.ts +1 -0
  16. package/CHANGELOG.md +0 -420
  17. package/src/index.js +0 -7
  18. package/src/index.js.map +0 -1
  19. package/src/lib/engine.js +0 -365
  20. package/src/lib/engine.js.map +0 -1
  21. package/src/lib/enum/auth.enum.js +0 -8
  22. package/src/lib/enum/auth.enum.js.map +0 -1
  23. package/src/lib/enum/fas-recognition.enum.js +0 -56
  24. package/src/lib/enum/fas-recognition.enum.js.map +0 -1
  25. package/src/lib/enum/id-recognition.enum.js +0 -76
  26. package/src/lib/enum/id-recognition.enum.js.map +0 -1
  27. package/src/lib/enum/index.js +0 -8
  28. package/src/lib/enum/index.js.map +0 -1
  29. package/src/lib/enum/module.enum.js +0 -13
  30. package/src/lib/enum/module.enum.js.map +0 -1
  31. package/src/lib/interface/basic-type.interface.js +0 -3
  32. package/src/lib/interface/basic-type.interface.js.map +0 -1
  33. package/src/lib/interface/config.interface.js +0 -10
  34. package/src/lib/interface/config.interface.js.map +0 -1
  35. package/src/lib/interface/index.js +0 -7
  36. package/src/lib/interface/index.js.map +0 -1
  37. package/src/lib/interface/worker-command.interface.js +0 -3
  38. package/src/lib/interface/worker-command.interface.js.map +0 -1
package/index.cjs ADDED
@@ -0,0 +1,617 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/es.array.iterator.js');
6
+ require('core-js/modules/es.object.from-entries.js');
7
+ require('core-js/modules/es.array-buffer.slice.js');
8
+ require('core-js/modules/es.typed-array.uint8-array.js');
9
+ require('core-js/modules/es.typed-array.fill.js');
10
+ require('core-js/modules/es.typed-array.set.js');
11
+ require('core-js/modules/es.typed-array.sort.js');
12
+ require('core-js/modules/es.typed-array.to-locale-string.js');
13
+ require('core-js/modules/web.dom-collections.iterator.js');
14
+ require('core-js/modules/web.url.js');
15
+ require('core-js/modules/web.url-search-params.js');
16
+ require('core-js/modules/es.promise.js');
17
+ require('core-js/modules/es.parse-int.js');
18
+ require('core-js/modules/es.object.assign.js');
19
+ require('core-js/modules/es.regexp.to-string.js');
20
+ require('core-js/modules/es.array.sort.js');
21
+ var core = require('@authme/core');
22
+ var util = require('@authme/util');
23
+ var rxjs = require('rxjs');
24
+ require('core-js/modules/es.symbol.description.js');
25
+
26
+ /******************************************************************************
27
+ Copyright (c) Microsoft Corporation.
28
+
29
+ Permission to use, copy, modify, and/or distribute this software for any
30
+ purpose with or without fee is hereby granted.
31
+
32
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
33
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
34
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
35
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
36
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
37
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
38
+ PERFORMANCE OF THIS SOFTWARE.
39
+ ***************************************************************************** */
40
+
41
+ function __awaiter(thisArg, _arguments, P, generator) {
42
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
43
+ return new (P || (P = Promise))(function (resolve, reject) {
44
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
45
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
46
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
47
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
48
+ });
49
+ }
50
+
51
+ exports.EngineModule = void 0;
52
+ (function (EngineModule) {
53
+ EngineModule["Fas"] = "Fas";
54
+ EngineModule["IdCardAntiFraud"] = "IdCardAntiFraud";
55
+ EngineModule["CardOCR"] = "CardOCR";
56
+ EngineModule["PassportService"] = "PassportService";
57
+ EngineModule["DEBUG"] = "DEBUG";
58
+ EngineModule["Core"] = "Core";
59
+ })(exports.EngineModule || (exports.EngineModule = {}));
60
+
61
+ exports.EAuthMeEngineReturnCode = void 0;
62
+ (function (EAuthMeEngineReturnCode) {
63
+ EAuthMeEngineReturnCode["Pass"] = "EAuthMeEngineReturnCode_eAuthMe_Engine_Authorization_Pass";
64
+ })(exports.EAuthMeEngineReturnCode || (exports.EAuthMeEngineReturnCode = {}));
65
+
66
+ var authEnumModule = /*#__PURE__*/Object.freeze({
67
+ __proto__: null,
68
+ get EAuthMeEngineReturnCode () { return exports.EAuthMeEngineReturnCode; }
69
+ });
70
+
71
+ exports.EAuthMeCardClass = void 0;
72
+ (function (EAuthMeCardClass) {
73
+ EAuthMeCardClass["Invalid"] = "EAuthMeCardClass_Invalid";
74
+ EAuthMeCardClass["Unknown"] = "EAuthMeCardClass_UnknownCard";
75
+ EAuthMeCardClass["Passport"] = "EAuthMeCardClass_Passport";
76
+ EAuthMeCardClass["TWN_IDCard_Front"] = "EAuthMeCardClass_TWN_IDCard_Front";
77
+ EAuthMeCardClass["TWN_IDCard_Back"] = "EAuthMeCardClass_TWN_IDCard_Back";
78
+ EAuthMeCardClass["TWN_DriverLicense_Front"] = "EAuthMeCardClass_TWN_DriverLicense_Front";
79
+ EAuthMeCardClass["TWN_DriverLicense_Back"] = "EAuthMeCardClass_TWN_DriverLicense_Back";
80
+ EAuthMeCardClass["TWN_ResidentCard_Front"] = "EAuthMeCardClass_TWN_ResidentCard_Front";
81
+ EAuthMeCardClass["TWN_ResidentCard_Back"] = "EAuthMeCardClass_TWN_ResidentCard_Back";
82
+ EAuthMeCardClass["TWN_HealthCard_Front"] = "EAuthMeCardClass_TWN_HealthCard_Front";
83
+ EAuthMeCardClass["TWN_VehiclesLicense_Front"] = "EAuthMeCardClass_TWN_VehiclesLicense_Front";
84
+ })(exports.EAuthMeCardClass || (exports.EAuthMeCardClass = {}));
85
+ exports.EAuthMeIDCardMetalTagStatus = void 0;
86
+ (function (EAuthMeIDCardMetalTagStatus) {
87
+ EAuthMeIDCardMetalTagStatus["NotFound"] = "EAuthMeIDCardMetalTagStatus_NotFound";
88
+ EAuthMeIDCardMetalTagStatus["Bright"] = "EAuthMeIDCardMetalTagStatus_Bright";
89
+ EAuthMeIDCardMetalTagStatus["Dark"] = "EAuthMeIDCardMetalTagStatus_Dark";
90
+ })(exports.EAuthMeIDCardMetalTagStatus || (exports.EAuthMeIDCardMetalTagStatus = {}));
91
+ exports.EAuthMeCardMatchStatus = void 0;
92
+ (function (EAuthMeCardMatchStatus) {
93
+ EAuthMeCardMatchStatus["None"] = "EAuthMeCardMatchStatus_None";
94
+ EAuthMeCardMatchStatus["Mismatch"] = "EAuthMeCardMatchStatus_Mismatch";
95
+ EAuthMeCardMatchStatus["NeedMoreFrame"] = "EAuthMeCardMatchStatus_NeedMoreFrame";
96
+ EAuthMeCardMatchStatus["Match"] = "EAuthMeCardMatchStatus_Match";
97
+ })(exports.EAuthMeCardMatchStatus || (exports.EAuthMeCardMatchStatus = {}));
98
+ exports.EAuthMeCardOCRStatus = void 0;
99
+ (function (EAuthMeCardOCRStatus) {
100
+ EAuthMeCardOCRStatus["NoCard"] = "EAuthMeCardOCRStatus_NoCard";
101
+ EAuthMeCardOCRStatus["WrongCardType"] = "EAuthMeCardOCRStatus_WrongCardType";
102
+ EAuthMeCardOCRStatus["PositionNotMatch"] = "EAuthMeCardOCRStatus_PositionNotMatch";
103
+ EAuthMeCardOCRStatus["Reflective"] = "EAuthMeCardOCRStatus_Reflective";
104
+ EAuthMeCardOCRStatus["Blur"] = "EAuthMeCardOCRStatus_Blur";
105
+ EAuthMeCardOCRStatus["Pass"] = "EAuthMeCardOCRStatus_Pass";
106
+ EAuthMeCardOCRStatus["Error"] = "EAuthMeCardOCRStatus_Error";
107
+ })(exports.EAuthMeCardOCRStatus || (exports.EAuthMeCardOCRStatus = {}));
108
+ exports.EAuthMeIDCardAntiFraudStatus = void 0;
109
+ (function (EAuthMeIDCardAntiFraudStatus) {
110
+ EAuthMeIDCardAntiFraudStatus["Failed"] = "EAuthMeIDCardAntiFraudStatus_Failed";
111
+ EAuthMeIDCardAntiFraudStatus["NoCard"] = "EAuthMeIDCardAntiFraudStatus_NoCard";
112
+ EAuthMeIDCardAntiFraudStatus["WrongCardType"] = "EAuthMeIDCardAntiFraudStatus_WrongCardType";
113
+ EAuthMeIDCardAntiFraudStatus["Reflective"] = "EAuthMeIDCardAntiFraudStatus_Reflective";
114
+ EAuthMeIDCardAntiFraudStatus["Blur"] = "EAuthMeIDCardAntiFraudStatus_Blur";
115
+ EAuthMeIDCardAntiFraudStatus["Gray"] = "EAuthMeIDCardAntiFraudStatus_Gray";
116
+ EAuthMeIDCardAntiFraudStatus["PositionNotMatch"] = "EAuthMeIDCardAntiFraudStatus_PositionNotMatch";
117
+ EAuthMeIDCardAntiFraudStatus["NeedMoreFrame"] = "EAuthMeIDCardAntiFraudStatus_NeedMoreFrame";
118
+ EAuthMeIDCardAntiFraudStatus["Pass"] = "EAuthMeIDCardAntiFraudStatus_Pass";
119
+ EAuthMeIDCardAntiFraudStatus["Error"] = "EAuthMeIDCardAntiFraudStatus_Error";
120
+ })(exports.EAuthMeIDCardAntiFraudStatus || (exports.EAuthMeIDCardAntiFraudStatus = {}));
121
+ exports.EAuthMeMRZRecogStatus = void 0;
122
+ (function (EAuthMeMRZRecogStatus) {
123
+ EAuthMeMRZRecogStatus["Success"] = "EAuthMeMRZRecogStatus_Success";
124
+ EAuthMeMRZRecogStatus["WrongFormat"] = "EAuthMeMRZRecogStatus_WrongFormat";
125
+ })(exports.EAuthMeMRZRecogStatus || (exports.EAuthMeMRZRecogStatus = {}));
126
+ exports.EAuthMePassportServiceStatus = void 0;
127
+ (function (EAuthMePassportServiceStatus) {
128
+ EAuthMePassportServiceStatus["Success"] = "EAuthMePassportServiceStatus_Success";
129
+ EAuthMePassportServiceStatus["NotFound"] = "EAuthMePassportServiceStatus_NotFound";
130
+ EAuthMePassportServiceStatus["RecogFailed"] = "EAuthMePassportServiceStatus_RecogFailed";
131
+ EAuthMePassportServiceStatus["Error"] = "EAuthMePassportServiceStatus_Error";
132
+ })(exports.EAuthMePassportServiceStatus || (exports.EAuthMePassportServiceStatus = {}));
133
+ exports.EAuthMeIDCardAntiFraudStage = void 0;
134
+ (function (EAuthMeIDCardAntiFraudStage) {
135
+ EAuthMeIDCardAntiFraudStage["Frontal"] = "EAuthMeIDCardAntiFraudStage_Frontal";
136
+ EAuthMeIDCardAntiFraudStage["Up"] = "EAuthMeIDCardAntiFraudStage_Up";
137
+ EAuthMeIDCardAntiFraudStage["Down"] = "EAuthMeIDCardAntiFraudStage_Down";
138
+ EAuthMeIDCardAntiFraudStage["Left"] = "EAuthMeIDCardAntiFraudStage_Left";
139
+ EAuthMeIDCardAntiFraudStage["Right"] = "EAuthMeIDCardAntiFraudStage_Right";
140
+ EAuthMeIDCardAntiFraudStage["IgnoreCardMatch"] = "EAuthMeIDCardAntiFraudStage_IgnoreCardMatch";
141
+ EAuthMeIDCardAntiFraudStage["Done"] = "EAuthMeIDCardAntiFraudStage_Done";
142
+ })(exports.EAuthMeIDCardAntiFraudStage || (exports.EAuthMeIDCardAntiFraudStage = {}));
143
+
144
+ var idRecognitionEnumModule = /*#__PURE__*/Object.freeze({
145
+ __proto__: null,
146
+ get EAuthMeCardClass () { return exports.EAuthMeCardClass; },
147
+ get EAuthMeIDCardMetalTagStatus () { return exports.EAuthMeIDCardMetalTagStatus; },
148
+ get EAuthMeCardMatchStatus () { return exports.EAuthMeCardMatchStatus; },
149
+ get EAuthMeCardOCRStatus () { return exports.EAuthMeCardOCRStatus; },
150
+ get EAuthMeIDCardAntiFraudStatus () { return exports.EAuthMeIDCardAntiFraudStatus; },
151
+ get EAuthMeMRZRecogStatus () { return exports.EAuthMeMRZRecogStatus; },
152
+ get EAuthMePassportServiceStatus () { return exports.EAuthMePassportServiceStatus; },
153
+ get EAuthMeIDCardAntiFraudStage () { return exports.EAuthMeIDCardAntiFraudStage; }
154
+ });
155
+
156
+ exports.EAuthMeFASServiceStatus = void 0;
157
+ (function (EAuthMeFASServiceStatus) {
158
+ EAuthMeFASServiceStatus["Failed"] = "EAuthMeFASServiceStatus_Failed";
159
+ EAuthMeFASServiceStatus["NoFace"] = "EAuthMeFASServiceStatus_NoFace";
160
+ EAuthMeFASServiceStatus["FaceNotAtCenter"] = "EAuthMeFASServiceStatus_FaceNotAtCenter";
161
+ EAuthMeFASServiceStatus["FaceTooSmall"] = "EAuthMeFASServiceStatus_FaceTooSmall";
162
+ EAuthMeFASServiceStatus["FaceTooLarge"] = "EAuthMeFASServiceStatus_FaceTooLarge";
163
+ EAuthMeFASServiceStatus["NeedFaceToCamera"] = "EAuthMeFASServiceStatus_NeedFaceToCamera";
164
+ EAuthMeFASServiceStatus["FaceMasked"] = "EAuthMeFASServiceStatus_FaceMasked";
165
+ EAuthMeFASServiceStatus["NeedOpenMouth"] = "EAuthMeFASServiceStatus_NeedOpenMouth";
166
+ EAuthMeFASServiceStatus["NeedCloseMouth"] = "EAuthMeFASServiceStatus_NeedCloseMouth";
167
+ EAuthMeFASServiceStatus["NeedSmile"] = "EAuthMeFASServiceStatus_NeedSmile";
168
+ EAuthMeFASServiceStatus["NeedOpenEyes"] = "EAuthMeFASServiceStatus_NeedOpenEyes";
169
+ EAuthMeFASServiceStatus["NeedMoreFrame"] = "EAuthMeFASServiceStatus_NeedMoreFrame";
170
+ EAuthMeFASServiceStatus["Error"] = "EAuthMeFASServiceStatus_Error";
171
+ EAuthMeFASServiceStatus["Pass"] = "EAuthMeFASServiceStatus_Pass";
172
+ })(exports.EAuthMeFASServiceStatus || (exports.EAuthMeFASServiceStatus = {}));
173
+ exports.EAuthMeFASServiceStage = void 0;
174
+ (function (EAuthMeFASServiceStage) {
175
+ EAuthMeFASServiceStage["Passive"] = "EAuthMeFASServiceStage_Passive";
176
+ EAuthMeFASServiceStage["OpenMouth"] = "EAuthMeFASServiceStage_OpenMouth";
177
+ EAuthMeFASServiceStage["CloseMouth"] = "EAuthMeFASServiceStage_CloseMouth";
178
+ EAuthMeFASServiceStage["Smile"] = "EAuthMeFASServiceStage_Smile";
179
+ EAuthMeFASServiceStage["Done"] = "EAuthMeFASServiceStage_Done";
180
+ })(exports.EAuthMeFASServiceStage || (exports.EAuthMeFASServiceStage = {}));
181
+ exports.EAuthMeEyeStatus = void 0;
182
+ (function (EAuthMeEyeStatus) {
183
+ EAuthMeEyeStatus["Eye_Close"] = "EAuthMeEyeStatus_Eye_Close";
184
+ EAuthMeEyeStatus["Eye_Open"] = "EAuthMeEyeStatus_Eye_Open";
185
+ })(exports.EAuthMeEyeStatus || (exports.EAuthMeEyeStatus = {}));
186
+ exports.EAuthMeMouthStatus = void 0;
187
+ (function (EAuthMeMouthStatus) {
188
+ EAuthMeMouthStatus["Mouth_Close"] = "EAuthMeMouthStatus_Mouth_Close";
189
+ EAuthMeMouthStatus["Mouth_Open"] = "EAuthMeMouthStatus_Mouth_Open";
190
+ })(exports.EAuthMeMouthStatus || (exports.EAuthMeMouthStatus = {}));
191
+ exports.EAuthMeFacePose = void 0;
192
+ (function (EAuthMeFacePose) {
193
+ EAuthMeFacePose["Unknown"] = "EAuthMeFacePose_Unknown";
194
+ EAuthMeFacePose["LeftProfile"] = "EAuthMeFacePose_LeftProfile";
195
+ EAuthMeFacePose["LeftFrontal"] = "EAuthMeFacePose_LeftFrontal";
196
+ EAuthMeFacePose["Frontal"] = "EAuthMeFacePose_Frontal";
197
+ EAuthMeFacePose["RightFrontal"] = "EAuthMeFacePose_RightFrontal";
198
+ EAuthMeFacePose["RightProfile"] = "EAuthMeFacePose_RightProfile";
199
+ EAuthMeFacePose["UpFrontal"] = "EAuthMeFacePose_UpFrontal";
200
+ EAuthMeFacePose["DownFrontal"] = "EAuthMeFacePose_DownFrontal";
201
+ })(exports.EAuthMeFacePose || (exports.EAuthMeFacePose = {}));
202
+ exports.EAuthMeFaceAntiSpoofingStatus = void 0;
203
+ (function (EAuthMeFaceAntiSpoofingStatus) {
204
+ EAuthMeFaceAntiSpoofingStatus["FrameNotEnough"] = "EAuthMeFaceAntiSpoofingStatus_FrameNotEnough";
205
+ EAuthMeFaceAntiSpoofingStatus["Real"] = "EAuthMeFaceAntiSpoofingStatus_Real";
206
+ EAuthMeFaceAntiSpoofingStatus["Spoof"] = "EAuthMeFaceAntiSpoofingStatus_Spoof";
207
+ })(exports.EAuthMeFaceAntiSpoofingStatus || (exports.EAuthMeFaceAntiSpoofingStatus = {}));
208
+
209
+ var fasRecognitionEnumModule = /*#__PURE__*/Object.freeze({
210
+ __proto__: null,
211
+ get EAuthMeFASServiceStatus () { return exports.EAuthMeFASServiceStatus; },
212
+ get EAuthMeFASServiceStage () { return exports.EAuthMeFASServiceStage; },
213
+ get EAuthMeEyeStatus () { return exports.EAuthMeEyeStatus; },
214
+ get EAuthMeMouthStatus () { return exports.EAuthMeMouthStatus; },
215
+ get EAuthMeFacePose () { return exports.EAuthMeFacePose; },
216
+ get EAuthMeFaceAntiSpoofingStatus () { return exports.EAuthMeFaceAntiSpoofingStatus; }
217
+ });
218
+
219
+ const defaultMlEngineConfig = {
220
+ token: '',
221
+ scriptPath: '/assets/',
222
+ apiBaseUrl: '/',
223
+ dataTransferMethod: 'binary'
224
+ };
225
+
226
+ var name = "@authme/engine";
227
+ var version$1 = "2.2.1-rc.5";
228
+ var peerDependencies = {
229
+ "core-js": "^3.6.0",
230
+ rxjs: "^7.4.0"
231
+ };
232
+ var packageInfo = {
233
+ name: name,
234
+ version: version$1,
235
+ peerDependencies: peerDependencies
236
+ };
237
+
238
+ var _a;
239
+ var _b, _c;
240
+ const version = packageInfo.version;
241
+ (_a = (_b = window)[_c = Symbol.for('authme-sdk')]) !== null && _a !== void 0 ? _a : _b[_c] = {};
242
+ window[Symbol.for('authme-sdk')][packageInfo.name] = version;
243
+
244
+ const getDownloadOrder = function () {
245
+ // model 越大,在後續 worker service 載入與解密的時間越長,
246
+ // 所以盡可能讓越大的檔案排在越前面下載,以便讓耗費時間長的任務先排在背景執行。
247
+ //
248
+ // 但由於 api server 目前沒有提供檔案大小的相關資訊,
249
+ // 所以將順序相關的資訊寫死在 sdk 裡。
250
+ const DOWNLOAD_ORDER = Object.fromEntries(['FACE_03', 'FACE_00', 'IDCardAntiFraud_00', 'FACE_01', 'OCR_00', 'FACE_02', 'OCR_02', 'MRZ_00', 'OCR_01', 'MRZ_01' // 375k
251
+ ].map((key, index) => [key, index]));
252
+ return function getDownloadOrder(key) {
253
+ var _a;
254
+ return (_a = DOWNLOAD_ORDER[key]) !== null && _a !== void 0 ? _a : Number.MAX_VALUE;
255
+ };
256
+ }();
257
+ function isSimdSupported() {
258
+ try {
259
+ // Test for WebAssembly SIMD capability (for both browsers and Node.js)
260
+ // This typed array is a WebAssembly program containing SIMD instructions.
261
+ return WebAssembly.validate(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 9, 1, 7, 0, 65, 0, 253, 15, 26, 11]));
262
+ } catch (e) {
263
+ return false;
264
+ }
265
+ }
266
+ function getWasmContentAsync(url) {
267
+ return core.sendRequest(url, 'GET', {
268
+ expectedResponseContentTypes: ['application/wasm'],
269
+ accessToken: null,
270
+ baseUrl: null,
271
+ sdkInfo: null
272
+ });
273
+ }
274
+ function getJsContentAsync(url) {
275
+ return core.sendRequest(url, 'GET', {
276
+ expectedResponseContentTypes: ['text/javascript', 'application/javascript'],
277
+ accessToken: null,
278
+ baseUrl: null,
279
+ sdkInfo: null
280
+ });
281
+ }
282
+ function createWorkerWithObjectUrlAsync(url) {
283
+ return __awaiter(this, void 0, void 0, function* () {
284
+ const scriptContent = yield getJsContentAsync(url);
285
+ const objectUrl = URL.createObjectURL(new Blob([scriptContent], {
286
+ type: 'text/javascript'
287
+ }));
288
+ const worker = new Worker(objectUrl);
289
+ URL.revokeObjectURL(objectUrl);
290
+ return worker;
291
+ });
292
+ }
293
+ function convertToModelQueryString(modelVersion) {
294
+ return `models=${modelVersion.name}[${modelVersion.version}]`;
295
+ }
296
+ function fetchModelCodesAsync(modelVersions) {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ const queryString = modelVersions.map(convertToModelQueryString).join('&');
299
+ const response = yield core.sendRequest('/api/model-management/v1/model?' + queryString);
300
+ return response.models;
301
+ });
302
+ }
303
+ function base64ToBufferAsync(base64) {
304
+ const dataUrl = 'data:application/octet-binary;base64,' + base64;
305
+ return fetch(dataUrl).then(res => res.arrayBuffer());
306
+ }
307
+ function fetchModelContentAsync(code, dataTransferMethod) {
308
+ return __awaiter(this, void 0, void 0, function* () {
309
+ const payload = yield core.sendRequest(`/api/model-management/v1/model/${code}${dataTransferMethod === 'binary' ? '/file' : ''}`);
310
+ if (dataTransferMethod === 'binary') {
311
+ return payload;
312
+ } else {
313
+ return yield base64ToBufferAsync(payload.data);
314
+ }
315
+ });
316
+ }
317
+ function fetchModelContents(modelVersions, dataTransferMethod) {
318
+ return rxjs.of(modelVersions).pipe(rxjs.concatMap(modelVersions => rxjs.defer(() => fetchModelCodesAsync(modelVersions))), rxjs.concatAll(), rxjs.mergeMap(({
319
+ name,
320
+ version,
321
+ code
322
+ }) => rxjs.defer(() => __awaiter(this, void 0, void 0, function* () {
323
+ return {
324
+ modelVersion: {
325
+ name,
326
+ version: `${parseInt(version)}`
327
+ },
328
+ modelArrayBuffer: yield fetchModelContentAsync(code, dataTransferMethod)
329
+ };
330
+ })), 1
331
+ // 下載 model 過程會分為 wait time & download time,
332
+ // concurrent 設定越高,只能起到降低 wait time 的作用,但會拉長單一檔案完成下載的時間,
333
+ // 這會延遲 worker service 裡,載入與解密的時間。
334
+ //
335
+ // 所以 concurrent 建議設定為 1 或 2,盡量讓已下載好的 model 儘早進行載入與解密。
336
+ ));
337
+ }
338
+
339
+ class AuthmeFunctionModule {
340
+ init(config) {
341
+ return __awaiter(this, void 0, void 0, function* () {
342
+ for (const key in config) {
343
+ if (Object.prototype.hasOwnProperty.call(config, key)) {
344
+ util.Storage.setItem(key, config[key]);
345
+ }
346
+ }
347
+ });
348
+ }
349
+ static getVersion() {
350
+ return version;
351
+ }
352
+ }
353
+ class MlEngine {
354
+ constructor(config) {
355
+ this.workerAndStreamPromise = undefined;
356
+ this.preloadPromise = undefined;
357
+ this.config = Object.assign(Object.assign(Object.assign({}, defaultMlEngineConfig), config), {
358
+ isMobile: util.isMobile()
359
+ });
360
+ }
361
+ _run(worker, workerMessage$, module, command, value = {}) {
362
+ const id = (Math.random() + 1).toString(36).substring(4) + Date.now();
363
+ worker.postMessage({
364
+ module,
365
+ command,
366
+ id,
367
+ value
368
+ });
369
+ return rxjs.firstValueFrom(workerMessage$.pipe(rxjs.filter(x => x.id === id), rxjs.map(x => x.value)));
370
+ }
371
+ _makeWorkerAndStreamAsync() {
372
+ var _a;
373
+ return __awaiter(this, void 0, void 0, function* () {
374
+ // use blobUrl to fix cross-domain problem on worker creating.
375
+ // ref:
376
+ // * https://stackoverflow.com/questions/25458104/can-should-html5-web-workers-use-cors-for-cross-origin
377
+ // * https://web.dev/workers-basics/
378
+ const worker = yield createWorkerWithObjectUrlAsync(`${(_a = this.config.scriptPath) !== null && _a !== void 0 ? _a : ''}engine-worker.js?t=${Date.now()}`);
379
+ const workerMessage$ = rxjs.fromEvent(worker, 'message').pipe(rxjs.map(x => x.data), rxjs.shareReplay(1));
380
+ yield this._run(worker, workerMessage$, exports.EngineModule.Core, 'setConfig', this.config);
381
+ return [worker, workerMessage$];
382
+ });
383
+ }
384
+ _backgroundPreloadAsync() {
385
+ var _a;
386
+ return __awaiter(this, void 0, void 0, function* () {
387
+ const [worker, workerMessage$] = yield (_a = this.workerAndStreamPromise) !== null && _a !== void 0 ? _a : this.workerAndStreamPromise = this._makeWorkerAndStreamAsync();
388
+ yield this._loadEngineAsync(worker, workerMessage$);
389
+ yield this._checkEnumConsistencyAsync(worker, workerMessage$);
390
+ return [worker, workerMessage$];
391
+ });
392
+ }
393
+ terminateWorkerAsync() {
394
+ return __awaiter(this, void 0, void 0, function* () {
395
+ if (this.workerAndStreamPromise || this.preloadPromise) {
396
+ const [worker, _] = yield this._backgroundPreloadAsync();
397
+ this.workerAndStreamPromise = undefined;
398
+ this.preloadPromise = undefined;
399
+ worker.terminate();
400
+ }
401
+ });
402
+ }
403
+ _preloadAndWaitReadyAsync() {
404
+ var _a;
405
+ return (_a = this.preloadPromise) !== null && _a !== void 0 ? _a : this.preloadPromise = this._backgroundPreloadAsync();
406
+ }
407
+ _checkEnumConsistencyAsync(worker, workerMessage$) {
408
+ return __awaiter(this, void 0, void 0, function* () {
409
+ const problem = yield this._run(worker, workerMessage$, 'Core', 'checkEnumConsistency', Object.assign(Object.assign(Object.assign({}, authEnumModule), idRecognitionEnumModule), fasRecognitionEnumModule));
410
+ if (problem.length > 0) {
411
+ throw new core.AuthmeError(core.ErrorCode.SDK_INTERNAL_ERROR, {
412
+ problem
413
+ });
414
+ }
415
+ });
416
+ }
417
+ run(module, command, value = {}) {
418
+ return __awaiter(this, void 0, void 0, function* () {
419
+ const [worker, workerMessage$] = yield this._preloadAndWaitReadyAsync();
420
+ return yield this._run(worker, workerMessage$, module, command, value);
421
+ });
422
+ }
423
+ getConfig() {
424
+ return this.config;
425
+ }
426
+ setConfig(config) {
427
+ return __awaiter(this, void 0, void 0, function* () {
428
+ this.config = Object.assign(Object.assign({}, this.config), config);
429
+ if (this.workerAndStreamPromise) {
430
+ const [worker, workerMessage$] = yield this._preloadAndWaitReadyAsync();
431
+ yield this._run(worker, workerMessage$, exports.EngineModule.Core, 'setConfig', this.config);
432
+ }
433
+ });
434
+ }
435
+ _loadEngineAsync(worker, workerMessage$) {
436
+ var _a, _b, _c, _d, _e;
437
+ return __awaiter(this, void 0, void 0, function* () {
438
+ // load js/wasm outside the worker.
439
+ const simdSupported = isSimdSupported();
440
+ const jsUrl = simdSupported ? `${(_a = this.config.scriptPath) !== null && _a !== void 0 ? _a : ''}ml_engine_web.simd.js` : `${(_b = this.config.scriptPath) !== null && _b !== void 0 ? _b : ''}ml_engine_web.js`;
441
+ const wasmUrl = simdSupported ? `${(_c = this.config.scriptPath) !== null && _c !== void 0 ? _c : ''}ml_engine_web.simd.wasm` : `${(_d = this.config.scriptPath) !== null && _d !== void 0 ? _d : ''}ml_engine_web.wasm`;
442
+ const [engineJsContent, engineWasmContent] = yield (_e = MlEngine._ENGINE_CACHE) !== null && _e !== void 0 ? _e : MlEngine._ENGINE_CACHE = Promise.all([getJsContentAsync(`${jsUrl}?t=${Date.now()}`), getWasmContentAsync(`${wasmUrl}?t=${Date.now()}`)]);
443
+ return yield this._run(worker, workerMessage$, exports.EngineModule.Core, 'loadEngine', {
444
+ engineJsContent,
445
+ engineWasmContent
446
+ });
447
+ });
448
+ }
449
+ }
450
+ MlEngine._ENGINE_CACHE = undefined;
451
+ class AuthmeEngineModuleBase {
452
+ constructor(engine) {
453
+ this._initPromise = undefined;
454
+ this.initialized = false;
455
+ this.initializing = false;
456
+ this.setSized = false;
457
+ this.received = true;
458
+ this.engine = engine;
459
+ }
460
+ _engineRunAsync(command, value) {
461
+ return this.engine.run(this.moduleName, command, value);
462
+ }
463
+ _init() {
464
+ var _a;
465
+ return __awaiter(this, void 0, void 0, function* () {
466
+ if (this.initialized) {
467
+ return true;
468
+ }
469
+ if (this.initializing) {
470
+ throw new core.AuthmeError(core.ErrorCode.ENGINE_MODULE_IS_INITIALIZING);
471
+ }
472
+ this.initializing = true;
473
+ try {
474
+ const noLoadedModelVersions = yield this._engineRunAsync('getNoLoadedModelVersions');
475
+ const noCachedModelVersions = noLoadedModelVersions.filter(({
476
+ name,
477
+ version
478
+ }) => !AuthmeEngineModuleBase._MODEL_CACHE[`${name}-${version}`]);
479
+ const newCachedValues = fetchModelContents(noCachedModelVersions.sort((a, b) => getDownloadOrder(a.name) - getDownloadOrder(b.name)), (_a = this.engine.getConfig().dataTransferMethod) !== null && _a !== void 0 ? _a : 'binary').pipe(rxjs.shareReplay());
480
+ for (const {
481
+ name,
482
+ version
483
+ } of noCachedModelVersions) {
484
+ AuthmeEngineModuleBase._MODEL_CACHE[`${name}-${version}`] = newCachedValues.pipe(rxjs.filter(({
485
+ modelVersion
486
+ }) => modelVersion.name === name && modelVersion.version === version));
487
+ }
488
+ const loadSessions$ = rxjs.from(noLoadedModelVersions).pipe(rxjs.map(({
489
+ name,
490
+ version
491
+ }) => AuthmeEngineModuleBase._MODEL_CACHE[`${name}-${version}`]), rxjs.mergeAll(), rxjs.concatMap(({
492
+ modelVersion,
493
+ modelArrayBuffer
494
+ }) => rxjs.of(this._engineRunAsync('loadSession', {
495
+ modelVersion,
496
+ modelArrayBuffer
497
+ }))), rxjs.reduce((promises, item) => {
498
+ promises.push(item);
499
+ return promises;
500
+ }, []), rxjs.concatMap(promises => rxjs.defer(() => Promise.all(promises))));
501
+ yield rxjs.firstValueFrom(loadSessions$);
502
+ const result = yield this._engineRunAsync('init');
503
+ this.initialized = true;
504
+ return result;
505
+ } catch (error) {
506
+ throw new core.AuthmeError(core.ErrorCode.ENGINE_MODULE_INIT_ERROR, error);
507
+ } finally {
508
+ this.initializing = false;
509
+ }
510
+ });
511
+ }
512
+ init() {
513
+ var _a;
514
+ return (_a = this._initPromise) !== null && _a !== void 0 ? _a : this._initPromise = this._init();
515
+ }
516
+ preloadAsync() {
517
+ return this.init();
518
+ }
519
+ startSession() {
520
+ this.received = true;
521
+ return this._engineRunAsync('start');
522
+ }
523
+ stop() {
524
+ return this._engineRunAsync('stop');
525
+ }
526
+ getReport() {
527
+ return this._engineRunAsync('getJsonReport');
528
+ }
529
+ recognition(data) {
530
+ return __awaiter(this, void 0, void 0, function* () {
531
+ // status control
532
+ if (!this.received || !this.initialized || !this.setSized) {
533
+ throw new core.AuthmeError(core.ErrorCode.RECOGNITION_NOT_AVAILABLE);
534
+ }
535
+ try {
536
+ this.received = false;
537
+ const start = performance.now();
538
+ const return$ = yield this._engineRunAsync('recognition', {
539
+ data
540
+ });
541
+ this.received = true;
542
+ return Object.assign(Object.assign({}, return$), {
543
+ debugInfo: {
544
+ inferenceTime: performance.now() - start
545
+ }
546
+ });
547
+ } catch (error) {
548
+ this.received = true;
549
+ throw new core.AuthmeError(core.ErrorCode.RECOGNITION_ERROR, error);
550
+ }
551
+ });
552
+ }
553
+ getDebugImageData(data) {
554
+ return __awaiter(this, void 0, void 0, function* () {
555
+ // status control
556
+ if (!this.received || !this.initialized || !this.setSized) {
557
+ throw new core.AuthmeError(core.ErrorCode.RECOGNITION_NOT_AVAILABLE);
558
+ }
559
+ try {
560
+ this.received = false;
561
+ const start = performance.now();
562
+ const return$ = yield this._engineRunAsync('getDebugImage', {
563
+ data
564
+ });
565
+ this.received = true;
566
+ return$.debugInfo = {
567
+ inferenceTime: performance.now() - start
568
+ };
569
+ return return$;
570
+ } catch (error) {
571
+ this.received = true;
572
+ throw new core.AuthmeError(core.ErrorCode.RECOGNITION_ERROR, error);
573
+ }
574
+ });
575
+ }
576
+ setFrameSize(width, height) {
577
+ return __awaiter(this, void 0, void 0, function* () {
578
+ const result = yield this._engineRunAsync('setFrameSize', {
579
+ width,
580
+ height
581
+ });
582
+ this.setSized = true;
583
+ return result;
584
+ });
585
+ }
586
+ getParams() {
587
+ return this._engineRunAsync('getParams');
588
+ }
589
+ setParams(params) {
590
+ return this._engineRunAsync('setParams', {
591
+ params
592
+ });
593
+ }
594
+ setMaskPosition(positions) {
595
+ return this._engineRunAsync('setMaskPosition', {
596
+ positions
597
+ });
598
+ }
599
+ destroy() {
600
+ return __awaiter(this, void 0, void 0, function* () {
601
+ yield this._engineRunAsync('destroy');
602
+ this.initialized = false;
603
+ this._initPromise = undefined;
604
+ return true;
605
+ });
606
+ }
607
+ static reset_MODEL_CACHE() {
608
+ this._MODEL_CACHE = {};
609
+ }
610
+ }
611
+ AuthmeEngineModuleBase._MODEL_CACHE = {};
612
+
613
+ exports.AuthmeEngineModuleBase = AuthmeEngineModuleBase;
614
+ exports.AuthmeFunctionModule = AuthmeFunctionModule;
615
+ exports.MlEngine = MlEngine;
616
+ exports.defaultMlEngineConfig = defaultMlEngineConfig;
617
+ exports.version = version;