@glideidentity/web-client-sdk 4.4.9 → 5.0.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.
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  import * as API from './api-types';
12
12
  import { BrowserError, BrowserErrorCode, BrowserName } from './types';
13
13
  import { PhoneAuthErrorCode, isPhoneAuthError, parseBackendError, getUserMessage, isUserError, serializeError, createErrorBreadcrumb } from './error-utils';
14
- import { validatePhoneNumber, validatePlmn, validateConsentData, validateNonce } from './validation-utils';
14
+ import { validatePhoneNumber, validatePlmn, validateNonce } from './validation-utils';
15
15
  import { LoggerFactory } from '../logger';
16
16
  import { DesktopHandler } from './strategies/desktop';
17
17
  import { LinkHandler } from './strategies/link';
@@ -297,13 +297,6 @@ export class PhoneAuthClient {
297
297
  throw this.createError(PhoneAuthErrorCode.BAD_REQUEST, plmnValidation.error, { field: 'plmn' });
298
298
  }
299
299
  }
300
- // Validate consent data if provided
301
- if (options.consent_data) {
302
- const consentValidation = validateConsentData(options.consent_data);
303
- if (!consentValidation.valid) {
304
- throw this.createError(PhoneAuthErrorCode.BAD_REQUEST, consentValidation.error, { field: 'consent_data' });
305
- }
306
- }
307
300
  // Validate use_case is provided (unless only parent_session_id is given)
308
301
  if (!options.use_case && !(((_a = options.options) === null || _a === void 0 ? void 0 : _a.parent_session_id) && !options.phone_number && !options.plmn)) {
309
302
  throw this.createError(PhoneAuthErrorCode.MISSING_PARAMETERS, 'use_case is required', { field: 'use_case' });
@@ -355,7 +348,6 @@ export class PhoneAuthClient {
355
348
  nonce: nonce,
356
349
  id: requestId,
357
350
  // Optional fields
358
- consent_data: options.consent_data,
359
351
  client_info: {
360
352
  user_agent: navigator.userAgent,
361
353
  platform: navigator.platform
@@ -495,19 +487,13 @@ export class PhoneAuthClient {
495
487
  console.log('[PhoneAuth] Session cache size:', this.sessionCache.size);
496
488
  console.log('[PhoneAuth] Retry count:', this.retryCount);
497
489
  console.log('[PhoneAuth] PrepareResponse received:', JSON.stringify(plainResponse, null, 2));
498
- // Check if we're using new InvokeOptions format
499
- // Properly detect InvokeOptions by checking for any of its properties
500
- const invokeOptions = options && ('preventDefaultUI' in options ||
501
- 'executionMode' in options ||
502
- 'theme' in options ||
503
- 'modalOptions' in options ||
504
- 'callbacks' in options) ? options : undefined;
505
- // Get configuration from options
490
+ // Treat options as InvokeOptions (the modern format)
491
+ // Legacy DesktopAuthOptions properties will still work through property access
492
+ const opts = options;
493
+ // Get configuration from options - access properties directly
506
494
  const strategy = plainResponse.authentication_strategy;
507
- const preventDefaultUI = (_a = invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.preventDefaultUI) !== null && _a !== void 0 ? _a : false;
508
- const executionMode = (_b = invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.executionMode) !== null && _b !== void 0 ? _b : 'standard';
509
- // DesktopAuthOptions is only used if not InvokeOptions
510
- const desktopOptions = options && !invokeOptions ? options : undefined;
495
+ const preventDefaultUI = (_a = opts === null || opts === void 0 ? void 0 : opts.preventDefaultUI) !== null && _a !== void 0 ? _a : false;
496
+ const executionMode = (_b = opts === null || opts === void 0 ? void 0 : opts.executionMode) !== null && _b !== void 0 ? _b : 'standard';
511
497
  // Handle based on authentication strategy
512
498
  if (plainResponse.authentication_strategy === API.AUTHENTICATION_STRATEGY.TS43) {
513
499
  // Check browser support for TS43 strategy which requires Digital Credentials API
@@ -629,14 +615,14 @@ export class PhoneAuthClient {
629
615
  var _a, _b;
630
616
  try {
631
617
  const result = yield triggerTS43();
632
- (_a = invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.onTriggerAttempt) === null || _a === void 0 ? void 0 : _a.call(invokeOptions, {
618
+ (_a = opts === null || opts === void 0 ? void 0 : opts.onTriggerAttempt) === null || _a === void 0 ? void 0 : _a.call(opts, {
633
619
  strategy: API.AUTHENTICATION_STRATEGY.TS43,
634
620
  success: true
635
621
  });
636
622
  return result;
637
623
  }
638
624
  catch (error) {
639
- (_b = invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.onTriggerAttempt) === null || _b === void 0 ? void 0 : _b.call(invokeOptions, {
625
+ (_b = opts === null || opts === void 0 ? void 0 : opts.onTriggerAttempt) === null || _b === void 0 ? void 0 : _b.call(opts, {
640
626
  strategy: API.AUTHENTICATION_STRATEGY.TS43,
641
627
  success: false,
642
628
  error
@@ -727,11 +713,10 @@ export class PhoneAuthClient {
727
713
  qr_code: ((_k = desktopData.data) === null || _k === void 0 ? void 0 : _k.qr_code_image) || desktopData.qr_code_image || desktopData.qr_code,
728
714
  challenge: (_l = desktopData.data) === null || _l === void 0 ? void 0 : _l.challenge
729
715
  };
730
- // Polling options
731
- const pollingEndpointToUse = (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.pollingEndpoint) ||
732
- (desktopOptions === null || desktopOptions === void 0 ? void 0 : desktopOptions.pollingEndpoint) ||
716
+ // Polling options - gather from any options format
717
+ const pollingEndpointToUse = (opts === null || opts === void 0 ? void 0 : opts.pollingEndpoint) ||
733
718
  ((_m = this.config.endpoints) === null || _m === void 0 ? void 0 : _m.polling);
734
- const pollingOptions = Object.assign(Object.assign({}, desktopOptions), { pollingEndpoint: pollingEndpointToUse, pollingInterval: (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.pollingInterval) || (desktopOptions === null || desktopOptions === void 0 ? void 0 : desktopOptions.pollingInterval) || this.config.pollingInterval || 2000, maxPollingAttempts: (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.maxPollingAttempts) || (desktopOptions === null || desktopOptions === void 0 ? void 0 : desktopOptions.maxPollingAttempts) || this.config.maxPollingAttempts || 30, onQRCodeReady: undefined, onStatusUpdate: undefined });
719
+ const pollingOptions = Object.assign(Object.assign({}, opts), { pollingEndpoint: pollingEndpointToUse, pollingInterval: (opts === null || opts === void 0 ? void 0 : opts.pollingInterval) || this.config.pollingInterval || 2000, maxPollingAttempts: (opts === null || opts === void 0 ? void 0 : opts.maxPollingAttempts) || this.config.maxPollingAttempts || 30, onQRCodeReady: undefined, onStatusUpdate: undefined });
735
720
  // Decide whether to show modal based on preventDefaultUI
736
721
  const showModal = !preventDefaultUI;
737
722
  let modal;
@@ -740,13 +725,12 @@ export class PhoneAuthClient {
740
725
  preventDefaultUI,
741
726
  showModal,
742
727
  executionMode,
743
- hasInvokeOptions: !!invokeOptions,
744
- hasDesktopOptions: !!desktopOptions
728
+ hasOptions: !!opts
745
729
  });
746
730
  if (showModal) {
747
731
  console.log('[Desktop] Creating modal with QR data:', qrCodeData);
748
732
  // Create and setup modal
749
- modal = new AuthModal(invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.modalOptions, invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.callbacks);
733
+ modal = new AuthModal(opts === null || opts === void 0 ? void 0 : opts.modalOptions, opts === null || opts === void 0 ? void 0 : opts.callbacks);
750
734
  modal.setCloseCallback(() => {
751
735
  this.log('Desktop QR modal closed by user, cancelling polling');
752
736
  handler.cancel();
@@ -794,41 +778,20 @@ export class PhoneAuthClient {
794
778
  // Handle based on execution mode
795
779
  if (executionMode === 'extended') {
796
780
  // Extended mode - return control methods
797
- let credentialResolve = null;
798
- let credentialReject = null;
799
- let pollingStarted = false;
800
- // Create a promise that will remain pending until polling starts
781
+ // Create a promise and always start polling immediately
801
782
  const credentialPromise = new Promise((resolve, reject) => {
802
- credentialResolve = resolve;
803
- credentialReject = reject;
804
- // If modal is shown, start polling immediately
805
- if (showModal) {
806
- pollingStarted = true;
807
- startPolling()
808
- .then(resolve)
809
- .catch(reject);
810
- }
811
- // Otherwise, promise remains pending until start_polling() is called
783
+ // Always start polling immediately in extended mode (consistent with Link)
784
+ // This prevents the "unresolved promise trap" where developers might await
785
+ // the credential before calling start_polling()
786
+ startPolling()
787
+ .then(resolve)
788
+ .catch(reject);
812
789
  });
813
790
  // Create wrapped functions
814
791
  const wrappedStartPolling = () => __awaiter(this, void 0, void 0, function* () {
815
- if (pollingStarted) {
816
- throw this.createError(PhoneAuthErrorCode.INVALID_SESSION_STATE, 'Polling has already been started');
817
- }
818
- pollingStarted = true;
819
- try {
820
- const result = yield startPolling();
821
- if (credentialResolve) {
822
- credentialResolve(result);
823
- }
824
- return result;
825
- }
826
- catch (err) {
827
- if (credentialReject) {
828
- credentialReject(err);
829
- }
830
- throw err;
831
- }
792
+ // Polling has already started automatically in extended mode
793
+ // This method just returns the existing credential promise for consistency
794
+ return credentialPromise;
832
795
  });
833
796
  const wrappedStopPolling = () => {
834
797
  handler.cleanup();
@@ -840,10 +803,7 @@ export class PhoneAuthClient {
840
803
  handler.cleanup();
841
804
  if (modal)
842
805
  modal.close();
843
- // Reject the credential promise if it's still pending
844
- if (!pollingStarted && credentialReject) {
845
- credentialReject(this.createError(PhoneAuthErrorCode.USER_DENIED, 'Desktop authentication cancelled by user'));
846
- }
806
+ // The credential promise will be rejected by the handler.cancel() call
847
807
  };
848
808
  // Create the response object with a getter for is_polling
849
809
  const response = {
@@ -901,14 +861,14 @@ export class PhoneAuthClient {
901
861
  var _a, _b;
902
862
  try {
903
863
  window.open(linkData.url, '_blank');
904
- (_a = invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.onTriggerAttempt) === null || _a === void 0 ? void 0 : _a.call(invokeOptions, {
864
+ (_a = opts === null || opts === void 0 ? void 0 : opts.onTriggerAttempt) === null || _a === void 0 ? void 0 : _a.call(opts, {
905
865
  strategy: API.AUTHENTICATION_STRATEGY.LINK,
906
866
  url: linkData.url,
907
867
  success: true
908
868
  });
909
869
  }
910
870
  catch (error) {
911
- (_b = invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.onTriggerAttempt) === null || _b === void 0 ? void 0 : _b.call(invokeOptions, {
871
+ (_b = opts === null || opts === void 0 ? void 0 : opts.onTriggerAttempt) === null || _b === void 0 ? void 0 : _b.call(opts, {
912
872
  strategy: API.AUTHENTICATION_STRATEGY.LINK,
913
873
  url: linkData.url,
914
874
  success: false,
@@ -918,19 +878,19 @@ export class PhoneAuthClient {
918
878
  };
919
879
  // Link always auto-opens the app (no SDK UI by default)
920
880
  // Open immediately to preserve user gesture context
921
- if ((invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.autoTrigger) !== false) {
881
+ if ((opts === null || opts === void 0 ? void 0 : opts.autoTrigger) !== false) {
922
882
  triggerLink();
923
883
  }
924
884
  // Start polling in the background
925
885
  console.log('[PhoneAuth Client] Link polling config:', {
926
- fromInvokeOptions: invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.pollingEndpoint,
886
+ fromOptions: opts === null || opts === void 0 ? void 0 : opts.pollingEndpoint,
927
887
  fromClientConfig: (_o = this.config.endpoints) === null || _o === void 0 ? void 0 : _o.polling,
928
- finalPollingEndpoint: (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.pollingEndpoint) || ((_p = this.config.endpoints) === null || _p === void 0 ? void 0 : _p.polling)
888
+ finalPollingEndpoint: (opts === null || opts === void 0 ? void 0 : opts.pollingEndpoint) || ((_p = this.config.endpoints) === null || _p === void 0 ? void 0 : _p.polling)
929
889
  });
930
890
  const pollingOptions = {
931
- pollingEndpoint: (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.pollingEndpoint) || ((_q = this.config.endpoints) === null || _q === void 0 ? void 0 : _q.polling),
932
- pollingInterval: (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.pollingInterval) || this.config.pollingInterval || 2000,
933
- maxPollingAttempts: (invokeOptions === null || invokeOptions === void 0 ? void 0 : invokeOptions.maxPollingAttempts) || this.config.maxPollingAttempts || 30,
891
+ pollingEndpoint: (opts === null || opts === void 0 ? void 0 : opts.pollingEndpoint) || ((_q = this.config.endpoints) === null || _q === void 0 ? void 0 : _q.polling),
892
+ pollingInterval: (opts === null || opts === void 0 ? void 0 : opts.pollingInterval) || this.config.pollingInterval || 2000,
893
+ maxPollingAttempts: (opts === null || opts === void 0 ? void 0 : opts.maxPollingAttempts) || this.config.maxPollingAttempts || 30,
934
894
  onLinkOpened: undefined,
935
895
  onStatusUpdate: undefined
936
896
  };
@@ -2,6 +2,6 @@ export { PhoneAuthClient } from './client';
2
2
  export * from './types';
3
3
  export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from './error-utils';
4
4
  export type { PhoneAuthErrorCode as PhoneAuthErrorCodeType } from './error-utils';
5
- export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateConsentData, validateNonce } from './validation-utils';
5
+ export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateNonce } from './validation-utils';
6
6
  export { MobileDebugConsole } from './ui/mobile-debug-console';
7
7
  export { isExtendedResponse, isCredential, isAuthCredential, isLinkStrategy, isTS43Strategy, isDesktopStrategy, getStrategy, hasPollingControls, hasTrigger, isHeadlessResult, requiresPolling, requiresUserAction } from './type-guards';
@@ -1,7 +1,7 @@
1
1
  export { PhoneAuthClient } from './client';
2
2
  export * from './types';
3
3
  export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from './error-utils';
4
- export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateConsentData, validateNonce } from './validation-utils';
4
+ export { validatePhoneNumber, validatePlmn, validateUseCaseRequirements, validateNonce } from './validation-utils';
5
5
  export { MobileDebugConsole } from './ui/mobile-debug-console';
6
6
  export { isExtendedResponse, isCredential, isAuthCredential, isLinkStrategy, isTS43Strategy, isDesktopStrategy, getStrategy, hasPollingControls, hasTrigger,
7
7
  // Deprecated aliases
@@ -32,19 +32,6 @@ export declare function validateUseCaseRequirements(useCase: UseCase, phoneNumbe
32
32
  valid: boolean;
33
33
  error?: string;
34
34
  };
35
- /**
36
- * Validates consent data
37
- * @param consentData - Consent data object
38
- * @returns Validation result
39
- */
40
- export declare function validateConsentData(consentData?: {
41
- consent_text: string;
42
- policy_link: string;
43
- policy_text: string;
44
- }): {
45
- valid: boolean;
46
- error?: string;
47
- };
48
35
  /**
49
36
  * Creates a validation error
50
37
  * @param code - Error code
@@ -90,46 +90,6 @@ export function validateUseCaseRequirements(useCase, phoneNumber, hasParentSessi
90
90
  }
91
91
  return { valid: true };
92
92
  }
93
- /**
94
- * Validates consent data
95
- * @param consentData - Consent data object
96
- * @returns Validation result
97
- */
98
- export function validateConsentData(consentData) {
99
- if (!consentData) {
100
- return { valid: true }; // Consent data is optional
101
- }
102
- const { consent_text: consentText, policy_link: policyLink, policy_text: policyText } = consentData;
103
- if (!consentText || consentText.trim().length === 0) {
104
- return {
105
- valid: false,
106
- error: 'Consent text is required when consent data is provided'
107
- };
108
- }
109
- if (!policyLink || policyLink.trim().length === 0) {
110
- return {
111
- valid: false,
112
- error: 'Policy link is required when consent data is provided'
113
- };
114
- }
115
- // Validate URL format for policy link
116
- try {
117
- new URL(policyLink);
118
- }
119
- catch (_a) {
120
- return {
121
- valid: false,
122
- error: 'Policy link must be a valid URL'
123
- };
124
- }
125
- if (!policyText || policyText.trim().length === 0) {
126
- return {
127
- valid: false,
128
- error: 'Policy text is required when consent data is provided'
129
- };
130
- }
131
- return { valid: true };
132
- }
133
93
  /**
134
94
  * Creates a validation error
135
95
  * @param code - Error code
@@ -1,2 +1,2 @@
1
1
  // SDK version - injected at build time
2
- export const SDK_VERSION = '4.4.9';
2
+ export const SDK_VERSION = '5.0.0';
@@ -2,7 +2,7 @@ export { PhoneAuthClient } from './core/phone-auth';
2
2
  export type { AuthConfig as PhoneAuthConfig, PhoneAuthOptions, PhoneAuthResult, AuthError as PhoneAuthError, AuthStep as PhoneAuthStep } from './core/phone-auth';
3
3
  export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from './core/phone-auth';
4
4
  export { isExtendedResponse, isCredential, isAuthCredential, isLinkStrategy, isTS43Strategy, isDesktopStrategy, getStrategy, hasPollingControls, hasTrigger, isHeadlessResult, requiresPolling, requiresUserAction } from './core/phone-auth';
5
- export type { PhoneAuthCallbacks, PLMN, SessionInfo, InvokeOptions, ExecutionMode, AuthCredential, AnyExtendedResponse, DesktopExtendedResponse, LinkExtendedResponse, TS43ExtendedResponse, PrepareRequest, PrepareResponse, GetPhoneNumberRequest, GetPhoneNumberResponse, VerifyPhoneNumberRequest, VerifyPhoneNumberResponse, SecureCredentialRequest, SecureCredentialResponse, DigitalCredential, TS43Data, LinkData, DesktopData, ClientInfo, ConsentData, BrowserErrorType, BrowserErrorCodeType, BrowserNameType } from './core/phone-auth/types';
5
+ export type { PhoneAuthCallbacks, PLMN, SessionInfo, InvokeOptions, ExecutionMode, AuthCredential, AnyExtendedResponse, DesktopExtendedResponse, LinkExtendedResponse, TS43ExtendedResponse, PrepareRequest, PrepareResponse, GetPhoneNumberRequest, GetPhoneNumberResponse, VerifyPhoneNumberRequest, VerifyPhoneNumberResponse, SecureCredentialRequest, SecureCredentialResponse, DigitalCredential, TS43Data, LinkData, DesktopData, ClientInfo, BrowserErrorType, BrowserErrorCodeType, BrowserNameType } from './core/phone-auth/types';
6
6
  export { USE_CASE as UseCase, AUTHENTICATION_STRATEGY as AuthenticationStrategy, BrowserError, BrowserErrorCode, BrowserName } from './core/phone-auth/types';
7
7
  export { DesktopHandler } from './core/phone-auth/strategies/desktop';
8
8
  export type { DesktopAuthOptions, DesktopAuthResult, PollingStatus, QRCodeData } from './core/phone-auth/strategies/desktop';
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { PhoneAuthClient } from './core/phone-auth';
2
2
  export type { AuthConfig as PhoneAuthConfig, PhoneAuthOptions, PhoneAuthResult, AuthError as PhoneAuthError, AuthStep as PhoneAuthStep } from './core/phone-auth';
3
3
  export { PhoneAuthErrorCode, isPhoneAuthError, isUserError, getUserMessage, isErrorCode, getRetryDelay, isRetryableError, serializeError, createErrorBreadcrumb } from './core/phone-auth';
4
4
  export { isExtendedResponse, isCredential, isAuthCredential, isLinkStrategy, isTS43Strategy, isDesktopStrategy, getStrategy, hasPollingControls, hasTrigger, isHeadlessResult, requiresPolling, requiresUserAction } from './core/phone-auth';
5
- export type { PhoneAuthCallbacks, PLMN, SessionInfo, InvokeOptions, ExecutionMode, AuthCredential, AnyExtendedResponse, DesktopExtendedResponse, LinkExtendedResponse, TS43ExtendedResponse, PrepareRequest, PrepareResponse, GetPhoneNumberRequest, GetPhoneNumberResponse, VerifyPhoneNumberRequest, VerifyPhoneNumberResponse, SecureCredentialRequest, SecureCredentialResponse, DigitalCredential, TS43Data, LinkData, DesktopData, ClientInfo, ConsentData, BrowserErrorType, BrowserErrorCodeType, BrowserNameType } from './core/phone-auth/types';
5
+ export type { PhoneAuthCallbacks, PLMN, SessionInfo, InvokeOptions, ExecutionMode, AuthCredential, AnyExtendedResponse, DesktopExtendedResponse, LinkExtendedResponse, TS43ExtendedResponse, PrepareRequest, PrepareResponse, GetPhoneNumberRequest, GetPhoneNumberResponse, VerifyPhoneNumberRequest, VerifyPhoneNumberResponse, SecureCredentialRequest, SecureCredentialResponse, DigitalCredential, TS43Data, LinkData, DesktopData, ClientInfo, BrowserErrorType, BrowserErrorCodeType, BrowserNameType } from './core/phone-auth/types';
6
6
  export { USE_CASE as UseCase, AUTHENTICATION_STRATEGY as AuthenticationStrategy, BrowserError, BrowserErrorCode, BrowserName } from './core/phone-auth/types';
7
7
  export { DesktopHandler } from './core/phone-auth/strategies/desktop';
8
8
  export type { DesktopAuthOptions, DesktopAuthResult, PollingStatus, QRCodeData } from './core/phone-auth/strategies/desktop';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glideidentity/web-client-sdk",
3
- "version": "4.4.9",
3
+ "version": "5.0.0",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -62,7 +62,7 @@
62
62
  "vue": "^3.0.0"
63
63
  },
64
64
  "dependencies": {
65
- "axios": "^1.7.9"
65
+ "axios": "^1.13.2"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@angular/core": "^19.0.6",