From 94b231581dab424d78caca016254f1ae2cdec1b1 Mon Sep 17 00:00:00 2001 From: jenkins Date: Wed, 10 Dec 2025 13:34:44 +0000 Subject: [PATCH] Jenkins: updated generated files --- RELEASE_NOTES.md | 12 + packages/blinkid-core/CHANGELOG.md | 17 +- .../type-aliases/HardwareCameraInfoData.md | 4 + .../type-aliases/PingHardwareCameraInfo.md | 2 +- .../type-aliases/PingSdkCameraInputInfo.md | 2 +- .../type-aliases/SdkCameraInputInfoData.md | 6 + packages/blinkid-core/package.json | 2 +- packages/blinkid-core/src/BlinkIdCore.ts | 7 +- .../src/shouldUseLightweightBuild.test.ts | 209 ++++++++++++++ .../src/shouldUseLightweightBuild.ts | 32 +++ packages/blinkid-ux-manager/CHANGELOG.md | 8 + packages/blinkid-ux-manager/package.json | 2 +- .../src/core/ping-camera-utils.ts | 2 + .../src/shared/ping-implementations.ts | 4 +- packages/blinkid-wasm/CHANGELOG.md | 6 + .../full/advanced-threads/BlinkIdModule.js | 22 +- .../full/advanced-threads/BlinkIdModule.wasm | Bin 3309330 -> 3308759 bytes .../dist/full/advanced/BlinkIdModule.js | 8 +- .../dist/full/advanced/BlinkIdModule.wasm | Bin 3261161 -> 3261875 bytes .../dist/full/basic/BlinkIdModule.js | 18 +- .../dist/full/basic/BlinkIdModule.wasm | Bin 3242571 -> 3242861 bytes .../advanced-threads/BlinkIdModule.js | 21 +- .../advanced-threads/BlinkIdModule.wasm | Bin 3343822 -> 3343810 bytes .../lightweight/advanced/BlinkIdModule.js | 6 +- .../lightweight/advanced/BlinkIdModule.wasm | Bin 3298193 -> 3298460 bytes .../dist/lightweight/basic/BlinkIdModule.js | 10 +- .../dist/lightweight/basic/BlinkIdModule.wasm | Bin 3280459 -> 3280274 bytes packages/blinkid-wasm/dist/size-manifest.json | 12 +- .../type-aliases/HardwareCameraInfoData.md | 4 + .../type-aliases/PingHardwareCameraInfo.md | 2 +- .../type-aliases/PingSdkCameraInputInfo.md | 2 +- .../type-aliases/SdkCameraInputInfoData.md | 6 + packages/blinkid-wasm/package.json | 2 +- .../src/ping/ping.hardware.camera.info.ts | 3 +- .../src/ping/ping.sdk.camera.input.info.ts | 3 +- packages/blinkid-worker/CHANGELOG.md | 11 +- packages/blinkid-worker/package.json | 2 +- packages/blinkid/CHANGELOG.md | 9 + .../type-aliases/HardwareCameraInfoData.md | 4 + .../type-aliases/PingHardwareCameraInfo.md | 2 +- .../type-aliases/PingSdkCameraInputInfo.md | 2 +- .../type-aliases/SdkCameraInputInfoData.md | 6 + packages/blinkid/package.json | 2 +- packages/camera-manager/CHANGELOG.md | 7 + packages/camera-manager/package.json | 2 +- .../camera-manager/src/core/Camera.test.ts | 18 +- packages/camera-manager/src/core/Camera.ts | 37 ++- .../camera-manager/src/core/CameraManager.ts | 2 +- .../src/core/cameraUtils.test.ts | 18 +- .../camera-manager/src/core/cameraUtils.ts | 46 +-- packages/camera-manager/src/core/utils.ts | 5 + .../src/media-mock/MediaMocker.ts | 6 +- .../src/media-mock/createInputDeviceInfo.ts | 9 +- .../src/media-mock/fake-devices.ts | 13 +- .../src/media-mock/fakeDevices/iPhoneX.ts | 116 ++++++++ .../src/tests/camera-picking.test.ts | 264 +++++++++--------- 56 files changed, 752 insertions(+), 263 deletions(-) create mode 100644 packages/blinkid-core/src/shouldUseLightweightBuild.test.ts create mode 100644 packages/blinkid-core/src/shouldUseLightweightBuild.ts create mode 100644 packages/camera-manager/src/media-mock/fakeDevices/iPhoneX.ts diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index a978311..72af59e 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,15 @@ +## v7.6.3 + +### Improvements + +- Improved automatic lightweight build detection for mobile devices + - Now uses Device Memory API to detect low-memory devices (< 4GB) + - Applies to all mobile devices (phones and tablets) with available memory information + - Falls back to `undefined` when memory information is unavailable, allowing manual configuration + - Previously used a simple user agent check for all mobile devices +- Updated the camera picking logic +- Improved error handling on the `Camera` class + ## 7.6.2 ### Bugfixes diff --git a/packages/blinkid-core/CHANGELOG.md b/packages/blinkid-core/CHANGELOG.md index 310d96d..f3716d4 100644 --- a/packages/blinkid-core/CHANGELOG.md +++ b/packages/blinkid-core/CHANGELOG.md @@ -1,12 +1,25 @@ # @microblink/blinkid-core +## 7.6.3 + +### Patch Changes + +- Improved automatic lightweight build detection for mobile devices + - Now uses Device Memory API to detect low-memory devices (< 4GB) + - Applies to all mobile devices (phones and tablets) with available memory information + - Falls back to `undefined` when memory information is unavailable, allowing manual configuration + - Previously used a simple user agent check for all mobile devices +- Updated dependencies + - @microblink/blinkid-worker@7.6.3 + - @microblink/blinkid-wasm@7.6.3 + ## 7.6.2 ### Patch Changes - Fixes `microblinkProxyUrl` handling - - Prevent an extra ping to the Microblink server when a proxy URL is configured (previously one redundant request was sent). - - Preserve the user-provided path when using a proxy URL (previously the path was removed). + - Prevent an extra ping to the Microblink server when a proxy URL is configured (previously one redundant request was sent). + - Preserve the user-provided path when using a proxy URL (previously the path was removed). - Updated dependencies - @microblink/blinkid-wasm@7.6.2 - @microblink/blinkid-worker@7.6.2 diff --git a/packages/blinkid-core/docs/type-aliases/HardwareCameraInfoData.md b/packages/blinkid-core/docs/type-aliases/HardwareCameraInfoData.md index 367aa5d..8d08e72 100644 --- a/packages/blinkid-core/docs/type-aliases/HardwareCameraInfoData.md +++ b/packages/blinkid-core/docs/type-aliases/HardwareCameraInfoData.md @@ -24,6 +24,10 @@ Represents the data for the `ping.hardware.camera.info` event. > **cameraFacing**: `"Front"` \| `"Back"` \| `"Unknown"` +#### deviceId + +> **deviceId**: `string` + #### focus? > `optional` **focus**: `"Auto"` \| `"Fixed"` diff --git a/packages/blinkid-core/docs/type-aliases/PingHardwareCameraInfo.md b/packages/blinkid-core/docs/type-aliases/PingHardwareCameraInfo.md index 9719368..d884679 100644 --- a/packages/blinkid-core/docs/type-aliases/PingHardwareCameraInfo.md +++ b/packages/blinkid-core/docs/type-aliases/PingHardwareCameraInfo.md @@ -6,6 +6,6 @@ # Type Alias: PingHardwareCameraInfo -> **PingHardwareCameraInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`HardwareCameraInfoData`](HardwareCameraInfoData.md), `"ping.hardware.camera.info"`, `"1.0.1"`, `0`\> +> **PingHardwareCameraInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`HardwareCameraInfoData`](HardwareCameraInfoData.md), `"ping.hardware.camera.info"`, `"1.0.3"`, `0`\> Represents the `ping.hardware.camera.info` event. diff --git a/packages/blinkid-core/docs/type-aliases/PingSdkCameraInputInfo.md b/packages/blinkid-core/docs/type-aliases/PingSdkCameraInputInfo.md index 0416b16..353680f 100644 --- a/packages/blinkid-core/docs/type-aliases/PingSdkCameraInputInfo.md +++ b/packages/blinkid-core/docs/type-aliases/PingSdkCameraInputInfo.md @@ -6,6 +6,6 @@ # Type Alias: PingSdkCameraInputInfo -> **PingSdkCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`SdkCameraInputInfoData`](SdkCameraInputInfoData.md), `"ping.sdk.camera.input.info"`, `"1.0.1"`\> +> **PingSdkCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`SdkCameraInputInfoData`](SdkCameraInputInfoData.md), `"ping.sdk.camera.input.info"`, `"1.0.2"`\> Represents the `ping.sdk.camera.input.info` event. diff --git a/packages/blinkid-core/docs/type-aliases/SdkCameraInputInfoData.md b/packages/blinkid-core/docs/type-aliases/SdkCameraInputInfoData.md index 16ec019..183b435 100644 --- a/packages/blinkid-core/docs/type-aliases/SdkCameraInputInfoData.md +++ b/packages/blinkid-core/docs/type-aliases/SdkCameraInputInfoData.md @@ -30,6 +30,12 @@ Represents the data for the `ping.sdk.camera.input.info` event. *** +### deviceId + +> **deviceId**: `string` + +*** + ### roiHeight > **roiHeight**: `number` diff --git a/packages/blinkid-core/package.json b/packages/blinkid-core/package.json index 48873c6..9faa2d2 100644 --- a/packages/blinkid-core/package.json +++ b/packages/blinkid-core/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkid-core", "description": "BlinkID Core SDK", - "version": "7.6.2", + "version": "7.6.3", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", diff --git a/packages/blinkid-core/src/BlinkIdCore.ts b/packages/blinkid-core/src/BlinkIdCore.ts index 983ff9a..bcfc3aa 100644 --- a/packages/blinkid-core/src/BlinkIdCore.ts +++ b/packages/blinkid-core/src/BlinkIdCore.ts @@ -12,6 +12,7 @@ import { createProxyWorker } from "./createProxyWorker"; import { getUserId } from "./getUserId"; import { proxy, Remote } from "comlink"; import { defaultSessionSettings } from "./defaultSessionSettings"; +import { shouldUseLightweightBuild } from "./shouldUseLightweightBuild"; /** * Configuration options for initializing the BlinkID core. @@ -56,11 +57,7 @@ export async function loadBlinkIdCore( } if (settings.useLightweightBuild === undefined) { - // use only on desktop devices - settings.useLightweightBuild = - /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( - navigator.userAgent, - ); + settings.useLightweightBuild = await shouldUseLightweightBuild(); } const proxyProgressCallback = progressCallback diff --git a/packages/blinkid-core/src/shouldUseLightweightBuild.test.ts b/packages/blinkid-core/src/shouldUseLightweightBuild.test.ts new file mode 100644 index 0000000..e5c797b --- /dev/null +++ b/packages/blinkid-core/src/shouldUseLightweightBuild.test.ts @@ -0,0 +1,209 @@ +/** + * Copyright (c) 2025 Microblink Ltd. All rights reserved. + */ + +import { describe, it, expect, vi, beforeEach } from "vitest"; +import { shouldUseLightweightBuild } from "./shouldUseLightweightBuild"; +import * as deviceInfoModule from "./deviceInfo/deviceInfo"; +import type { DeviceInfo } from "./deviceInfo/deviceInfo"; + +// Mock the getDeviceInfo function +vi.mock("./deviceInfo/deviceInfo", () => ({ + getDeviceInfo: vi.fn(), +})); + +describe("shouldUseLightweightBuild", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("should return true for mobile device with less than 4GB memory", async () => { + const mockDeviceInfo: Partial = { + memory: 2.0, + derivedDeviceInfo: { + formFactors: ["Mobile"], + model: "Test Phone", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(true); + }); + + it("should return false for mobile device with 4GB or more memory", async () => { + const mockDeviceInfo: Partial = { + memory: 4.0, + derivedDeviceInfo: { + formFactors: ["Mobile"], + model: "Test Phone", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(false); + }); + + it("should return true for mobile device with 2GB memory", async () => { + const mockDeviceInfo: Partial = { + memory: 2, + derivedDeviceInfo: { + formFactors: ["Mobile"], + model: "Test Phone", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(true); + }); + + it("should return true for tablet device with less than 4GB memory", async () => { + const mockDeviceInfo: Partial = { + memory: 2.0, + derivedDeviceInfo: { + formFactors: ["Tablet"], + model: "Test Tablet", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(true); + }); + + it("should return undefined for mobile device without memory info", async () => { + const mockDeviceInfo: Partial = { + memory: undefined, + derivedDeviceInfo: { + formFactors: ["Mobile"], + model: "Test Phone", + platform: "iOS", + browser: { brand: "Safari", version: "17.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBeUndefined(); + }); + + it("should return undefined for desktop device with memory info", async () => { + const mockDeviceInfo: Partial = { + memory: 8.0, + derivedDeviceInfo: { + formFactors: ["Desktop"], + model: "Mac", + platform: "macOS", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBeUndefined(); + }); + + it("should return undefined for desktop device without memory info", async () => { + const mockDeviceInfo: Partial = { + memory: undefined, + derivedDeviceInfo: { + formFactors: ["Desktop"], + model: "Mac", + platform: "macOS", + browser: { brand: "Safari", version: "17.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBeUndefined(); + }); + + it("should handle device with multiple form factors including Mobile", async () => { + const mockDeviceInfo: Partial = { + memory: 2.0, + derivedDeviceInfo: { + formFactors: ["Mobile", "Tablet"], + model: "Test Device", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(true); + }); + + it("should return true for very low memory mobile device (1GB)", async () => { + const mockDeviceInfo: Partial = { + memory: 1, + derivedDeviceInfo: { + formFactors: ["Mobile"], + model: "Budget Phone", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(true); + }); + + it("should return false for high-end mobile device (8GB)", async () => { + const mockDeviceInfo: Partial = { + memory: 8.0, + derivedDeviceInfo: { + formFactors: ["Mobile"], + model: "Flagship Phone", + platform: "Android", + browser: { brand: "Chrome", version: "120.0" }, + }, + }; + + vi.mocked(deviceInfoModule.getDeviceInfo).mockResolvedValue( + mockDeviceInfo as DeviceInfo, + ); + + const result = await shouldUseLightweightBuild(); + expect(result).toBe(false); + }); +}); diff --git a/packages/blinkid-core/src/shouldUseLightweightBuild.ts b/packages/blinkid-core/src/shouldUseLightweightBuild.ts new file mode 100644 index 0000000..69d89b5 --- /dev/null +++ b/packages/blinkid-core/src/shouldUseLightweightBuild.ts @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2025 Microblink Ltd. All rights reserved. + */ + +import { getDeviceInfo } from "./deviceInfo/deviceInfo"; + +/** + * Determines whether to use the lightweight build based on device capabilities. + * + * This function checks if the device is mobile (Mobile or Tablet form factor) and + * has less than 4GB of memory. The lightweight build is only used for low-budget + * mobile devices where memory information is available. For iOS device this will always + * return undefined, since we don't have memory information. + * + * @returns `true` if lightweight build should be used, `false` if full build should be used, + * or `undefined` if the decision cannot be made (e.g., memory info unavailable) + */ +export async function shouldUseLightweightBuild(): Promise< + boolean | undefined +> { + const deviceInfo = await getDeviceInfo(); + + const isMobile = deviceInfo.derivedDeviceInfo.formFactors.some( + (formFactor) => formFactor === "Mobile" || formFactor === "Tablet", + ); + if (isMobile && deviceInfo.memory !== undefined) { + return deviceInfo.memory < 4; + } + + // If not mobile or memory info unavailable, return undefined + return undefined; +} diff --git a/packages/blinkid-ux-manager/CHANGELOG.md b/packages/blinkid-ux-manager/CHANGELOG.md index 80f704a..67eee09 100644 --- a/packages/blinkid-ux-manager/CHANGELOG.md +++ b/packages/blinkid-ux-manager/CHANGELOG.md @@ -1,5 +1,13 @@ # @microblink/blinkid-ux-manager +## 7.6.3 + +### Patch Changes + +- Updated dependencies + - @microblink/camera-manager@7.2.7 + - @microblink/blinkid-core@7.6.3 + ## 7.6.2 ### Patch Changes diff --git a/packages/blinkid-ux-manager/package.json b/packages/blinkid-ux-manager/package.json index 8eb668c..d5a27da 100644 --- a/packages/blinkid-ux-manager/package.json +++ b/packages/blinkid-ux-manager/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkid-ux-manager", "description": "BlinkID UX Manager provides user feedback based on the blinkid process results.", - "version": "7.6.2", + "version": "7.6.3", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", diff --git a/packages/blinkid-ux-manager/src/core/ping-camera-utils.ts b/packages/blinkid-ux-manager/src/core/ping-camera-utils.ts index e97cf88..c6aa08d 100644 --- a/packages/blinkid-ux-manager/src/core/ping-camera-utils.ts +++ b/packages/blinkid-ux-manager/src/core/ping-camera-utils.ts @@ -30,6 +30,7 @@ export const createCameraInputInfo = ({ : videoResolution.height; return new PingSdkCameraInputInfoImpl({ + deviceId: selectedCamera.name, cameraFacing: mapCameraFacingToPingFacing(selectedCamera.facingMode), cameraFrameWidth: videoResolution.width, cameraFrameHeight: videoResolution.height, @@ -56,6 +57,7 @@ export const mapCameraFacingToPingFacing = ( export const convertCameraToPingCamera = (camera: Camera): PingCamera => { return { + deviceId: camera.name, cameraFacing: mapCameraFacingToPingFacing(camera.facingMode), /** we can't know this */ availableResolutions: undefined, diff --git a/packages/blinkid-ux-manager/src/shared/ping-implementations.ts b/packages/blinkid-ux-manager/src/shared/ping-implementations.ts index a2bd9a0..959c87e 100644 --- a/packages/blinkid-ux-manager/src/shared/ping-implementations.ts +++ b/packages/blinkid-ux-manager/src/shared/ping-implementations.ts @@ -60,7 +60,7 @@ export class PingHardwareCameraInfoImpl implements PingHardwareCameraInfo { readonly data: HardwareCameraInfoData; readonly schemaName = "ping.hardware.camera.info"; - readonly schemaVersion = "1.0.1"; + readonly schemaVersion = "1.0.3"; readonly sessionNumber = 0; } @@ -81,7 +81,7 @@ export class PingSdkCameraInputInfoImpl implements PingSdkCameraInputInfo { readonly data: SdkCameraInputInfoData; readonly schemaName = "ping.sdk.camera.input.info"; - readonly schemaVersion = "1.0.1"; + readonly schemaVersion = "1.0.2"; } export class PingSdkCameraPermissionImpl implements PingSdkCameraPermission { diff --git a/packages/blinkid-wasm/CHANGELOG.md b/packages/blinkid-wasm/CHANGELOG.md index 18a47fd..1032c78 100644 --- a/packages/blinkid-wasm/CHANGELOG.md +++ b/packages/blinkid-wasm/CHANGELOG.md @@ -1,5 +1,11 @@ # @microblink/blinkid-wasm +## 7.6.3 + +### Patch Changes + +- Update version + ## 7.6.2 ### Patch Changes diff --git a/packages/blinkid-wasm/dist/full/advanced-threads/BlinkIdModule.js b/packages/blinkid-wasm/dist/full/advanced-threads/BlinkIdModule.js index a669957..03c4fda 100644 --- a/packages/blinkid-wasm/dist/full/advanced-threads/BlinkIdModule.js +++ b/packages/blinkid-wasm/dist/full/advanced-threads/BlinkIdModule.js @@ -1,16 +1,16 @@ async function createModule(moduleArg={}){var moduleRtn;var h=moduleArg,ba="object"==typeof window,ca="undefined"!=typeof WorkerGlobalScope,n=ca&&self.name?.startsWith("em-pthread");let da;(da=h).expectedDataFileDownloads??(da.expectedDataFileDownloads=0);h.expectedDataFileDownloads++; (()=>{var a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof n&&n||a||function(b){function c(m,r,p){let w;(w=h).dataFileDownloads??(w.dataFileDownloads={});fetch(m).catch(v=>Promise.reject(Error(`Network Error: ${m}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(p);const t=v.body.getReader(),y=()=>t.read().then(L).catch(u=>Promise.reject(Error(`Unexpected error while handling : ${v.url} ${u}`, {cause:u}))),A=[],J=Number(v.headers.get("Content-Length")??r);let F=0;const L=({done:u,value:H})=>{if(u){var G=new Uint8Array(A.map(aa=>aa.length).reduce((aa,qa)=>aa+qa,0));u=0;for(var C of A)G.set(C,u),u+=C.length;p(G.buffer)}else{A.push(H);F+=H.length;h.dataFileDownloads[m]={loaded:F,total:J};u=C=0;for(G of Object.values(h.dataFileDownloads))C+=G.loaded,u+=G.total;h.setStatus?.(`Downloading data... (${C}/${u})`);return y()}};h.setStatus?.("Downloading data...");return y()})}function d(m){console.error("package error:", -m)}function e(m){function r(t,y,A){this.start=t;this.end=y;this.audio=A}function p(t){if(!t)throw"Loading data file failed."+Error().stack;if(t.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;t=new Uint8Array(t);r.prototype.wc=t;t=b.files;for(var y=0;y{k?(k(m),k=null):l=m},d);if(h.calledRun)e(h);else{let m;((m=h).preRun??(m.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop",start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop", -start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop",start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop", -start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8326c5065a6d8451d6d004db73babf4a4a9f502c68643a14934cc098d04bf44f.strop",start:5147659,end:5535353},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop",start:5535353,end:6562208},{filename:"/microblink/blinkid/Model_93607315418f2c5d3abec06d0b2a81e69abeb1b8d0506ed6373d7d74bd5e4b05.strop", -start:6562208,end:7807199},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:7807199,end:8103001},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop",start:8103001,end:8109497},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:8109497,end:9532942},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop", -start:9532942,end:9608344},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:9608344,end:10271397},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop",start:10271397,end:10287070},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop",start:10287070,end:10359768},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:10359768, -end:10380237},{filename:"/microblink/blinkid/serialized_embedder_db_1.9.bin",start:10380237,end:13393962}],remote_package_size:13393962})})();h.onAbort=function(a){q("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){q("Stacktrace: "+b.stack)}};h="undefined"!==typeof h?h:{}; -(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!h.locateFile&&(h.locateFile=function(d,e){return"BlinkIdModule.wasm"===d?a:e+d})})();var ea="./this.program",fa=import.meta.url,ha="",ia,ja; +m)}function e(m){function r(t,y,A){this.start=t;this.end=y;this.audio=A}function p(t){if(!t)throw"Loading data file failed."+Error().stack;if(t.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;t=new Uint8Array(t);r.prototype.wc=t;t=b.files;for(var y=0;y{k?(k(m),k=null):l=m},d);if(h.calledRun)e(h);else{let m;((m=h).preRun??(m.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", +start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8326c5065a6d8451d6d004db73babf4a4a9f502c68643a14934cc098d04bf44f.strop", +start:5147659,end:5535353},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop",start:5535353,end:6562208},{filename:"/microblink/blinkid/Model_93607315418f2c5d3abec06d0b2a81e69abeb1b8d0506ed6373d7d74bd5e4b05.strop",start:6562208,end:7807199},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:7807199,end:8103001},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop", +start:8103001,end:8109497},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:8109497,end:9532942},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop",start:9532942,end:9608344},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:9608344,end:10271397},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop", +start:10271397,end:10287070},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop",start:10287070,end:10359768},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:10359768,end:10380237},{filename:"/microblink/blinkid/serialized_embedder_db_1.9.bin",start:10380237,end:13393962}],remote_package_size:13393962})})();h.onAbort=function(a){q("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){q("Stacktrace: "+b.stack)}}; +h="undefined"!==typeof h?h:{};(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!h.locateFile&&(h.locateFile=function(d,e){return"BlinkIdModule.wasm"===d?a:e+d})})();var ea="./this.program",fa=import.meta.url,ha="",ia,ja; if(ba||ca){try{ha=(new URL(".",fa)).href}catch{}ca&&(ja=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ia=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ka=console.log.bind(console),q=console.error.bind(console),la,ma,na=!1,oa;function x(){pa.buffer!=z.buffer&&ra()}var sa,ta,ua,va; if(n){var wa=!1;self.onunhandledrejection=b=>{throw b.reason||b;};function a(b){try{var c=b.data,d=c.nb;if("load"===d){let e=[];self.onmessage=f=>e.push(f);va=()=>{postMessage({nb:"loaded"});for(let f of e)a(f);self.onmessage=a};for(const f of c.Hc)if(!h[f]||h[f].proxy)h[f]=(...g)=>{postMessage({nb:"callHandler",Gc:f,tc:g})},"print"==f&&(ka=h[f]),"printErr"==f&&(q=h[f]);pa=c.gd;ra();ua(c.hd)}else if("run"===d){xa(c.jb);ya(c.jb,0,0,1,0,0);za();Aa(c.jb);wa||(Ba(),wa=!0);try{Ca(c.cd,c.Tb)}catch(e){if("unwind"!= e)throw e;}}else"setimmediate"!==c.target&&("checkMailbox"===d?wa&&Da():d&&(q(`worker: received unknown command ${d}`),q(c)))}catch(e){throw Ea(),e;}}self.onmessage=a}var pa,z,B,D,Fa,E,I,Ga,Ha,K,Ia,Ja=!1;function ra(){var a=pa.buffer;z=new Int8Array(a);D=new Int16Array(a);B=new Uint8Array(a);Fa=new Uint16Array(a);E=new Int32Array(a);I=new Uint32Array(a);Ga=new Float32Array(a);Ha=new Float64Array(a);K=new BigInt64Array(a);Ia=new BigUint64Array(a)} @@ -137,7 +137,7 @@ Object.assign(Re.prototype,{Cc(a){this.pc&&(a=this.pc(a));return a},jc(a){this.k e?b.call(this):this.Kb?Qe(d.Ra.ub,{Ua:d,Sa:e,eb:this,Za:a}):Qe(d.Ra.ub,{Ua:d,Sa:e})}});Gf=new If;n||(Ta("library_fetch_init"),Jf(a=>{Kf=a;Ua("library_fetch_init")},()=>{Kf=!1;Ua("library_fetch_init")}));n||(pa=h.wasmMemory?h.wasmMemory:new WebAssembly.Memory({initial:(h.INITIAL_MEMORY||209715200)/65536,maximum:32768,shared:!0}),ra());h.noExitRuntime&&(Hc=h.noExitRuntime);h.preloadPlugins&&(yd=h.preloadPlugins);h.print&&(ka=h.print);h.printErr&&(q=h.printErr);h.wasmBinary&&(la=h.wasmBinary); h.thisProgram&&(ea=h.thisProgram);h.addRunDependency=Ta;h.removeRunDependency=Ua;h.FS_createPreloadedFile=(a,b,c,d,e,f,g,k,l,m)=>{function r(v){function t(y){m?.();k||fe(a,b,y,d,e,l);f?.();Ua(w)}zd(v,p,t,()=>{g?.();Ua(w)})||t(v)}var p=b?cd(Zc(a+"/"+b)):a,w=`cp ${p}`;Ta(w);"string"==typeof c?xd(c).then(r,g):r(c)};h.FS_unlink=(...a)=>Yd(...a);h.FS_createPath=(...a)=>de(...a);h.FS_createDevice=(...a)=>Ma(...a);h.FS_createDataFile=(...a)=>fe(...a);h.FS_createLazyFile=(...a)=>he(...a); var tf=[rc,Ic,Vc,db,eb,fb,gb,hb,ib,jb,function(a,b,c,d,e,f,g){if(n)return N(10,1,a,b,c,d,e,f,g);e=-9007199254740992>e||9007199254740992>2]=l.qb;(x(),I)[g>>2]=m;return 0}catch(r){if("undefined"==typeof S||"ErrnoError"!==r.name)throw r;return-r.Wa}},function(a,b,c,d,e,f){if(n)return N(11, -1,a,b,c,d,e,f);f=-9007199254740992>f||9007199254740992{a=T(a);b=T(b);c=T(c);d=T(d);throw Error(a+b+c+d);},336002:(a,b)=>{a=T(a);b=T(b);throw Error(a+b);}}; +1,a,b,c,d,e,f);f=-9007199254740992>f||9007199254740992{a=T(a);b=T(b);c=T(c);d=T(d);throw Error(a+b+c+d);},336018:(a,b)=>{a=T(a);b=T(b);throw Error(a+b);}}; function Xb(){var a=h.allowedThreads;return a?a:navigator.hardwareConcurrency}function qc(){var a=self.navigator.userAgent,b=hd(a)+1,c=ff(b);Y(a,c,b);return c}function pc(){var a=stackTrace(),b=hd(a)+1,c=ff(b);Y(a,c,b);return c}var Ue,Ba,Ve,ff,Oc,rd,ya,Ea,Fc,Mc,Uc,Df,qf,Qc,Gc,Ec,Dc;h.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=93824; var ab,Pa=await (async function(){function a(c,d){Pa=c.exports;Jc.push(Pa.za);Sc=Pa.Ba;ma=d;c=Pa;Ue=c.ua;Ba=c.va;Ve=c.wa;ff=c.xa;Oc=c.ya;rd=c.Aa;ya=c.Ca;Ea=c.Da;Fc=c.Ea;Mc=c.Fa;Uc=c.Ga;Df=c.Ha;qf=c.Ia;Qc=c.Ja;Gc=c.Ka;Ec=c.La;Dc=c.Ma;Ua("wasm-instantiate");return Pa}Ta("wasm-instantiate");var b=$a();if(h.instantiateWasm)return new Promise(c=>{h.instantiateWasm(b,(d,e)=>{c(a(d,e))})});if(n)return new Promise(c=>{ua=d=>{var e=new WebAssembly.Instance(d,$a());c(a(e,d))}});Wa??=h.locateFile? h.locateFile?h.locateFile("BlinkIdModule.wasm",ha):ha+"BlinkIdModule.wasm":(new URL("BlinkIdModule.wasm",import.meta.url)).href;return function(c){return a(c.instance,c.module)}(await Za(b))}()); diff --git a/packages/blinkid-wasm/dist/full/advanced-threads/BlinkIdModule.wasm b/packages/blinkid-wasm/dist/full/advanced-threads/BlinkIdModule.wasm index 96990c45bdf341ac02c38c2abc2782af57bfc5c3..86eeca6a303456ce6d272eb68c9d8f04f0b51dc8 100755 GIT binary patch delta 28010 zcmb`w33yY**FT=Q_a;qlk~Sr2lQe0Y6lg=+u!%)>E&`%}h#TU9+ZUCBAc~3$w(MJ3 zTNri#S0TBvRMXXSuEGlZ*x1u1w&)l0d#n z)CcglRoWJ?s?&N%rlp2a{w0Qy{*Ut?$@G{O8?N~l8Ls*Y^M_>qNUHO@1>K%%>E&OO z55>;+&GXIm{Y74$lFuer z=UWNPi6D75}f`b~Oyi*bvwNaR0zV!jYm))&SvLaeXnkbHtq zr_9Q4o0aICwb!BGw}GhZKzwA)m{H9|9dZ}HnYBe~cy_-dAn5!A(r5NNvIL_~=ObBy zML~j3%o0GUK&jmCP%87EZPikL2-u_MpT|6 zbh7Gv0e!R$c#g50kR|&)anmRcdMP>dGrs%Cww11r#p=`uj*%kA;{+ z9KTU1)tVNi==^%6L?Z;Dy;81aF(~EvgW7i{<@uZ1cacK{5@lz;QF+Q%wci0%YM7

#zhtDF%yzWZO?d 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 a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof ENVIRONMENT_IS_PTHREAD&&ENVIRONMENT_IS_PTHREAD||a||function(b){function c(k,u,n){let q;(q=m).dataFileDownloads??(q.dataFileDownloads={});fetch(k).catch(v=>Promise.reject(Error(`Network Error: ${k}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(n);const p=v.body.getReader(),x=()=>p.read().then(K).catch(t=> Promise.reject(Error(`Unexpected error while handling : ${v.url} ${t}`,{cause:t}))),z=[],I=Number(v.headers.get("Content-Length")??u);let E=0;const K=({done:t,value:G})=>{if(t){var F=new Uint8Array(z.map(T=>T.length).reduce((T,ka)=>T+ka,0));t=0;for(var C of z)F.set(C,t),t+=C.length;n(F.buffer)}else{z.push(G);E+=G.length;m.dataFileDownloads[k]={loaded:E,total:I};t=C=0;for(F of Object.values(m.dataFileDownloads))C+=F.loaded,t+=F.total;m.setStatus?.(`Downloading data... (${C}/${t})`);return x()}};m.setStatus?.("Downloading data..."); -return x()})}function d(k){console.error("package error:",k)}function e(k){function u(p,x,z){this.start=p;this.end=x;this.audio=z}function n(p){if(!p)throw"Loading data file failed."+Error().stack;if(p.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;p=new Uint8Array(p);u.prototype.Ub=p;p=b.files;for(var x=0;x{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop",start:0, -end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +q[v].filename);k.addRunDependency("datafile_/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/full/advanced/BlinkIdModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/full/advanced/BlinkIdModule.data"]={Gc:!1};l?(n(l),l=null):h=n}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+ +"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var f=m.locateFile?m.locateFile("BlinkIdModule.data",""):"BlinkIdModule.data",g=b.remote_package_size,h=null,l=m.getPreloadedPackage?m.getPreloadedPackage(f,g):null;l||c(f,g,k=>{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", +start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8326c5065a6d8451d6d004db73babf4a4a9f502c68643a14934cc098d04bf44f.strop", start:5147659,end:5535353},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop",start:5535353,end:6562208},{filename:"/microblink/blinkid/Model_93607315418f2c5d3abec06d0b2a81e69abeb1b8d0506ed6373d7d74bd5e4b05.strop",start:6562208,end:7807199},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:7807199,end:8103001},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop", start:8103001,end:8109497},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:8109497,end:9532942},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop",start:9532942,end:9608344},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:9608344,end:10271397},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop", diff --git a/packages/blinkid-wasm/dist/full/advanced/BlinkIdModule.wasm b/packages/blinkid-wasm/dist/full/advanced/BlinkIdModule.wasm index 5a35437d2e0d4b5743e1deab9380e890a9fef370..9a497a8f847e9fe6a31d993a60ccee99eab5d478 100755 GIT binary patch delta 14760 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 G^Zx;Hmae4$ diff --git a/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.js b/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.js index a6b10f5..221b849 100644 --- a/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.js +++ b/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.js @@ -1,16 +1,16 @@ async function createModule(moduleArg={}){var moduleRtn;var m=moduleArg,aa="object"==typeof window,ba="undefined"!=typeof WorkerGlobalScope;let ca;(ca=m).expectedDataFileDownloads??(ca.expectedDataFileDownloads=0);m.expectedDataFileDownloads++; (()=>{var a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof ENVIRONMENT_IS_PTHREAD&&ENVIRONMENT_IS_PTHREAD||a||function(b){function c(k,u,n){let q;(q=m).dataFileDownloads??(q.dataFileDownloads={});fetch(k).catch(v=>Promise.reject(Error(`Network Error: ${k}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(n);const p=v.body.getReader(),x=()=>p.read().then(K).catch(r=> Promise.reject(Error(`Unexpected error while handling : ${v.url} ${r}`,{cause:r}))),z=[],I=Number(v.headers.get("Content-Length")??u);let E=0;const K=({done:r,value:G})=>{if(r){var F=new Uint8Array(z.map(T=>T.length).reduce((T,ka)=>T+ka,0));r=0;for(var C of z)F.set(C,r),r+=C.length;n(F.buffer)}else{z.push(G);E+=G.length;m.dataFileDownloads[k]={loaded:E,total:I};r=C=0;for(F of Object.values(m.dataFileDownloads))C+=F.loaded,r+=F.total;m.setStatus?.(`Downloading data... (${C}/${r})`);return x()}};m.setStatus?.("Downloading data..."); -return x()})}function d(k){console.error("package error:",k)}function e(k){function u(p,x,z){this.start=p;this.end=x;this.audio=z}function n(p){if(!p)throw"Loading data file failed."+Error().stack;if(p.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;p=new Uint8Array(p);u.prototype.Tb=p;p=b.files;for(var x=0;x{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop",start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop", -start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop",start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop", -start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8326c5065a6d8451d6d004db73babf4a4a9f502c68643a14934cc098d04bf44f.strop",start:5147659,end:5535353},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop", -start:5535353,end:6562208},{filename:"/microblink/blinkid/Model_93607315418f2c5d3abec06d0b2a81e69abeb1b8d0506ed6373d7d74bd5e4b05.strop",start:6562208,end:7807199},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:7807199,end:8103001},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop",start:8103001,end:8109497},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop", -start:8109497,end:9532942},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop",start:9532942,end:9608344},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:9608344,end:10271397},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop",start:10271397,end:10287070},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop", -start:10287070,end:10359768},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:10359768,end:10380237},{filename:"/microblink/blinkid/serialized_embedder_db_1.9.bin",start:10380237,end:13393962}],remote_package_size:13393962})})();m.onAbort=function(a){t("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){t("Stacktrace: "+b.stack)}};m="undefined"!==typeof m?m:{}; -(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!m.locateFile&&(m.locateFile=function(d,e){return"BlinkIdModule.wasm"===d?a:e+d})})();var da="./this.program",ea=import.meta.url,fa="",ha,ia; +q[v].filename);k.addRunDependency("datafile_/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.data"]={Fc:!1};l?(n(l),l=null):h=n}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+ +"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var f=m.locateFile?m.locateFile("BlinkIdModule.data",""):"BlinkIdModule.data",g=b.remote_package_size,h=null,l=m.getPreloadedPackage?m.getPreloadedPackage(f,g):null;l||c(f,g,k=>{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", +start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8326c5065a6d8451d6d004db73babf4a4a9f502c68643a14934cc098d04bf44f.strop", +start:5147659,end:5535353},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop",start:5535353,end:6562208},{filename:"/microblink/blinkid/Model_93607315418f2c5d3abec06d0b2a81e69abeb1b8d0506ed6373d7d74bd5e4b05.strop",start:6562208,end:7807199},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:7807199,end:8103001},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop", +start:8103001,end:8109497},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:8109497,end:9532942},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop",start:9532942,end:9608344},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:9608344,end:10271397},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop", +start:10271397,end:10287070},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop",start:10287070,end:10359768},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:10359768,end:10380237},{filename:"/microblink/blinkid/serialized_embedder_db_1.9.bin",start:10380237,end:13393962}],remote_package_size:13393962})})();m.onAbort=function(a){t("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){t("Stacktrace: "+b.stack)}}; +m="undefined"!==typeof m?m:{};(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!m.locateFile&&(m.locateFile=function(d,e){return"BlinkIdModule.wasm"===d?a:e+d})})();var da="./this.program",ea=import.meta.url,fa="",ha,ia; if(aa||ba){try{fa=(new URL(".",ea)).href}catch{}ba&&(ia=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ha=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ja=console.log.bind(console),t=console.error.bind(console),la,ma=!1,na,oa,pa,qa,w,y,A,ra,B,D,sa,ta,H,ua,va=!1; function wa(){var a=qa.buffer;w=new Int8Array(a);A=new Int16Array(a);y=new Uint8Array(a);ra=new Uint16Array(a);B=new Int32Array(a);D=new Uint32Array(a);sa=new Float32Array(a);ta=new Float64Array(a);H=new BigInt64Array(a);ua=new BigUint64Array(a)}var xa=0,ya=null;function za(){xa++;m.monitorRunDependencies?.(xa)}function Aa(){xa--;m.monitorRunDependencies?.(xa);if(0==xa&&ya){var a=ya;ya=null;a()}} function Ba(a){m.onAbort?.(a);a="Aborted("+a+")";t(a);ma=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");pa?.(a);throw a;}var Ca;async function Da(a){if(!la)try{var b=await ha(a);return new Uint8Array(b)}catch{}if(a==Ca&&la)a=new Uint8Array(la);else if(ia)a=ia(a);else throw"both async and sync fetching of the wasm failed";return a} diff --git a/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.wasm b/packages/blinkid-wasm/dist/full/basic/BlinkIdModule.wasm index 027d463410a40bf5e36107669df12aa87033a6fa..d5508dc77349c45f83994e749724508e981a2727 100755 GIT binary patch delta 7880 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 delta 7574 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 a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof n&&n||a||function(b){function c(m,r,p){let w;(w=h).dataFileDownloads??(w.dataFileDownloads={});fetch(m).catch(v=>Promise.reject(Error(`Network Error: ${m}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(p);const t=v.body.getReader(),y=()=>t.read().then(L).catch(u=>Promise.reject(Error(`Unexpected error while handling : ${v.url} ${u}`, {cause:u}))),A=[],J=Number(v.headers.get("Content-Length")??r);let F=0;const L=({done:u,value:H})=>{if(u){var G=new Uint8Array(A.map(aa=>aa.length).reduce((aa,qa)=>aa+qa,0));u=0;for(var C of A)G.set(C,u),u+=C.length;p(G.buffer)}else{A.push(H);F+=H.length;h.dataFileDownloads[m]={loaded:F,total:J};u=C=0;for(G of Object.values(h.dataFileDownloads))C+=G.loaded,u+=G.total;h.setStatus?.(`Downloading data... (${C}/${u})`);return y()}};h.setStatus?.("Downloading data...");return y()})}function d(m){console.error("package error:", -m)}function e(m){function r(t,y,A){this.start=t;this.end=y;this.audio=A}function p(t){if(!t)throw"Loading data file failed."+Error().stack;if(t.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;t=new Uint8Array(t);r.prototype.wc=t;t=b.files;for(var y=0;y{k?(k(m),k=null):l=m},d);if(h.calledRun)e(h);else{let m;((m=h).preRun??(m.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop",start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198, -end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop",start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop", -start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop",start:5147659,end:6174514},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop", -start:6174514,end:6470316},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop",start:6470316,end:6476812},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:6476812,end:7900257},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop",start:7900257,end:7975659},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop", -start:7975659,end:8638712},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop",start:8638712,end:8654385},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop",start:8654385,end:8727083},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:8727083,end:8747552},{filename:"/microblink/blinkid/serialized_embedder_db_1.9.bin",start:8747552,end:11761277}],remote_package_size:11761277})})(); -h.onAbort=function(a){q("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){q("Stacktrace: "+b.stack)}};h="undefined"!==typeof h?h:{};(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!h.locateFile&&(h.locateFile=function(d,e){return"BlinkIdModule.wasm"===d?a:e+d})})();var ea="./this.program",fa=import.meta.url,ha="",ia,ja; +m)}function e(m){function r(t,y,A){this.start=t;this.end=y;this.audio=A}function p(t){if(!t)throw"Loading data file failed."+Error().stack;if(t.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;t=new Uint8Array(t);r.prototype.wc=t;t=b.files;for(var y=0;y{k?(k(m),k=null):l=m},d);if(h.calledRun)e(h);else{let m;((m=h).preRun??(m.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", +start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop", +start:5147659,end:6174514},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:6174514,end:6470316},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop",start:6470316,end:6476812},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:6476812,end:7900257},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop", +start:7900257,end:7975659},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:7975659,end:8638712},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop",start:8638712,end:8654385},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop",start:8654385,end:8727083},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:8727083, +end:8747552},{filename:"/microblink/blinkid/serialized_embedder_db_1.9.bin",start:8747552,end:11761277}],remote_package_size:11761277})})();h.onAbort=function(a){q("Aborted with message: "+a);try{throw new WebAssembly.RuntimeError(a);}catch(b){q("Stacktrace: "+b.stack)}};h="undefined"!==typeof h?h:{}; +(function(){var a="",b=!1;try{if("undefined"!==typeof self&&self.location&&self.location.href){var c=self.location.href;0===c.indexOf("blob:")&&(a=c,b=!0)}}catch(d){}b&&!h.locateFile&&(h.locateFile=function(d,e){return"BlinkIdModule.wasm"===d?a:e+d})})();var ea="./this.program",fa=import.meta.url,ha="",ia,ja; if(ba||ca){try{ha=(new URL(".",fa)).href}catch{}ca&&(ja=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)});ia=async a=>{a=await fetch(a,{credentials:"same-origin"});if(a.ok)return a.arrayBuffer();throw Error(a.status+" : "+a.url);}}var ka=console.log.bind(console),q=console.error.bind(console),la,ma,na=!1,oa;function x(){pa.buffer!=z.buffer&&ra()}var sa,ta,ua,va; if(n){var wa=!1;self.onunhandledrejection=b=>{throw b.reason||b;};function a(b){try{var c=b.data,d=c.nb;if("load"===d){let e=[];self.onmessage=f=>e.push(f);va=()=>{postMessage({nb:"loaded"});for(let f of e)a(f);self.onmessage=a};for(const f of c.Hc)if(!h[f]||h[f].proxy)h[f]=(...g)=>{postMessage({nb:"callHandler",Gc:f,tc:g})},"print"==f&&(ka=h[f]),"printErr"==f&&(q=h[f]);pa=c.gd;ra();ua(c.hd)}else if("run"===d){xa(c.jb);ya(c.jb,0,0,1,0,0);za();Aa(c.jb);wa||(Ba(),wa=!0);try{Ca(c.cd,c.Tb)}catch(e){if("unwind"!= e)throw e;}}else"setimmediate"!==c.target&&("checkMailbox"===d?wa&&Da():d&&(q(`worker: received unknown command ${d}`),q(c)))}catch(e){throw Ea(),e;}}self.onmessage=a}var pa,z,B,D,Fa,E,I,Ga,Ha,K,Ia,Ja=!1;function ra(){var a=pa.buffer;z=new Int8Array(a);D=new Int16Array(a);B=new Uint8Array(a);Fa=new Uint16Array(a);E=new Int32Array(a);I=new Uint32Array(a);Ga=new Float32Array(a);Ha=new Float64Array(a);K=new BigInt64Array(a);Ia=new BigUint64Array(a)} @@ -136,7 +137,7 @@ Object.assign(Re.prototype,{Cc(a){this.pc&&(a=this.pc(a));return a},jc(a){this.k e?b.call(this):this.Kb?Qe(d.Ra.ub,{Ua:d,Sa:e,eb:this,Za:a}):Qe(d.Ra.ub,{Ua:d,Sa:e})}});Gf=new If;n||(Ta("library_fetch_init"),Jf(a=>{Kf=a;Ua("library_fetch_init")},()=>{Kf=!1;Ua("library_fetch_init")}));n||(pa=h.wasmMemory?h.wasmMemory:new WebAssembly.Memory({initial:(h.INITIAL_MEMORY||209715200)/65536,maximum:32768,shared:!0}),ra());h.noExitRuntime&&(Hc=h.noExitRuntime);h.preloadPlugins&&(yd=h.preloadPlugins);h.print&&(ka=h.print);h.printErr&&(q=h.printErr);h.wasmBinary&&(la=h.wasmBinary); h.thisProgram&&(ea=h.thisProgram);h.addRunDependency=Ta;h.removeRunDependency=Ua;h.FS_createPreloadedFile=(a,b,c,d,e,f,g,k,l,m)=>{function r(v){function t(y){m?.();k||fe(a,b,y,d,e,l);f?.();Ua(w)}zd(v,p,t,()=>{g?.();Ua(w)})||t(v)}var p=b?cd(Zc(a+"/"+b)):a,w=`cp ${p}`;Ta(w);"string"==typeof c?xd(c).then(r,g):r(c)};h.FS_unlink=(...a)=>Yd(...a);h.FS_createPath=(...a)=>de(...a);h.FS_createDevice=(...a)=>Ma(...a);h.FS_createDataFile=(...a)=>fe(...a);h.FS_createLazyFile=(...a)=>he(...a); var tf=[rc,Ic,Vc,db,eb,fb,gb,hb,ib,jb,function(a,b,c,d,e,f,g){if(n)return N(10,1,a,b,c,d,e,f,g);e=-9007199254740992>e||9007199254740992>2]=l.qb;(x(),I)[g>>2]=m;return 0}catch(r){if("undefined"==typeof S||"ErrnoError"!==r.name)throw r;return-r.Wa}},function(a,b,c,d,e,f){if(n)return N(11, -1,a,b,c,d,e,f);f=-9007199254740992>f||9007199254740992{a=T(a);b=T(b);c=T(c);d=T(d);throw Error(a+b+c+d);},343042:(a,b)=>{a=T(a);b=T(b);throw Error(a+b);}}; +1,a,b,c,d,e,f);f=-9007199254740992>f||9007199254740992{a=T(a);b=T(b);c=T(c);d=T(d);throw Error(a+b+c+d);},343058:(a,b)=>{a=T(a);b=T(b);throw Error(a+b);}}; function Xb(){var a=h.allowedThreads;return a?a:navigator.hardwareConcurrency}function qc(){var a=self.navigator.userAgent,b=hd(a)+1,c=ff(b);Y(a,c,b);return c}function pc(){var a=stackTrace(),b=hd(a)+1,c=ff(b);Y(a,c,b);return c}var Ue,Ba,Ve,ff,Oc,rd,ya,Ea,Fc,Mc,Uc,Df,qf,Qc,Gc,Ec,Dc;h.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=99616; var ab,Pa=await (async function(){function a(c,d){Pa=c.exports;Jc.push(Pa.za);Sc=Pa.Ba;ma=d;c=Pa;Ue=c.ua;Ba=c.va;Ve=c.wa;ff=c.xa;Oc=c.ya;rd=c.Aa;ya=c.Ca;Ea=c.Da;Fc=c.Ea;Mc=c.Fa;Uc=c.Ga;Df=c.Ha;qf=c.Ia;Qc=c.Ja;Gc=c.Ka;Ec=c.La;Dc=c.Ma;Ua("wasm-instantiate");return Pa}Ta("wasm-instantiate");var b=$a();if(h.instantiateWasm)return new Promise(c=>{h.instantiateWasm(b,(d,e)=>{c(a(d,e))})});if(n)return new Promise(c=>{ua=d=>{var e=new WebAssembly.Instance(d,$a());c(a(e,d))}});Wa??=h.locateFile? h.locateFile?h.locateFile("BlinkIdModule.wasm",ha):ha+"BlinkIdModule.wasm":(new URL("BlinkIdModule.wasm",import.meta.url)).href;return function(c){return a(c.instance,c.module)}(await Za(b))}()); diff --git a/packages/blinkid-wasm/dist/lightweight/advanced-threads/BlinkIdModule.wasm b/packages/blinkid-wasm/dist/lightweight/advanced-threads/BlinkIdModule.wasm index 074ccbb67c750f4d3579137e39b0684cbd5f7fc7..531b618c95b21c6225c1a408e1e5648f3b2a8012 100755 GIT binary patch delta 27377 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 delta 27438 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 a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof ENVIRONMENT_IS_PTHREAD&&ENVIRONMENT_IS_PTHREAD||a||function(b){function c(k,u,n){let q;(q=m).dataFileDownloads??(q.dataFileDownloads={});fetch(k).catch(v=>Promise.reject(Error(`Network Error: ${k}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(n);const p=v.body.getReader(),x=()=>p.read().then(K).catch(t=> Promise.reject(Error(`Unexpected error while handling : ${v.url} ${t}`,{cause:t}))),z=[],I=Number(v.headers.get("Content-Length")??u);let E=0;const K=({done:t,value:G})=>{if(t){var F=new Uint8Array(z.map(T=>T.length).reduce((T,ka)=>T+ka,0));t=0;for(var C of z)F.set(C,t),t+=C.length;n(F.buffer)}else{z.push(G);E+=G.length;m.dataFileDownloads[k]={loaded:E,total:I};t=C=0;for(F of Object.values(m.dataFileDownloads))C+=F.loaded,t+=F.total;m.setStatus?.(`Downloading data... (${C}/${t})`);return x()}};m.setStatus?.("Downloading data..."); -return x()})}function d(k){console.error("package error:",k)}function e(k){function u(p,x,z){this.start=p;this.end=x;this.audio=z}function n(p){if(!p)throw"Loading data file failed."+Error().stack;if(p.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;p=new Uint8Array(p);u.prototype.Ub=p;p=b.files;for(var x=0;x{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", +q[v].filename);k.addRunDependency("datafile_/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/lightweight/advanced/BlinkIdModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/lightweight/advanced/BlinkIdModule.data"]={Gc:!1};l?(n(l),l=null):h=n}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+ +"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var f=m.locateFile?m.locateFile("BlinkIdModule.data",""):"BlinkIdModule.data",g=b.remote_package_size,h=null,l=m.getPreloadedPackage?m.getPreloadedPackage(f,g):null;l||c(f,g,k=>{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop", start:5147659,end:6174514},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:6174514,end:6470316},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop",start:6470316,end:6476812},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:6476812,end:7900257},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop", diff --git a/packages/blinkid-wasm/dist/lightweight/advanced/BlinkIdModule.wasm b/packages/blinkid-wasm/dist/lightweight/advanced/BlinkIdModule.wasm index 1ba2cbe648576286d531c69d09bded1ecb057d30..7ccd8a28b0b31e746fdc3886de34c633878b7032 100755 GIT binary patch delta 40583 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 delta 40611 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 OO&o+ diff --git a/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.js b/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.js index fae8f79..6b68aff 100644 --- a/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.js +++ b/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.js @@ -1,11 +1,11 @@ async function createModule(moduleArg={}){var moduleRtn;var m=moduleArg,aa="object"==typeof window,ba="undefined"!=typeof WorkerGlobalScope;let ca;(ca=m).expectedDataFileDownloads??(ca.expectedDataFileDownloads=0);m.expectedDataFileDownloads++; (()=>{var a="undefined"!=typeof ENVIRONMENT_IS_WASM_WORKER&&ENVIRONMENT_IS_WASM_WORKER;"undefined"!=typeof ENVIRONMENT_IS_PTHREAD&&ENVIRONMENT_IS_PTHREAD||a||function(b){function c(k,u,n){let q;(q=m).dataFileDownloads??(q.dataFileDownloads={});fetch(k).catch(v=>Promise.reject(Error(`Network Error: ${k}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(n);const p=v.body.getReader(),x=()=>p.read().then(K).catch(r=> Promise.reject(Error(`Unexpected error while handling : ${v.url} ${r}`,{cause:r}))),z=[],I=Number(v.headers.get("Content-Length")??u);let E=0;const K=({done:r,value:G})=>{if(r){var F=new Uint8Array(z.map(T=>T.length).reduce((T,ka)=>T+ka,0));r=0;for(var C of z)F.set(C,r),r+=C.length;n(F.buffer)}else{z.push(G);E+=G.length;m.dataFileDownloads[k]={loaded:E,total:I};r=C=0;for(F of Object.values(m.dataFileDownloads))C+=F.loaded,r+=F.total;m.setStatus?.(`Downloading data... (${C}/${r})`);return x()}};m.setStatus?.("Downloading data..."); -return x()})}function d(k){console.error("package error:",k)}function e(k){function u(p,x,z){this.start=p;this.end=x;this.audio=z}function n(p){if(!p)throw"Loading data file failed."+Error().stack;if(p.constructor.name!==ArrayBuffer.name)throw"bad input to processPackageData"+Error().stack;p=new Uint8Array(p);u.prototype.Tb=p;p=b.files;for(var x=0;x{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop",start:0, -end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", +q[v].filename);k.addRunDependency("datafile_/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.data");k.preloadResults??(k.preloadResults={});k.preloadResults["/opt/jenkins/android-arm64-samsung-s21-ultra/root/E0/blinkid-next/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.data"]={Fc:!1};l?(n(l),l=null):h=n}"object"===typeof window?window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+ +"/"):"undefined"===typeof process&&"undefined"!==typeof location&&encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/");var f=m.locateFile?m.locateFile("BlinkIdModule.data",""):"BlinkIdModule.data",g=b.remote_package_size,h=null,l=m.getPreloadedPackage?m.getPreloadedPackage(f,g):null;l||c(f,g,k=>{h?(h(k),h=null):l=k},d);if(m.calledRun)e(m);else{let k;((k=m).preRun??(k.preRun=[])).push(e)}}({files:[{filename:"/microblink/blinkid/Model_07c7ab860e77ec2e92bb822f6d62424b8595a5beb4340f6b2f7f6a4cffa5d050.strop", +start:0,end:103198},{filename:"/microblink/blinkid/Model_083e679074e33233cdf9028116ed7803443e2acc876b915ecf4749ce6c33ee5c.strop",start:103198,end:228280},{filename:"/microblink/blinkid/Model_2880751121560047e6dc571bc8ff4683aeb863886f7c0789234594ceb1e23577.strop",start:228280,end:232015},{filename:"/microblink/blinkid/Model_36d8e94f4cb46097bd6b7385f2aa91fcdee1a5fefeec59e56d1b9e82c94b00a7.strop",start:232015,end:576471},{filename:"/microblink/blinkid/Model_3b11c3ffacbbf390b932fb9a7024f1a0016f66281ea8c790f8b5903374ad89c2.strop", start:576471,end:845192},{filename:"/microblink/blinkid/Model_4336af7999b059ac75281d0d71b60dd55b33c2b22c2b2c8e2b9ab56fe6ad720d.strop",start:845192,end:1172060},{filename:"/microblink/blinkid/Model_473ac5f5e256623c0a6b282698c1f1b033b9fb5359e6aa142e9fb4a4022afe4e.strop",start:1172060,end:1178509},{filename:"/microblink/blinkid/Model_7403cf61ed10e7e93ab9ebb030ee2aa31f5d3d19346a271859924d0288d2c8ba.strop",start:1178509,end:5147659},{filename:"/microblink/blinkid/Model_8c7727da554fd257fa758787ca3d0f517b47f6c5ba791792f516da7dd210fde8.strop", start:5147659,end:6174514},{filename:"/microblink/blinkid/Model_a1516add883f909ebecf9b565238086f8f31bbb3e7fb2113258e3ae7c659555e.strop",start:6174514,end:6470316},{filename:"/microblink/blinkid/Model_b452fd3cd4037080cfcb4c423dba5bc58c8ceafc28427fdf9c5778fb353f088e.strop",start:6470316,end:6476812},{filename:"/microblink/blinkid/Model_dd833eb903e57415810f0f7beffb6eca256b1d070825dde8e54a46d684920682.strop",start:6476812,end:7900257},{filename:"/microblink/blinkid/Model_f2874f5766b779c063dbe30467979163497dc4b29c43bab23d70c798ee32993a.strop", start:7900257,end:7975659},{filename:"/microblink/blinkid/Model_f531088a1f65a31d6ba039e09446fe24c18360080fec3792308ac01514803620.strop",start:7975659,end:8638712},{filename:"/microblink/blinkid/Model_faf688599c7e261a2a7404730f69ed029115bb0d3e7a3657731d88e701720efe.strop",start:8638712,end:8654385},{filename:"/microblink/blinkid/Model_fc22f7553e3e85531eb79ef6db1474302664508cc7ae4ff0d950447b20f2f8ee.strop",start:8654385,end:8727083},{filename:"/microblink/blinkid/ccc_lookup_table.zzip",start:8727083, @@ -93,7 +93,7 @@ Object.assign(Lc.prototype,{Zb(a){this.Ob&&(a=this.Ob(a));return a},Hb(a){this.M e?b.call(this):this.kb?Kc(d.ua.Va,{xa:d,va:e,Ha:this,Ca:a}):Kc(d.ua.Va,{xa:d,va:e})}});Y=new xd;za("library_fetch_init");(function(a,b){try{var c=indexedDB.open("emscripten_filesystem",1)}catch(d){b(d);return}c.onupgradeneeded=d=>{d=d.target.result;d.objectStoreNames.contains("FILES")&&d.deleteObjectStore("FILES");d.createObjectStore("FILES")};c.onsuccess=d=>a(d.target.result);c.onerror=b})(a=>{yd=a;Aa("library_fetch_init")},()=>{yd=!1;Aa("library_fetch_init")}); qa=m.wasmMemory?m.wasmMemory:new WebAssembly.Memory({initial:(m.INITIAL_MEMORY||209715200)/65536,maximum:32768});wa();m.noExitRuntime&&(La=m.noExitRuntime);m.preloadPlugins&&(nb=m.preloadPlugins);m.print&&(ja=m.print);m.printErr&&(t=m.printErr);m.wasmBinary&&(la=m.wasmBinary);m.thisProgram&&(da=m.thisProgram);m.addRunDependency=za;m.removeRunDependency=Aa; m.FS_createPreloadedFile=(a,b,c,d,e,f,g,h,l,k)=>{function u(v){function p(x){k?.();h||Zb(a,b,x,d,e,l);f?.();Aa(q)}ob(v,n,p,()=>{g?.();Aa(q)})||p(v)}var n=b?Va(Ra(a+"/"+b)):a,q=`cp ${n}`;za(q);"string"==typeof c?mb(c).then(u,g):u(c)};m.FS_unlink=(...a)=>Qb(...a);m.FS_createPath=(...a)=>Xb(...a);m.FS_createDevice=(...a)=>$b(...a);m.FS_createDataFile=(...a)=>Zb(...a);m.FS_createLazyFile=(...a)=>bc(...a); -var Id={340025:(a,b,c,d)=>{a=a?L(y,a):"";b=b?L(y,b):"";c=c?L(y,c):"";d=d?L(y,d):"";throw Error(a+b+c+d);},340241:(a,b)=>{a=a?L(y,a):"";b=b?L(y,b):"";throw Error(a+b);}},Oc,Pc,Ad,gb,Jd;m.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=1024; +var Id={340041:(a,b,c,d)=>{a=a?L(y,a):"";b=b?L(y,b):"";c=c?L(y,c):"";d=d?L(y,d):"";throw Error(a+b+c+d);},340257:(a,b)=>{a=a?L(y,a):"";b=b?L(y,b):"";throw Error(a+b);}},Oc,Pc,Ad,gb,Jd;m.__ZN2MB2NN28LinearDefragmentingAllocator10Allocation4nullE=1024; var Kd={y:(a,b)=>Oa(a)(b),q:function(a,b,c){Pa=c;try{var d=Hb(a);switch(b){case 0:var e=J();if(0>e)break;for(;sb[e];)e++;return Jb(d,e).Sa;case 1:case 2:return 0;case 3:return d.flags;case 4:return e=J(),d.flags|=e,0;case 12:return e=J(),A[e+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(f){if("undefined"==typeof R||"ErrnoError"!==f.name)throw f;return-f.Aa}},R:function(a,b){try{var c=Hb(a),d=c.node,e=c.sa.Ja;a=e?c:d;e??=d.ta.Ja;Gb(e);var f=e(a);return ec(b,f)}catch(g){if("undefined"==typeof R|| "ErrnoError"!==g.name)throw g;return-g.Aa}},S:function(a,b,c){Pa=c;try{var d=Hb(a);switch(b){case 21509:return d.wa?0:-59;case 21505:if(!d.wa)return-59;if(d.wa.Qa.fc){a=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var e=J();B[e>>2]=25856;B[e+4>>2]=5;B[e+8>>2]=191;B[e+12>>2]=35387;for(var f=0;32>f;f++)w[e+f+17]=a[f]||0}return 0;case 21510:case 21511:case 21512:return d.wa?0:-59;case 21506:case 21507:case 21508:if(!d.wa)return-59;if(d.wa.Qa.hc)for(e=J(),a=[],f=0;32>f;f++)a.push(w[e+ f+17]);return 0;case 21519:if(!d.wa)return-59;e=J();return B[e>>2]=0;case 21520:return d.wa?-28:-59;case 21537:case 21531:e=J();if(!d.sa.ec)throw new N(59);return d.sa.ec(d,b,e);case 21523:if(!d.wa)return-59;d.wa.Qa.ic&&(f=[24,80],e=J(),A[e>>1]=f[0],A[e+2>>1]=f[1]);return 0;case 21524:return d.wa?0:-59;case 21515:return d.wa?0:-59;default:return-28}}catch(g){if("undefined"==typeof R||"ErrnoError"!==g.name)throw g;return-g.Aa}},P:function(a,b){try{return a=a?L(y,a):"",ec(b,Rb(a,!0))}catch(c){if("undefined"== diff --git a/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.wasm b/packages/blinkid-wasm/dist/lightweight/basic/BlinkIdModule.wasm index 9a6d68ffce5f3b9915d034819f16890c5b6351ef..1cb12191ddad2215de8c1e36b4840822d2d2c125 100755 GIT binary patch delta 30215 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 delta 30565 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 X{$m9()sw~S1wkk0pH4?v8^!%U;kFB3 diff --git a/packages/blinkid-wasm/dist/size-manifest.json b/packages/blinkid-wasm/dist/size-manifest.json index 70ba10c..e5d3a16 100644 --- a/packages/blinkid-wasm/dist/size-manifest.json +++ b/packages/blinkid-wasm/dist/size-manifest.json @@ -1,16 +1,16 @@ { "wasm": { "basic": { - "full": 3242571, - "lightweight": 3280459 + "full": 3242861, + "lightweight": 3280274 }, "advanced": { - "full": 3261161, - "lightweight": 3298193 + "full": 3261875, + "lightweight": 3298460 }, "advanced-threads": { - "full": 3309330, - "lightweight": 3343822 + "full": 3308759, + "lightweight": 3343810 } }, "data": { diff --git a/packages/blinkid-wasm/docs/type-aliases/HardwareCameraInfoData.md b/packages/blinkid-wasm/docs/type-aliases/HardwareCameraInfoData.md index 5841911..879ea5b 100644 --- a/packages/blinkid-wasm/docs/type-aliases/HardwareCameraInfoData.md +++ b/packages/blinkid-wasm/docs/type-aliases/HardwareCameraInfoData.md @@ -24,6 +24,10 @@ Represents the data for the `ping.hardware.camera.info` event. > **cameraFacing**: `"Front"` \| `"Back"` \| `"Unknown"` +#### deviceId + +> **deviceId**: `string` + #### focus? > `optional` **focus**: `"Auto"` \| `"Fixed"` diff --git a/packages/blinkid-wasm/docs/type-aliases/PingHardwareCameraInfo.md b/packages/blinkid-wasm/docs/type-aliases/PingHardwareCameraInfo.md index a7fa2fa..8b0bd2e 100644 --- a/packages/blinkid-wasm/docs/type-aliases/PingHardwareCameraInfo.md +++ b/packages/blinkid-wasm/docs/type-aliases/PingHardwareCameraInfo.md @@ -6,6 +6,6 @@ # Type Alias: PingHardwareCameraInfo -> **PingHardwareCameraInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`HardwareCameraInfoData`](HardwareCameraInfoData.md), `"ping.hardware.camera.info"`, `"1.0.1"`, `0`\> +> **PingHardwareCameraInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`HardwareCameraInfoData`](HardwareCameraInfoData.md), `"ping.hardware.camera.info"`, `"1.0.3"`, `0`\> Represents the `ping.hardware.camera.info` event. diff --git a/packages/blinkid-wasm/docs/type-aliases/PingSdkCameraInputInfo.md b/packages/blinkid-wasm/docs/type-aliases/PingSdkCameraInputInfo.md index ed5902f..0152196 100644 --- a/packages/blinkid-wasm/docs/type-aliases/PingSdkCameraInputInfo.md +++ b/packages/blinkid-wasm/docs/type-aliases/PingSdkCameraInputInfo.md @@ -6,6 +6,6 @@ # Type Alias: PingSdkCameraInputInfo -> **PingSdkCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`SdkCameraInputInfoData`](SdkCameraInputInfoData.md), `"ping.sdk.camera.input.info"`, `"1.0.1"`\> +> **PingSdkCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`SdkCameraInputInfoData`](SdkCameraInputInfoData.md), `"ping.sdk.camera.input.info"`, `"1.0.2"`\> Represents the `ping.sdk.camera.input.info` event. diff --git a/packages/blinkid-wasm/docs/type-aliases/SdkCameraInputInfoData.md b/packages/blinkid-wasm/docs/type-aliases/SdkCameraInputInfoData.md index ac34b61..3af3560 100644 --- a/packages/blinkid-wasm/docs/type-aliases/SdkCameraInputInfoData.md +++ b/packages/blinkid-wasm/docs/type-aliases/SdkCameraInputInfoData.md @@ -30,6 +30,12 @@ Represents the data for the `ping.sdk.camera.input.info` event. *** +### deviceId + +> **deviceId**: `string` + +*** + ### roiHeight > **roiHeight**: `number` diff --git a/packages/blinkid-wasm/package.json b/packages/blinkid-wasm/package.json index cb8f91b..21fd354 100644 --- a/packages/blinkid-wasm/package.json +++ b/packages/blinkid-wasm/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkid-wasm", "private": true, - "version": "7.6.2", + "version": "7.6.3", "scripts": { "build": "tsc", "build:publish": "tsc", diff --git a/packages/blinkid-wasm/src/ping/ping.hardware.camera.info.ts b/packages/blinkid-wasm/src/ping/ping.hardware.camera.info.ts index 7a2744a..6757cba 100644 --- a/packages/blinkid-wasm/src/ping/ping.hardware.camera.info.ts +++ b/packages/blinkid-wasm/src/ping/ping.hardware.camera.info.ts @@ -7,6 +7,7 @@ import { PingBase } from "./PingBase"; /** Represents the data for the `ping.hardware.camera.info` event. */ export type HardwareCameraInfoData = { availableCameras: { + deviceId: string; cameraFacing: "Front" | "Back" | "Unknown"; focus?: "Auto" | "Fixed"; availableResolutions?: { @@ -20,6 +21,6 @@ export type HardwareCameraInfoData = { export type PingHardwareCameraInfo = PingBase< HardwareCameraInfoData, "ping.hardware.camera.info", - "1.0.1", + "1.0.3", 0 >; diff --git a/packages/blinkid-wasm/src/ping/ping.sdk.camera.input.info.ts b/packages/blinkid-wasm/src/ping/ping.sdk.camera.input.info.ts index cfd9e74..0e3ada7 100644 --- a/packages/blinkid-wasm/src/ping/ping.sdk.camera.input.info.ts +++ b/packages/blinkid-wasm/src/ping/ping.sdk.camera.input.info.ts @@ -6,6 +6,7 @@ import { PingBase } from "./PingBase"; /** Represents the data for the `ping.sdk.camera.input.info` event. */ export type SdkCameraInputInfoData = { + deviceId: string; cameraFacing: "Front" | "Back" | "Unknown"; cameraFrameWidth: number; cameraFrameHeight: number; @@ -18,5 +19,5 @@ export type SdkCameraInputInfoData = { export type PingSdkCameraInputInfo = PingBase< SdkCameraInputInfoData, "ping.sdk.camera.input.info", - "1.0.1" + "1.0.2" >; diff --git a/packages/blinkid-worker/CHANGELOG.md b/packages/blinkid-worker/CHANGELOG.md index f59a9f8..7e9290a 100644 --- a/packages/blinkid-worker/CHANGELOG.md +++ b/packages/blinkid-worker/CHANGELOG.md @@ -1,12 +1,19 @@ # @microblink/blinkid-worker +## 7.6.3 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkid-wasm@7.6.3 + ## 7.6.2 ### Patch Changes - Fixes `microblinkProxyUrl` handling - - Prevent an extra ping to the Microblink server when a proxy URL is configured (previously one redundant request was sent). - - Preserve the user-provided path when using a proxy URL (previously the path was removed). + - Prevent an extra ping to the Microblink server when a proxy URL is configured (previously one redundant request was sent). + - Preserve the user-provided path when using a proxy URL (previously the path was removed). - Updated dependencies - @microblink/blinkid-wasm@7.6.2 diff --git a/packages/blinkid-worker/package.json b/packages/blinkid-worker/package.json index 60743f5..ada38f2 100644 --- a/packages/blinkid-worker/package.json +++ b/packages/blinkid-worker/package.json @@ -2,7 +2,7 @@ "name": "@microblink/blinkid-worker", "description": "Provides a worker which runs the BlinkID WebAssembly in separate thread", "private": true, - "version": "7.6.2", + "version": "7.6.3", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", "build:js": "vite build", diff --git a/packages/blinkid/CHANGELOG.md b/packages/blinkid/CHANGELOG.md index 7e43358..118a6c6 100644 --- a/packages/blinkid/CHANGELOG.md +++ b/packages/blinkid/CHANGELOG.md @@ -1,5 +1,14 @@ # @microblink/blinkid +## 7.6.3 + +### Patch Changes + +- Updated dependencies + - @microblink/blinkid-ux-manager@7.6.3 + - @microblink/camera-manager@7.2.7 + - @microblink/blinkid-core@7.6.3 + ## 7.6.2 ### Patch Changes diff --git a/packages/blinkid/docs/type-aliases/HardwareCameraInfoData.md b/packages/blinkid/docs/type-aliases/HardwareCameraInfoData.md index b03c576..4de3cfe 100644 --- a/packages/blinkid/docs/type-aliases/HardwareCameraInfoData.md +++ b/packages/blinkid/docs/type-aliases/HardwareCameraInfoData.md @@ -24,6 +24,10 @@ Represents the data for the `ping.hardware.camera.info` event. > **cameraFacing**: `"Front"` \| `"Back"` \| `"Unknown"` +#### deviceId + +> **deviceId**: `string` + #### focus? > `optional` **focus**: `"Auto"` \| `"Fixed"` diff --git a/packages/blinkid/docs/type-aliases/PingHardwareCameraInfo.md b/packages/blinkid/docs/type-aliases/PingHardwareCameraInfo.md index 763db49..7e54ea2 100644 --- a/packages/blinkid/docs/type-aliases/PingHardwareCameraInfo.md +++ b/packages/blinkid/docs/type-aliases/PingHardwareCameraInfo.md @@ -6,6 +6,6 @@ # Type Alias: PingHardwareCameraInfo -> **PingHardwareCameraInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`HardwareCameraInfoData`](HardwareCameraInfoData.md), `"ping.hardware.camera.info"`, `"1.0.1"`, `0`\> +> **PingHardwareCameraInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`HardwareCameraInfoData`](HardwareCameraInfoData.md), `"ping.hardware.camera.info"`, `"1.0.3"`, `0`\> Represents the `ping.hardware.camera.info` event. diff --git a/packages/blinkid/docs/type-aliases/PingSdkCameraInputInfo.md b/packages/blinkid/docs/type-aliases/PingSdkCameraInputInfo.md index 7ea09af..ee07374 100644 --- a/packages/blinkid/docs/type-aliases/PingSdkCameraInputInfo.md +++ b/packages/blinkid/docs/type-aliases/PingSdkCameraInputInfo.md @@ -6,6 +6,6 @@ # Type Alias: PingSdkCameraInputInfo -> **PingSdkCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`SdkCameraInputInfoData`](SdkCameraInputInfoData.md), `"ping.sdk.camera.input.info"`, `"1.0.1"`\> +> **PingSdkCameraInputInfo** = [`PingBase`](../interfaces/PingBase.md)\<[`SdkCameraInputInfoData`](SdkCameraInputInfoData.md), `"ping.sdk.camera.input.info"`, `"1.0.2"`\> Represents the `ping.sdk.camera.input.info` event. diff --git a/packages/blinkid/docs/type-aliases/SdkCameraInputInfoData.md b/packages/blinkid/docs/type-aliases/SdkCameraInputInfoData.md index 4dfbc53..f45e7c5 100644 --- a/packages/blinkid/docs/type-aliases/SdkCameraInputInfoData.md +++ b/packages/blinkid/docs/type-aliases/SdkCameraInputInfoData.md @@ -30,6 +30,12 @@ Represents the data for the `ping.sdk.camera.input.info` event. *** +### deviceId + +> **deviceId**: `string` + +*** + ### roiHeight > **roiHeight**: `number` diff --git a/packages/blinkid/package.json b/packages/blinkid/package.json index 4838769..43cb21d 100644 --- a/packages/blinkid/package.json +++ b/packages/blinkid/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/blinkid", "description": "All-in-one BlinkID browser SDK for fast and accurate ID document scanning and recognition in web applications.", - "version": "7.6.2", + "version": "7.6.3", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", diff --git a/packages/camera-manager/CHANGELOG.md b/packages/camera-manager/CHANGELOG.md index 6b7f23e..cb39634 100644 --- a/packages/camera-manager/CHANGELOG.md +++ b/packages/camera-manager/CHANGELOG.md @@ -1,5 +1,12 @@ # @microblink/camera-manager +## 7.2.7 + +### Patch Changes + +- Updated the camera picking logic +- Improved error handling on the `Camera` class + ## 7.2.6 ### Patch Changes diff --git a/packages/camera-manager/package.json b/packages/camera-manager/package.json index fd7fb75..649f84c 100644 --- a/packages/camera-manager/package.json +++ b/packages/camera-manager/package.json @@ -1,7 +1,7 @@ { "name": "@microblink/camera-manager", "description": "Manages cameras and stream, provides both a headless component and a UI component", - "version": "7.2.6", + "version": "7.2.7", "author": "Microblink", "scripts": { "build": "concurrently pnpm:build:js pnpm:build:types", diff --git a/packages/camera-manager/src/core/Camera.test.ts b/packages/camera-manager/src/core/Camera.test.ts index 4ab2c7b..c43173c 100644 --- a/packages/camera-manager/src/core/Camera.test.ts +++ b/packages/camera-manager/src/core/Camera.test.ts @@ -3,7 +3,7 @@ */ import { beforeEach, describe, expect, test, vi } from "vitest"; -import { createInputDeviceInfo } from "../media-mock/createInputDeviceInfo"; +import { createMockInputDeviceInfo } from "../media-mock/createInputDeviceInfo"; import { Camera, VideoResolutionName, videoResolutions } from "./Camera"; // Mock getUserMedia @@ -45,7 +45,7 @@ Object.defineProperty(globalThis, "navigator", { describe("Camera facingMode label detection", () => { test("Front label is applied correctly", () => { const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ mockCapabilities: { facingMode: ["user"], }, @@ -57,7 +57,7 @@ describe("Camera facingMode label detection", () => { test("Back label is applied correctly", () => { const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Camera 1, 0 back", mockCapabilities: { facingMode: ["environment"], @@ -78,7 +78,7 @@ describe("Camera resolution fallback", () => { mockGetUserMedia.mockResolvedValue(mockStream); const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Test Camera", mockCapabilities: { facingMode: ["environment"], @@ -104,7 +104,7 @@ describe("Camera resolution fallback", () => { }); const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Test Camera", mockCapabilities: { facingMode: ["environment"], @@ -143,7 +143,7 @@ describe("Camera resolution fallback", () => { }); const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Test Camera", mockCapabilities: { facingMode: ["environment"], @@ -171,7 +171,7 @@ describe("Camera resolution fallback", () => { mockGetUserMedia.mockRejectedValue(new Error("No resolution supported")); const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Test Camera", mockCapabilities: { facingMode: ["environment"], @@ -189,7 +189,7 @@ describe("Camera resolution fallback", () => { mockGetUserMedia.mockResolvedValue(mockStream); const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Test Camera", mockCapabilities: { facingMode: ["environment"], @@ -214,7 +214,7 @@ describe("Camera resolution fallback", () => { mockGetUserMedia.mockResolvedValue(mockStream); const camera = new Camera( - createInputDeviceInfo({ + createMockInputDeviceInfo({ label: "Test Camera", mockCapabilities: { facingMode: ["environment"], diff --git a/packages/camera-manager/src/core/Camera.ts b/packages/camera-manager/src/core/Camera.ts index 1a046e9..c0b27b1 100644 --- a/packages/camera-manager/src/core/Camera.ts +++ b/packages/camera-manager/src/core/Camera.ts @@ -3,11 +3,11 @@ */ import { subscribeWithSelector } from "zustand/middleware"; +import { shallow } from "zustand/shallow"; import { createStore } from "zustand/vanilla"; import { CameraError } from "./cameraError"; import { isBackCameraName, isFrontCameraName } from "./cameraNames"; import { closeStreamTracks, createConstraints } from "./cameraUtils"; -import { shallow } from "zustand/shallow"; interface CameraState { deviceInfo: InputDeviceInfo; @@ -19,6 +19,8 @@ interface CameraState { singleShotSupported: boolean; maxSupportedResolution?: VideoResolutionName; streamCapabilities?: ReturnType; + /** not implemented in iOS Safari and Firefox at the time of writing */ + deviceCapabilities?: ReturnType; error?: CameraError; } @@ -39,6 +41,7 @@ const initialCameraState: CameraState = { singleShotSupported: false, maxSupportedResolution: undefined, streamCapabilities: undefined, + deviceCapabilities: undefined, error: undefined, } as CameraState; @@ -77,6 +80,15 @@ export class Camera { } get activeStream() { + if (this.store.getState().activeStream?.active === false) { + console.warn( + "Detected inactive stream on camera:", + this.name, + this.store.getState().activeStream, + ); + // stream is inactive, clear it from state + this.store.setState({ activeStream: undefined }); + } return this.store.getState().activeStream; } @@ -174,9 +186,6 @@ export class Camera { fireImmediately?: boolean; }, ): () => void { - // Add your side effects here - console.debug(`Creating subscription for camera: ${this.name}`); - // Call original method with proper argument handling let unsubscribe: () => void; @@ -237,13 +246,15 @@ export class Camera { // Happens when camera device disconnects videoTrack.onended = () => { + const error = new CameraError( + "Camera stream ended unexpectedly", + "STREAM_ENDED_UNEXPECTEDLY", + ); this.store.setState({ - error: new CameraError( - "Camera stream ended unexpectedly", - "STREAM_ENDED_UNEXPECTEDLY", - ), + error, }); this.stopStream(); + throw error; }; return stream; @@ -266,8 +277,10 @@ export class Camera { this.deviceInfo.deviceId, ); + const stream = await navigator.mediaDevices.getUserMedia(constraints); + // can throw if device is currently in use by another process - return await navigator.mediaDevices.getUserMedia(constraints); + return stream; } catch (error) { // This branch shouldn't happen as we are using `ideal` when making // constraints, however it's a good fallback to have @@ -300,6 +313,12 @@ export class Camera { private populateCapabilities(stream: MediaStream) { const streamCapabilities = stream.getVideoTracks()[0].getCapabilities(); + if ("getCapabilities" in this.deviceInfo) { + // not implemented in iOS Safari and Firefox at the time of writing + const deviceCapabilities = this.deviceInfo.getCapabilities(); + this.store.setState({ deviceCapabilities }); + } + // shallow compare and set to avoid unnecessary updates const same = shallow(streamCapabilities, this.streamCapabilities); diff --git a/packages/camera-manager/src/core/CameraManager.ts b/packages/camera-manager/src/core/CameraManager.ts index 87598e2..bbd40fc 100644 --- a/packages/camera-manager/src/core/CameraManager.ts +++ b/packages/camera-manager/src/core/CameraManager.ts @@ -680,7 +680,7 @@ export class CameraManager { async #startCameraStream({ autoplay = true, preferredCamera, - preferredFacing, + preferredFacing = "back", }: StartCameraStreamOptions = {}) { const videoElement = store.getState().videoElement; diff --git a/packages/camera-manager/src/core/cameraUtils.test.ts b/packages/camera-manager/src/core/cameraUtils.test.ts index 083b148..3609789 100644 --- a/packages/camera-manager/src/core/cameraUtils.test.ts +++ b/packages/camera-manager/src/core/cameraUtils.test.ts @@ -188,14 +188,15 @@ describe("filterCamerasByFacing", () => { expect(filtered.map((c) => c.name)).toEqual(["Front Camera", "front 1"]); }); - test("defaults to back cameras when facing is undefined", () => { + test("returns all cameras when no facing mode is requested", () => { const cameras = [ new MockCamera("Back Camera", { facingMode: "back" }), new MockCamera("Front Camera", { facingMode: "front" }), + new MockCamera("back 0", { facingMode: "back" }), + new MockCamera("front 1", { facingMode: "front" }), ]; const filtered = filterCamerasByFacing(cameras, undefined); - expect(filtered).toHaveLength(1); - expect(filtered[0].name).toBe("Back Camera"); + expect(filtered).toHaveLength(4); }); test("returns empty array when no matching cameras", () => { @@ -210,12 +211,14 @@ describe("filterCamerasByFacing", () => { describe("findIdealCamera", () => { test("throws error when no cameras available", async () => { - await expect(findIdealCamera([])).rejects.toThrow("No cameras found"); + await expect(findIdealCamera([], "1080p", "back")).rejects.toThrow( + "No cameras found", + ); }); test("returns single camera when only one available", async () => { const camera = new MockCamera("Test Camera"); - const result = await findIdealCamera([camera]); + const result = await findIdealCamera([camera], "1080p", "front"); expect(result).toBe(camera); }); @@ -285,7 +288,8 @@ describe("findIdealCamera", () => { expect(result.name).toBe("Unknown Camera 3"); }); - test("handles stream failures and retries", async () => { + // TODO: shouldn't be a capability of `findIdealCamera` + test.fails("falls back to last known working camera", async () => { let camera1Attempts = 0; let camera2Attempts = 0; @@ -310,7 +314,7 @@ describe("findIdealCamera", () => { }), ]; - const result = await findIdealCamera(cameras); + const result = await findIdealCamera(cameras, "1080p", undefined); expect(result.name).toBe("Camera 1"); expect(camera1Attempts).toBe(2); expect(camera2Attempts).toBe(1); diff --git a/packages/camera-manager/src/core/cameraUtils.ts b/packages/camera-manager/src/core/cameraUtils.ts index 4ae47c4..0cc2063 100644 --- a/packages/camera-manager/src/core/cameraUtils.ts +++ b/packages/camera-manager/src/core/cameraUtils.ts @@ -13,7 +13,7 @@ import { } from "./Camera"; import { isBackCameraName, isFrontCameraName } from "./cameraNames"; import { backDualWideCameraLocalizations } from "./iosCameraNames"; -import { asError } from "./utils"; +import { asError, isIOS } from "./utils"; import { CameraError } from "./cameraError"; /** @@ -140,11 +140,15 @@ export function filterCamerasByFacing( requestedFacing: FacingMode, ): Camera[] { return cameras.filter((camera) => { - if (requestedFacing === "back" || requestedFacing === undefined) { + if (requestedFacing === "back") { return isBackCameraName(camera.name); - } else { + } + if (requestedFacing === "front") { return isFrontCameraName(camera.name); } + + // If no facing mode is requested, return all cameras + return true; }); } @@ -160,12 +164,12 @@ export function filterCamerasByFacing( */ export const findIdealCamera = async ( cameras: Camera[], - resolution: VideoResolutionName = "4k", - requestedFacing: FacingMode = "back", + resolution: VideoResolutionName, + requestedFacing: FacingMode, ): Promise => { // if there are no cameras, throw an error if (cameras.length === 0) { - throw new Error("No cameras found"); + throw new Error("No cameras found on device"); } // if there's only one camera, we can return it immediately @@ -216,10 +220,12 @@ export const findIdealCamera = async ( let maxScore = -Infinity; // we iterate in reverse order to prioritize the last camera - // this is usually the best camera on Android - for (let i = cameraPool.length - 1; i >= 0; i--) { - const camera = cameraPool[i]; + // this is usually the best camera on Android devices + if (!isIOS()) { + cameraPool.reverse(); + } + for (const camera of cameraPool) { try { // Start stream to detect capabilities await camera.startStream(resolution); @@ -230,22 +236,23 @@ export const findIdealCamera = async ( // Update best camera if this one has a higher score if (score > maxScore) { - // Stop stream on previous best camera if it exists - if (bestCamera && bestCamera !== camera) { - bestCamera.stopStream(); - } maxScore = score; bestCamera = camera; } else { // Not the best camera, stop its stream camera.stopStream(); + + // go to next loop + continue; } // Perfect match - has both torch and single shot support if (score === 2) { - console.debug("Found camera with all capabilities, returning early"); return camera; } + + // Stop stream to free camera for the best candidate search + camera.stopStream(); } catch (error) { console.warn(`Failed to test camera ${camera.name}:`, error); // Stop stream if it was started @@ -253,15 +260,12 @@ export const findIdealCamera = async ( } } - // Return the best camera we found - if (bestCamera) { - return bestCamera; + if (!bestCamera) { + throw new Error("No suitable camera found, should not happen!"); } - // If we haven't found any working camera, try one last time with the first camera - const firstCamera = cameraPool[0]; - await firstCamera.startStream(resolution); - return firstCamera; + // Return the best camera we found, or the last one that was tested + return bestCamera; }; /** diff --git a/packages/camera-manager/src/core/utils.ts b/packages/camera-manager/src/core/utils.ts index e628b81..c6b0d51 100644 --- a/packages/camera-manager/src/core/utils.ts +++ b/packages/camera-manager/src/core/utils.ts @@ -48,3 +48,8 @@ export function getKeyWithHighestValue(map: Map) { return maxKey; } + +export function isIOS(): boolean { + const userAgent = self.navigator.userAgent.toLowerCase(); + return /iphone|ipad|ipod/.test(userAgent); +} diff --git a/packages/camera-manager/src/media-mock/MediaMocker.ts b/packages/camera-manager/src/media-mock/MediaMocker.ts index 80c9546..7a5e7b7 100644 --- a/packages/camera-manager/src/media-mock/MediaMocker.ts +++ b/packages/camera-manager/src/media-mock/MediaMocker.ts @@ -3,7 +3,7 @@ */ import { FacingMode } from "../core/Camera"; -import { createInputDeviceInfo } from "./createInputDeviceInfo"; +import { createMockInputDeviceInfo } from "./createInputDeviceInfo"; import { defineProperty } from "./defineProperty"; import { ExtendedCameraInfo, fakeDevices } from "./fake-devices"; import { getResolutionFromConstraints } from "./utils"; @@ -58,7 +58,7 @@ class MediaMocker { * @returns The camera devices. */ getCameraDevices() { - return fakeDevices[this.fakeDevice].cameras; + return this.cameras; } /** @@ -100,7 +100,7 @@ class MediaMocker { "enumerateDevices", (): Promise => { const devices = this.cameras.map((camera) => { - return createInputDeviceInfo(camera.inputDeviceInfo); + return createMockInputDeviceInfo(camera.inputDeviceInfo); }); return Promise.resolve(devices); diff --git a/packages/camera-manager/src/media-mock/createInputDeviceInfo.ts b/packages/camera-manager/src/media-mock/createInputDeviceInfo.ts index 2e5a4fa..5e97de3 100644 --- a/packages/camera-manager/src/media-mock/createInputDeviceInfo.ts +++ b/packages/camera-manager/src/media-mock/createInputDeviceInfo.ts @@ -24,7 +24,7 @@ interface CreateInputDeviceProps extends Partial { * @param props - The properties for the device. * @returns The fake `InputDeviceInfo` info object. */ -export const createInputDeviceInfo = ({ +export const createMockInputDeviceInfo = ({ label, deviceId = crypto.randomUUID(), groupId = crypto.randomUUID(), @@ -48,12 +48,7 @@ export const createInputDeviceInfo = ({ }; }, getCapabilities: () => { - // throw error if Firefox user agent - // not supported as of Firefox 133 - // https://bugzilla.mozilla.org/show_bug.cgi?id=1179084 - if (navigator.userAgent.includes("Firefox")) { - throw new Error("Not implemented"); - } + // not supported as of Firefox 133 and iOS 16.4 return mockCapabilities; }, }; diff --git a/packages/camera-manager/src/media-mock/fake-devices.ts b/packages/camera-manager/src/media-mock/fake-devices.ts index 0b44d4f..449b102 100644 --- a/packages/camera-manager/src/media-mock/fake-devices.ts +++ b/packages/camera-manager/src/media-mock/fake-devices.ts @@ -6,15 +6,21 @@ import { MockiPhone15 } from "./fakeDevices/iPhone15"; import { MockiPhoneSE } from "./fakeDevices/iPhoneSE"; import { MockSamsungS21FE } from "./fakeDevices/SamsungS21FE"; import { desktopSingleFrontFacing } from "./fakeDevices/DesktopSingleFrontFacing"; +import { MockiPhoneX } from "./fakeDevices/iPhoneX"; + +// Not available in iOS Safari +type DeviceCapabilities = ReturnType | null; +type StreamCapabilities = ReturnType; +type MediaTrackSettings = ReturnType; /** * `deviceCapabilities` and `streamCapabilities` seem to be the same on iOS Safari */ export type ExtendedCameraInfo = { inputDeviceInfo: Omit; - deviceCapabilities: ReturnType; - streamCapabilities: ReturnType; - mediaTrackSettings: ReturnType; + deviceCapabilities?: DeviceCapabilities; + streamCapabilities: StreamCapabilities; + mediaTrackSettings: MediaTrackSettings; }; /** @@ -31,6 +37,7 @@ export type FakeDevice = { export const fakeDevices: Record = { "iPhone 15": MockiPhone15, "iPhone SE": MockiPhoneSE, + "iPhone X": MockiPhoneX, "Samsung S21FE": MockSamsungS21FE, "Desktop Single Front Facing": desktopSingleFrontFacing, } as const; diff --git a/packages/camera-manager/src/media-mock/fakeDevices/iPhoneX.ts b/packages/camera-manager/src/media-mock/fakeDevices/iPhoneX.ts new file mode 100644 index 0000000..3e2f7ad --- /dev/null +++ b/packages/camera-manager/src/media-mock/fakeDevices/iPhoneX.ts @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2025 Microblink Ltd. All rights reserved. + */ + +import { FakeDevice } from "../fake-devices"; + +export const MockiPhoneX: FakeDevice = { + name: "iPhone X", + cameras: [ + { + inputDeviceInfo: { + deviceId: "827A38BC29B5012BCB51D9A35AB0EF7729CC8897", + kind: "videoinput", + label: "Front Camera", + groupId: "", + }, + streamCapabilities: { + aspectRatio: { + max: 3088, + min: 0.0004310344827586207, + }, + deviceId: "827A38BC29B5012BCB51D9A35AB0EF7729CC8897", + facingMode: ["user"], + frameRate: { + max: 60, + min: 1, + }, + height: { + max: 2320, + min: 1, + }, + width: { + max: 3088, + min: 1, + }, + }, + mediaTrackSettings: { + deviceId: "827A38BC29B5012BCB51D9A35AB0EF7729CC8897", + facingMode: "user", + frameRate: 30, + height: 1080, + width: 1920, + }, + }, + { + inputDeviceInfo: { + deviceId: "794B89EFC336509B5944B7B404E16E026850CAAD", + kind: "videoinput", + label: "Back Camera", + groupId: "", + }, + streamCapabilities: { + aspectRatio: { + max: 4032, + min: 0.00033068783068783067, + }, + deviceId: "794B89EFC336509B5944B7B404E16E026850CAAD", + facingMode: ["environment"], + frameRate: { + max: 60, + min: 1, + }, + height: { + max: 3024, + min: 1, + }, + width: { + max: 4032, + min: 1, + }, + }, + mediaTrackSettings: { + deviceId: "794B89EFC336509B5944B7B404E16E026850CAAD", + facingMode: "environment", + frameRate: 30, + height: 1080, + width: 1920, + }, + }, + { + inputDeviceInfo: { + deviceId: "2DF80612385587FFDE6A6FDE1CD4EC5BD08A24CC", + kind: "videoinput", + label: "Back Telephoto Camera", + groupId: "", + }, + streamCapabilities: { + aspectRatio: { + max: 4032, + min: 0.00033068783068783067, + }, + deviceId: "2DF80612385587FFDE6A6FDE1CD4EC5BD08A24CC", + facingMode: ["environment"], + frameRate: { + max: 60, + min: 1, + }, + height: { + max: 3024, + min: 1, + }, + width: { + max: 4032, + min: 1, + }, + }, + mediaTrackSettings: { + deviceId: "2DF80612385587FFDE6A6FDE1CD4EC5BD08A24CC", + facingMode: "environment", + frameRate: 30, + height: 1080, + width: 1920, + }, + }, + ], +}; diff --git a/packages/camera-manager/src/tests/camera-picking.test.ts b/packages/camera-manager/src/tests/camera-picking.test.ts index d1cda8e..031becb 100644 --- a/packages/camera-manager/src/tests/camera-picking.test.ts +++ b/packages/camera-manager/src/tests/camera-picking.test.ts @@ -2,13 +2,13 @@ * Copyright (c) 2025 Microblink Ltd. All rights reserved. */ -import { expect, test, describe, beforeAll } from "vitest"; -import { mediaMocker } from "../media-mock/MediaMocker"; +import { beforeAll, describe, expect, test, vi } from "vitest"; import { createCameras, findIdealCamera, obtainVideoInputDevices, } from "../core/cameraUtils"; +import { mediaMocker } from "../media-mock/MediaMocker"; // Test constants for better maintainability const DEVICE_NAMES = { @@ -35,198 +35,202 @@ async function getCameraInstances() { return createCameras(cameraInfos); } -describe("Camera picking", () => { - describe("Camera picking on iPhone", () => { - beforeAll(() => { - mediaMocker.configure({ device: "iPhone 15" }); - mediaMocker.mock(); +describe("iPhones", () => { + beforeAll(() => { + const originalUA = navigator.userAgent; - return () => mediaMocker.unmock(); + // It's important to mock the user agent as we sort cameras differently on iOS inside findIdealCamera() + Object.defineProperty(window.navigator, "userAgent", { + value: + "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1", + writable: true, }); - test("iPhone 15 selects Back Dual Wide Camera by default ", async () => { - const cameraInstances = await getCameraInstances(); - - expect((await findIdealCamera(cameraInstances)).name).toBe( - DEVICE_NAMES.IPHONE_15.BACK, - ); - - mediaMocker.reverseCameraOrder(); + return () => { + Object.defineProperty(window.navigator, "userAgent", { + value: originalUA, + writable: true, + }); + }; + }); + describe("Camera picking on iPhone X", () => { + beforeAll(() => { + mediaMocker.configure({ device: "iPhone X" }); + mediaMocker.mock(); - expect((await findIdealCamera(cameraInstances)).name).toBe( - DEVICE_NAMES.IPHONE_15.BACK, - ); + return () => { + mediaMocker.unmock(); + }; }); - test("iPhone 15 selects Back Dual Wide Camera when requesting back facing ", async () => { - const cameraInstances = await getCameraInstances(); + test("iPhone X selects Back Camera when provided back facing", async () => { + let cameraInstances = await getCameraInstances(); expect( (await findIdealCamera(cameraInstances, "1080p", "back")).name, - ).toBe(DEVICE_NAMES.IPHONE_15.BACK); + ).toBe("Back Camera"); mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); + // This is expected expect( (await findIdealCamera(cameraInstances, "1080p", "back")).name, - ).toBe(DEVICE_NAMES.IPHONE_15.BACK); - }); - - test("iPhone 15 selects Front Camera when requesting front facing ", async () => { - const cameraInstances = await getCameraInstances(); - - expect( - (await findIdealCamera(cameraInstances, "1080p", "front")).name, - ).toBe(DEVICE_NAMES.IPHONE_15.FRONT); - - mediaMocker.reverseCameraOrder(); - - expect( - (await findIdealCamera(cameraInstances, "1080p", "front")).name, - ).toBe(DEVICE_NAMES.IPHONE_15.FRONT); + ).toBe("Back Telephoto Camera"); }); }); - describe("Camera picking on Samsung S21FE", () => { + describe("Camera picking on iPhone 15", () => { beforeAll(() => { - mediaMocker.configure({ device: "Samsung S21FE" }); + mediaMocker.configure({ device: "iPhone 15" }); mediaMocker.mock(); - return () => mediaMocker.unmock(); + return () => { + mediaMocker.unmock(); + }; }); - test("Samsung S21FE selects camera2 0, facing back by default ", async () => { - const cameraInstances = await getCameraInstances(); - - expect((await findIdealCamera(cameraInstances)).name).toBe( - DEVICE_NAMES.SAMSUNG_S21FE.BACK, - ); - - mediaMocker.reverseCameraOrder(); - - expect((await findIdealCamera(cameraInstances)).name).toBe( - DEVICE_NAMES.SAMSUNG_S21FE.BACK, - ); - }); - - test("Samsung S21FE selects camera2 0, facing back when requesting back facing ", async () => { - const cameraInstances = await getCameraInstances(); + test("iPhone 15 selects Back Dual Wide Camera when requesting back facing ", async () => { + let cameraInstances = await getCameraInstances(); expect( (await findIdealCamera(cameraInstances, "1080p", "back")).name, - ).toBe(DEVICE_NAMES.SAMSUNG_S21FE.BACK); + ).toBe(DEVICE_NAMES.IPHONE_15.BACK); mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); expect( (await findIdealCamera(cameraInstances, "1080p", "back")).name, - ).toBe(DEVICE_NAMES.SAMSUNG_S21FE.BACK); + ).toBe(DEVICE_NAMES.IPHONE_15.BACK); }); - test("Samsung S21FE selects camera2 3, facing front when requesting front facing ", async () => { - const cameraInstances = await getCameraInstances(); + test("iPhone 15 selects Front Camera when requesting front facing ", async () => { + let cameraInstances = await getCameraInstances(); expect( (await findIdealCamera(cameraInstances, "1080p", "front")).name, - ).toBe(DEVICE_NAMES.SAMSUNG_S21FE.FRONT); + ).toBe(DEVICE_NAMES.IPHONE_15.FRONT); mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); expect( (await findIdealCamera(cameraInstances, "1080p", "front")).name, - ).toBe(DEVICE_NAMES.SAMSUNG_S21FE.FRONT); + ).toBe(DEVICE_NAMES.IPHONE_15.FRONT); }); - }); - describe("Camera picking on iPhone SE", () => { - beforeAll(() => { - mediaMocker.configure({ device: "iPhone SE" }); - mediaMocker.mock(); + describe("Camera picking on iPhone SE", () => { + beforeAll(() => { + mediaMocker.configure({ device: "iPhone SE" }); + mediaMocker.mock(); - return () => mediaMocker.unmock(); - }); + return () => mediaMocker.unmock(); + }); - test("iPhone SE selects Back Camera by default ", async () => { - const cameraInstances = await getCameraInstances(); + test("iPhone SE selects Back Camera when requesting back facing ", async () => { + let cameraInstances = await getCameraInstances(); - expect((await findIdealCamera(cameraInstances)).name).toBe( - DEVICE_NAMES.IPHONE_SE.BACK, - ); + expect( + (await findIdealCamera(cameraInstances, "1080p", "back")).name, + ).toBe(DEVICE_NAMES.IPHONE_SE.BACK); - mediaMocker.reverseCameraOrder(); + mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); - expect((await findIdealCamera(cameraInstances)).name).toBe( - DEVICE_NAMES.IPHONE_SE.BACK, - ); - }); + expect( + (await findIdealCamera(cameraInstances, "1080p", "back")).name, + ).toBe(DEVICE_NAMES.IPHONE_SE.BACK); + }); - test("iPhone SE selects Back Camera when requesting back facing ", async () => { - const cameraInstances = await getCameraInstances(); + test("iPhone SE selects Front Camera when requesting front facing ", async () => { + let cameraInstances = await getCameraInstances(); - expect( - (await findIdealCamera(cameraInstances, "1080p", "back")).name, - ).toBe(DEVICE_NAMES.IPHONE_SE.BACK); + expect( + (await findIdealCamera(cameraInstances, "1080p", "front")).name, + ).toBe(DEVICE_NAMES.IPHONE_SE.FRONT); - mediaMocker.reverseCameraOrder(); + mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); - expect( - (await findIdealCamera(cameraInstances, "1080p", "back")).name, - ).toBe(DEVICE_NAMES.IPHONE_SE.BACK); + expect( + (await findIdealCamera(cameraInstances, "1080p", "front")).name, + ).toBe(DEVICE_NAMES.IPHONE_SE.FRONT); + }); }); + }); +}); - test("iPhone SE selects Front Camera when requesting front facing ", async () => { - const cameraInstances = await getCameraInstances(); +describe("Camera picking on Samsung S21FE", () => { + beforeAll(() => { + mediaMocker.configure({ device: "Samsung S21FE" }); + mediaMocker.mock(); - expect( - (await findIdealCamera(cameraInstances, "1080p", "front")).name, - ).toBe(DEVICE_NAMES.IPHONE_SE.FRONT); + return () => mediaMocker.unmock(); + }); - mediaMocker.reverseCameraOrder(); + test("Samsung S21FE selects camera2 0, facing back when requesting back facing ", async () => { + let cameraInstances = await getCameraInstances(); - expect( - (await findIdealCamera(cameraInstances, "1080p", "front")).name, - ).toBe(DEVICE_NAMES.IPHONE_SE.FRONT); - }); + expect((await findIdealCamera(cameraInstances, "1080p", "back")).name).toBe( + DEVICE_NAMES.SAMSUNG_S21FE.BACK, + ); + + mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); + + expect((await findIdealCamera(cameraInstances, "1080p", "back")).name).toBe( + DEVICE_NAMES.SAMSUNG_S21FE.BACK, + ); }); - describe("Camera picking on desktop with single front facing camera", () => { - beforeAll(() => { - mediaMocker.configure({ device: "Desktop Single Front Facing" }); - mediaMocker.mock(); + test("Samsung S21FE selects camera2 3, facing front when requesting front facing ", async () => { + let cameraInstances = await getCameraInstances(); - return () => mediaMocker.unmock(); - }); + // Ordering matters here + expect( + (await findIdealCamera(cameraInstances, "1080p", "front")).name, + ).toBe("camera2 1, facing front"); - test("Desktop with single front facing camera returns the front camera when no facing mode is requested", async () => { - const cameraInstances = await getCameraInstances(); + mediaMocker.reverseCameraOrder(); + cameraInstances = await getCameraInstances(); - const selectedCamera = await findIdealCamera(cameraInstances); - expect(selectedCamera.name).toBe(DEVICE_NAMES.DESKTOP.FRONT); - expect(selectedCamera.facingMode).toBe("front"); - }); + expect( + (await findIdealCamera(cameraInstances, "1080p", "front")).name, + ).toBe(DEVICE_NAMES.SAMSUNG_S21FE.FRONT); + }); +}); - test("Desktop with single front facing camera returns the front camera even when back facing is requested", async () => { - const cameraInstances = await getCameraInstances(); +describe("Camera picking on desktop with single front facing camera", () => { + beforeAll(() => { + mediaMocker.configure({ device: "Desktop Single Front Facing" }); + mediaMocker.mock(); - const selectedCamera = await findIdealCamera( - cameraInstances, - "1080p", - "back", - ); - expect(selectedCamera.name).toBe(DEVICE_NAMES.DESKTOP.FRONT); - expect(selectedCamera.facingMode).toBe("front"); - }); + return () => mediaMocker.unmock(); + }); + + // TODO: this should not be the desired behavior + test("Desktop with single front facing camera returns the front camera even when back facing is requested", async () => { + const cameraInstances = await getCameraInstances(); + + const selectedCamera = await findIdealCamera( + cameraInstances, + "1080p", + "back", + ); + expect(selectedCamera.name).toBe(DEVICE_NAMES.DESKTOP.FRONT); + expect(selectedCamera.facingMode).toBe("front"); + }); - test("Desktop with single front facing camera returns the front camera when front facing is requested", async () => { - const cameraInstances = await getCameraInstances(); + test("Desktop with single front facing camera returns the front camera when front facing is requested", async () => { + const cameraInstances = await getCameraInstances(); - const selectedCamera = await findIdealCamera( - cameraInstances, - "1080p", - "front", - ); - expect(selectedCamera.name).toBe(DEVICE_NAMES.DESKTOP.FRONT); - expect(selectedCamera.facingMode).toBe("front"); - }); + const selectedCamera = await findIdealCamera( + cameraInstances, + "1080p", + "front", + ); + expect(selectedCamera.name).toBe(DEVICE_NAMES.DESKTOP.FRONT); + expect(selectedCamera.facingMode).toBe("front"); }); });