@hexclave/react 1.0.18 → 1.0.20

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 (73) hide show
  1. package/dist/components/credential-sign-in.js +5 -1
  2. package/dist/components/credential-sign-in.js.map +1 -1
  3. package/dist/components/team-switcher.js +3 -5
  4. package/dist/components/team-switcher.js.map +1 -1
  5. package/dist/components-page/auth-page.js +2 -2
  6. package/dist/components-page/auth-page.js.map +1 -1
  7. package/dist/components-page/forgot-password.js +5 -1
  8. package/dist/components-page/forgot-password.js.map +1 -1
  9. package/dist/components-page/oauth-callback.js +6 -1
  10. package/dist/components-page/oauth-callback.js.map +1 -1
  11. package/dist/components-page/team-creation.js +2 -3
  12. package/dist/components-page/team-creation.js.map +1 -1
  13. package/dist/esm/components/credential-sign-in.js +5 -1
  14. package/dist/esm/components/credential-sign-in.js.map +1 -1
  15. package/dist/esm/components/team-switcher.js +3 -5
  16. package/dist/esm/components/team-switcher.js.map +1 -1
  17. package/dist/esm/components-page/auth-page.js +2 -2
  18. package/dist/esm/components-page/auth-page.js.map +1 -1
  19. package/dist/esm/components-page/forgot-password.js +5 -1
  20. package/dist/esm/components-page/forgot-password.js.map +1 -1
  21. package/dist/esm/components-page/oauth-callback.js +6 -1
  22. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  23. package/dist/esm/components-page/team-creation.js +2 -3
  24. package/dist/esm/components-page/team-creation.js.map +1 -1
  25. package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  26. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +34 -5
  27. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  28. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -0
  29. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  30. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js +24 -4
  31. package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  32. package/dist/esm/lib/hexclave-app/apps/implementations/common.js +1 -1
  33. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js +2 -2
  34. package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  35. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts +3 -2
  36. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
  37. package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  38. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts +7 -0
  39. package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -1
  40. package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -1
  41. package/dist/esm/lib/hexclave-app/projects/index.js +1 -1
  42. package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -1
  43. package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -1
  44. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js +34 -5
  45. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -1
  46. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts +1 -0
  47. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -1
  48. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js +24 -4
  49. package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -1
  50. package/dist/lib/hexclave-app/apps/implementations/common.js +1 -1
  51. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js +2 -2
  52. package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -1
  53. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts +3 -2
  54. package/dist/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -1
  55. package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -1
  56. package/dist/lib/hexclave-app/project-configs/index.d.ts +7 -0
  57. package/dist/lib/hexclave-app/project-configs/index.d.ts.map +1 -1
  58. package/dist/lib/hexclave-app/projects/index.d.ts.map +1 -1
  59. package/dist/lib/hexclave-app/projects/index.js +1 -1
  60. package/dist/lib/hexclave-app/projects/index.js.map +1 -1
  61. package/package.json +3 -3
  62. package/src/components/credential-sign-in.tsx +8 -1
  63. package/src/components/team-switcher.tsx +3 -5
  64. package/src/components-page/auth-page.tsx +2 -2
  65. package/src/components-page/forgot-password.tsx +7 -1
  66. package/src/components-page/oauth-callback.tsx +9 -1
  67. package/src/components-page/team-creation.tsx +2 -3
  68. package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +36 -0
  69. package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +43 -4
  70. package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +2 -2
  71. package/src/lib/hexclave-app/apps/interfaces/client-app.ts +3 -2
  72. package/src/lib/hexclave-app/project-configs/index.ts +8 -0
  73. package/src/lib/hexclave-app/projects/index.ts +13 -11
@@ -52,6 +52,20 @@ const nestedCrossDomainAuthQueryParams = {
52
52
  codeChallengeMethod: "code_challenge_method",
53
53
  afterCallbackRedirectUrl: "after_callback_redirect_url"
54
54
  };
55
+ function getRedirectHelperInstruction(handlerName) {
56
+ if (handlerName === "handler") return "Use a page-specific redirect helper such as app.redirectToSignIn() instead.";
57
+ return `Use app.${`redirectTo${handlerName.slice(0, 1).toUpperCase()}${handlerName.slice(1)}`}() instead.`;
58
+ }
59
+ function createUrlsForPublicAccess(options) {
60
+ const hostedUrlNames = new Set(Object.entries(options.urls).filter(([, url]) => (0, ______url_targets_js.isHostedHandlerUrlForProject)({
61
+ url,
62
+ projectId: options.projectId
63
+ })).map(([handlerName]) => handlerName));
64
+ return new Proxy(options.urls, { get(target, property, receiver) {
65
+ if (typeof property === "string" && hostedUrlNames.has(property)) throw new Error(`app.urls.${property} cannot be used when this app is configured to use hosted components. \`app.urls\` is static and does not include the runtime redirect-back, cross-domain auth, or sign-out state required by hosted components. ` + getRedirectHelperInstruction(property));
66
+ return Reflect.get(target, property, receiver);
67
+ } });
68
+ }
55
69
  const oauthCallbackResponseQueryParams = [
56
70
  "code",
57
71
  "state",
@@ -1125,7 +1139,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1125
1139
  teamId: crud.id,
1126
1140
  email: options.email,
1127
1141
  session,
1128
- callbackUrl: options.callbackUrl ?? (0, ____________utils_url_js.constructRedirectUrl)(app.urls.teamInvitation, "callbackUrl")
1142
+ callbackUrl: options.callbackUrl ?? (0, ____________utils_url_js.constructRedirectUrl)(app._getUrls().teamInvitation, "callbackUrl")
1129
1143
  });
1130
1144
  await app._teamInvitationsCache.refresh([session, crud.id]);
1131
1145
  },
@@ -1175,7 +1189,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1175
1189
  isPrimary: crud.is_primary,
1176
1190
  usedForAuth: crud.used_for_auth,
1177
1191
  async sendVerificationEmail(options) {
1178
- await app._interface.sendCurrentUserContactChannelVerificationEmail(crud.id, options?.callbackUrl || (0, ____________utils_url_js.constructRedirectUrl)(app.urls.emailVerification, "callbackUrl"), session);
1192
+ await app._interface.sendCurrentUserContactChannelVerificationEmail(crud.id, options?.callbackUrl || (0, ____________utils_url_js.constructRedirectUrl)(app._getUrls().emailVerification, "callbackUrl"), session);
1179
1193
  },
1180
1194
  async update(data) {
1181
1195
  await app._interface.updateClientContactChannel(crud.id, (0, ______contact_channels_index_js.contactChannelUpdateOptionsToCrud)(data), session);
@@ -1441,7 +1455,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1441
1455
  const location = await (0, _________auth_js.getNewOAuthProviderOrScopeUrl)(app._interface, {
1442
1456
  provider,
1443
1457
  redirectUrl: app._getOAuthCallbackRedirectUri(),
1444
- errorRedirectUrl: app.urls.error,
1458
+ errorRedirectUrl: app._getUrls().error,
1445
1459
  providerScope: (0, _hexclave_shared_dist_utils_strings.mergeScopeStrings)(scopeString, (app._oauthScopesOnSignIn[provider] ?? []).join(" "))
1446
1460
  }, session);
1447
1461
  await app._redirectTo({ url: location });
@@ -1557,7 +1571,7 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1557
1571
  },
1558
1572
  async sendVerificationEmail(options) {
1559
1573
  if (!crud.primary_email) throw new _hexclave_shared_dist_utils_errors.HexclaveAssertionError("User does not have a primary email");
1560
- return await app._interface.sendVerificationEmail(crud.primary_email, options?.callbackUrl ?? (0, ____________utils_url_js.constructRedirectUrl)(app.urls.emailVerification, "callbackUrl"), session);
1574
+ return await app._interface.sendVerificationEmail(crud.primary_email, options?.callbackUrl ?? (0, ____________utils_url_js.constructRedirectUrl)(app._getUrls().emailVerification, "callbackUrl"), session);
1561
1575
  },
1562
1576
  async updatePassword(options) {
1563
1577
  const result = await app._interface.updatePassword(options, session);
@@ -1988,6 +2002,12 @@ var _HexclaveClientAppImplIncomplete = class _HexclaveClientAppImplIncomplete {
1988
2002
  });
1989
2003
  }
1990
2004
  get urls() {
2005
+ return createUrlsForPublicAccess({
2006
+ urls: this._getUrls(),
2007
+ projectId: this.projectId
2008
+ });
2009
+ }
2010
+ _getUrls() {
1991
2011
  return (0, __common_js.getUrls)(this._urlOptions, { projectId: this.projectId });
1992
2012
  }
1993
2013
  _prefetchCrossDomainHandoffParamsIfNeeded() {