@smileid/web-components 11.4.5 → 11.6.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.
Files changed (132) hide show
  1. package/dist/esm/DocumentCaptureScreens-DjSTdVP-.js +5398 -0
  2. package/dist/esm/DocumentCaptureScreens-DjSTdVP-.js.map +1 -0
  3. package/dist/esm/{Navigation-Bb7MPLE8.js → Navigation-6DH3vF4-.js} +28 -22
  4. package/dist/esm/Navigation-6DH3vF4-.js.map +1 -0
  5. package/dist/esm/{PoweredBySmileId-CxbaihMu.js → PoweredBySmileId-DoKwoPUd.js} +424 -6
  6. package/dist/esm/PoweredBySmileId-DoKwoPUd.js.map +1 -0
  7. package/dist/esm/SelfieCaptureScreens-CtX-4Tco.js +11470 -0
  8. package/dist/esm/SelfieCaptureScreens-CtX-4Tco.js.map +1 -0
  9. package/dist/esm/combobox.js +1 -1
  10. package/dist/esm/document.js +1 -1
  11. package/dist/esm/end-user-consent.js +713 -2
  12. package/dist/esm/end-user-consent.js.map +1 -1
  13. package/dist/esm/index-BqyuTk9f.js +1366 -0
  14. package/dist/esm/{index-C4RTMbgw.js.map → index-BqyuTk9f.js.map} +1 -1
  15. package/dist/esm/localisation.js +1 -1
  16. package/dist/esm/main.js +14 -14
  17. package/dist/esm/navigation.js +1 -1
  18. package/dist/esm/package-CjZI-cNQ.js +2540 -0
  19. package/dist/esm/package-CjZI-cNQ.js.map +1 -0
  20. package/dist/esm/selfie.js +1 -1
  21. package/dist/esm/smart-camera-web.js +81 -37
  22. package/dist/esm/smart-camera-web.js.map +1 -1
  23. package/dist/esm/totp-consent.js +731 -2
  24. package/dist/esm/totp-consent.js.map +1 -1
  25. package/dist/esm/validate.js +31 -0
  26. package/dist/esm/validate.js.map +1 -0
  27. package/dist/smart-camera-web.js +1513 -383
  28. package/dist/smart-camera-web.js.map +1 -1
  29. package/dist/types/main.d.ts +18 -1
  30. package/dist/types/validate.d.ts +21 -0
  31. package/lib/components/document/src/DocumentCaptureScreens.js +97 -18
  32. package/lib/components/document/src/assets/lottie.d.ts +12 -0
  33. package/lib/components/document/src/assets/svg-inline.d.ts +8 -0
  34. package/lib/components/document/src/document-auto-capture/DocumentAutoCapture.stories.js +75 -0
  35. package/lib/components/document/src/document-auto-capture/DocumentAutoCapture.tsx +1458 -0
  36. package/lib/components/document/src/document-auto-capture/README.md +73 -0
  37. package/lib/components/document/src/document-auto-capture/assets/Greenbook_Shimmer.svg +42 -0
  38. package/lib/components/document/src/document-auto-capture/assets/ID_Back_Shimmer.svg +8 -0
  39. package/lib/components/document/src/document-auto-capture/assets/ID_Front_Shimmer.svg +20 -0
  40. package/lib/components/document/src/document-auto-capture/assets/Passport-Shimmer.svg +143 -0
  41. package/lib/components/document/src/document-auto-capture/assets/shimmers.ts +21 -0
  42. package/lib/components/document/src/document-auto-capture/assets/svg-raw.d.ts +4 -0
  43. package/lib/components/document/src/document-auto-capture/components/CaptureButton.tsx +122 -0
  44. package/lib/components/document/src/document-auto-capture/components/Overlay.tsx +167 -0
  45. package/lib/components/document/src/document-auto-capture/components/TuningPanel.tsx +856 -0
  46. package/lib/components/document/src/document-auto-capture/constants/captureLayout.ts +58 -0
  47. package/lib/components/document/src/document-auto-capture/detection/cvErrorRecovery.ts +40 -0
  48. package/lib/components/document/src/document-auto-capture/detection/documentAspect.ts +20 -0
  49. package/lib/components/document/src/document-auto-capture/detection/qualityScoring.ts +35 -0
  50. package/lib/components/document/src/document-auto-capture/detection/seamRejection.ts +209 -0
  51. package/lib/components/document/src/document-auto-capture/detection/synthesisTiming.ts +10 -0
  52. package/lib/components/document/src/document-auto-capture/hooks/useCamera.ts +117 -0
  53. package/lib/components/document/src/document-auto-capture/hooks/useCardDetection.ts +3059 -0
  54. package/lib/components/document/src/document-auto-capture/index.ts +4 -0
  55. package/lib/components/document/src/document-auto-capture/theme.ts +40 -0
  56. package/lib/components/document/src/document-auto-capture/utils/debug.ts +25 -0
  57. package/lib/components/document/src/document-auto-capture/utils/opencvLoader.ts +86 -0
  58. package/lib/components/document/src/document-capture-instructions/DocumentCaptureInstructions.tsx +327 -244
  59. package/lib/components/document/src/document-capture-review/DocumentCaptureReview.js +153 -189
  60. package/lib/components/document/src/document-capture-submission/DocumentCaptureSubmission.tsx +432 -0
  61. package/lib/components/document/src/document-capture-submission/index.js +3 -0
  62. package/lib/components/navigation/src/Navigation.js +27 -8
  63. package/lib/components/selfie/README.md +13 -0
  64. package/lib/components/selfie/src/SelfieCaptureScreens.js +56 -8
  65. package/lib/components/selfie/src/enhanced-smartselfie-capture/EnhancedSmartSelfieCapture.tsx +684 -0
  66. package/lib/components/selfie/src/enhanced-smartselfie-capture/EnhancedSmartSelfieConsent.tsx +71 -0
  67. package/lib/components/selfie/src/enhanced-smartselfie-capture/EnhancedSmartSelfieSubmission.tsx +181 -0
  68. package/lib/components/selfie/src/enhanced-smartselfie-capture/OvalProgress.tsx +87 -0
  69. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/Icon.svg +8 -0
  70. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/accessories.svg +77 -0
  71. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/active_liveness_animation.lottie +0 -0
  72. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/device.svg +12 -0
  73. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/device_orientation.lottie +0 -0
  74. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/good.svg +52 -0
  75. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/id-card.svg +9 -0
  76. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/illustrations.tsx +852 -0
  77. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/instructions-img.svg +3 -0
  78. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/multiple-faces.svg +69 -0
  79. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/person.svg +6 -0
  80. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/phone.svg +8 -0
  81. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/poor-lighting.svg +53 -0
  82. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/too_dark_animation.lottie +0 -0
  83. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/ActiveLivenessOverlay.tsx +226 -0
  84. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/AlertDisplay.tsx +38 -0
  85. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/BackNavigation.tsx +45 -0
  86. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/CameraPreview.tsx +96 -0
  87. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/CaptureControls.tsx +97 -0
  88. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/CaptureGuidelines.tsx +374 -0
  89. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/ConsentView.tsx +460 -0
  90. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/SubmissionView.tsx +426 -0
  91. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/index.ts +3 -0
  92. package/lib/components/selfie/src/enhanced-smartselfie-capture/constants.ts +23 -0
  93. package/lib/components/selfie/src/enhanced-smartselfie-capture/hooks/index.ts +2 -0
  94. package/lib/components/selfie/src/enhanced-smartselfie-capture/hooks/useCamera.ts +238 -0
  95. package/lib/components/selfie/src/enhanced-smartselfie-capture/hooks/useFaceCapture.ts +1075 -0
  96. package/lib/components/selfie/src/enhanced-smartselfie-capture/index.ts +1 -0
  97. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/alertMessages.ts +20 -0
  98. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/canvas.ts +108 -0
  99. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/faceDetection.ts +545 -0
  100. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/imageCapture.ts +66 -0
  101. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/imageQuality.ts +151 -0
  102. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/index.ts +5 -0
  103. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/mediapipeManager.ts +215 -0
  104. package/lib/components/selfie/src/selfie-capture-wrapper/SelfieCaptureWrapper.tsx +24 -1
  105. package/lib/components/selfie/src/smartselfie-capture/SmartSelfieCapture.tsx +2 -2
  106. package/lib/components/selfie/src/smartselfie-capture/hooks/useFaceCapture.ts +15 -7
  107. package/lib/components/selfie/src/smartselfie-capture/utils/canvas.ts +4 -6
  108. package/lib/components/signature-pad/package.json +1 -1
  109. package/lib/components/smart-camera-web/src/README.md +11 -0
  110. package/lib/components/smart-camera-web/src/SmartCameraWeb.js +89 -8
  111. package/lib/components/totp-consent/src/TotpConsent.js +1 -1
  112. package/lib/domain/localisation/index.js +2 -2
  113. package/package.json +9 -5
  114. package/dist/esm/DocumentCaptureScreens-D2G0NOQr.js +0 -4147
  115. package/dist/esm/DocumentCaptureScreens-D2G0NOQr.js.map +0 -1
  116. package/dist/esm/EndUserConsent-uHfA3txP.js +0 -717
  117. package/dist/esm/EndUserConsent-uHfA3txP.js.map +0 -1
  118. package/dist/esm/Navigation-Bb7MPLE8.js.map +0 -1
  119. package/dist/esm/PoweredBySmileId-CxbaihMu.js.map +0 -1
  120. package/dist/esm/SelfieCaptureScreens-Dr7VzON7.js +0 -7651
  121. package/dist/esm/SelfieCaptureScreens-Dr7VzON7.js.map +0 -1
  122. package/dist/esm/TotpConsent-Depzg0ti.js +0 -734
  123. package/dist/esm/TotpConsent-Depzg0ti.js.map +0 -1
  124. package/dist/esm/index-C4RTMbgw.js +0 -1360
  125. package/dist/esm/package-D6YrpMcO.js +0 -565
  126. package/dist/esm/package-D6YrpMcO.js.map +0 -1
  127. package/dist/esm/styles-BTEClL7R.js +0 -419
  128. package/dist/esm/styles-BTEClL7R.js.map +0 -1
  129. /package/lib/components/document/src/assets/lottie/{taking photo of green book passport.lottie → greenbook.lottie} +0 -0
  130. /package/lib/components/document/src/assets/lottie/{taking photo of ID FLIP 2D.lottie → id-card-flip.lottie} +0 -0
  131. /package/lib/components/document/src/assets/lottie/{taking photo of ID.lottie → id-card.lottie} +0 -0
  132. /package/lib/components/document/src/assets/lottie/{taking photo of passport 2.lottie → passport.lottie} +0 -0
@@ -8,6 +8,14 @@ import packageJson from '../../../../package.json';
8
8
 
9
9
  const COMPONENTS_VERSION = packageJson.version;
10
10
 
11
+ // Minimal HTML-attribute escaper for values interpolated into the innerHTML
12
+ // template below. Order matters: encode `&` first so we don't double-encode
13
+ // the `&` we introduce when escaping `"`. Used because partner-supplied
14
+ // attributes (partner-name, partner-logo, policy-url, theme-color, ...) flow
15
+ // straight into the template string and an unescaped quote would otherwise
16
+ // allow attribute injection / XSS.
17
+ const escAttr = (s) => String(s).replace(/&/g, '&').replace(/"/g, '"');
18
+
11
19
  function scwTemplateString() {
12
20
  return `
13
21
  <style>
@@ -19,10 +27,10 @@ function scwTemplateString() {
19
27
  ${styles(this.themeColor)}
20
28
  <div style="height: 100%;">
21
29
  <camera-permission ${this.applyComponentThemeColor} ${this.title} ${this.showNavigation} ${this.hideInstructions ? '' : 'hidden'} ${this.hideAttribution}></camera-permission>
22
- <selfie-capture-screens ${this.applyComponentThemeColor} ${this.title} ${this.showNavigation} ${this.disableImageTests} ${this.hideAttribution} ${this.hideInstructions} hidden
23
- ${this.hideBackToHost} ${this.allowAgentMode} ${this.allowAgentModeTests} ${this.allowLegacySelfieFallback}
30
+ <selfie-capture-screens ${this.applyComponentThemeColor} ${this.title} ${this.showNavigation} ${this.disableImageTests} ${this.hideAttribution} ${this.hideInstructions} ${this.hideConsent} ${this.partnerName} ${this.partnerLogo} ${this.policyUrl} hidden
31
+ ${this.hideBackToHost} ${this.allowAgentMode} ${this.allowAgentModeTests} ${this.allowLegacySelfieFallback} ${this.useStrictMode} ${this.showBackOnGuidelines}
24
32
  ></selfie-capture-screens>
25
- <document-capture-screens ${this.applyComponentThemeColor} document-type=${this.documentType} ${this.title} ${this.documentCaptureModes} ${this.showNavigation} ${this.hideAttribution}
33
+ <document-capture-screens ${this.autoCaptureFeature} ${this.autoCapture} ${this.autoCaptureTimeout} ${this.applyComponentThemeColor} document-type="${escAttr(this.documentType)}" ${this.title} ${this.documentCaptureModes} ${this.showNavigation} ${this.hideAttribution}
26
34
  ${this.hideBackOfId} ${this.newInstructions} ${this.applyComponentThemeColor} hidden></document-capture-screens>
27
35
  </div>
28
36
  `;
@@ -70,15 +78,24 @@ class SmartCameraWeb extends HTMLElement {
70
78
  return [
71
79
  'allow-agent-mode',
72
80
  'allow-legacy-selfie-fallback',
81
+ 'auto-capture-enabled',
82
+ 'auto-capture',
83
+ 'auto-capture-timeout',
73
84
  'disable-image-tests',
74
85
  'document-capture-modes',
75
86
  'document-type',
76
87
  'hide-attribution',
77
88
  'hide-back-of-id',
78
89
  'hide-back-to-host',
90
+ 'hide-consent',
91
+ 'partner-name',
92
+ 'partner-logo',
93
+ 'policy-url',
79
94
  'show-navigation',
95
+ 'show-back-on-guidelines',
80
96
  'theme-color',
81
97
  'new-instructions',
98
+ 'use-strict-mode',
82
99
  ];
83
100
  }
84
101
 
@@ -86,15 +103,24 @@ class SmartCameraWeb extends HTMLElement {
86
103
  switch (name) {
87
104
  case 'allow-agent-mode':
88
105
  case 'allow-legacy-selfie-fallback':
106
+ case 'auto-capture-enabled':
107
+ case 'auto-capture':
108
+ case 'auto-capture-timeout':
89
109
  case 'disable-image-tests':
90
110
  case 'document-capture-modes':
91
111
  case 'document-type':
92
112
  case 'hide-attribution':
93
113
  case 'hide-back-of-id':
94
114
  case 'hide-back-to-host':
115
+ case 'hide-consent':
116
+ case 'partner-name':
117
+ case 'partner-logo':
118
+ case 'policy-url':
95
119
  case 'show-navigation':
120
+ case 'show-back-on-guidelines':
96
121
  case 'theme-color':
97
122
  case 'new-instructions':
123
+ case 'use-strict-mode':
98
124
  this.disconnectedCallback();
99
125
  this.shadowRoot.innerHTML = this.render();
100
126
  this.setUpEventListeners();
@@ -239,6 +265,12 @@ class SmartCameraWeb extends HTMLElement {
239
265
  return this.hasAttribute('show-navigation') ? 'show-navigation' : '';
240
266
  }
241
267
 
268
+ get showBackOnGuidelines() {
269
+ return this.hasAttribute('show-back-on-guidelines')
270
+ ? 'show-back-on-guidelines'
271
+ : '';
272
+ }
273
+
242
274
  get hideBackToHost() {
243
275
  return this.hasAttribute('hide-back-to-host') ||
244
276
  this.hasAttribute('hide-back')
@@ -248,7 +280,7 @@ class SmartCameraWeb extends HTMLElement {
248
280
 
249
281
  get allowAgentMode() {
250
282
  return this.hasAttribute('allow-agent-mode')
251
- ? `allow-agent-mode=${this.getAttribute('allow-agent-mode')}`
283
+ ? `allow-agent-mode="${escAttr(this.getAttribute('allow-agent-mode'))}"`
252
284
  : '';
253
285
  }
254
286
 
@@ -260,13 +292,31 @@ class SmartCameraWeb extends HTMLElement {
260
292
 
261
293
  get title() {
262
294
  return this.hasAttribute('title')
263
- ? `title=${this.getAttribute('title')}`
295
+ ? `title="${escAttr(this.getAttribute('title'))}"`
264
296
  : '';
265
297
  }
266
298
 
267
299
  get documentCaptureModes() {
268
300
  return this.hasAttribute('document-capture-modes')
269
- ? `document-capture-modes='${this.getAttribute('document-capture-modes')}'`
301
+ ? `document-capture-modes="${escAttr(this.getAttribute('document-capture-modes'))}"`
302
+ : '';
303
+ }
304
+
305
+ get autoCaptureFeature() {
306
+ return this.hasAttribute('auto-capture-enabled')
307
+ ? 'auto-capture-enabled'
308
+ : '';
309
+ }
310
+
311
+ get autoCapture() {
312
+ return this.hasAttribute('auto-capture')
313
+ ? `auto-capture="${escAttr(this.getAttribute('auto-capture'))}"`
314
+ : '';
315
+ }
316
+
317
+ get autoCaptureTimeout() {
318
+ return this.hasAttribute('auto-capture-timeout')
319
+ ? `auto-capture-timeout="${escAttr(this.getAttribute('auto-capture-timeout'))}"`
270
320
  : '';
271
321
  }
272
322
 
@@ -278,7 +328,14 @@ class SmartCameraWeb extends HTMLElement {
278
328
 
279
329
  get allowLegacySelfieFallback() {
280
330
  return this.hasAttribute('allow-legacy-selfie-fallback')
281
- ? `allow-legacy-selfie-fallback='${this.getAttribute('allow-legacy-selfie-fallback')}'`
331
+ ? `allow-legacy-selfie-fallback="${escAttr(this.getAttribute('allow-legacy-selfie-fallback'))}"`
332
+ : '';
333
+ }
334
+
335
+ get useStrictMode() {
336
+ return this.hasAttribute('use-strict-mode') &&
337
+ this.getAttribute('use-strict-mode') !== 'false'
338
+ ? 'use-strict-mode="true"'
282
339
  : '';
283
340
  }
284
341
 
@@ -286,6 +343,28 @@ class SmartCameraWeb extends HTMLElement {
286
343
  return this.hasAttribute('hide-attribution') ? 'hide-attribution' : '';
287
344
  }
288
345
 
346
+ get hideConsent() {
347
+ return this.hasAttribute('hide-consent') ? 'hide-consent' : '';
348
+ }
349
+
350
+ get partnerName() {
351
+ return this.hasAttribute('partner-name')
352
+ ? `partner-name="${escAttr(this.getAttribute('partner-name'))}"`
353
+ : '';
354
+ }
355
+
356
+ get partnerLogo() {
357
+ return this.hasAttribute('partner-logo')
358
+ ? `partner-logo="${escAttr(this.getAttribute('partner-logo'))}"`
359
+ : '';
360
+ }
361
+
362
+ get policyUrl() {
363
+ return this.hasAttribute('policy-url')
364
+ ? `policy-url="${escAttr(this.getAttribute('policy-url'))}"`
365
+ : '';
366
+ }
367
+
289
368
  get hasThemeColor() {
290
369
  return (
291
370
  this.hasAttribute('theme-color') &&
@@ -300,7 +379,9 @@ class SmartCameraWeb extends HTMLElement {
300
379
  }
301
380
 
302
381
  get applyComponentThemeColor() {
303
- return this.hasThemeColor ? `theme-color='${this.themeColor}'` : '';
382
+ return this.hasThemeColor
383
+ ? `theme-color="${escAttr(this.themeColor)}"`
384
+ : '';
304
385
  }
305
386
 
306
387
  setActiveScreen(screen) {
@@ -1,4 +1,4 @@
1
- import validate from 'validate.js';
1
+ import validate from '../../../utils/validate';
2
2
  import { getDirection } from '../../../domain/localisation';
3
3
 
4
4
  function postData(url, data) {
@@ -218,7 +218,7 @@ export function t(key) {
218
218
  const resolvedLocale = resolveLocale(currentLocale);
219
219
  const currentLocaleData = locales[resolvedLocale];
220
220
  const value = getNestedValue(currentLocaleData, key);
221
- if (value) {
221
+ if (typeof value === 'string') {
222
222
  return value;
223
223
  }
224
224
 
@@ -226,7 +226,7 @@ export function t(key) {
226
226
  const resolvedDefault = resolveLocale(DEFAULT_LOCALE);
227
227
  if (resolvedLocale !== resolvedDefault) {
228
228
  const defaultValue = getNestedValue(locales[resolvedDefault], key);
229
- if (defaultValue) {
229
+ if (typeof defaultValue === 'string') {
230
230
  return defaultValue;
231
231
  }
232
232
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smileid/web-components",
3
- "version": "11.4.5",
3
+ "version": "11.6.0",
4
4
  "private": false,
5
5
  "main": "dist/esm/main.js",
6
6
  "module": "dist/esm/main.js",
@@ -45,6 +45,10 @@
45
45
  "./localisation": {
46
46
  "types": "./dist/types/localisation.d.ts",
47
47
  "import": "./dist/esm/localisation.js"
48
+ },
49
+ "./validate": {
50
+ "types": "./dist/types/validate.d.ts",
51
+ "import": "./dist/esm/validate.js"
48
52
  }
49
53
  },
50
54
  "files": [
@@ -86,7 +90,7 @@
86
90
  },
87
91
  "homepage": "https://github.com/smileidentity/web-client#readme",
88
92
  "dependencies": {
89
- "@lottiefiles/dotlottie-web": "^0.71.0",
93
+ "@lottiefiles/dotlottie-web": "^0.72.1",
90
94
  "@mediapipe/tasks-vision": "^0.10.22-rc.20250304",
91
95
  "@preact/signals": "^2.1.1",
92
96
  "@tabler/icons-preact": "^3.34.0",
@@ -94,8 +98,7 @@
94
98
  "preact": "^10.27.3",
95
99
  "preact-custom-element": "^4.3.0",
96
100
  "preact-router": "^4.1.2",
97
- "signature_pad": "^5.0.2",
98
- "validate.js": "^0.13.1"
101
+ "signature_pad": "^5.0.2"
99
102
  },
100
103
  "devDependencies": {
101
104
  "@preact/preset-vite": "^2.10.2",
@@ -104,8 +107,9 @@
104
107
  "@types/preact-custom-element": "^4.0.4",
105
108
  "@typescript-eslint/eslint-plugin": "^8.49.0",
106
109
  "@typescript-eslint/parser": "^8.49.0",
110
+ "@vitejs/plugin-basic-ssl": "^2.3.0",
107
111
  "cross-env": "^7.0.3",
108
- "cypress": "^13.17.0",
112
+ "cypress": "^15.16.0",
109
113
  "eslint": "^8.57.0",
110
114
  "eslint-config-airbnb-base": "^15.0.0",
111
115
  "eslint-config-prettier": "^9.1.0",