@hexclave/tanstack-start 1.0.21 → 1.0.22

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 (112) hide show
  1. package/README.md +187 -7
  2. package/dist/clickmap/clickmap-core.js +1 -1
  3. package/dist/clickmap/index.js +2 -2
  4. package/dist/components/api-key-dialogs.js +2 -2
  5. package/dist/components/credential-sign-in.js +1 -1
  6. package/dist/components/credential-sign-up.js +1 -1
  7. package/dist/components/magic-link-sign-in.js +1 -1
  8. package/dist/components/team-switcher.js +1 -1
  9. package/dist/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
  10. package/dist/components-page/account-settings/email-and-auth/emails-section.js +1 -1
  11. package/dist/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
  12. package/dist/components-page/account-settings/email-and-auth/password-section.js +1 -1
  13. package/dist/components-page/account-settings/profile-page/profile-page.js +1 -1
  14. package/dist/components-page/account-settings/teams/team-creation-page.js +1 -1
  15. package/dist/components-page/account-settings/teams/team-member-invitation-section.js +1 -1
  16. package/dist/components-page/auth-page.js +1 -1
  17. package/dist/components-page/cli-auth-confirm.js +1 -1
  18. package/dist/components-page/cli-auth-confirm.test.js +1 -1
  19. package/dist/components-page/forgot-password.js +1 -1
  20. package/dist/components-page/oauth-callback.js +15 -20
  21. package/dist/components-page/oauth-callback.js.map +1 -1
  22. package/dist/components-page/oauth-callback.test.d.ts +1 -0
  23. package/dist/components-page/oauth-callback.test.js +90 -0
  24. package/dist/components-page/oauth-callback.test.js.map +1 -0
  25. package/dist/components-page/onboarding.js +1 -1
  26. package/dist/components-page/password-reset.js +1 -1
  27. package/dist/components-page/team-creation.js +1 -1
  28. package/dist/dev-tool/dev-tool-core.js +1 -1
  29. package/dist/dev-tool/index.js +1 -1
  30. package/dist/esm/clickmap/clickmap-core.js +1 -1
  31. package/dist/esm/clickmap/index.js +2 -2
  32. package/dist/esm/components/api-key-dialogs.js +2 -2
  33. package/dist/esm/components/credential-sign-in.js +1 -1
  34. package/dist/esm/components/credential-sign-up.js +1 -1
  35. package/dist/esm/components/magic-link-sign-in.js +1 -1
  36. package/dist/esm/components/team-switcher.js +1 -1
  37. package/dist/esm/components-page/account-settings/active-sessions/active-sessions-page.js +1 -1
  38. package/dist/esm/components-page/account-settings/email-and-auth/emails-section.js +1 -1
  39. package/dist/esm/components-page/account-settings/email-and-auth/mfa-section.js +1 -1
  40. package/dist/esm/components-page/account-settings/email-and-auth/password-section.js +1 -1
  41. package/dist/esm/components-page/account-settings/profile-page/profile-page.js +1 -1
  42. package/dist/esm/components-page/account-settings/teams/team-creation-page.js +1 -1
  43. package/dist/esm/components-page/account-settings/teams/team-member-invitation-section.js +1 -1
  44. package/dist/esm/components-page/auth-page.js +1 -1
  45. package/dist/esm/components-page/cli-auth-confirm.js +1 -1
  46. package/dist/esm/components-page/cli-auth-confirm.test.js +1 -1
  47. package/dist/esm/components-page/forgot-password.js +1 -1
  48. package/dist/esm/components-page/oauth-callback.js +15 -20
  49. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  50. package/dist/esm/components-page/oauth-callback.test.d.ts +1 -0
  51. package/dist/esm/components-page/oauth-callback.test.js +89 -0
  52. package/dist/esm/components-page/oauth-callback.test.js.map +1 -0
  53. package/dist/esm/components-page/onboarding.js +1 -1
  54. package/dist/esm/components-page/password-reset.js +1 -1
  55. package/dist/esm/components-page/team-creation.js +1 -1
  56. package/dist/esm/dev-tool/dev-tool-core.js +1 -1
  57. package/dist/esm/dev-tool/index.js +1 -1
  58. package/dist/esm/lib/auth.d.ts.map +1 -1
  59. package/dist/esm/lib/auth.js +33 -12
  60. package/dist/esm/lib/auth.js.map +1 -1
  61. package/dist/esm/lib/auth.test.js +25 -10
  62. package/dist/esm/lib/auth.test.js.map +1 -1
  63. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +2 -1
  64. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  65. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js +1 -0
  66. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -1
  67. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +54 -0
  68. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  69. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +4 -1
  70. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  71. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +30 -6
  72. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  73. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +2 -2
  74. package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js +1 -1
  75. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
  76. package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js +1 -1
  77. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -0
  78. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  79. package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  80. package/dist/esm/providers/theme-provider.js +1 -1
  81. package/dist/lib/auth.d.ts.map +1 -1
  82. package/dist/lib/auth.js +32 -11
  83. package/dist/lib/auth.js.map +1 -1
  84. package/dist/lib/auth.test.js +23 -8
  85. package/dist/lib/auth.test.js.map +1 -1
  86. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts +1 -0
  87. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  88. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js +1 -0
  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.cross-domain.test.js +54 -0
  91. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  92. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +4 -1
  93. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  94. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +29 -5
  95. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  96. package/dist/lib/hexclave-app/apps/implementations/common.js +2 -2
  97. package/dist/lib/hexclave-app/apps/implementations/event-tracker.js +1 -1
  98. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +1 -1
  99. package/dist/lib/hexclave-app/apps/implementations/session-replay.js +1 -1
  100. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts +1 -0
  101. package/dist/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -1
  102. package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -1
  103. package/dist/providers/theme-provider.js +1 -1
  104. package/package.json +3 -3
  105. package/src/components-page/oauth-callback.test.tsx +109 -0
  106. package/src/components-page/oauth-callback.tsx +14 -19
  107. package/src/lib/auth.test.ts +32 -10
  108. package/src/lib/auth.ts +41 -7
  109. package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +2 -1
  110. package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +66 -0
  111. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +39 -3
  112. package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +1 -0
@@ -3,7 +3,7 @@
3
3
  // THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
4
4
  //===========================================
5
5
  import { WebAuthnError, startAuthentication, startRegistration } from "@simplewebauthn/browser";
6
- import { KnownErrors, HexclaveClientInterface } from "@hexclave/shared";
6
+ import { KnownError, KnownErrors, HexclaveClientInterface } from "@hexclave/shared";
7
7
  import type { RequestListener } from "@hexclave/shared/dist/interface/client-interface";
8
8
  import { ContactChannelsCrud } from "@hexclave/shared/dist/interface/crud/contact-channels";
9
9
  import { CurrentUserCrud } from "@hexclave/shared/dist/interface/crud/current-user";
@@ -715,11 +715,11 @@ export class _HexclaveClientAppImplIncomplete<HasTokenStore extends boolean, Pro
715
715
  if (
716
716
  isBrowserLike()
717
717
  && (this._isOAuthCallbackUrlHosted() || this._currentUrlLooksLikeNestedCrossDomainOAuthCallback())
718
- && this._currentUrlLooksLikeHexclaveOAuthCallback()
718
+ && (this._currentUrlLooksLikeHexclaveOAuthCallback() || this._currentUrlLooksLikeOAuthCallbackError())
719
719
  ) {
720
720
  this._trackPendingAuthResolution(async () => {
721
721
  if (isBrowserLike()) {
722
- await this.callOAuthCallback({ dontWarnAboutMissingQueryParams: true });
722
+ await this._handleHostedOAuthCallbackDuringStartup();
723
723
  }
724
724
  });
725
725
  }
@@ -819,6 +819,22 @@ export class _HexclaveClientAppImplIncomplete<HasTokenStore extends boolean, Pro
819
819
  currentUrl.searchParams.has("code") && currentUrl.searchParams.has("state")
820
820
  ) || (
821
821
  currentUrl.searchParams.has("errorCode") && currentUrl.searchParams.has("message")
822
+ ) || (
823
+ this._currentUrlLooksLikeOAuthCallbackError()
824
+ );
825
+ }
826
+
827
+ protected _currentUrlLooksLikeOAuthCallbackError(): boolean {
828
+ if (typeof window === "undefined") {
829
+ return false;
830
+ }
831
+ const currentUrl = new URL(window.location.href);
832
+ if (currentUrl.searchParams.has("errorCode") && currentUrl.searchParams.has("message")) {
833
+ return true;
834
+ }
835
+ return (
836
+ (currentUrl.searchParams.has("error") || currentUrl.searchParams.has("error_description"))
837
+ && !(currentUrl.searchParams.has("code") && currentUrl.searchParams.has("state"))
822
838
  );
823
839
  }
824
840
 
@@ -860,6 +876,26 @@ export class _HexclaveClientAppImplIncomplete<HasTokenStore extends boolean, Pro
860
876
  return currentUrl.toString();
861
877
  }
862
878
 
879
+ protected async _redirectToOAuthCallbackError(error: KnownError): Promise<void> {
880
+ const errorUrl = new URL(this._getUrls().error, window.location.href);
881
+ errorUrl.searchParams.set("errorCode", error.errorCode);
882
+ errorUrl.searchParams.set("message", error.message);
883
+ errorUrl.searchParams.set("details", JSON.stringify(error.details ?? {}));
884
+ await this._redirectIfTrusted(errorUrl.toString(), { replace: true });
885
+ }
886
+
887
+ protected async _handleHostedOAuthCallbackDuringStartup(): Promise<void> {
888
+ try {
889
+ await this.callOAuthCallback({ dontWarnAboutMissingQueryParams: true });
890
+ } catch (error) {
891
+ if (KnownError.isKnownError(error)) {
892
+ await this._redirectToOAuthCallbackError(error);
893
+ return;
894
+ }
895
+ throw error;
896
+ }
897
+ }
898
+
863
899
  protected async _fetchCurrentRefreshTokenIdIfSignedIn(options?: {
864
900
  awaitPendingAuthResolutions?: boolean,
865
901
  overrideTokenStoreInit?: TokenStoreInit,
@@ -20,6 +20,7 @@ import { StackServerApp, StackServerAppConstructorOptions } from "./server-app";
20
20
  export type EmailOutboxListOptions = {
21
21
  status?: string,
22
22
  simpleStatus?: string,
23
+ userId?: string,
23
24
  limit?: number,
24
25
  cursor?: string,
25
26
  };