@hexclave/next 1.0.72 → 1.0.74

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 (156) hide show
  1. package/dist/{admin-app-impl-DLqm4Zqy.d.ts → admin-app-impl-FZdANO62.d.ts} +15 -9
  2. package/dist/admin-app-impl-FZdANO62.d.ts.map +1 -0
  3. package/dist/clickmap/clickmap-core.d.ts +1 -1
  4. package/dist/clickmap/index.d.ts +1 -1
  5. package/dist/{client-app-DlKeB4SB.d.ts → client-app-BCT5p_70.d.ts} +12 -4
  6. package/dist/{client-app-DlKeB4SB.d.ts.map → client-app-BCT5p_70.d.ts.map} +1 -1
  7. package/dist/components/selected-team-switcher.d.ts +1 -1
  8. package/dist/components/team-icon.d.ts +1 -1
  9. package/dist/components/team-switcher.d.ts +1 -1
  10. package/dist/components-page/account-settings/payments/payments-page.d.ts +1 -1
  11. package/dist/components-page/account-settings/teams/leave-team-section.d.ts +1 -1
  12. package/dist/components-page/account-settings/teams/team-api-keys-section.d.ts +1 -1
  13. package/dist/components-page/account-settings/teams/team-display-name-section.d.ts +1 -1
  14. package/dist/components-page/account-settings/teams/team-member-invitation-section.d.ts +1 -1
  15. package/dist/components-page/account-settings/teams/team-member-list-section.d.ts +1 -1
  16. package/dist/components-page/account-settings/teams/team-page.d.ts +1 -1
  17. package/dist/components-page/account-settings/teams/team-profile-image-section.d.ts +1 -1
  18. package/dist/components-page/account-settings/teams/team-profile-user-section.d.ts +1 -1
  19. package/dist/components-page/hexclave-handler-client.d.ts +1 -1
  20. package/dist/components-page/hexclave-handler.d.ts +1 -1
  21. package/dist/components-page/oauth-callback.js +3 -18
  22. package/dist/components-page/oauth-callback.js.map +1 -1
  23. package/dist/dev-tool/dev-tool-core.d.ts +1 -1
  24. package/dist/dev-tool/index.d.ts +1 -1
  25. package/dist/esm/components-page/oauth-callback.d.ts.map +1 -1
  26. package/dist/esm/components-page/oauth-callback.js +4 -19
  27. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  28. package/dist/esm/lib/auth.d.ts.map +1 -1
  29. package/dist/esm/lib/auth.js +1 -1
  30. package/dist/esm/lib/auth.js.map +1 -1
  31. package/dist/esm/lib/auth.test.js +2 -2
  32. package/dist/esm/lib/auth.test.js.map +1 -1
  33. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +6 -3
  34. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  35. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +4 -1
  36. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  37. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.d.ts +1 -0
  38. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.js +102 -0
  39. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.js.map +1 -0
  40. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +57 -1
  41. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  42. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +7 -4
  43. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  44. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +44 -12
  45. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  46. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  47. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-back-state.d.ts +13 -1
  48. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-back-state.d.ts.map +1 -1
  49. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-back-state.js +15 -1
  50. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-back-state.js.map +1 -1
  51. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-back-state.test.js +25 -1
  52. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-back-state.test.js.map +1 -1
  53. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -0
  54. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -1
  55. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js +67 -12
  56. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  57. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.d.ts +1 -0
  58. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js +87 -0
  59. package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js.map +1 -0
  60. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +9 -1
  61. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
  62. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  63. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts +4 -1
  64. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -1
  65. package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -1
  66. package/dist/esm/lib/hexclave-app/projects/index.js +3 -0
  67. package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -1
  68. package/dist/esm/utils/url.js +10 -2
  69. package/dist/esm/utils/url.js.map +1 -1
  70. package/dist/esm/utils/url.test.d.ts +1 -0
  71. package/dist/esm/utils/url.test.js +28 -0
  72. package/dist/esm/utils/url.test.js.map +1 -0
  73. package/dist/{hexclave-provider-B_KtSfuf.d.ts → hexclave-provider-BKxi3Vy-.d.ts} +2 -2
  74. package/dist/{hexclave-provider-B_KtSfuf.d.ts.map → hexclave-provider-BKxi3Vy-.d.ts.map} +1 -1
  75. package/dist/{hooks-nHRIrxA9.d.ts → hooks-CUe5bc3s.d.ts} +2 -2
  76. package/dist/{hooks-nHRIrxA9.d.ts.map → hooks-CUe5bc3s.d.ts.map} +1 -1
  77. package/dist/{index-Dq4xsW7_.d.ts → index-B-MazpM_.d.ts} +5 -2
  78. package/dist/{index-Dq4xsW7_.d.ts.map → index-B-MazpM_.d.ts.map} +1 -1
  79. package/dist/{index-CsExJ_pK.d.ts → index-CvB7XacB.d.ts} +2 -2
  80. package/dist/{index-CsExJ_pK.d.ts.map → index-CvB7XacB.d.ts.map} +1 -1
  81. package/dist/index.d.ts +5 -5
  82. package/dist/lib/auth.d.ts.map +1 -1
  83. package/dist/lib/auth.js +1 -1
  84. package/dist/lib/auth.js.map +1 -1
  85. package/dist/lib/auth.test.js +2 -2
  86. package/dist/lib/auth.test.js.map +1 -1
  87. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -1
  88. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +4 -1
  89. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  90. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.d.ts +1 -0
  91. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.js +101 -0
  92. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.js.map +1 -0
  93. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +57 -1
  94. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  95. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -1
  96. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +43 -11
  97. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  98. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  99. package/dist/lib/hexclave-app/apps/implementations/index.d.ts +1 -1
  100. package/dist/lib/hexclave-app/apps/implementations/redirect-back-state.d.ts +13 -1
  101. package/dist/lib/hexclave-app/apps/implementations/redirect-back-state.d.ts.map +1 -1
  102. package/dist/lib/hexclave-app/apps/implementations/redirect-back-state.js +15 -0
  103. package/dist/lib/hexclave-app/apps/implementations/redirect-back-state.js.map +1 -1
  104. package/dist/lib/hexclave-app/apps/implementations/redirect-back-state.test.js +24 -0
  105. package/dist/lib/hexclave-app/apps/implementations/redirect-back-state.test.js.map +1 -1
  106. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts +1 -1
  107. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js +67 -12
  108. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -1
  109. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.d.ts +1 -0
  110. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js +86 -0
  111. package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.test.js.map +1 -0
  112. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.d.ts +1 -1
  113. package/dist/lib/hexclave-app/apps/index.d.ts +1 -1
  114. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -1
  115. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +1 -1
  116. package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  117. package/dist/lib/hexclave-app/apps/interfaces/server-app.d.ts +1 -1
  118. package/dist/lib/hexclave-app/index.d.ts +2 -2
  119. package/dist/lib/hexclave-app/project-configs/index.d.ts +1 -1
  120. package/dist/lib/hexclave-app/projects/index.d.ts +1 -1
  121. package/dist/lib/hexclave-app/projects/index.js +3 -0
  122. package/dist/lib/hexclave-app/projects/index.js.map +1 -1
  123. package/dist/lib/hexclave-app/teams/index.d.ts +1 -1
  124. package/dist/lib/hexclave-app/users/index.d.ts +1 -1
  125. package/dist/lib/hooks.d.ts +1 -1
  126. package/dist/oauth-callback-tCVTRbF2.d.ts.map +1 -1
  127. package/dist/providers/hexclave-context.d.ts +1 -1
  128. package/dist/providers/hexclave-provider-client.d.ts +1 -1
  129. package/dist/providers/hexclave-provider.d.ts +1 -1
  130. package/dist/pushed-config-error-overlay/index.d.ts +1 -1
  131. package/dist/{redirect-page-urls-NUHUchgR.d.ts → redirect-page-urls-BEWG0AtP.d.ts} +2 -1
  132. package/dist/redirect-page-urls-BEWG0AtP.d.ts.map +1 -0
  133. package/dist/utils/url.js +10 -2
  134. package/dist/utils/url.js.map +1 -1
  135. package/dist/utils/url.test.d.ts +1 -0
  136. package/dist/utils/url.test.js +27 -0
  137. package/dist/utils/url.test.js.map +1 -0
  138. package/package.json +4 -4
  139. package/src/components-page/oauth-callback.tsx +0 -16
  140. package/src/lib/auth.test.ts +2 -2
  141. package/src/lib/auth.ts +3 -1
  142. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +4 -1
  143. package/src/lib/hexclave-app/apps/implementations/client-app-impl.automatic-side-effects.test.ts +126 -0
  144. package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +75 -0
  145. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +73 -16
  146. package/src/lib/hexclave-app/apps/implementations/redirect-back-state.test.ts +29 -1
  147. package/src/lib/hexclave-app/apps/implementations/redirect-back-state.ts +17 -0
  148. package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.test.ts +119 -0
  149. package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts +104 -12
  150. package/src/lib/hexclave-app/apps/interfaces/client-app.ts +12 -2
  151. package/src/lib/hexclave-app/project-configs/index.ts +4 -1
  152. package/src/lib/hexclave-app/projects/index.ts +3 -0
  153. package/src/utils/url.test.ts +54 -0
  154. package/src/utils/url.ts +12 -3
  155. package/dist/admin-app-impl-DLqm4Zqy.d.ts.map +0 -1
  156. package/dist/redirect-page-urls-NUHUchgR.d.ts.map +0 -1
@@ -16,6 +16,7 @@ import { hexclaveAppInternalsSymbol } from "../../common.js";
16
16
  import { adminProjectCreateOptionsToCrud } from "../../projects/index.js";
17
17
  import { InternalSession } from "@hexclave/shared/dist/sessions";
18
18
  import { Store, storeLock } from "@hexclave/shared/dist/utils/stores";
19
+ import { crossDomainAuthQueryParams, getCrossDomainHandoffParamsFromCurrentUrl, planRedirectToHandler } from "./redirect-page-urls.js";
19
20
  import { scrambleDuringCompileTime } from "@hexclave/shared/dist/utils/compile-time";
20
21
  import { parseJson } from "@hexclave/shared/dist/utils/json";
21
22
  import { DependenciesMap } from "@hexclave/shared/dist/utils/maps";
@@ -31,12 +32,11 @@ import { apiKeyCreationOptionsToCrud } from "../../api-keys/index.js";
31
32
  import { contactChannelCreateOptionsToCrud, contactChannelUpdateOptionsToCrud } from "../../contact-channels/index.js";
32
33
  import { teamCreateOptionsToCrud, teamUpdateOptionsToCrud } from "../../teams/index.js";
33
34
  import { buildCliAuthConfirmUrl, getHostedHandlerUrl, isHostedHandlerUrlForProject, resolveHandlerUrls } from "../../url-targets.js";
34
- import { augmentUrlWithPersistedRedirectBackState, saveRedirectBackStateFromUrl } from "./redirect-back-state.js";
35
+ import { augmentUrlWithPersistedRedirectBackState, getRawAfterAuthReturnTo, saveRedirectBackStateFromUrl } from "./redirect-back-state.js";
35
36
  import { recordRedirectAndThrowIfLoopDetected } from "./redirect-loop-breaker.js";
36
37
  import { scopePasskeyAuthenticationToHostname, scopePasskeyRegistrationToHostname } from "../../passkey-rp-id.js";
37
38
  import { userUpdateOptionsToCrud, withUserDestructureGuard } from "../../users/index.js";
38
39
  import { EventTracker } from "./event-tracker.js";
39
- import { crossDomainAuthQueryParams, getCrossDomainHandoffParamsFromCurrentUrl, planRedirectToHandler } from "./redirect-page-urls.js";
40
40
  import { subscribeSessionRefresh } from "./session-refresh-subscription.js";
41
41
  import { SessionRecorder, analyticsOptionsFromJson, analyticsOptionsToJson, getSessionReplayOptions } from "./session-replay.js";
42
42
  import { mountClickmapOverlay } from "../../../../clickmap/index.js";
@@ -49,6 +49,7 @@ let isReactServer = false;
49
49
  isReactServer = sc.isReactServer;
50
50
  const NextNavigation = scrambleDuringCompileTime(NextNavigationUnscrambled);
51
51
  const prefetchedCrossDomainHandoffTtlMs = 3300 * 1e3;
52
+ const oauthAfterCallbackRedirectUrlQueryParam = "after_callback_redirect_url";
52
53
  const nestedCrossDomainAuthQueryParams = {
53
54
  refreshTokenId: "stack_nested_cross_domain_auth_refresh_token_id",
54
55
  callbackUrl: "stack_nested_cross_domain_auth_callback_url",
@@ -56,7 +57,7 @@ const nestedCrossDomainAuthQueryParams = {
56
57
  state: "state",
57
58
  codeChallenge: "code_challenge",
58
59
  codeChallengeMethod: "code_challenge_method",
59
- afterCallbackRedirectUrl: "after_callback_redirect_url"
60
+ afterCallbackRedirectUrl: oauthAfterCallbackRedirectUrlQueryParam
60
61
  };
61
62
  function getRedirectHelperInstruction(handlerName) {
62
63
  if (handlerName === "handler") return "Use a page-specific redirect helper such as app.redirectToSignIn() instead.";
@@ -420,15 +421,17 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
420
421
  this._redirectMethod = resolvedOptions.redirectMethod || "nextjs";
421
422
  this._urlOptions = resolvedOptions.urls ?? {};
422
423
  this._oauthScopesOnSignIn = resolvedOptions.oauthScopesOnSignIn ?? {};
424
+ this._analyticsOptions = resolvedOptions.analytics;
425
+ if (extraOptions?.uniqueIdentifier !== void 0) this._uniqueIdentifier = extraOptions.uniqueIdentifier;
426
+ if (resolvedOptions.automaticSideEffects === false) return;
427
+ this._initializeAutomaticSideEffects(resolvedOptions);
428
+ }
429
+ _initializeAutomaticSideEffects(resolvedOptions) {
423
430
  if (isBrowserLike() && (resolvedOptions.tokenStore === "cookie" || resolvedOptions.tokenStore === "nextjs-cookie")) {
424
431
  runAsynchronously(this._trustedParentDomainCache.getOrWait([window.location.hostname], "write-only"));
425
432
  this._ensureCrossSubdomainCookieExists();
426
433
  }
427
- if (extraOptions && extraOptions.uniqueIdentifier) {
428
- this._uniqueIdentifier = extraOptions.uniqueIdentifier;
429
- this._initUniqueIdentifier();
430
- }
431
- this._analyticsOptions = resolvedOptions.analytics;
434
+ if (this._uniqueIdentifier !== void 0) this._initUniqueIdentifier();
432
435
  const getAnalyticsSession = async () => {
433
436
  this._ensurePersistentTokenStore();
434
437
  if (await this.getPartialUser({
@@ -543,9 +546,24 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
543
546
  }
544
547
  async _redirectToOAuthCallbackError(error) {
545
548
  const errorUrl = new URL(this._getUrls().error, window.location.href);
549
+ const callbackUrl = augmentUrlWithPersistedRedirectBackState({
550
+ currentUrl: new URL(window.location.href),
551
+ projectId: this.projectId
552
+ });
546
553
  errorUrl.searchParams.set("errorCode", error.errorCode);
547
554
  errorUrl.searchParams.set("message", error.message);
548
555
  errorUrl.searchParams.set("details", JSON.stringify(error.details ?? {}));
556
+ for (const paramName of [
557
+ "after_auth_return_to",
558
+ crossDomainAuthQueryParams.state,
559
+ crossDomainAuthQueryParams.codeChallenge,
560
+ crossDomainAuthQueryParams.afterCallbackRedirectUrl
561
+ ]) {
562
+ const value = callbackUrl.searchParams.get(paramName);
563
+ if (value != null) errorUrl.searchParams.set(paramName, value);
564
+ }
565
+ const afterCallbackRedirectUrl = callbackUrl.searchParams.get(oauthAfterCallbackRedirectUrlQueryParam);
566
+ if (afterCallbackRedirectUrl != null) errorUrl.searchParams.set(oauthAfterCallbackRedirectUrlQueryParam, afterCallbackRedirectUrl);
549
567
  await this._redirectIfTrusted(errorUrl.toString(), { replace: true });
550
568
  }
551
569
  async _handleHostedOAuthCallbackDuringStartup() {
@@ -1973,7 +1991,8 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1973
1991
  projectId: forProjectId,
1974
1992
  tokenStore: null,
1975
1993
  projectOwnerSession: session,
1976
- noAutomaticPrefetch: true
1994
+ noAutomaticPrefetch: true,
1995
+ automaticSideEffects: false
1977
1996
  }));
1978
1997
  return this._ownedAdminApps.get([session, forProjectId]);
1979
1998
  }
@@ -2192,10 +2211,12 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
2192
2211
  });
2193
2212
  }
2194
2213
  async _getRedirectToHandlerUrl(handlerName, options, internalOptions) {
2195
- const rawHandlerUrl = getUrls(this._urlOptions, { projectId: this.projectId })[handlerName];
2214
+ const rawUrls = getUrls(this._urlOptions, { projectId: this.projectId });
2215
+ const rawHandlerUrl = rawUrls[handlerName];
2196
2216
  if (!rawHandlerUrl) throw new Error(`No URL for handler name ${handlerName}`);
2197
2217
  let currentUrl = isReactServer || typeof window === "undefined" ? null : new URL(window.location.href);
2198
- if (currentUrl != null && options?.noRedirectBack !== true && (handlerName === "afterSignIn" || handlerName === "afterSignUp")) currentUrl = augmentUrlWithPersistedRedirectBackState({
2218
+ const shouldRestorePersistedRedirectBackState = options?.noRedirectBack !== true && (handlerName === "afterSignIn" || handlerName === "afterSignUp") || handlerName === "forgotPassword" || handlerName === "passwordReset" || handlerName === "signIn" && options?.noRedirectBack === true;
2219
+ if (currentUrl != null && shouldRestorePersistedRedirectBackState) currentUrl = augmentUrlWithPersistedRedirectBackState({
2199
2220
  currentUrl,
2200
2221
  projectId: this.projectId
2201
2222
  });
@@ -2205,6 +2226,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
2205
2226
  noRedirectBack: options?.noRedirectBack === true,
2206
2227
  currentUrl,
2207
2228
  localOAuthCallbackUrl: this._getLocalOAuthCallbackHandlerUrl(),
2229
+ rawHomeUrl: rawUrls.home,
2208
2230
  getCrossDomainHandoffParams: async (href) => await this._getCrossDomainHandoffParamsForRedirect(href)
2209
2231
  });
2210
2232
  if (plan.type === "cross-domain-authorize") return await this._createCrossDomainAuthRedirectUrl({
@@ -2896,13 +2918,15 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
2896
2918
  return clientApp;
2897
2919
  }
2898
2920
  const { analytics, ...restJson } = omit(json, ["uniqueIdentifier"]);
2899
- return new _HexclaveClientAppImplIncomplete({
2921
+ const app = new _HexclaveClientAppImplIncomplete({
2900
2922
  ...restJson,
2901
2923
  analytics: analyticsOptionsFromJson(analytics)
2902
2924
  }, {
2903
2925
  uniqueIdentifier: json.uniqueIdentifier,
2904
2926
  checkString: providedCheckString
2905
2927
  });
2928
+ if (json.automaticSideEffects === false) app._initUniqueIdentifier();
2929
+ return app;
2906
2930
  } };
2907
2931
  }
2908
2932
  get [hexclaveAppInternalsSymbol]() {
@@ -2921,6 +2945,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
2921
2945
  redirectMethod: this._redirectMethod,
2922
2946
  extraRequestHeaders: this._options.extraRequestHeaders,
2923
2947
  devTool: this._options.devTool,
2948
+ automaticSideEffects: this._options.automaticSideEffects,
2924
2949
  analytics: analyticsOptionsToJson(this._analyticsOptions)
2925
2950
  };
2926
2951
  },
@@ -2956,6 +2981,13 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
2956
2981
  redirectToHandler: async (handlerName, options) => {
2957
2982
  await this._redirectToHandler(handlerName, options);
2958
2983
  },
2984
+ getRawAfterAuthReturnTo: () => {
2985
+ if (isReactServer || typeof window === "undefined") return null;
2986
+ return getRawAfterAuthReturnTo({
2987
+ currentUrl: new URL(window.location.href),
2988
+ projectId: this.projectId
2989
+ });
2990
+ },
2959
2991
  refreshOwnedProjects: async () => {
2960
2992
  await this._refreshOwnedProjects(await this._getSession());
2961
2993
  },