@arkyc/face-match 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/drivers/external.d.mts +1 -3
- package/dist/drivers/external.d.mts.map +1 -1
- package/dist/drivers/local.d.mts +2 -3
- package/dist/drivers/local.d.mts.map +1 -1
- package/dist/drivers/local.mjs +1 -1
- package/dist/drivers/mock.d.mts +1 -3
- package/dist/drivers/mock.d.mts.map +1 -1
- package/dist/registry.d.mts +1 -3
- package/dist/registry.d.mts.map +1 -1
- package/dist/types.d.mts +5 -7
- package/dist/types.d.mts.map +1 -1
- package/package.json +3 -3
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { FaceMatchConfig, FaceMatchDriver, FaceMatchRequest } from "../types.mjs";
|
|
2
2
|
import { FaceMatchResultData } from "@arkyc/types";
|
|
3
|
-
|
|
4
3
|
//#region src/drivers/external.d.ts
|
|
5
4
|
/**
|
|
6
5
|
* Generic HTTP face-match driver: POSTs both base64 images to a configured
|
|
7
6
|
* endpoint and expects a {@link FaceMatchResultData}-shaped JSON response.
|
|
8
7
|
*/
|
|
9
|
-
declare class ExternalFaceMatchDriver implements FaceMatchDriver {
|
|
8
|
+
export declare class ExternalFaceMatchDriver implements FaceMatchDriver {
|
|
10
9
|
private readonly config;
|
|
11
10
|
readonly name = "external";
|
|
12
11
|
constructor(config: FaceMatchConfig);
|
|
13
12
|
compare(request: FaceMatchRequest): Promise<FaceMatchResultData>;
|
|
14
13
|
}
|
|
15
14
|
//#endregion
|
|
16
|
-
export { ExternalFaceMatchDriver };
|
|
17
15
|
//# sourceMappingURL=external.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.d.mts","names":[],"sources":["../../src/drivers/external.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"external.d.mts","names":[],"sources":["../../src/drivers/external.ts"],"mappings":";;;;;;;qBAOa,mCAAmC;mBAGjB;WAFpB;EAEoB,YAAA,QAAQ;EAI/B,QAAQ,SAAS,mBAAmB,QAAQ"}
|
package/dist/drivers/local.d.mts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { FaceEmbedding, FaceMatchConfig, FaceMatchDriver, FaceMatchRequest } from "../types.mjs";
|
|
2
|
+
import "@arkyc/vision";
|
|
2
3
|
import { FaceMatchResultData } from "@arkyc/types";
|
|
3
|
-
|
|
4
4
|
//#region src/drivers/local.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Face matching in-process with open models: YuNet finds and aligns the face,
|
|
7
7
|
* SFace embeds it, and the two embeddings are compared by cosine similarity.
|
|
8
8
|
* The similarity is mapped to a score where the match threshold sits at 0.6.
|
|
9
9
|
*/
|
|
10
|
-
declare class LocalFaceMatchDriver implements FaceMatchDriver {
|
|
10
|
+
export declare class LocalFaceMatchDriver implements FaceMatchDriver {
|
|
11
11
|
readonly name = "local";
|
|
12
12
|
private loaded?;
|
|
13
13
|
private readonly store;
|
|
@@ -19,5 +19,4 @@ declare class LocalFaceMatchDriver implements FaceMatchDriver {
|
|
|
19
19
|
private models;
|
|
20
20
|
}
|
|
21
21
|
//#endregion
|
|
22
|
-
export { LocalFaceMatchDriver };
|
|
23
22
|
//# sourceMappingURL=local.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.mts","names":[],"sources":["../../src/drivers/local.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"local.d.mts","names":[],"sources":["../../src/drivers/local.ts"],"mappings":";;;;;;;;;qBAsBa,gCAAgC;WAClC;UAED;mBACS;EAEL,YAAA,QAAQ;EAKd,QAAQ,SAAS,mBAAmB,QAAQ;EAqB5C,MAAM,OAAO,aAAa,SAAS;IAAkB;;UAoBnD"}
|
package/dist/drivers/local.mjs
CHANGED
package/dist/drivers/mock.d.mts
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { FaceEmbedding, FaceMatchDriver, FaceMatchRequest } from "../types.mjs";
|
|
2
2
|
import { FaceMatchResultData } from "@arkyc/types";
|
|
3
|
-
|
|
4
3
|
//#region src/drivers/mock.d.ts
|
|
5
4
|
/**
|
|
6
5
|
* Deterministic face-match driver for development + tests. Passes by default;
|
|
7
6
|
* `hints` steer the similarity score and verdict.
|
|
8
7
|
*/
|
|
9
|
-
declare class MockFaceMatchDriver implements FaceMatchDriver {
|
|
8
|
+
export declare class MockFaceMatchDriver implements FaceMatchDriver {
|
|
10
9
|
readonly name = "mock";
|
|
11
10
|
compare(request: FaceMatchRequest): Promise<FaceMatchResultData>;
|
|
12
11
|
/** A unit vector derived from the image bytes, so identical images embed identically. */
|
|
13
12
|
embed(image: Uint8Array): Promise<FaceEmbedding | null>;
|
|
14
13
|
}
|
|
15
14
|
//#endregion
|
|
16
|
-
export { MockFaceMatchDriver };
|
|
17
15
|
//# sourceMappingURL=mock.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.mts","names":[],"sources":["../../src/drivers/mock.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"mock.d.mts","names":[],"sources":["../../src/drivers/mock.ts"],"mappings":";;;;;;;qBAYa,+BAA+B;WACjC;EAEH,QAAQ,SAAS,mBAAmB,QAAQ;;EAa5C,MAAM,OAAO,aAAa,QAAQ"}
|
package/dist/registry.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { FaceMatchConfig, FaceMatchDriver } from "./types.mjs";
|
|
2
|
-
|
|
3
2
|
//#region src/registry.d.ts
|
|
4
3
|
/** Selects a face-match driver from config. */
|
|
5
|
-
declare class FaceMatchDriverFactory {
|
|
4
|
+
export declare class FaceMatchDriverFactory {
|
|
6
5
|
/**'
|
|
7
6
|
* Resolve the face-match driver named by `config`.
|
|
8
7
|
*
|
|
@@ -12,5 +11,4 @@ declare class FaceMatchDriverFactory {
|
|
|
12
11
|
static create(config: FaceMatchConfig): FaceMatchDriver;
|
|
13
12
|
}
|
|
14
13
|
//#endregion
|
|
15
|
-
export { FaceMatchDriverFactory };
|
|
16
14
|
//# sourceMappingURL=registry.d.mts.map
|
package/dist/registry.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.mts","names":[],"sources":["../src/registry.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.mts","names":[],"sources":["../src/registry.ts"],"mappings":";;;qBAOa;;;;;;;SAOJ,OAAO,QAAQ,kBAAkB"}
|
package/dist/types.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { FaceMatchResultData } from "@arkyc/types";
|
|
2
|
-
|
|
3
2
|
//#region src/types.d.ts
|
|
4
3
|
/** The two images compared by a face-match driver. */
|
|
5
|
-
interface FaceMatchRequest {
|
|
4
|
+
export interface FaceMatchRequest {
|
|
6
5
|
/** Portrait extracted from the identity document. */
|
|
7
6
|
documentPortrait: Uint8Array;
|
|
8
7
|
/** Selfie captured during liveness. */
|
|
@@ -17,7 +16,7 @@ interface FaceMatchRequest {
|
|
|
17
16
|
};
|
|
18
17
|
}
|
|
19
18
|
/** A face embedding: a vector two images of the same person land close together in. */
|
|
20
|
-
interface FaceEmbedding {
|
|
19
|
+
export interface FaceEmbedding {
|
|
21
20
|
vector: number[];
|
|
22
21
|
/** The model that produced it. Embeddings from different models are not comparable. */
|
|
23
22
|
model: string;
|
|
@@ -25,16 +24,16 @@ interface FaceEmbedding {
|
|
|
25
24
|
matchThreshold: number;
|
|
26
25
|
}
|
|
27
26
|
/** A pluggable face-match provider. */
|
|
28
|
-
interface FaceMatchDriver {
|
|
27
|
+
export interface FaceMatchDriver {
|
|
29
28
|
readonly name: string;
|
|
30
29
|
compare(request: FaceMatchRequest): Promise<FaceMatchResultData>;
|
|
31
30
|
/** Embed the most prominent face in an image, or `null` when there is none. Optional capability. */
|
|
32
31
|
embed?(image: Uint8Array): Promise<FaceEmbedding | null>;
|
|
33
32
|
}
|
|
34
33
|
/** Identifier for a registered face-match driver. */
|
|
35
|
-
type FaceMatchDriverName = 'mock' | 'external' | 'local';
|
|
34
|
+
export type FaceMatchDriverName = 'mock' | 'external' | 'local';
|
|
36
35
|
/** Configuration selecting + parameterising the active face-match driver. */
|
|
37
|
-
interface FaceMatchConfig {
|
|
36
|
+
export interface FaceMatchConfig {
|
|
38
37
|
driver: FaceMatchDriverName;
|
|
39
38
|
endpoint?: string;
|
|
40
39
|
apiKey?: string;
|
|
@@ -42,5 +41,4 @@ interface FaceMatchConfig {
|
|
|
42
41
|
modelDirectory?: string;
|
|
43
42
|
}
|
|
44
43
|
//#endregion
|
|
45
|
-
export { FaceEmbedding, FaceMatchConfig, FaceMatchDriver, FaceMatchDriverName, FaceMatchRequest };
|
|
46
44
|
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;iBAGiB;;EAEf,kBAAkB;;EAElB,QAAQ;;;;;EAKR;IAAU;IAA0B;;;;iBAIrB;EACf;;EAEA;;EAEA;;;iBAIe;WACN;EACT,QAAQ,SAAS,mBAAmB,QAAQ;;EAE5C,OAAO,OAAO,aAAa,QAAQ;;;YAIzB;;iBAGK;EACf,QAAQ;EACR;EACA;;EAEA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkyc/face-match",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "Driver-based face matching",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"dist"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@arkyc/types": "^2.
|
|
40
|
-
"@arkyc/vision": "^2.
|
|
39
|
+
"@arkyc/types": "^2.1.1",
|
|
40
|
+
"@arkyc/vision": "^2.1.1"
|
|
41
41
|
},
|
|
42
42
|
"scripts": {
|
|
43
43
|
"typecheck": "tsc --noEmit",
|