@oxyhq/services 5.20.1 → 5.20.2

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.
@@ -9,6 +9,7 @@ var _OxyServicesErrors = require("../OxyServices.errors.js");
9
9
  // FedCM only allows one navigator.credentials.get request at a time
10
10
  let fedCMRequestInProgress = false;
11
11
  let fedCMRequestPromise = null;
12
+ let currentMediationMode = null;
12
13
 
13
14
  /**
14
15
  * Federated Credential Management (FedCM) Authentication Mixin
@@ -181,18 +182,36 @@ function OxyServicesFedCMMixin(Base) {
181
182
  * Uses a global lock to prevent concurrent requests, as FedCM only
182
183
  * allows one navigator.credentials.get request at a time.
183
184
  *
185
+ * Interactive requests (optional/required) wait for any silent request to finish first.
186
+ *
184
187
  * @private
185
188
  */
186
189
  async requestIdentityCredential(options) {
187
- // If a request is already in progress, wait for it instead of starting a new one
190
+ const requestedMediation = options.mediation || 'optional';
191
+ const isInteractive = requestedMediation !== 'silent';
192
+
193
+ // If a request is already in progress...
188
194
  if (fedCMRequestInProgress && fedCMRequestPromise) {
189
- try {
190
- return await fedCMRequestPromise;
191
- } catch {
192
- return null;
195
+ // If current request is silent and new request is interactive,
196
+ // wait for silent to finish, then make the interactive request
197
+ if (currentMediationMode === 'silent' && isInteractive) {
198
+ try {
199
+ await fedCMRequestPromise;
200
+ } catch {
201
+ // Ignore silent request errors
202
+ }
203
+ // Now fall through to make the interactive request
204
+ } else {
205
+ // Same type of request - wait for the existing one
206
+ try {
207
+ return await fedCMRequestPromise;
208
+ } catch {
209
+ return null;
210
+ }
193
211
  }
194
212
  }
195
213
  fedCMRequestInProgress = true;
214
+ currentMediationMode = requestedMediation;
196
215
  const controller = new AbortController();
197
216
  const timeout = setTimeout(() => controller.abort(), this.constructor.FEDCM_TIMEOUT);
198
217
  fedCMRequestPromise = (async () => {
@@ -209,7 +228,7 @@ function OxyServicesFedCMMixin(Base) {
209
228
  })
210
229
  }]
211
230
  },
212
- mediation: options.mediation || 'optional',
231
+ mediation: requestedMediation,
213
232
  signal: controller.signal
214
233
  });
215
234
  if (!credential || credential.type !== 'identity') {
@@ -222,6 +241,7 @@ function OxyServicesFedCMMixin(Base) {
222
241
  clearTimeout(timeout);
223
242
  fedCMRequestInProgress = false;
224
243
  fedCMRequestPromise = null;
244
+ currentMediationMode = null;
225
245
  }
226
246
  })();
227
247
  return fedCMRequestPromise;
@@ -1 +1 @@
1
- {"version":3,"names":["_OxyServicesErrors","require","fedCMRequestInProgress","fedCMRequestPromise","OxyServicesFedCMMixin","Base","constructor","args","DEFAULT_CONFIG_URL","FEDCM_TIMEOUT","isFedCMSupported","window","navigator","signInWithFedCM","options","OxyAuthenticationError","nonce","generateNonce","clientId","getClientId","credential","requestIdentityCredential","configURL","context","token","session","exchangeIdTokenForSession","accessToken","httpService","setTokens","error","name","silentSignInWithFedCM","mediation","controller","AbortController","timeout","setTimeout","abort","credentials","get","identity","providers","loginHint","signal","type","clearTimeout","idToken","makeRequest","id_token","cache","revokeFedCMCredential","IdentityCredential","logout","getFedCMConfig","enabled","crypto","randomUUID","Date","now","Math","random","toString","substring","location","origin"],"sourceRoot":"../../../../src","sources":["core/mixins/OxyServices.fedcm.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_OxyServicesErrors","require","fedCMRequestInProgress","fedCMRequestPromise","currentMediationMode","OxyServicesFedCMMixin","Base","constructor","args","DEFAULT_CONFIG_URL","FEDCM_TIMEOUT","isFedCMSupported","window","navigator","signInWithFedCM","options","OxyAuthenticationError","nonce","generateNonce","clientId","getClientId","credential","requestIdentityCredential","configURL","context","token","session","exchangeIdTokenForSession","accessToken","httpService","setTokens","error","name","silentSignInWithFedCM","mediation","requestedMediation","isInteractive","controller","AbortController","timeout","setTimeout","abort","credentials","get","identity","providers","loginHint","signal","type","clearTimeout","idToken","makeRequest","id_token","cache","revokeFedCMCredential","IdentityCredential","logout","getFedCMConfig","enabled","crypto","randomUUID","Date","now","Math","random","toString","substring","location","origin"],"sourceRoot":"../../../../src","sources":["core/mixins/OxyServices.fedcm.ts"],"mappings":"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","ignoreList":[]}
@@ -70,25 +70,34 @@ function useAuth() {
70
70
 
71
71
  // Web (not on IdP): Use FedCM or popup-based authentication
72
72
  if ((0, _useWebSSO.isWebBrowser)() && !publicKey && !isIdentityProvider) {
73
- try {
74
- // Try FedCM first (instant if user already signed in)
75
- if (oxyServices.isFedCMSupported?.()) {
73
+ // Try FedCM first (instant if user already signed in at IdP)
74
+ if (oxyServices.isFedCMSupported?.()) {
75
+ try {
76
76
  const fedcmSession = await oxyServices.signInWithFedCM?.();
77
77
  if (fedcmSession?.user) {
78
78
  return fedcmSession.user;
79
79
  }
80
+ } catch (fedcmError) {
81
+ // FedCM failed (user not signed in at IdP, cancelled, etc.)
82
+ // Fall through to popup
83
+ console.debug('FedCM failed, falling back to popup:', fedcmError);
80
84
  }
85
+ }
81
86
 
82
- // Fallback to popup (opens auth.oxy.so in popup window)
87
+ // Fallback to popup (opens auth.oxy.so in popup window)
88
+ try {
83
89
  const popupSession = await oxyServices.signInWithPopup?.();
84
90
  if (popupSession?.user) {
85
91
  return popupSession.user;
86
92
  }
87
- throw new Error('Sign-in failed');
88
- } catch (error) {
89
- // If popup blocked or FedCM failed, suggest redirect
90
- throw new Error(error instanceof Error && error.message.includes('blocked') ? 'Popup blocked. Please allow popups or try again.' : 'Sign-in failed. Please try again.');
93
+ } catch (popupError) {
94
+ // If popup blocked, suggest enabling popups
95
+ if (popupError instanceof Error && popupError.message.includes('blocked')) {
96
+ throw new Error('Popup blocked. Please allow popups for this site.');
97
+ }
98
+ throw popupError;
91
99
  }
100
+ throw new Error('Sign-in failed. Please try again.');
92
101
  }
93
102
 
94
103
  // Native: Use cryptographic identity
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_OxyContext","_useWebSSO","useAuth","user","isAuthenticated","isLoading","isTokenReady","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","useOxy","useCallback","publicKey","isIdentityProvider","isWebBrowser","window","location","hostname","isFedCMSupported","fedcmSession","signInWithFedCM","popupSession","signInWithPopup","Error","message","includes","hasExisting","existingKey","Promise","_","reject","loginUrl","href","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_OxyContext","_useWebSSO","useAuth","user","isAuthenticated","isLoading","isTokenReady","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","useOxy","useCallback","publicKey","isIdentityProvider","isWebBrowser","window","location","hostname","isFedCMSupported","fedcmSession","signInWithFedCM","fedcmError","console","debug","popupSession","signInWithPopup","popupError","Error","message","includes","hasExisting","existingKey","Promise","_","reject","loginUrl","href","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ import { OxyAuthenticationError } from "../OxyServices.errors.js";
5
5
  // FedCM only allows one navigator.credentials.get request at a time
6
6
  let fedCMRequestInProgress = false;
7
7
  let fedCMRequestPromise = null;
8
+ let currentMediationMode = null;
8
9
 
9
10
  /**
10
11
  * Federated Credential Management (FedCM) Authentication Mixin
@@ -177,18 +178,36 @@ export function OxyServicesFedCMMixin(Base) {
177
178
  * Uses a global lock to prevent concurrent requests, as FedCM only
178
179
  * allows one navigator.credentials.get request at a time.
179
180
  *
181
+ * Interactive requests (optional/required) wait for any silent request to finish first.
182
+ *
180
183
  * @private
181
184
  */
182
185
  async requestIdentityCredential(options) {
183
- // If a request is already in progress, wait for it instead of starting a new one
186
+ const requestedMediation = options.mediation || 'optional';
187
+ const isInteractive = requestedMediation !== 'silent';
188
+
189
+ // If a request is already in progress...
184
190
  if (fedCMRequestInProgress && fedCMRequestPromise) {
185
- try {
186
- return await fedCMRequestPromise;
187
- } catch {
188
- return null;
191
+ // If current request is silent and new request is interactive,
192
+ // wait for silent to finish, then make the interactive request
193
+ if (currentMediationMode === 'silent' && isInteractive) {
194
+ try {
195
+ await fedCMRequestPromise;
196
+ } catch {
197
+ // Ignore silent request errors
198
+ }
199
+ // Now fall through to make the interactive request
200
+ } else {
201
+ // Same type of request - wait for the existing one
202
+ try {
203
+ return await fedCMRequestPromise;
204
+ } catch {
205
+ return null;
206
+ }
189
207
  }
190
208
  }
191
209
  fedCMRequestInProgress = true;
210
+ currentMediationMode = requestedMediation;
192
211
  const controller = new AbortController();
193
212
  const timeout = setTimeout(() => controller.abort(), this.constructor.FEDCM_TIMEOUT);
194
213
  fedCMRequestPromise = (async () => {
@@ -205,7 +224,7 @@ export function OxyServicesFedCMMixin(Base) {
205
224
  })
206
225
  }]
207
226
  },
208
- mediation: options.mediation || 'optional',
227
+ mediation: requestedMediation,
209
228
  signal: controller.signal
210
229
  });
211
230
  if (!credential || credential.type !== 'identity') {
@@ -218,6 +237,7 @@ export function OxyServicesFedCMMixin(Base) {
218
237
  clearTimeout(timeout);
219
238
  fedCMRequestInProgress = false;
220
239
  fedCMRequestPromise = null;
240
+ currentMediationMode = null;
221
241
  }
222
242
  })();
223
243
  return fedCMRequestPromise;
@@ -1 +1 @@
1
- {"version":3,"names":["OxyAuthenticationError","fedCMRequestInProgress","fedCMRequestPromise","OxyServicesFedCMMixin","Base","constructor","args","DEFAULT_CONFIG_URL","FEDCM_TIMEOUT","isFedCMSupported","window","navigator","signInWithFedCM","options","nonce","generateNonce","clientId","getClientId","credential","requestIdentityCredential","configURL","context","token","session","exchangeIdTokenForSession","accessToken","httpService","setTokens","error","name","silentSignInWithFedCM","mediation","controller","AbortController","timeout","setTimeout","abort","credentials","get","identity","providers","loginHint","signal","type","clearTimeout","idToken","makeRequest","id_token","cache","revokeFedCMCredential","IdentityCredential","logout","getFedCMConfig","enabled","crypto","randomUUID","Date","now","Math","random","toString","substring","location","origin","FedCMMixin"],"sourceRoot":"../../../../src","sources":["core/mixins/OxyServices.fedcm.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["OxyAuthenticationError","fedCMRequestInProgress","fedCMRequestPromise","currentMediationMode","OxyServicesFedCMMixin","Base","constructor","args","DEFAULT_CONFIG_URL","FEDCM_TIMEOUT","isFedCMSupported","window","navigator","signInWithFedCM","options","nonce","generateNonce","clientId","getClientId","credential","requestIdentityCredential","configURL","context","token","session","exchangeIdTokenForSession","accessToken","httpService","setTokens","error","name","silentSignInWithFedCM","mediation","requestedMediation","isInteractive","controller","AbortController","timeout","setTimeout","abort","credentials","get","identity","providers","loginHint","signal","type","clearTimeout","idToken","makeRequest","id_token","cache","revokeFedCMCredential","IdentityCredential","logout","getFedCMConfig","enabled","crypto","randomUUID","Date","now","Math","random","toString","substring","location","origin","FedCMMixin"],"sourceRoot":"../../../../src","sources":["core/mixins/OxyServices.fedcm.ts"],"mappings":"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","ignoreList":[]}
@@ -60,25 +60,34 @@ export function useAuth() {
60
60
 
61
61
  // Web (not on IdP): Use FedCM or popup-based authentication
62
62
  if (isWebBrowser() && !publicKey && !isIdentityProvider) {
63
- try {
64
- // Try FedCM first (instant if user already signed in)
65
- if (oxyServices.isFedCMSupported?.()) {
63
+ // Try FedCM first (instant if user already signed in at IdP)
64
+ if (oxyServices.isFedCMSupported?.()) {
65
+ try {
66
66
  const fedcmSession = await oxyServices.signInWithFedCM?.();
67
67
  if (fedcmSession?.user) {
68
68
  return fedcmSession.user;
69
69
  }
70
+ } catch (fedcmError) {
71
+ // FedCM failed (user not signed in at IdP, cancelled, etc.)
72
+ // Fall through to popup
73
+ console.debug('FedCM failed, falling back to popup:', fedcmError);
70
74
  }
75
+ }
71
76
 
72
- // Fallback to popup (opens auth.oxy.so in popup window)
77
+ // Fallback to popup (opens auth.oxy.so in popup window)
78
+ try {
73
79
  const popupSession = await oxyServices.signInWithPopup?.();
74
80
  if (popupSession?.user) {
75
81
  return popupSession.user;
76
82
  }
77
- throw new Error('Sign-in failed');
78
- } catch (error) {
79
- // If popup blocked or FedCM failed, suggest redirect
80
- throw new Error(error instanceof Error && error.message.includes('blocked') ? 'Popup blocked. Please allow popups or try again.' : 'Sign-in failed. Please try again.');
83
+ } catch (popupError) {
84
+ // If popup blocked, suggest enabling popups
85
+ if (popupError instanceof Error && popupError.message.includes('blocked')) {
86
+ throw new Error('Popup blocked. Please allow popups for this site.');
87
+ }
88
+ throw popupError;
81
89
  }
90
+ throw new Error('Sign-in failed. Please try again.');
82
91
  }
83
92
 
84
93
  // Native: Use cryptographic identity
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useOxy","isWebBrowser","useAuth","user","isAuthenticated","isLoading","isTokenReady","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","publicKey","isIdentityProvider","window","location","hostname","isFedCMSupported","fedcmSession","signInWithFedCM","popupSession","signInWithPopup","Error","message","includes","hasExisting","existingKey","Promise","_","reject","loginUrl","href","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useOxy","isWebBrowser","useAuth","user","isAuthenticated","isLoading","isTokenReady","error","signIn","oxySignIn","logout","logoutAll","refreshSessions","oxyServices","hasIdentity","getPublicKey","showBottomSheet","publicKey","isIdentityProvider","window","location","hostname","isFedCMSupported","fedcmSession","signInWithFedCM","fedcmError","console","debug","popupSession","signInWithPopup","popupError","Error","message","includes","hasExisting","existingKey","Promise","_","reject","loginUrl","href","signOut","signOutAll","refresh","isReady"],"sourceRoot":"../../../../src","sources":["ui/hooks/useAuth.ts"],"mappings":"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","ignoreList":[]}
@@ -98,6 +98,8 @@ export declare function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(
98
98
  * Uses a global lock to prevent concurrent requests, as FedCM only
99
99
  * allows one navigator.credentials.get request at a time.
100
100
  *
101
+ * Interactive requests (optional/required) wait for any silent request to finish first.
102
+ *
101
103
  * @private
102
104
  */
103
105
  requestIdentityCredential(options: {
@@ -181,13 +183,7 @@ export declare function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(
181
183
  handleError(error: unknown): Error;
182
184
  healthCheck(): Promise<{
183
185
  status: string;
184
- users
185
- /**
186
- * Get configuration for FedCM
187
- *
188
- * @returns FedCM configuration with browser support info
189
- */
190
- ?: number;
186
+ users?: number;
191
187
  timestamp?: string;
192
188
  [key: string]: any;
193
189
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"OxyServices.fedcm.d.ts","sourceRoot":"","sources":["../../../../../src/core/mixins/OxyServices.fedcm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,eAAe,EAAE,IAAI,EAAE,CAAC;kBAEtD,GAAG,EAAE;QAc5B;;WAEG;4BACiB,OAAO;QAI3B;;;;;;;;;;;;;;;;;;;;;;;WAuBG;kCAC4B,gBAAgB,GAAQ,OAAO,CAAC,oBAAoB,CAAC;QA2CpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BG;iCAC4B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAiCnE;;;;;;;WAOG;2CAC6C;YAC9C,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;SAChD,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QA+CrC;;;;;;;WAOG;2CAC6C,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAStF;;;;;WAKG;iCAC4B,OAAO,CAAC,IAAI,CAAC;QAmB5C;;;;WAIG;0BACe,WAAW;QAQ7B;;;;WAIG;yBACqB,MAAM;QAQ9B;;;;WAIG;uBACmB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA/IxB,CAAD;sBAGD,CAAH;yBACQ,CAAA;;;;;;;YA4GP;;;;eAIG;YACH,CANF;qBAEiB,CAAC;;;;iCA5P4B,gCAAgC;4BACrC,KAAK;IAE5C;;OAEG;wBACwB,OAAO;;MA2RnC;AAGD,OAAO,EAAE,qBAAqB,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"OxyServices.fedcm.d.ts","sourceRoot":"","sources":["../../../../../src/core/mixins/OxyServices.fedcm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,eAAe,EAAE,IAAI,EAAE,CAAC;kBAEtD,GAAG,EAAE;QAc5B;;WAEG;4BACiB,OAAO;QAI3B;;;;;;;;;;;;;;;;;;;;;;;WAuBG;kCAC4B,gBAAgB,GAAQ,OAAO,CAAC,oBAAoB,CAAC;QA2CpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BG;iCAC4B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAiCnE;;;;;;;;;WASG;2CAC6C;YAC9C,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;SAChD,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAgErC;;;;;;;WAOG;2CAC6C,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAStF;;;;;WAKG;iCAC4B,OAAO,CAAC,IAAI,CAAC;QAmB5C;;;;WAIG;0BACe,WAAW;QAQ7B;;;;WAIG;yBACqB,MAAM;QAQ9B;;;;WAIG;uBACmB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAnKR,CAAC;sBAA0B,CAAC;yBAG5C,CAAD;;;;;;iBAkGW,CAAC;qBACL,CAAC;;;;iCAhPiC,gCAAgC;4BACrC,KAAK;IAE5C;;OAEG;wBACwB,OAAO;;MA8SnC;AAGD,OAAO,EAAE,qBAAqB,IAAI,UAAU,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAC;IAEzB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IAEnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,EAAE,WAAW;IAC3D,6DAA6D;IAC7D,WAAW,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,aAAa,CAqHvC;AAGD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAC;IAEzB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IAEnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,EAAE,WAAW;IAC3D,6DAA6D;IAC7D,WAAW,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,aAAa,CA0HvC;AAGD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC"}
@@ -98,6 +98,8 @@ export declare function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(
98
98
  * Uses a global lock to prevent concurrent requests, as FedCM only
99
99
  * allows one navigator.credentials.get request at a time.
100
100
  *
101
+ * Interactive requests (optional/required) wait for any silent request to finish first.
102
+ *
101
103
  * @private
102
104
  */
103
105
  requestIdentityCredential(options: {
@@ -181,13 +183,7 @@ export declare function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(
181
183
  handleError(error: unknown): Error;
182
184
  healthCheck(): Promise<{
183
185
  status: string;
184
- users
185
- /**
186
- * Get configuration for FedCM
187
- *
188
- * @returns FedCM configuration with browser support info
189
- */
190
- ?: number;
186
+ users?: number;
191
187
  timestamp?: string;
192
188
  [key: string]: any;
193
189
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"OxyServices.fedcm.d.ts","sourceRoot":"","sources":["../../../../../src/core/mixins/OxyServices.fedcm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,eAAe,EAAE,IAAI,EAAE,CAAC;kBAEtD,GAAG,EAAE;QAc5B;;WAEG;4BACiB,OAAO;QAI3B;;;;;;;;;;;;;;;;;;;;;;;WAuBG;kCAC4B,gBAAgB,GAAQ,OAAO,CAAC,oBAAoB,CAAC;QA2CpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BG;iCAC4B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAiCnE;;;;;;;WAOG;2CAC6C;YAC9C,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;SAChD,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QA+CrC;;;;;;;WAOG;2CAC6C,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAStF;;;;;WAKG;iCAC4B,OAAO,CAAC,IAAI,CAAC;QAmB5C;;;;WAIG;0BACe,WAAW;QAQ7B;;;;WAIG;yBACqB,MAAM;QAQ9B;;;;WAIG;uBACmB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA/IxB,CAAD;sBAGD,CAAH;yBACQ,CAAA;;;;;;;YA4GP;;;;eAIG;YACH,CANF;qBAEiB,CAAC;;;;iCA5P4B,gCAAgC;4BACrC,KAAK;IAE5C;;OAEG;wBACwB,OAAO;;MA2RnC;AAGD,OAAO,EAAE,qBAAqB,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"OxyServices.fedcm.d.ts","sourceRoot":"","sources":["../../../../../src/core/mixins/OxyServices.fedcm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CACpD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,eAAe,EAAE,IAAI,EAAE,CAAC;kBAEtD,GAAG,EAAE;QAc5B;;WAEG;4BACiB,OAAO;QAI3B;;;;;;;;;;;;;;;;;;;;;;;WAuBG;kCAC4B,gBAAgB,GAAQ,OAAO,CAAC,oBAAoB,CAAC;QA2CpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6BG;iCAC4B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAiCnE;;;;;;;;;WASG;2CAC6C;YAC9C,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;SAChD,GAAG,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAgErC;;;;;;;WAOG;2CAC6C,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAStF;;;;;WAKG;iCAC4B,OAAO,CAAC,IAAI,CAAC;QAmB5C;;;;WAIG;0BACe,WAAW;QAQ7B;;;;WAIG;yBACqB,MAAM;QAQ9B;;;;WAIG;uBACmB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAnKR,CAAC;sBAA0B,CAAC;yBAG5C,CAAD;;;;;;iBAkGW,CAAC;qBACL,CAAC;;;;iCAhPiC,gCAAgC;4BACrC,KAAK;IAE5C;;OAEG;wBACwB,OAAO;;MA8SnC;AAGD,OAAO,EAAE,qBAAqB,IAAI,UAAU,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAC;IAEzB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IAEnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,EAAE,WAAW;IAC3D,6DAA6D;IAC7D,WAAW,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,aAAa,CAqHvC;AAGD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../../src/ui/hooks/useAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAElB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAC;IAEzB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IAEnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,EAAE,WAAW;IAC3D,6DAA6D;IAC7D,WAAW,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;CACvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,aAAa,CA0HvC;AAGD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "5.20.1",
3
+ "version": "5.20.2",
4
4
  "description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -17,6 +17,7 @@ export interface FedCMConfig {
17
17
  // FedCM only allows one navigator.credentials.get request at a time
18
18
  let fedCMRequestInProgress = false;
19
19
  let fedCMRequestPromise: Promise<any> | null = null;
20
+ let currentMediationMode: string | null = null;
20
21
 
21
22
  /**
22
23
  * Federated Credential Management (FedCM) Authentication Mixin
@@ -198,6 +199,8 @@ export function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(Base: T)
198
199
  * Uses a global lock to prevent concurrent requests, as FedCM only
199
200
  * allows one navigator.credentials.get request at a time.
200
201
  *
202
+ * Interactive requests (optional/required) wait for any silent request to finish first.
203
+ *
201
204
  * @private
202
205
  */
203
206
  public async requestIdentityCredential(options: {
@@ -207,16 +210,32 @@ export function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(Base: T)
207
210
  context?: string;
208
211
  mediation?: 'silent' | 'optional' | 'required';
209
212
  }): Promise<{ token: string } | null> {
210
- // If a request is already in progress, wait for it instead of starting a new one
213
+ const requestedMediation = options.mediation || 'optional';
214
+ const isInteractive = requestedMediation !== 'silent';
215
+
216
+ // If a request is already in progress...
211
217
  if (fedCMRequestInProgress && fedCMRequestPromise) {
212
- try {
213
- return await fedCMRequestPromise;
214
- } catch {
215
- return null;
218
+ // If current request is silent and new request is interactive,
219
+ // wait for silent to finish, then make the interactive request
220
+ if (currentMediationMode === 'silent' && isInteractive) {
221
+ try {
222
+ await fedCMRequestPromise;
223
+ } catch {
224
+ // Ignore silent request errors
225
+ }
226
+ // Now fall through to make the interactive request
227
+ } else {
228
+ // Same type of request - wait for the existing one
229
+ try {
230
+ return await fedCMRequestPromise;
231
+ } catch {
232
+ return null;
233
+ }
216
234
  }
217
235
  }
218
236
 
219
237
  fedCMRequestInProgress = true;
238
+ currentMediationMode = requestedMediation;
220
239
  const controller = new AbortController();
221
240
  const timeout = setTimeout(() => controller.abort(), (this.constructor as any).FEDCM_TIMEOUT);
222
241
 
@@ -234,7 +253,7 @@ export function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(Base: T)
234
253
  },
235
254
  ],
236
255
  },
237
- mediation: options.mediation || 'optional',
256
+ mediation: requestedMediation,
238
257
  signal: controller.signal,
239
258
  })) as any;
240
259
 
@@ -247,6 +266,7 @@ export function OxyServicesFedCMMixin<T extends typeof OxyServicesBase>(Base: T)
247
266
  clearTimeout(timeout);
248
267
  fedCMRequestInProgress = false;
249
268
  fedCMRequestPromise = null;
269
+ currentMediationMode = null;
250
270
  }
251
271
  })();
252
272
 
@@ -108,30 +108,35 @@ export function useAuth(): UseAuthReturn {
108
108
 
109
109
  // Web (not on IdP): Use FedCM or popup-based authentication
110
110
  if (isWebBrowser() && !publicKey && !isIdentityProvider) {
111
- try {
112
- // Try FedCM first (instant if user already signed in)
113
- if ((oxyServices as any).isFedCMSupported?.()) {
111
+ // Try FedCM first (instant if user already signed in at IdP)
112
+ if ((oxyServices as any).isFedCMSupported?.()) {
113
+ try {
114
114
  const fedcmSession = await (oxyServices as any).signInWithFedCM?.();
115
115
  if (fedcmSession?.user) {
116
116
  return fedcmSession.user;
117
117
  }
118
+ } catch (fedcmError) {
119
+ // FedCM failed (user not signed in at IdP, cancelled, etc.)
120
+ // Fall through to popup
121
+ console.debug('FedCM failed, falling back to popup:', fedcmError);
118
122
  }
123
+ }
119
124
 
120
- // Fallback to popup (opens auth.oxy.so in popup window)
125
+ // Fallback to popup (opens auth.oxy.so in popup window)
126
+ try {
121
127
  const popupSession = await (oxyServices as any).signInWithPopup?.();
122
128
  if (popupSession?.user) {
123
129
  return popupSession.user;
124
130
  }
125
-
126
- throw new Error('Sign-in failed');
127
- } catch (error) {
128
- // If popup blocked or FedCM failed, suggest redirect
129
- throw new Error(
130
- error instanceof Error && error.message.includes('blocked')
131
- ? 'Popup blocked. Please allow popups or try again.'
132
- : 'Sign-in failed. Please try again.'
133
- );
131
+ } catch (popupError) {
132
+ // If popup blocked, suggest enabling popups
133
+ if (popupError instanceof Error && popupError.message.includes('blocked')) {
134
+ throw new Error('Popup blocked. Please allow popups for this site.');
135
+ }
136
+ throw popupError;
134
137
  }
138
+
139
+ throw new Error('Sign-in failed. Please try again.');
135
140
  }
136
141
 
137
142
  // Native: Use cryptographic identity