smartcomply-web-sdk 1.0.60 → 1.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/camera/CameraManager.d.ts +8 -0
  2. package/dist/camera/CameraManager.d.ts.map +1 -1
  3. package/dist/camera/CameraManager.js +13 -2
  4. package/dist/camera/CameraManager.js.map +1 -1
  5. package/dist/camera/Permission.d.ts +11 -0
  6. package/dist/camera/Permission.d.ts.map +1 -1
  7. package/dist/camera/Permission.js +23 -0
  8. package/dist/camera/Permission.js.map +1 -1
  9. package/dist/esm/camera/CameraManager.d.ts +8 -0
  10. package/dist/esm/camera/CameraManager.d.ts.map +1 -1
  11. package/dist/esm/camera/CameraManager.js +11 -1
  12. package/dist/esm/camera/CameraManager.js.map +1 -1
  13. package/dist/esm/camera/Permission.d.ts +11 -0
  14. package/dist/esm/camera/Permission.d.ts.map +1 -1
  15. package/dist/esm/camera/Permission.js +22 -0
  16. package/dist/esm/camera/Permission.js.map +1 -1
  17. package/dist/esm/flow/DocumentCapture.d.ts +1 -4
  18. package/dist/esm/flow/DocumentCapture.d.ts.map +1 -1
  19. package/dist/esm/flow/DocumentCapture.js +54 -132
  20. package/dist/esm/flow/DocumentCapture.js.map +1 -1
  21. package/dist/esm/flow/SmartComplyFlow.d.ts.map +1 -1
  22. package/dist/esm/flow/SmartComplyFlow.js +8 -13
  23. package/dist/esm/flow/SmartComplyFlow.js.map +1 -1
  24. package/dist/esm/utils/constants.d.ts +11 -3
  25. package/dist/esm/utils/constants.d.ts.map +1 -1
  26. package/dist/esm/utils/constants.js +11 -3
  27. package/dist/esm/utils/constants.js.map +1 -1
  28. package/dist/esm/utils/documentRules.d.ts +15 -0
  29. package/dist/esm/utils/documentRules.d.ts.map +1 -0
  30. package/dist/esm/utils/documentRules.js +27 -0
  31. package/dist/esm/utils/documentRules.js.map +1 -0
  32. package/dist/flow/DocumentCapture.d.ts +1 -4
  33. package/dist/flow/DocumentCapture.d.ts.map +1 -1
  34. package/dist/flow/DocumentCapture.js +54 -132
  35. package/dist/flow/DocumentCapture.js.map +1 -1
  36. package/dist/flow/SmartComplyFlow.d.ts.map +1 -1
  37. package/dist/flow/SmartComplyFlow.js +11 -16
  38. package/dist/flow/SmartComplyFlow.js.map +1 -1
  39. package/dist/smartcomply.browser.js +62 -113
  40. package/dist/smartcomply.browser.js.map +4 -4
  41. package/dist/utils/constants.d.ts +11 -3
  42. package/dist/utils/constants.d.ts.map +1 -1
  43. package/dist/utils/constants.js +11 -3
  44. package/dist/utils/constants.js.map +1 -1
  45. package/dist/utils/documentRules.d.ts +15 -0
  46. package/dist/utils/documentRules.d.ts.map +1 -0
  47. package/dist/utils/documentRules.js +31 -0
  48. package/dist/utils/documentRules.js.map +1 -0
  49. package/package.json +6 -3
@@ -37,9 +37,17 @@ export declare const LIVENESS_TIME_LIMIT_SECONDS = 12;
37
37
  /** Ideal resolution for the front-facing liveness camera. */
38
38
  export declare const CAMERA_IDEAL_WIDTH = 640;
39
39
  export declare const CAMERA_IDEAL_HEIGHT = 480;
40
- /** Ideal resolution for rear-facing document capture camera. */
41
- export declare const DOC_CAMERA_IDEAL_WIDTH = 1280;
42
- export declare const DOC_CAMERA_IDEAL_HEIGHT = 960;
40
+ /**
41
+ * Ideal resolution for rear-facing document capture camera. Matches the
42
+ * document-photo compression target (see compressImage calls in
43
+ * DocumentCapture.ts) — requesting less here would cap captured photos
44
+ * below what compression is allowed to keep, which is what let camera
45
+ * captures come out under-resolution for face-comparison cropping even
46
+ * after the compression target itself was raised. `ideal` (not `exact`)
47
+ * constraints degrade gracefully on hardware that can't hit this.
48
+ */
49
+ export declare const DOC_CAMERA_IDEAL_WIDTH = 2000;
50
+ export declare const DOC_CAMERA_IDEAL_HEIGHT = 1500;
43
51
  /**
44
52
  * Video bitrate used by MediaRecorder for liveness recordings — raised from
45
53
  * an earlier 250k baseline for sharper frames for SmartComply's face
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wDAAwD;AACxD,eAAO,MAAM,cAAc,QAAiB,CAAC;AAE7C,yDAAyD;AACzD,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AAIpD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,6CAA6C;AAC7C,eAAO,MAAM,cAAc,OAAQ,CAAC;AAIpC,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,sDAAsD;AACtD,eAAO,MAAM,eAAe,QAAmB,CAAC;AAEhD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,oDAAqD,CAAC;AAEvF,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAIzC,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,0EAA2E,CAAC;AAE1G;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,oBAAqB,CAAC;AAE5D,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAI9C,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,MAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAIjD,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD,8EAA8E;AAC9E,eAAO,MAAM,eAAe,QAAS,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wDAAwD;AACxD,eAAO,MAAM,cAAc,QAAiB,CAAC;AAE7C,yDAAyD;AACzD,eAAO,MAAM,sBAAsB,QAAgB,CAAC;AAIpD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,6CAA6C;AAC7C,eAAO,MAAM,cAAc,OAAQ,CAAC;AAIpC,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,sDAAsD;AACtD,eAAO,MAAM,eAAe,QAAmB,CAAC;AAEhD,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAElD,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,oDAAqD,CAAC;AAEvF,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAIzC,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,0EAA2E,CAAC;AAE1G;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,oBAAqB,CAAC;AAE5D,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAI9C,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,MAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAC5C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAC;AAIjD,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD,8EAA8E;AAC9E,eAAO,MAAM,eAAe,QAAS,CAAC"}
@@ -45,9 +45,17 @@ exports.LIVENESS_TIME_LIMIT_SECONDS = 12;
45
45
  /** Ideal resolution for the front-facing liveness camera. */
46
46
  exports.CAMERA_IDEAL_WIDTH = 640;
47
47
  exports.CAMERA_IDEAL_HEIGHT = 480;
48
- /** Ideal resolution for rear-facing document capture camera. */
49
- exports.DOC_CAMERA_IDEAL_WIDTH = 1280;
50
- exports.DOC_CAMERA_IDEAL_HEIGHT = 960;
48
+ /**
49
+ * Ideal resolution for rear-facing document capture camera. Matches the
50
+ * document-photo compression target (see compressImage calls in
51
+ * DocumentCapture.ts) — requesting less here would cap captured photos
52
+ * below what compression is allowed to keep, which is what let camera
53
+ * captures come out under-resolution for face-comparison cropping even
54
+ * after the compression target itself was raised. `ideal` (not `exact`)
55
+ * constraints degrade gracefully on hardware that can't hit this.
56
+ */
57
+ exports.DOC_CAMERA_IDEAL_WIDTH = 2000;
58
+ exports.DOC_CAMERA_IDEAL_HEIGHT = 1500;
51
59
  /**
52
60
  * Video bitrate used by MediaRecorder for liveness recordings — raised from
53
61
  * an earlier 250k baseline for sharper frames for SmartComply's face
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gFAAgF;AAEhF,wDAAwD;AAC3C,QAAA,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,yDAAyD;AAC5C,QAAA,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,gFAAgF;AAEhF,+CAA+C;AAClC,QAAA,kBAAkB,GAAG,KAAM,CAAC;AAEzC,+DAA+D;AAClD,QAAA,WAAW,GAAG,CAAC,CAAC;AAE7B,6CAA6C;AAChC,QAAA,cAAc,GAAG,IAAK,CAAC;AAEpC,gFAAgF;AAEhF,8DAA8D;AACjD,QAAA,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,sDAAsD;AACzC,QAAA,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,+CAA+C;AAClC,QAAA,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,+CAA+C;AAClC,QAAA,oBAAoB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAEvF,6DAA6D;AAChD,QAAA,oBAAoB,GAAG,IAAI,CAAC;AAEzC,gFAAgF;AAEhF,uFAAuF;AAC1E,QAAA,iBAAiB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAE1G;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,CAAC,OAAO,CAAU,CAAC;AAE5D,iEAAiE;AACpD,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAE9C,gFAAgF;AAEhF,6DAA6D;AAChD,QAAA,kBAAkB,GAAI,GAAG,CAAC;AAC1B,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,gEAAgE;AACnD,QAAA,sBAAsB,GAAI,IAAI,CAAC;AAC/B,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,MAAO,CAAC;AAEjD,gFAAgF;AAEhF,gFAAgF;AACnE,QAAA,sBAAsB,GAAG,KAAM,CAAC;AAE7C,wDAAwD;AAC3C,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,gFAAgF;AAEhF,2EAA2E;AAC9D,QAAA,0BAA0B,GAAG,IAAK,CAAC;AAEhD,mEAAmE;AACtD,QAAA,uBAAuB,GAAG,aAAa,CAAC;AAErD,8EAA8E;AACjE,QAAA,eAAe,GAAG,KAAM,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gFAAgF;AAEhF,wDAAwD;AAC3C,QAAA,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,yDAAyD;AAC5C,QAAA,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,gFAAgF;AAEhF,+CAA+C;AAClC,QAAA,kBAAkB,GAAG,KAAM,CAAC;AAEzC,+DAA+D;AAClD,QAAA,WAAW,GAAG,CAAC,CAAC;AAE7B,6CAA6C;AAChC,QAAA,cAAc,GAAG,IAAK,CAAC;AAEpC,gFAAgF;AAEhF,8DAA8D;AACjD,QAAA,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,sDAAsD;AACzC,QAAA,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEhD,+CAA+C;AAClC,QAAA,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,+CAA+C;AAClC,QAAA,oBAAoB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAEvF,6DAA6D;AAChD,QAAA,oBAAoB,GAAG,IAAI,CAAC;AAEzC,gFAAgF;AAEhF,uFAAuF;AAC1E,QAAA,iBAAiB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAE1G;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,CAAC,OAAO,CAAU,CAAC;AAE5D,iEAAiE;AACpD,QAAA,2BAA2B,GAAG,EAAE,CAAC;AAE9C,gFAAgF;AAEhF,6DAA6D;AAChD,QAAA,kBAAkB,GAAI,GAAG,CAAC;AAC1B,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAI,IAAI,CAAC;AAC/B,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,MAAO,CAAC;AAEjD,gFAAgF;AAEhF,gFAAgF;AACnE,QAAA,sBAAsB,GAAG,KAAM,CAAC;AAE7C,wDAAwD;AAC3C,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,gFAAgF;AAEhF,2EAA2E;AAC9D,QAAA,0BAA0B,GAAG,IAAK,CAAC;AAEhD,mEAAmE;AACtD,QAAA,uBAAuB,GAAG,aAAa,CAAC;AAErD,8EAA8E;AACjE,QAAA,eAAe,GAAG,KAAM,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared document-type rules used by both the ID-type selection screen
3
+ * (SmartComplyFlow) and the capture component (DocumentCapture) — kept in
4
+ * one place so the two can't silently diverge on which documents need a
5
+ * back-side photo.
6
+ */
7
+ /** Documents where the backend OCR pipeline needs the reverse side. */
8
+ export declare function requiresBackSide(documentType: string): boolean;
9
+ /**
10
+ * Scale ratio for fitting an image within maxWidth x maxHeight, never
11
+ * upscaling. Shared by DocumentCapture's canvas sizing and compressImage so
12
+ * both agree on the same clamp-at-1 behavior.
13
+ */
14
+ export declare function computeScaleRatio(srcWidth: number, srcHeight: number, maxWidth: number, maxHeight: number): number;
15
+ //# sourceMappingURL=documentRules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentRules.d.ts","sourceRoot":"","sources":["../../src/utils/documentRules.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAU9D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Shared document-type rules used by both the ID-type selection screen
4
+ * (SmartComplyFlow) and the capture component (DocumentCapture) — kept in
5
+ * one place so the two can't silently diverge on which documents need a
6
+ * back-side photo.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.requiresBackSide = requiresBackSide;
10
+ exports.computeScaleRatio = computeScaleRatio;
11
+ /** Documents where the backend OCR pipeline needs the reverse side. */
12
+ function requiresBackSide(documentType) {
13
+ const type = documentType.toLowerCase();
14
+ return type.includes("voter") ||
15
+ type.includes("driver") ||
16
+ type.includes("license") ||
17
+ type.includes("national id") ||
18
+ type.includes("national id card") ||
19
+ type.includes("ghana");
20
+ // Passport: back side is the machine-readable zone but OCR reads from front only.
21
+ // NIN / NIN with face: front only needed — the NIN card is single-sided for OCR.
22
+ }
23
+ /**
24
+ * Scale ratio for fitting an image within maxWidth x maxHeight, never
25
+ * upscaling. Shared by DocumentCapture's canvas sizing and compressImage so
26
+ * both agree on the same clamp-at-1 behavior.
27
+ */
28
+ function computeScaleRatio(srcWidth, srcHeight, maxWidth, maxHeight) {
29
+ return Math.min(maxWidth / srcWidth, maxHeight / srcHeight, 1);
30
+ }
31
+ //# sourceMappingURL=documentRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentRules.js","sourceRoot":"","sources":["../../src/utils/documentRules.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAGH,4CAUC;AAOD,8CAOC;AAzBD,uEAAuE;AACvE,SAAgB,gBAAgB,CAAC,YAAoB;IACnD,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,kFAAkF;IAClF,iFAAiF;AACnF,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,SAAiB;IAEjB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smartcomply-web-sdk",
3
- "version": "1.0.60",
3
+ "version": "1.0.62",
4
4
  "description": "Drop-in identity verification (KYC) widget for web apps — face liveness, NIN/BVN, document verification",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -24,7 +24,9 @@
24
24
  "build:browser": "npx esbuild src/index.ts --bundle --format=iife --global-name=SmartComplySDK --outfile=dist/smartcomply.browser.js --target=es2020 --sourcemap --charset=utf8",
25
25
  "build:all": "npm run build && npm run build:esm && npm run build:browser",
26
26
  "prepublishOnly": "npm run build:all",
27
- "typecheck": "tsc --noEmit"
27
+ "typecheck": "tsc --noEmit",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest"
28
30
  },
29
31
  "repository": {
30
32
  "type": "git",
@@ -50,7 +52,8 @@
50
52
  "homepage": "https://github.com/386konsult/smartcomply-web-sdk#readme",
51
53
  "devDependencies": {
52
54
  "esbuild": "^0.28.0",
53
- "typescript": "^5.9.3"
55
+ "typescript": "^5.9.3",
56
+ "vitest": "^4.1.10"
54
57
  },
55
58
  "dependencies": {
56
59
  "@mediapipe/tasks-vision": "^0.10.32"