azirid-react 0.9.9 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -163,6 +163,31 @@ function createAccessClient(config, appContext) {
163
163
  let refreshToken = ssGet(storageKeyRt);
164
164
  let csrfToken = ssGet(storageKeyCsrf);
165
165
  let refreshPromise = null;
166
+ let channel = null;
167
+ try {
168
+ if (typeof BroadcastChannel !== "undefined") {
169
+ channel = new BroadcastChannel("azirid-auth");
170
+ channel.onmessage = (event) => {
171
+ if (event.data?.type === "token-refreshed") {
172
+ accessToken = event.data.accessToken;
173
+ if (event.data.refreshToken) setRefreshToken(event.data.refreshToken);
174
+ if (event.data.csrfToken) setCsrfToken(event.data.csrfToken);
175
+ }
176
+ };
177
+ }
178
+ } catch {
179
+ }
180
+ function broadcastTokens() {
181
+ try {
182
+ channel?.postMessage({
183
+ type: "token-refreshed",
184
+ accessToken,
185
+ refreshToken,
186
+ csrfToken
187
+ });
188
+ } catch {
189
+ }
190
+ }
166
191
  function setAccessToken(token) {
167
192
  accessToken = token;
168
193
  }
@@ -224,6 +249,7 @@ function createAccessClient(config, appContext) {
224
249
  const xc = json.xc ?? json.csrfToken;
225
250
  if (rt) setRefreshToken(rt);
226
251
  if (xc) setCsrfToken(xc);
252
+ broadcastTokens();
227
253
  }
228
254
  function refreshTokens(opts) {
229
255
  if (opts?.tenantId) {
@@ -773,6 +799,27 @@ function AziridProviderInner({
773
799
  }, [client, props.autoBootstrap, updateAccessToken, saveSessionTokens]);
774
800
  const silentRefresh = useCallback(async () => {
775
801
  if (!client.getAccessToken()) return;
802
+ if (typeof navigator !== "undefined" && "locks" in navigator) {
803
+ let acquired = false;
804
+ try {
805
+ await navigator.locks.request(
806
+ "azirid-token-refresh",
807
+ { ifAvailable: true },
808
+ async (lock) => {
809
+ if (!lock) return;
810
+ acquired = true;
811
+ await client.refreshSession();
812
+ updateAccessToken(client.getAccessToken());
813
+ }
814
+ );
815
+ } catch (err) {
816
+ if (acquired && isAuthError(err)) {
817
+ clearSession();
818
+ props.onSessionExpired?.();
819
+ }
820
+ }
821
+ return;
822
+ }
776
823
  try {
777
824
  await client.refreshSession();
778
825
  updateAccessToken(client.getAccessToken());
@@ -783,6 +830,27 @@ function AziridProviderInner({
783
830
  }
784
831
  }
785
832
  }, [client, updateAccessToken, clearSession, props]);
833
+ useEffect(() => {
834
+ let channel = null;
835
+ try {
836
+ if (typeof BroadcastChannel !== "undefined") {
837
+ channel = new BroadcastChannel("azirid-auth");
838
+ channel.onmessage = (event) => {
839
+ if (event.data?.type === "token-refreshed" && event.data.accessToken) {
840
+ client.setAccessToken(event.data.accessToken);
841
+ updateAccessToken(event.data.accessToken);
842
+ }
843
+ };
844
+ }
845
+ } catch {
846
+ }
847
+ return () => {
848
+ try {
849
+ channel?.close();
850
+ } catch {
851
+ }
852
+ };
853
+ }, [client, updateAccessToken]);
786
854
  useEffect(() => {
787
855
  const intervalMs = props.refreshInterval ?? 5e4;
788
856
  if (intervalMs <= 0) return;
@@ -4273,7 +4341,7 @@ function usePasswordToggle() {
4273
4341
  }
4274
4342
 
4275
4343
  // src/index.ts
4276
- var SDK_VERSION = "0.9.9";
4344
+ var SDK_VERSION = "0.10.0";
4277
4345
 
4278
4346
  export { AuthForm, AziridProvider, BASE_PATHS, CheckoutButton, ForgotPasswordForm, InvoiceList, LoginForm, PATHS, PayButton, PayphoneCallback, PayphoneWidgetRenderer, PricingTable, ReferralCard, ReferralStats, ResetPasswordForm, SDK_VERSION, SignupForm, SubscriptionBadge, buildPaths, changePasswordSchema, cn, createAccessClient, createForgotPasswordSchema, createLoginSchema, createMutationHook, createResetPasswordConfirmSchema, createSignupSchema, en, es, forgotPasswordSchema, isAuthError, loginSchema, magicLinkRequestSchema, magicLinkVerifySchema, passkeyRegisterStartSchema, removeStyles, resetPasswordConfirmSchema, resolveMessages, signupSchema, socialLoginSchema, useAccessClient, useAzirid, useBootstrap, useBranding, useChangePassword, useCheckout, useFormState, useInvoices, useLogin, useLogout, useMagicLink, useMessages, usePasskeys, usePasswordReset, usePasswordToggle, usePayButton, usePaymentProviders, usePayphoneCheckout, usePayphoneConfirm, usePlans, useReferral, useReferralStats, useRefresh, useSession, useSignup, useSocialLogin, useSubmitTransferProof, useSubscription, useSwitchTenant, useTenantMembers, useTenants, useTransferPayment, useTransferProofs };
4279
4347
  //# sourceMappingURL=index.js.map