@visutry/tryon-core 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -0
- package/dist/__fixtures__/faceFixtures.d.ts +13 -0
- package/dist/__fixtures__/faceFixtures.d.ts.map +1 -0
- package/dist/__fixtures__/faceFixtures.js +206 -0
- package/dist/__fixtures__/faceFixtures.js.map +1 -0
- package/dist/adapter/visutry-site.d.ts +76 -0
- package/dist/adapter/visutry-site.d.ts.map +1 -0
- package/dist/adapter/visutry-site.js +172 -0
- package/dist/adapter/visutry-site.js.map +1 -0
- package/dist/analytics.d.ts +89 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +49 -0
- package/dist/analytics.js.map +1 -0
- package/dist/coordinate/CoordinateSystem.d.ts +46 -0
- package/dist/coordinate/CoordinateSystem.d.ts.map +1 -0
- package/dist/coordinate/CoordinateSystem.js +88 -0
- package/dist/coordinate/CoordinateSystem.js.map +1 -0
- package/dist/face/FaceMetricsCalculator.d.ts +52 -0
- package/dist/face/FaceMetricsCalculator.d.ts.map +1 -0
- package/dist/face/FaceMetricsCalculator.js +375 -0
- package/dist/face/FaceMetricsCalculator.js.map +1 -0
- package/dist/face/FaceSemanticMapper.d.ts +54 -0
- package/dist/face/FaceSemanticMapper.d.ts.map +1 -0
- package/dist/face/FaceSemanticMapper.js +129 -0
- package/dist/face/FaceSemanticMapper.js.map +1 -0
- package/dist/face/FaceShapeScorer.d.ts +35 -0
- package/dist/face/FaceShapeScorer.d.ts.map +1 -0
- package/dist/face/FaceShapeScorer.js +265 -0
- package/dist/face/FaceShapeScorer.js.map +1 -0
- package/dist/face/feature-extractor.d.ts +46 -0
- package/dist/face/feature-extractor.d.ts.map +1 -0
- package/dist/face/feature-extractor.js +106 -0
- package/dist/face/feature-extractor.js.map +1 -0
- package/dist/face/logreg-classifier.d.ts +117 -0
- package/dist/face/logreg-classifier.d.ts.map +1 -0
- package/dist/face/logreg-classifier.js +304 -0
- package/dist/face/logreg-classifier.js.map +1 -0
- package/dist/feature-flag.d.ts +43 -0
- package/dist/feature-flag.d.ts.map +1 -0
- package/dist/feature-flag.js +58 -0
- package/dist/feature-flag.js.map +1 -0
- package/dist/i18n/index.d.ts +15 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +91 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/ManifestValidator.d.ts +23 -0
- package/dist/manifest/ManifestValidator.d.ts.map +1 -0
- package/dist/manifest/ManifestValidator.js +129 -0
- package/dist/manifest/ManifestValidator.js.map +1 -0
- package/dist/pose/GlassesPoseSolver.d.ts +64 -0
- package/dist/pose/GlassesPoseSolver.d.ts.map +1 -0
- package/dist/pose/GlassesPoseSolver.js +299 -0
- package/dist/pose/GlassesPoseSolver.js.map +1 -0
- package/dist/privacy/PrivacyGuard.d.ts +44 -0
- package/dist/privacy/PrivacyGuard.d.ts.map +1 -0
- package/dist/privacy/PrivacyGuard.js +105 -0
- package/dist/privacy/PrivacyGuard.js.map +1 -0
- package/dist/quality/QualityGate.d.ts +22 -0
- package/dist/quality/QualityGate.d.ts.map +1 -0
- package/dist/quality/QualityGate.js +161 -0
- package/dist/quality/QualityGate.js.map +1 -0
- package/dist/smoothing/PoseSmoothing.d.ts +37 -0
- package/dist/smoothing/PoseSmoothing.d.ts.map +1 -0
- package/dist/smoothing/PoseSmoothing.js +146 -0
- package/dist/smoothing/PoseSmoothing.js.map +1 -0
- package/dist/types/index.d.ts +444 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/errors.d.ts +7 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +20 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/math.d.ts +40 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +149 -0
- package/dist/utils/math.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SDKError, SDKErrorCode } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create an `SDKError` with the standard shape. `recoverable` defaults are
|
|
4
|
+
* encoded per error code so call sites stay terse.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSDKError(code: SDKErrorCode, message: string, cause?: unknown): SDKError;
|
|
7
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GACd,QAAQ,CAOV"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an `SDKError` with the standard shape. `recoverable` defaults are
|
|
3
|
+
* encoded per error code so call sites stay terse.
|
|
4
|
+
*/
|
|
5
|
+
export function createSDKError(code, message, cause) {
|
|
6
|
+
return {
|
|
7
|
+
code,
|
|
8
|
+
message,
|
|
9
|
+
cause,
|
|
10
|
+
recoverable: RECOVERABLE_CODES.has(code),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const RECOVERABLE_CODES = new Set([
|
|
14
|
+
"CAMERA_NOT_AVAILABLE",
|
|
15
|
+
"TRACKER_DETECT_FAILED",
|
|
16
|
+
"LOW_PERFORMANCE",
|
|
17
|
+
"SNAPSHOT_FAILED",
|
|
18
|
+
"UNKNOWN",
|
|
19
|
+
]);
|
|
20
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAkB,EAClB,OAAe,EACf,KAAe;IAEf,OAAO;QACL,IAAI;QACJ,OAAO;QACP,KAAK;QACL,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAe;IAC9C,sBAAsB;IACtB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,SAAS;CACV,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Point2D, Point3D, Vector3 } from "../types/index.js";
|
|
2
|
+
export declare function add(a: Vector3, b: Vector3): Vector3;
|
|
3
|
+
export declare function sub(a: Vector3, b: Vector3): Vector3;
|
|
4
|
+
export declare function scale(v: Vector3, s: number): Vector3;
|
|
5
|
+
export declare function lerp(a: number, b: number, t: number): number;
|
|
6
|
+
export declare function lerpVec3(a: Vector3, b: Vector3, t: number): Vector3;
|
|
7
|
+
export declare function dot(a: Vector3, b: Vector3): number;
|
|
8
|
+
export declare function cross(a: Vector3, b: Vector3): Vector3;
|
|
9
|
+
export declare function length(v: Vector3): number;
|
|
10
|
+
export declare function length2D(v: Point2D): number;
|
|
11
|
+
export declare function normalize(v: Vector3): Vector3;
|
|
12
|
+
export declare function distance2D(a: Point2D, b: Point2D): number;
|
|
13
|
+
export declare function distance3D(a: Point3D, b: Point3D): number;
|
|
14
|
+
/** Midpoint of two 3D points. */
|
|
15
|
+
export declare function midpoint(a: Point3D, b: Point3D): Point3D;
|
|
16
|
+
export declare const PI: number;
|
|
17
|
+
export declare const TWO_PI: number;
|
|
18
|
+
export declare const HALF_PI: number;
|
|
19
|
+
export declare const DEG2RAD: number;
|
|
20
|
+
export declare const RAD2DEG: number;
|
|
21
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
22
|
+
export declare function clamp01(value: number): number;
|
|
23
|
+
export declare function clampAngle(radians: number): number;
|
|
24
|
+
/** Signed angle (radians) of the 2D vector from `a` to `b` around the origin. */
|
|
25
|
+
export declare function signedAngle2D(a: Point2D, b: Point2D): number;
|
|
26
|
+
export declare function mean(values: number[]): number;
|
|
27
|
+
export declare function median(values: number[]): number;
|
|
28
|
+
/** Trimmed mean — drops `trimFraction` from both ends before averaging. */
|
|
29
|
+
export declare function trimmedMean(values: number[], trimFraction?: number): number;
|
|
30
|
+
export declare function standardDeviation(values: number[]): number;
|
|
31
|
+
/**
|
|
32
|
+
* Softmax that is numerically stable. Returns values summing to 1.
|
|
33
|
+
* Temperature > 1 flattens the distribution; < 1 sharpens it.
|
|
34
|
+
*/
|
|
35
|
+
export declare function softmax(values: number[], temperature?: number): number[];
|
|
36
|
+
/** Min-max normalize an array to [0,1]. */
|
|
37
|
+
export declare function minMaxNormalize(values: number[]): number[];
|
|
38
|
+
/** Linear map from one range to another. */
|
|
39
|
+
export declare function mapRange(value: number, inMin: number, inMax: number, outMin: number, outMax: number): number;
|
|
40
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Vector arithmetic (Point3D / Vector3 share the same {x,y,z} shape)
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
export function add(a, b) {
|
|
5
|
+
return { x: a.x + b.x, y: a.y + b.y, z: a.z + b.z };
|
|
6
|
+
}
|
|
7
|
+
export function sub(a, b) {
|
|
8
|
+
return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };
|
|
9
|
+
}
|
|
10
|
+
export function scale(v, s) {
|
|
11
|
+
return { x: v.x * s, y: v.y * s, z: v.z * s };
|
|
12
|
+
}
|
|
13
|
+
export function lerp(a, b, t) {
|
|
14
|
+
return a + (b - a) * clamp01(t);
|
|
15
|
+
}
|
|
16
|
+
export function lerpVec3(a, b, t) {
|
|
17
|
+
return { x: lerp(a.x, b.x, t), y: lerp(a.y, b.y, t), z: lerp(a.z, b.z, t) };
|
|
18
|
+
}
|
|
19
|
+
export function dot(a, b) {
|
|
20
|
+
return a.x * b.x + a.y * b.y + a.z * b.z;
|
|
21
|
+
}
|
|
22
|
+
export function cross(a, b) {
|
|
23
|
+
return {
|
|
24
|
+
x: a.y * b.z - a.z * b.y,
|
|
25
|
+
y: a.z * b.x - a.x * b.z,
|
|
26
|
+
z: a.x * b.y - a.y * b.x,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function length(v) {
|
|
30
|
+
return Math.hypot(v.x, v.y, v.z);
|
|
31
|
+
}
|
|
32
|
+
export function length2D(v) {
|
|
33
|
+
return Math.hypot(v.x, v.y);
|
|
34
|
+
}
|
|
35
|
+
export function normalize(v) {
|
|
36
|
+
const len = length(v);
|
|
37
|
+
if (len < 1e-9)
|
|
38
|
+
return { x: 0, y: 0, z: 0 };
|
|
39
|
+
return { x: v.x / len, y: v.y / len, z: v.z / len };
|
|
40
|
+
}
|
|
41
|
+
export function distance2D(a, b) {
|
|
42
|
+
return Math.hypot(a.x - b.x, a.y - b.y);
|
|
43
|
+
}
|
|
44
|
+
export function distance3D(a, b) {
|
|
45
|
+
return Math.hypot(a.x - b.x, a.y - b.y, (a.z ?? 0) - (b.z ?? 0));
|
|
46
|
+
}
|
|
47
|
+
/** Midpoint of two 3D points. */
|
|
48
|
+
export function midpoint(a, b) {
|
|
49
|
+
return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2, z: (a.z + b.z) / 2 };
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Angle helpers
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
export const PI = Math.PI;
|
|
55
|
+
export const TWO_PI = Math.PI * 2;
|
|
56
|
+
export const HALF_PI = Math.PI / 2;
|
|
57
|
+
export const DEG2RAD = Math.PI / 180;
|
|
58
|
+
export const RAD2DEG = 180 / Math.PI;
|
|
59
|
+
export function clamp(value, min, max) {
|
|
60
|
+
return Math.min(max, Math.max(min, value));
|
|
61
|
+
}
|
|
62
|
+
export function clamp01(value) {
|
|
63
|
+
return value < 0 ? 0 : value > 1 ? 1 : value;
|
|
64
|
+
}
|
|
65
|
+
export function clampAngle(radians) {
|
|
66
|
+
// Wrap to [-PI, PI)
|
|
67
|
+
let r = radians % TWO_PI;
|
|
68
|
+
if (r < -PI)
|
|
69
|
+
r += TWO_PI;
|
|
70
|
+
if (r >= PI)
|
|
71
|
+
r -= TWO_PI;
|
|
72
|
+
return r;
|
|
73
|
+
}
|
|
74
|
+
/** Signed angle (radians) of the 2D vector from `a` to `b` around the origin. */
|
|
75
|
+
export function signedAngle2D(a, b) {
|
|
76
|
+
return Math.atan2(b.y - a.y, b.x - a.x);
|
|
77
|
+
}
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// Statistics
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
export function mean(values) {
|
|
82
|
+
if (values.length === 0)
|
|
83
|
+
return 0;
|
|
84
|
+
let sum = 0;
|
|
85
|
+
for (const v of values)
|
|
86
|
+
sum += v;
|
|
87
|
+
return sum / values.length;
|
|
88
|
+
}
|
|
89
|
+
export function median(values) {
|
|
90
|
+
if (values.length === 0)
|
|
91
|
+
return 0;
|
|
92
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
93
|
+
const mid = Math.floor(sorted.length / 2);
|
|
94
|
+
return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
|
|
95
|
+
}
|
|
96
|
+
/** Trimmed mean — drops `trimFraction` from both ends before averaging. */
|
|
97
|
+
export function trimmedMean(values, trimFraction = 0.2) {
|
|
98
|
+
if (values.length === 0)
|
|
99
|
+
return 0;
|
|
100
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
101
|
+
const trimCount = Math.floor(sorted.length * trimFraction);
|
|
102
|
+
const trimmed = sorted.slice(trimCount, sorted.length - trimCount);
|
|
103
|
+
if (trimmed.length === 0)
|
|
104
|
+
return median(sorted);
|
|
105
|
+
return mean(trimmed);
|
|
106
|
+
}
|
|
107
|
+
export function standardDeviation(values) {
|
|
108
|
+
if (values.length === 0)
|
|
109
|
+
return 0;
|
|
110
|
+
const m = mean(values);
|
|
111
|
+
let variance = 0;
|
|
112
|
+
for (const v of values)
|
|
113
|
+
variance += (v - m) * (v - m);
|
|
114
|
+
return Math.sqrt(variance / values.length);
|
|
115
|
+
}
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// Softmax / normalization
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
/**
|
|
120
|
+
* Softmax that is numerically stable. Returns values summing to 1.
|
|
121
|
+
* Temperature > 1 flattens the distribution; < 1 sharpens it.
|
|
122
|
+
*/
|
|
123
|
+
export function softmax(values, temperature = 1) {
|
|
124
|
+
if (values.length === 0)
|
|
125
|
+
return [];
|
|
126
|
+
const max = Math.max(...values);
|
|
127
|
+
const exps = values.map((v) => Math.exp((v - max) / temperature));
|
|
128
|
+
const sum = exps.reduce((a, b) => a + b, 0);
|
|
129
|
+
return exps.map((e) => e / sum);
|
|
130
|
+
}
|
|
131
|
+
/** Min-max normalize an array to [0,1]. */
|
|
132
|
+
export function minMaxNormalize(values) {
|
|
133
|
+
if (values.length === 0)
|
|
134
|
+
return [];
|
|
135
|
+
const min = Math.min(...values);
|
|
136
|
+
const max = Math.max(...values);
|
|
137
|
+
const range = max - min;
|
|
138
|
+
if (range < 1e-9)
|
|
139
|
+
return values.map(() => 1);
|
|
140
|
+
return values.map((v) => (v - min) / range);
|
|
141
|
+
}
|
|
142
|
+
/** Linear map from one range to another. */
|
|
143
|
+
export function mapRange(value, inMin, inMax, outMin, outMax) {
|
|
144
|
+
if (Math.abs(inMax - inMin) < 1e-9)
|
|
145
|
+
return outMin;
|
|
146
|
+
const t = (value - inMin) / (inMax - inMin);
|
|
147
|
+
return outMin + t * (outMax - outMin);
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@visutry/tryon-core",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Platform-agnostic core for VisuTry SDK: types, coordinate transforms, face semantic mapping, face metrics, face shape scoring, glasses pose solver, pose smoothing, quality gate.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": ["dist", "README.md"],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc -p tsconfig.build.json",
|
|
19
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"clean": "rimraf dist",
|
|
22
|
+
"prepublishOnly": "pnpm build"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"sideEffects": false,
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=18.0.0"
|
|
30
|
+
}
|
|
31
|
+
}
|