@hexclave/js 1.0.2 → 1.0.5
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/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/dev-tool/dev-tool-core.js +11 -11
- package/dist/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/dev-tool/dev-tool-styles.d.ts +1 -1
- package/dist/dev-tool/dev-tool-styles.js +371 -371
- package/dist/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.js.map +1 -1
- package/dist/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
- package/dist/dev-tool/index.d.ts +4 -4
- package/dist/dev-tool/index.js +4 -4
- package/dist/dev-tool/index.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-core.d.ts +1 -1
- package/dist/esm/dev-tool/dev-tool-core.js +10 -10
- package/dist/esm/dev-tool/dev-tool-core.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.d.ts +1 -1
- package/dist/esm/dev-tool/dev-tool-styles.js +371 -371
- package/dist/esm/dev-tool/dev-tool-styles.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.js.map +1 -1
- package/dist/esm/dev-tool/dev-tool-trigger-position.test.js.map +1 -1
- package/dist/esm/dev-tool/index.d.ts +4 -4
- package/dist/esm/dev-tool/index.js +4 -4
- package/dist/esm/dev-tool/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/integrations/convex/component/convex.config.js.map +1 -1
- package/dist/esm/integrations/convex.js +1 -1
- package/dist/esm/integrations/convex.js.map +1 -1
- package/dist/esm/lib/auth.js.map +1 -1
- package/dist/esm/lib/auth.test.js.map +1 -1
- package/dist/esm/lib/cookie.js.map +1 -1
- package/dist/esm/lib/env.js.map +1 -1
- package/dist/esm/lib/{stack-app → hexclave-app}/api-keys/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/api-keys/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/api-keys/index.js +1 -1
- package/dist/esm/lib/hexclave-app/api-keys/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.d.ts +6 -6
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.js +7 -7
- package/dist/esm/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.cross-domain.test.js +2 -2
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.d.ts +13 -13
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.js +23 -30
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/apps/implementations/common.d.ts +3 -3
- package/dist/esm/lib/hexclave-app/apps/implementations/common.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/common.js +6 -6
- package/dist/esm/lib/hexclave-app/apps/implementations/common.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts +9 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.js +27 -0
- package/dist/esm/lib/hexclave-app/apps/implementations/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.d.ts +4 -4
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.js +5 -5
- package/dist/esm/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/apps/implementations/session-refresh-subscription.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.js +1 -1
- package/dist/esm/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.js +3 -3
- package/dist/esm/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.d.ts +4 -4
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.js +3 -3
- package/dist/esm/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.js +3 -3
- package/dist/esm/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/common.d.ts +7 -7
- package/dist/esm/lib/hexclave-app/common.d.ts.map +1 -0
- package/dist/esm/lib/hexclave-app/common.js +7 -0
- package/dist/esm/lib/hexclave-app/common.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/connected-accounts/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/connected-accounts/index.d.ts.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/contact-channels/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/contact-channels/index.js +1 -1
- package/dist/esm/lib/hexclave-app/contact-channels/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/customers/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/customers/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/data-vault/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/data-vault/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/email/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/email/index.d.ts.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/email-templates/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/email-templates/index.js +1 -1
- package/dist/esm/lib/hexclave-app/email-templates/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/index.d.ts +2 -2
- package/dist/esm/lib/{stack-app → hexclave-app}/index.js +2 -2
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/internal-api-keys/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/internal-api-keys/index.js +1 -1
- package/dist/esm/lib/hexclave-app/internal-api-keys/index.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/notification-categories/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/notification-categories/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/permissions/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/permissions/index.js +1 -1
- package/dist/esm/lib/hexclave-app/permissions/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/project-configs/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/project-configs/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/projects/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/projects/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/projects/index.js +1 -1
- package/dist/esm/lib/hexclave-app/projects/index.js.map +1 -0
- package/dist/{lib/stack-app → esm/lib/hexclave-app}/session-replays/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/session-replays/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/teams/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/teams/index.js +1 -1
- package/dist/esm/lib/hexclave-app/teams/index.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.js +2 -2
- package/dist/esm/lib/hexclave-app/url-targets.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.test.js +1 -1
- package/dist/esm/lib/hexclave-app/url-targets.test.js.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/users/index.d.ts +1 -1
- package/dist/esm/lib/hexclave-app/users/index.d.ts.map +1 -0
- package/dist/esm/lib/{stack-app → hexclave-app}/users/index.js +1 -1
- package/dist/esm/lib/hexclave-app/users/index.js.map +1 -0
- package/dist/esm/utils/url.js.map +1 -1
- package/dist/index.d.ts +15 -15
- package/dist/index.js +3 -3
- package/dist/integrations/convex/component/convex.config.js.map +1 -1
- package/dist/integrations/convex.js +2 -2
- package/dist/integrations/convex.js.map +1 -1
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/auth.test.js.map +1 -1
- package/dist/lib/cookie.js.map +1 -1
- package/dist/lib/env.js.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/api-keys/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/api-keys/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/api-keys/index.js +1 -1
- package/dist/lib/hexclave-app/api-keys/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.d.ts +6 -6
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.d.ts.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/admin-app-impl.js +5 -5
- package/dist/lib/hexclave-app/apps/implementations/admin-app-impl.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.cross-domain.test.js +2 -2
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.d.ts +13 -13
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.d.ts.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.js +22 -29
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/common.d.ts +3 -3
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/common.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/common.js +5 -5
- package/dist/lib/hexclave-app/apps/implementations/common.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/event-tracker.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/event-tracker.test.js.map +1 -0
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts +9 -0
- package/dist/lib/hexclave-app/apps/implementations/index.d.ts.map +1 -0
- package/dist/lib/hexclave-app/apps/implementations/index.js +31 -0
- package/dist/lib/hexclave-app/apps/implementations/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/redirect-page-urls.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/redirect-page-urls.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/redirect-page-urls.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.d.ts +4 -4
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/server-app-impl.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/server-app-impl.js +4 -4
- package/dist/lib/hexclave-app/apps/implementations/server-app-impl.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-refresh-subscription.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-refresh-subscription.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/implementations/session-replay.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.js +1 -1
- package/dist/lib/hexclave-app/apps/implementations/session-replay.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/interfaces/admin-app.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/admin-app.js +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/admin-app.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.d.ts +4 -4
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/interfaces/client-app.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/client-app.js +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/client-app.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/apps/interfaces/server-app.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/apps/interfaces/server-app.js +2 -2
- package/dist/lib/hexclave-app/apps/interfaces/server-app.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/common.d.ts +7 -7
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/common.d.ts.map +1 -1
- package/dist/lib/hexclave-app/common.js +9 -0
- package/dist/lib/hexclave-app/common.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/connected-accounts/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/connected-accounts/index.d.ts.map +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/contact-channels/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/contact-channels/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/contact-channels/index.js +1 -1
- package/dist/lib/hexclave-app/contact-channels/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/customers/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/customers/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/data-vault/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/data-vault/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/email/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/email/index.d.ts.map +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/email-templates/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/email-templates/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/email-templates/index.js +1 -1
- package/dist/lib/hexclave-app/email-templates/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/index.d.ts +2 -2
- package/dist/lib/{stack-app → hexclave-app}/index.js +2 -2
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/internal-api-keys/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/internal-api-keys/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/internal-api-keys/index.js +1 -1
- package/dist/lib/hexclave-app/internal-api-keys/index.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/notification-categories/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/notification-categories/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/permissions/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/permissions/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/permissions/index.js +1 -1
- package/dist/lib/hexclave-app/permissions/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/project-configs/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/project-configs/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/projects/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/projects/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/projects/index.js +1 -1
- package/dist/lib/hexclave-app/projects/index.js.map +1 -0
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/session-replays/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/session-replays/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/teams/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/teams/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/teams/index.js +1 -1
- package/dist/lib/hexclave-app/teams/index.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/url-targets.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/url-targets.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/url-targets.js +2 -2
- package/dist/lib/hexclave-app/url-targets.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/url-targets.test.js +1 -1
- package/dist/lib/hexclave-app/url-targets.test.js.map +1 -0
- package/dist/lib/{stack-app → hexclave-app}/users/index.d.ts +1 -1
- package/dist/{esm/lib/stack-app → lib/hexclave-app}/users/index.d.ts.map +1 -1
- package/dist/lib/{stack-app → hexclave-app}/users/index.js +1 -1
- package/dist/lib/hexclave-app/users/index.js.map +1 -0
- package/dist/utils/url.js.map +1 -1
- package/package.json +4 -3
- package/src/dev-tool/dev-tool-core.ts +2460 -0
- package/src/dev-tool/dev-tool-styles.ts +2758 -0
- package/src/dev-tool/dev-tool-trigger-position.test.ts +113 -0
- package/src/dev-tool/dev-tool-trigger-position.ts +109 -0
- package/src/dev-tool/index.ts +149 -0
- package/src/index.ts +12 -0
- package/src/integrations/convex/component/README.md +74 -0
- package/src/integrations/convex/component/convex.config.ts +9 -0
- package/src/integrations/convex.ts +28 -0
- package/src/lib/auth.test.ts +67 -0
- package/src/lib/auth.ts +175 -0
- package/src/lib/cookie.ts +327 -0
- package/src/lib/env.ts +93 -0
- package/src/lib/hexclave-app/api-keys/index.ts +73 -0
- package/src/lib/hexclave-app/apps/implementations/admin-app-impl.ts +1159 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.cross-domain.test.ts +141 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.oauth-prefetch.test.ts +36 -0
- package/src/lib/hexclave-app/apps/implementations/client-app-impl.ts +3525 -0
- package/src/lib/hexclave-app/apps/implementations/common.ts +190 -0
- package/src/lib/hexclave-app/apps/implementations/event-tracker.test.ts +105 -0
- package/src/lib/hexclave-app/apps/implementations/event-tracker.ts +306 -0
- package/src/lib/hexclave-app/apps/implementations/index.ts +35 -0
- package/src/lib/hexclave-app/apps/implementations/redirect-page-urls.ts +342 -0
- package/src/lib/hexclave-app/apps/implementations/server-app-impl.ts +1322 -0
- package/src/lib/hexclave-app/apps/implementations/session-refresh-subscription.test.ts +106 -0
- package/src/lib/hexclave-app/apps/implementations/session-refresh-subscription.ts +52 -0
- package/src/lib/hexclave-app/apps/implementations/session-replay.test.ts +33 -0
- package/src/lib/hexclave-app/apps/implementations/session-replay.ts +356 -0
- package/src/lib/hexclave-app/apps/index.ts +40 -0
- package/src/lib/hexclave-app/apps/interfaces/admin-app.ts +189 -0
- package/src/lib/hexclave-app/apps/interfaces/client-app.ts +172 -0
- package/src/lib/hexclave-app/apps/interfaces/server-app.ts +114 -0
- package/src/lib/hexclave-app/common.ts +209 -0
- package/src/lib/hexclave-app/connected-accounts/index.ts +47 -0
- package/src/lib/hexclave-app/contact-channels/index.ts +80 -0
- package/src/lib/hexclave-app/customers/index.ts +158 -0
- package/src/lib/hexclave-app/data-vault/index.ts +12 -0
- package/src/lib/hexclave-app/email/index.ts +280 -0
- package/src/lib/hexclave-app/email-templates/index.ts +24 -0
- package/src/lib/hexclave-app/index.ts +146 -0
- package/src/lib/hexclave-app/internal-api-keys/index.ts +55 -0
- package/src/lib/hexclave-app/notification-categories/index.ts +12 -0
- package/src/lib/hexclave-app/permissions/index.ts +75 -0
- package/src/lib/hexclave-app/project-configs/index.ts +103 -0
- package/src/lib/hexclave-app/projects/index.ts +234 -0
- package/src/lib/hexclave-app/session-replays/index.ts +72 -0
- package/src/lib/hexclave-app/teams/index.ts +203 -0
- package/src/lib/hexclave-app/url-targets.test.ts +253 -0
- package/src/lib/hexclave-app/url-targets.ts +395 -0
- package/src/lib/hexclave-app/users/index.ts +495 -0
- package/src/utils/url.ts +24 -0
- package/dist/esm/lib/stack-app/api-keys/index.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/admin-app-impl.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/event-tracker.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.d.ts +0 -9
- package/dist/esm/lib/stack-app/apps/implementations/index.d.ts.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/index.js +0 -27
- package/dist/esm/lib/stack-app/apps/implementations/index.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/redirect-page-urls.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/server-app-impl.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-refresh-subscription.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/implementations/session-replay.test.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/interfaces/admin-app.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/interfaces/client-app.js.map +0 -1
- package/dist/esm/lib/stack-app/apps/interfaces/server-app.js.map +0 -1
- package/dist/esm/lib/stack-app/common.js +0 -7
- package/dist/esm/lib/stack-app/common.js.map +0 -1
- package/dist/esm/lib/stack-app/contact-channels/index.js.map +0 -1
- package/dist/esm/lib/stack-app/email-templates/index.js.map +0 -1
- package/dist/esm/lib/stack-app/internal-api-keys/index.js.map +0 -1
- package/dist/esm/lib/stack-app/permissions/index.js.map +0 -1
- package/dist/esm/lib/stack-app/projects/index.js.map +0 -1
- package/dist/esm/lib/stack-app/teams/index.js.map +0 -1
- package/dist/esm/lib/stack-app/url-targets.js.map +0 -1
- package/dist/esm/lib/stack-app/url-targets.test.js.map +0 -1
- package/dist/esm/lib/stack-app/users/index.js.map +0 -1
- package/dist/lib/stack-app/api-keys/index.d.ts.map +0 -1
- package/dist/lib/stack-app/api-keys/index.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.cross-domain.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/client-app-impl.oauth-prefetch.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/common.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/common.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/event-tracker.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/index.d.ts +0 -9
- package/dist/lib/stack-app/apps/implementations/index.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/index.js +0 -31
- package/dist/lib/stack-app/apps/implementations/index.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/redirect-page-urls.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/server-app-impl.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-refresh-subscription.test.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.js.map +0 -1
- package/dist/lib/stack-app/apps/implementations/session-replay.test.js.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/admin-app.js.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/client-app.js.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts.map +0 -1
- package/dist/lib/stack-app/apps/interfaces/server-app.js.map +0 -1
- package/dist/lib/stack-app/common.d.ts.map +0 -1
- package/dist/lib/stack-app/common.js +0 -9
- package/dist/lib/stack-app/common.js.map +0 -1
- package/dist/lib/stack-app/connected-accounts/index.d.ts.map +0 -1
- package/dist/lib/stack-app/contact-channels/index.d.ts.map +0 -1
- package/dist/lib/stack-app/contact-channels/index.js.map +0 -1
- package/dist/lib/stack-app/customers/index.d.ts.map +0 -1
- package/dist/lib/stack-app/data-vault/index.d.ts.map +0 -1
- package/dist/lib/stack-app/email/index.d.ts.map +0 -1
- package/dist/lib/stack-app/email-templates/index.d.ts.map +0 -1
- package/dist/lib/stack-app/email-templates/index.js.map +0 -1
- package/dist/lib/stack-app/internal-api-keys/index.d.ts.map +0 -1
- package/dist/lib/stack-app/internal-api-keys/index.js.map +0 -1
- package/dist/lib/stack-app/notification-categories/index.d.ts.map +0 -1
- package/dist/lib/stack-app/permissions/index.d.ts.map +0 -1
- package/dist/lib/stack-app/permissions/index.js.map +0 -1
- package/dist/lib/stack-app/project-configs/index.d.ts.map +0 -1
- package/dist/lib/stack-app/projects/index.d.ts.map +0 -1
- package/dist/lib/stack-app/projects/index.js.map +0 -1
- package/dist/lib/stack-app/session-replays/index.d.ts.map +0 -1
- package/dist/lib/stack-app/teams/index.d.ts.map +0 -1
- package/dist/lib/stack-app/teams/index.js.map +0 -1
- package/dist/lib/stack-app/url-targets.d.ts.map +0 -1
- package/dist/lib/stack-app/url-targets.js.map +0 -1
- package/dist/lib/stack-app/url-targets.test.js.map +0 -1
- package/dist/lib/stack-app/users/index.d.ts.map +0 -1
- package/dist/lib/stack-app/users/index.js.map +0 -1
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.cross-domain.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/index.d.ts +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/apps/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/connected-accounts/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/customers/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/data-vault/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/email/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/notification-categories/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/project-configs/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/session-replays/index.js +0 -0
- /package/dist/esm/lib/{stack-app → hexclave-app}/url-targets.test.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.cross-domain.test.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/implementations/client-app-impl.oauth-prefetch.test.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/implementations/event-tracker.test.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-refresh-subscription.test.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/implementations/session-replay.test.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/index.d.ts +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/apps/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/connected-accounts/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/customers/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/data-vault/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/email/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/notification-categories/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/project-configs/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/session-replays/index.js +0 -0
- /package/dist/lib/{stack-app → hexclave-app}/url-targets.test.d.ts +0 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
|
|
2
|
+
//===========================================
|
|
3
|
+
// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
|
|
4
|
+
//===========================================
|
|
5
|
+
import { KnownErrors } from "@hexclave/shared";
|
|
6
|
+
import { CurrentUserCrud } from "@hexclave/shared/dist/interface/crud/current-user";
|
|
7
|
+
import { UsersCrud } from "@hexclave/shared/dist/interface/crud/users";
|
|
8
|
+
import type { RestrictedReason } from "@hexclave/shared/dist/schema-fields";
|
|
9
|
+
import { InternalSession } from "@hexclave/shared/dist/sessions";
|
|
10
|
+
import { encodeBase64 } from "@hexclave/shared/dist/utils/bytes";
|
|
11
|
+
import { GeoInfo } from "@hexclave/shared/dist/utils/geo";
|
|
12
|
+
import { ReadonlyJson } from "@hexclave/shared/dist/utils/json";
|
|
13
|
+
import { ProviderType } from "@hexclave/shared/dist/utils/oauth";
|
|
14
|
+
import { Result } from "@hexclave/shared/dist/utils/results";
|
|
15
|
+
import { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from "../api-keys";
|
|
16
|
+
import { AsyncStoreProperty, AuthLike } from "../common";
|
|
17
|
+
import { DeprecatedOAuthConnection, OAuthConnection } from "../connected-accounts";
|
|
18
|
+
import { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from "../contact-channels";
|
|
19
|
+
import { Customer } from "../customers";
|
|
20
|
+
import { NotificationCategory } from "../notification-categories";
|
|
21
|
+
import { AdminTeamPermission, TeamPermission } from "../permissions";
|
|
22
|
+
import { AdminOwnedProject, AdminProjectCreateOptions } from "../projects";
|
|
23
|
+
import { EditableTeamMemberProfile, ReceivedTeamInvitation, ServerListTeamsOptions, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from "../teams";
|
|
24
|
+
|
|
25
|
+
const userGetterErrorMessage = "Hexclave: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.";
|
|
26
|
+
|
|
27
|
+
export function withUserDestructureGuard<T extends object>(target: T): T {
|
|
28
|
+
Object.freeze(target);
|
|
29
|
+
return new Proxy(target, {
|
|
30
|
+
get(target, prop, receiver) {
|
|
31
|
+
if (prop === "user") {
|
|
32
|
+
return guardGetter();
|
|
33
|
+
}
|
|
34
|
+
return target[prop as keyof T];
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function guardGetter(): never {
|
|
40
|
+
throw new Error(userGetterErrorMessage);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type OAuthProvider = {
|
|
44
|
+
readonly id: string,
|
|
45
|
+
readonly type: string,
|
|
46
|
+
readonly userId: string,
|
|
47
|
+
readonly accountId?: string,
|
|
48
|
+
readonly email?: string,
|
|
49
|
+
readonly allowSignIn: boolean,
|
|
50
|
+
readonly allowConnectedAccounts: boolean,
|
|
51
|
+
update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,
|
|
52
|
+
InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>
|
|
53
|
+
>>,
|
|
54
|
+
delete(): Promise<void>,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export type ServerOAuthProvider = {
|
|
58
|
+
readonly id: string,
|
|
59
|
+
readonly type: string,
|
|
60
|
+
readonly userId: string,
|
|
61
|
+
readonly accountId: string,
|
|
62
|
+
readonly email?: string,
|
|
63
|
+
readonly allowSignIn: boolean,
|
|
64
|
+
readonly allowConnectedAccounts: boolean,
|
|
65
|
+
update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,
|
|
66
|
+
InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>
|
|
67
|
+
>>,
|
|
68
|
+
delete(): Promise<void>,
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Contains everything related to the current user session.
|
|
74
|
+
*/
|
|
75
|
+
export type Auth = AuthLike<{}> & {
|
|
76
|
+
readonly _internalSession: InternalSession,
|
|
77
|
+
readonly currentSession: {
|
|
78
|
+
getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* ```
|
|
84
|
+
* +----------+-------------+-------------------+
|
|
85
|
+
* | \ | !Server | Server |
|
|
86
|
+
* +----------+-------------+-------------------+
|
|
87
|
+
* | !Session | User | ServerUser |
|
|
88
|
+
* | Session | CurrentUser | CurrentServerUser |
|
|
89
|
+
* +----------+-------------+-------------------+
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* The fields on each of these types are available iff:
|
|
93
|
+
* BaseUser: true
|
|
94
|
+
* Auth: Session
|
|
95
|
+
* ServerBaseUser: Server
|
|
96
|
+
* UserExtra: Session OR Server
|
|
97
|
+
*
|
|
98
|
+
* The types are defined as follows (in the typescript manner):
|
|
99
|
+
* User = BaseUser
|
|
100
|
+
* CurrentUser = BaseUser & Auth & UserExtra
|
|
101
|
+
* ServerUser = BaseUser & ServerBaseUser & UserExtra
|
|
102
|
+
* CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra
|
|
103
|
+
**/
|
|
104
|
+
|
|
105
|
+
export type BaseUser = {
|
|
106
|
+
readonly id: string,
|
|
107
|
+
|
|
108
|
+
readonly displayName: string | null,
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The user's email address.
|
|
112
|
+
*
|
|
113
|
+
* Note: This might NOT be unique across multiple users, so always use `id` for unique identification.
|
|
114
|
+
*/
|
|
115
|
+
readonly primaryEmail: string | null,
|
|
116
|
+
readonly primaryEmailVerified: boolean,
|
|
117
|
+
readonly profileImageUrl: string | null,
|
|
118
|
+
|
|
119
|
+
readonly signedUpAt: Date,
|
|
120
|
+
|
|
121
|
+
readonly clientMetadata: any,
|
|
122
|
+
readonly clientReadOnlyMetadata: any,
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Whether the user has a password set.
|
|
126
|
+
*/
|
|
127
|
+
readonly hasPassword: boolean,
|
|
128
|
+
readonly otpAuthEnabled: boolean,
|
|
129
|
+
readonly passkeyAuthEnabled: boolean,
|
|
130
|
+
|
|
131
|
+
readonly isMultiFactorRequired: boolean,
|
|
132
|
+
readonly isAnonymous: boolean,
|
|
133
|
+
/**
|
|
134
|
+
* Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).
|
|
135
|
+
* For example, if email verification is required but the user hasn't verified their email yet.
|
|
136
|
+
*/
|
|
137
|
+
readonly isRestricted: boolean,
|
|
138
|
+
/**
|
|
139
|
+
* The reason why the user is restricted, e.g., { type: "email_not_verified" }, { type: "anonymous" }, or { type: "restricted_by_administrator" }.
|
|
140
|
+
* Null if the user is not restricted.
|
|
141
|
+
*/
|
|
142
|
+
readonly restrictedReason: RestrictedReason | null,
|
|
143
|
+
toClientJson(): CurrentUserCrud["Client"]["Read"],
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @deprecated, use contact channel's usedForAuth instead
|
|
147
|
+
*/
|
|
148
|
+
readonly emailAuthEnabled: boolean,
|
|
149
|
+
/**
|
|
150
|
+
* @deprecated
|
|
151
|
+
*/
|
|
152
|
+
readonly oauthProviders: readonly { id: string }[],
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export type UserExtra = {
|
|
156
|
+
setDisplayName(displayName: string | null): Promise<void>,
|
|
157
|
+
/** @deprecated Use contact channel's sendVerificationEmail instead */
|
|
158
|
+
sendVerificationEmail(): Promise<KnownErrors["EmailAlreadyVerified"] | void>,
|
|
159
|
+
setClientMetadata(metadata: any): Promise<void>,
|
|
160
|
+
updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors["PasswordConfirmationMismatch"] | KnownErrors["PasswordRequirementsNotMet"] | void>,
|
|
161
|
+
setPassword(options: { password: string }): Promise<KnownErrors["PasswordRequirementsNotMet"] | void>,
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* A shorthand method to update multiple fields of the user at once.
|
|
165
|
+
*/
|
|
166
|
+
update(update: UserUpdateOptions): Promise<void>,
|
|
167
|
+
|
|
168
|
+
listContactChannels(): Promise<ContactChannel[]>,
|
|
169
|
+
createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,
|
|
170
|
+
|
|
171
|
+
listNotificationCategories(): Promise<NotificationCategory[]>,
|
|
172
|
+
|
|
173
|
+
delete(): Promise<void>,
|
|
174
|
+
|
|
175
|
+
/** @deprecated Use `getOrLinkConnectedAccount` for redirect behavior, or `getConnectedAccount({ provider, providerAccountId })` for existence check. */
|
|
176
|
+
getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<DeprecatedOAuthConnection>,
|
|
177
|
+
/** @deprecated Use `getConnectedAccount({ provider, providerAccountId })` for existence check, or `getOrLinkConnectedAccount` for redirect behavior. */
|
|
178
|
+
getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<DeprecatedOAuthConnection | null>,
|
|
179
|
+
/** Get a specific connected account by provider and providerAccountId. Returns null if not found. */
|
|
180
|
+
getConnectedAccount(account: { provider: string, providerAccountId: string }): Promise<OAuthConnection | null>,
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
/** List all connected accounts for this user (only those with allowConnectedAccounts enabled). */
|
|
184
|
+
listConnectedAccounts(): Promise<OAuthConnection[]>,
|
|
185
|
+
/** React hook to list all connected accounts. */
|
|
186
|
+
/** Redirect the user to the OAuth flow to link a new connected account. Always redirects, never returns. */
|
|
187
|
+
linkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<void>,
|
|
188
|
+
/** Get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */
|
|
189
|
+
getOrLinkConnectedAccount(provider: string, options?: { scopes?: string[] }): Promise<OAuthConnection>,
|
|
190
|
+
/** React hook: get a connected account for the given provider, or redirect to link one if none exists or the token/scopes are insufficient. */
|
|
191
|
+
|
|
192
|
+
hasPermission(scope: Team, permissionId: string): Promise<boolean>,
|
|
193
|
+
hasPermission(permissionId: string): Promise<boolean>,
|
|
194
|
+
|
|
195
|
+
getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,
|
|
196
|
+
getPermission(permissionId: string): Promise<TeamPermission | null>,
|
|
197
|
+
|
|
198
|
+
listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,
|
|
199
|
+
listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
readonly selectedTeam: Team | null,
|
|
203
|
+
setSelectedTeam(teamOrId: string | Team | null): Promise<void>,
|
|
204
|
+
createTeam(data: TeamCreateOptions): Promise<Team>,
|
|
205
|
+
leaveTeam(team: Team): Promise<void>,
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Lists all pending team invitations sent to any of the current user's verified email addresses.
|
|
209
|
+
*
|
|
210
|
+
* This allows the user to discover which teams have invited them, even if they haven't
|
|
211
|
+
* joined those teams yet. Only invitations sent to verified email addresses are included.
|
|
212
|
+
*
|
|
213
|
+
* @returns An array of `ReceivedTeamInvitation` objects, each containing the team ID, team
|
|
214
|
+
* display name, recipient email, and expiration date.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```ts
|
|
218
|
+
* const invitations = await user.listTeamInvitations();
|
|
219
|
+
* for (const invitation of invitations) {
|
|
220
|
+
* console.log(`Invited to ${invitation.teamDisplayName} via ${invitation.recipientEmail}`);
|
|
221
|
+
* }
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
listTeamInvitations(): Promise<ReceivedTeamInvitation[]>,
|
|
225
|
+
/**
|
|
226
|
+
* Lists all pending team invitations sent to any of the current user's verified email addresses.
|
|
227
|
+
*
|
|
228
|
+
* React hook version of `listTeamInvitations()`. Automatically re-renders when invitations change.
|
|
229
|
+
*/
|
|
230
|
+
|
|
231
|
+
getActiveSessions(): Promise<ActiveSession[]>,
|
|
232
|
+
revokeSession(sessionId: string): Promise<void>,
|
|
233
|
+
getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,
|
|
234
|
+
|
|
235
|
+
createApiKey(options: ApiKeyCreationOptions<"user">): Promise<UserApiKeyFirstView>,
|
|
236
|
+
|
|
237
|
+
listOAuthProviders(): Promise<OAuthProvider[]>,
|
|
238
|
+
|
|
239
|
+
getOAuthProvider(id: string): Promise<OAuthProvider | null>,
|
|
240
|
+
|
|
241
|
+
registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors["PasskeyRegistrationFailed"] | KnownErrors["PasskeyWebAuthnError"]>>,
|
|
242
|
+
}
|
|
243
|
+
& AsyncStoreProperty<"apiKeys", [], UserApiKey[], true>
|
|
244
|
+
& AsyncStoreProperty<"team", [id: string], Team | null, false>
|
|
245
|
+
& AsyncStoreProperty<"teams", [], Team[], true>
|
|
246
|
+
& AsyncStoreProperty<"teamInvitations", [], ReceivedTeamInvitation[], true>
|
|
247
|
+
& AsyncStoreProperty<"permission", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>
|
|
248
|
+
& AsyncStoreProperty<"permissions", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;
|
|
249
|
+
|
|
250
|
+
export type InternalUserExtra =
|
|
251
|
+
& {
|
|
252
|
+
createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,
|
|
253
|
+
transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,
|
|
254
|
+
}
|
|
255
|
+
& AsyncStoreProperty<"ownedProjects", [], AdminOwnedProject[], true>
|
|
256
|
+
|
|
257
|
+
export type User = BaseUser;
|
|
258
|
+
|
|
259
|
+
export type CurrentUser = BaseUser & Auth & UserExtra & Customer;
|
|
260
|
+
|
|
261
|
+
export type CurrentInternalUser = CurrentUser & InternalUserExtra;
|
|
262
|
+
|
|
263
|
+
export type ProjectCurrentUser<ProjectId> = ProjectId extends "internal" ? CurrentInternalUser : CurrentUser;
|
|
264
|
+
|
|
265
|
+
export type TokenPartialUser = Pick<
|
|
266
|
+
User,
|
|
267
|
+
| "id"
|
|
268
|
+
| "displayName"
|
|
269
|
+
| "primaryEmail"
|
|
270
|
+
| "primaryEmailVerified"
|
|
271
|
+
| "isAnonymous"
|
|
272
|
+
| "isMultiFactorRequired"
|
|
273
|
+
| "isRestricted"
|
|
274
|
+
| "restrictedReason"
|
|
275
|
+
>
|
|
276
|
+
|
|
277
|
+
export type SyncedPartialUser = TokenPartialUser & Pick<
|
|
278
|
+
User,
|
|
279
|
+
| "id"
|
|
280
|
+
| "displayName"
|
|
281
|
+
| "primaryEmail"
|
|
282
|
+
| "primaryEmailVerified"
|
|
283
|
+
| "profileImageUrl"
|
|
284
|
+
| "signedUpAt"
|
|
285
|
+
| "clientMetadata"
|
|
286
|
+
| "clientReadOnlyMetadata"
|
|
287
|
+
| "isAnonymous"
|
|
288
|
+
| "hasPassword"
|
|
289
|
+
| "isRestricted"
|
|
290
|
+
| "restrictedReason"
|
|
291
|
+
>;
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
export type ActiveSession = {
|
|
295
|
+
id: string,
|
|
296
|
+
userId: string,
|
|
297
|
+
createdAt: Date,
|
|
298
|
+
isImpersonation: boolean,
|
|
299
|
+
lastUsedAt: Date | undefined,
|
|
300
|
+
isCurrentSession: boolean,
|
|
301
|
+
geoInfo?: GeoInfo,
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
export type UserUpdateOptions = {
|
|
305
|
+
displayName?: string | null,
|
|
306
|
+
clientMetadata?: ReadonlyJson,
|
|
307
|
+
selectedTeamId?: string | null,
|
|
308
|
+
totpMultiFactorSecret?: Uint8Array | null,
|
|
309
|
+
profileImageUrl?: string | null,
|
|
310
|
+
otpAuthEnabled?: boolean,
|
|
311
|
+
passkeyAuthEnabled?: boolean,
|
|
312
|
+
primaryEmail?: string | null,
|
|
313
|
+
}
|
|
314
|
+
export function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud["Client"]["Update"] {
|
|
315
|
+
return {
|
|
316
|
+
display_name: options.displayName,
|
|
317
|
+
client_metadata: options.clientMetadata,
|
|
318
|
+
selected_team_id: options.selectedTeamId,
|
|
319
|
+
totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,
|
|
320
|
+
profile_image_url: options.profileImageUrl,
|
|
321
|
+
otp_auth_enabled: options.otpAuthEnabled,
|
|
322
|
+
passkey_auth_enabled: options.passkeyAuthEnabled,
|
|
323
|
+
primary_email: options.primaryEmail,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
export type ServerBaseUser = {
|
|
329
|
+
setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,
|
|
330
|
+
|
|
331
|
+
readonly lastActiveAt: Date,
|
|
332
|
+
|
|
333
|
+
readonly serverMetadata: any,
|
|
334
|
+
setServerMetadata(metadata: any): Promise<void>,
|
|
335
|
+
setClientReadOnlyMetadata(metadata: any): Promise<void>,
|
|
336
|
+
|
|
337
|
+
/** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */
|
|
338
|
+
readonly restrictedByAdmin: boolean,
|
|
339
|
+
/** Public reason shown to the user explaining why they are restricted. Optional. */
|
|
340
|
+
readonly restrictedByAdminReason: string | null,
|
|
341
|
+
/** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */
|
|
342
|
+
readonly restrictedByAdminPrivateDetails: string | null,
|
|
343
|
+
/** Best-effort ISO country code captured at sign-up time from request geo headers. */
|
|
344
|
+
readonly countryCode: string | null,
|
|
345
|
+
/** Server-only risk scores used during sign-up risk evaluation. */
|
|
346
|
+
readonly riskScores: {
|
|
347
|
+
readonly signUp: {
|
|
348
|
+
readonly bot: number,
|
|
349
|
+
readonly freeTrialAbuse: number,
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
|
|
353
|
+
createTeam(data: Omit<ServerTeamCreateOptions, "creatorUserId">): Promise<ServerTeam>,
|
|
354
|
+
|
|
355
|
+
listContactChannels(): Promise<ServerContactChannel[]>,
|
|
356
|
+
createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,
|
|
357
|
+
|
|
358
|
+
update(user: ServerUserUpdateOptions): Promise<void>,
|
|
359
|
+
|
|
360
|
+
grantPermission(scope: Team, permissionId: string): Promise<void>,
|
|
361
|
+
grantPermission(permissionId: string): Promise<void>,
|
|
362
|
+
|
|
363
|
+
revokePermission(scope: Team, permissionId: string): Promise<void>,
|
|
364
|
+
revokePermission(permissionId: string): Promise<void>,
|
|
365
|
+
|
|
366
|
+
getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,
|
|
367
|
+
getPermission(permissionId: string): Promise<TeamPermission | null>,
|
|
368
|
+
|
|
369
|
+
hasPermission(scope: Team, permissionId: string): Promise<boolean>,
|
|
370
|
+
hasPermission(permissionId: string): Promise<boolean>,
|
|
371
|
+
|
|
372
|
+
listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,
|
|
373
|
+
listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
listOAuthProviders(): Promise<ServerOAuthProvider[]>,
|
|
377
|
+
|
|
378
|
+
getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Creates a new session object with a refresh token for this user. Can be used to impersonate them.
|
|
382
|
+
*/
|
|
383
|
+
createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{
|
|
384
|
+
getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,
|
|
385
|
+
}>,
|
|
386
|
+
}
|
|
387
|
+
& AsyncStoreProperty<"team", [id: string], ServerTeam | null, false>
|
|
388
|
+
& AsyncStoreProperty<"teams", [options?: ServerListTeamsOptions], ServerTeam[] & { nextCursor: string | null }, true>
|
|
389
|
+
& AsyncStoreProperty<"permission", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>
|
|
390
|
+
& AsyncStoreProperty<"permissions", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* A user including sensitive fields that should only be used on the server, never sent to the client
|
|
394
|
+
* (such as sensitive information and serverMetadata).
|
|
395
|
+
*/
|
|
396
|
+
export type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;
|
|
397
|
+
|
|
398
|
+
export type CurrentServerUser = Auth & ServerUser;
|
|
399
|
+
|
|
400
|
+
export type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;
|
|
401
|
+
|
|
402
|
+
export type ProjectCurrentServerUser<ProjectId> = ProjectId extends "internal" ? CurrentInternalServerUser : CurrentServerUser;
|
|
403
|
+
|
|
404
|
+
export type SyncedPartialServerUser = SyncedPartialUser & Pick<
|
|
405
|
+
ServerUser,
|
|
406
|
+
| "serverMetadata"
|
|
407
|
+
>;
|
|
408
|
+
|
|
409
|
+
export type ServerUserUpdateOptions = {
|
|
410
|
+
primaryEmail?: string | null,
|
|
411
|
+
primaryEmailVerified?: boolean,
|
|
412
|
+
primaryEmailAuthEnabled?: boolean,
|
|
413
|
+
clientReadOnlyMetadata?: ReadonlyJson,
|
|
414
|
+
serverMetadata?: ReadonlyJson,
|
|
415
|
+
password?: string,
|
|
416
|
+
restrictedByAdmin?: boolean,
|
|
417
|
+
restrictedByAdminReason?: string | null,
|
|
418
|
+
restrictedByAdminPrivateDetails?: string | null,
|
|
419
|
+
countryCode?: string | null,
|
|
420
|
+
riskScores?: {
|
|
421
|
+
signUp: {
|
|
422
|
+
bot: number,
|
|
423
|
+
freeTrialAbuse: number,
|
|
424
|
+
},
|
|
425
|
+
},
|
|
426
|
+
} & UserUpdateOptions;
|
|
427
|
+
export function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud["Server"]["Update"] {
|
|
428
|
+
// Base update options
|
|
429
|
+
const baseUpdate: CurrentUserCrud["Server"]["Update"] = {
|
|
430
|
+
display_name: options.displayName,
|
|
431
|
+
primary_email: options.primaryEmail,
|
|
432
|
+
client_metadata: options.clientMetadata,
|
|
433
|
+
client_read_only_metadata: options.clientReadOnlyMetadata,
|
|
434
|
+
server_metadata: options.serverMetadata,
|
|
435
|
+
selected_team_id: options.selectedTeamId,
|
|
436
|
+
primary_email_auth_enabled: options.primaryEmailAuthEnabled,
|
|
437
|
+
primary_email_verified: options.primaryEmailVerified,
|
|
438
|
+
password: options.password,
|
|
439
|
+
profile_image_url: options.profileImageUrl,
|
|
440
|
+
totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,
|
|
441
|
+
};
|
|
442
|
+
return {
|
|
443
|
+
...baseUpdate,
|
|
444
|
+
restricted_by_admin: options.restrictedByAdmin,
|
|
445
|
+
restricted_by_admin_reason: options.restrictedByAdminReason,
|
|
446
|
+
restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,
|
|
447
|
+
country_code: options.countryCode,
|
|
448
|
+
risk_scores: options.riskScores ? {
|
|
449
|
+
sign_up: {
|
|
450
|
+
bot: options.riskScores.signUp.bot,
|
|
451
|
+
free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,
|
|
452
|
+
},
|
|
453
|
+
} : undefined,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
export type ServerUserCreateOptions = {
|
|
459
|
+
primaryEmail?: string | null,
|
|
460
|
+
primaryEmailAuthEnabled?: boolean,
|
|
461
|
+
password?: string,
|
|
462
|
+
otpAuthEnabled?: boolean,
|
|
463
|
+
displayName?: string,
|
|
464
|
+
primaryEmailVerified?: boolean,
|
|
465
|
+
clientMetadata?: any,
|
|
466
|
+
clientReadOnlyMetadata?: any,
|
|
467
|
+
serverMetadata?: any,
|
|
468
|
+
countryCode?: string | null,
|
|
469
|
+
riskScores?: {
|
|
470
|
+
signUp: {
|
|
471
|
+
bot: number,
|
|
472
|
+
freeTrialAbuse: number,
|
|
473
|
+
},
|
|
474
|
+
},
|
|
475
|
+
}
|
|
476
|
+
export function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud["Server"]["Create"] {
|
|
477
|
+
return {
|
|
478
|
+
primary_email: options.primaryEmail,
|
|
479
|
+
password: options.password,
|
|
480
|
+
otp_auth_enabled: options.otpAuthEnabled,
|
|
481
|
+
primary_email_auth_enabled: options.primaryEmailAuthEnabled,
|
|
482
|
+
display_name: options.displayName,
|
|
483
|
+
primary_email_verified: options.primaryEmailVerified,
|
|
484
|
+
client_metadata: options.clientMetadata,
|
|
485
|
+
client_read_only_metadata: options.clientReadOnlyMetadata,
|
|
486
|
+
server_metadata: options.serverMetadata,
|
|
487
|
+
country_code: options.countryCode,
|
|
488
|
+
risk_scores: options.riskScores ? {
|
|
489
|
+
sign_up: {
|
|
490
|
+
bot: options.riskScores.signUp.bot,
|
|
491
|
+
free_trial_abuse: options.riskScores.signUp.freeTrialAbuse,
|
|
492
|
+
},
|
|
493
|
+
} : undefined,
|
|
494
|
+
};
|
|
495
|
+
}
|
package/src/utils/url.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
//===========================================
|
|
3
|
+
// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY UNLESS YOU ALSO EDIT THE CORRESPONDING FILE IN packages/template
|
|
4
|
+
//===========================================
|
|
5
|
+
import { HexclaveAssertionError } from "@hexclave/shared/dist/utils/errors";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export function constructRedirectUrl(redirectUrl: URL | string | undefined, callbackUrlName: string) {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
10
|
+
if (typeof window === 'undefined' || !window.location) {
|
|
11
|
+
throw new HexclaveAssertionError(`${callbackUrlName} option is required in a non-browser environment.`, { redirectUrl });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const retainedQueryParams = ["after_auth_return_to"];
|
|
15
|
+
const currentUrl = new URL(window.location.href);
|
|
16
|
+
const url = redirectUrl ? new URL(redirectUrl, window.location.href) : new URL(window.location.href);
|
|
17
|
+
for (const param of retainedQueryParams) {
|
|
18
|
+
if (currentUrl.searchParams.has(param)) {
|
|
19
|
+
url.searchParams.set(param, currentUrl.searchParams.get(param)!);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
url.hash = "";
|
|
23
|
+
return url.toString();
|
|
24
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/lib/stack-app/api-keys/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { TeamApiKeysCrud, UserApiKeysCrud, teamApiKeysCreateInputSchema, userApiKeysCreateInputSchema } from \"@hexclave/shared/dist/interface/crud/project-api-keys\";\nimport { filterUndefined } from \"@hexclave/shared/dist/utils/objects\";\nimport { IfAndOnlyIf, PrettifyType } from \"@hexclave/shared/dist/utils/types\";\nimport type * as yup from \"yup\";\n\nexport type ApiKeyType = \"user\" | \"team\";\n\nexport type ApiKey<Type extends ApiKeyType = ApiKeyType, IsFirstView extends boolean = false> =\n & {\n id: string,\n description: string,\n expiresAt?: Date,\n manuallyRevokedAt?: Date | null,\n createdAt: Date,\n value: IfAndOnlyIf<IsFirstView, true, string, { lastFour: string }>,\n update(options: ApiKeyUpdateOptions<Type>): Promise<void>,\n revoke: () => Promise<void>,\n isValid: () => boolean,\n whyInvalid: () => \"manually-revoked\" | \"expired\" | null,\n }\n & (\n | (\"user\" extends Type ? { type: \"user\", userId: string } : never)\n | (\"team\" extends Type ? { type: \"team\", teamId: string } : never)\n );\n\nexport type UserApiKeyFirstView = PrettifyType<ApiKey<\"user\", true>>;\nexport type UserApiKey = PrettifyType<ApiKey<\"user\", false>>;\n\nexport type TeamApiKeyFirstView = PrettifyType<ApiKey<\"team\", true>>;\nexport type TeamApiKey = PrettifyType<ApiKey<\"team\", false>>;\n\nexport type ApiKeyCreationOptions<Type extends ApiKeyType = ApiKeyType> =\n & {\n description: string,\n expiresAt: Date | null,\n /**\n * Whether the API key should be considered public. A public API key will not be detected by the secret scanner, which\n * automatically revokes API keys when it detects that they may have been exposed to the public.\n */\n isPublic?: boolean,\n };\nexport function apiKeyCreationOptionsToCrud(type: \"user\", userId: string, options: ApiKeyCreationOptions<\"user\">): Promise<yup.InferType<typeof userApiKeysCreateInputSchema>>;\nexport function apiKeyCreationOptionsToCrud(type: \"team\", teamId: string, options: ApiKeyCreationOptions<\"team\">): Promise<yup.InferType<typeof teamApiKeysCreateInputSchema>>;\nexport function apiKeyCreationOptionsToCrud(type: ApiKeyType, userIdOrTeamId: string, options: ApiKeyCreationOptions): Promise<yup.InferType<typeof userApiKeysCreateInputSchema> | yup.InferType<typeof teamApiKeysCreateInputSchema>>;\nexport async function apiKeyCreationOptionsToCrud(type: ApiKeyType, userIdOrTeamId: string, options: ApiKeyCreationOptions): Promise<yup.InferType<typeof userApiKeysCreateInputSchema> | yup.InferType<typeof teamApiKeysCreateInputSchema>> {\n return {\n description: options.description,\n expires_at_millis: options.expiresAt == null ? options.expiresAt : options.expiresAt.getTime(),\n is_public: options.isPublic,\n ...(type === \"user\" ? { user_id: userIdOrTeamId } : { team_id: userIdOrTeamId }),\n };\n}\n\n\nexport type ApiKeyUpdateOptions<Type extends ApiKeyType = ApiKeyType> = {\n description?: string,\n expiresAt?: Date | null,\n revoked?: boolean,\n};\nexport function apiKeyUpdateOptionsToCrud(type: \"user\", options: ApiKeyUpdateOptions<\"user\">): Promise<UserApiKeysCrud[\"Client\"][\"Update\"]>;\nexport function apiKeyUpdateOptionsToCrud(type: \"team\", options: ApiKeyUpdateOptions<\"team\">): Promise<TeamApiKeysCrud[\"Client\"][\"Update\"]>;\nexport function apiKeyUpdateOptionsToCrud(type: ApiKeyType, options: ApiKeyUpdateOptions): Promise<UserApiKeysCrud[\"Client\"][\"Update\"] | TeamApiKeysCrud[\"Client\"][\"Update\"]>;\nexport async function apiKeyUpdateOptionsToCrud(type: ApiKeyType, options: ApiKeyUpdateOptions): Promise<UserApiKeysCrud[\"Client\"][\"Update\"] | TeamApiKeysCrud[\"Client\"][\"Update\"]> {\n return filterUndefined({\n description: options.description,\n expires_at_millis: options.expiresAt == null ? options.expiresAt : options.expiresAt.getTime(),\n revoked: options.revoked,\n });\n}\n"],"mappings":";;;AAgDA,eAAsB,4BAA4B,MAAkB,gBAAwB,SAAkJ;AAC5O,QAAO;EACL,aAAa,QAAQ;EACrB,mBAAmB,QAAQ,aAAa,OAAO,QAAQ,YAAY,QAAQ,UAAU,SAAS;EAC9F,WAAW,QAAQ;EACnB,GAAI,SAAS,SAAS,EAAE,SAAS,gBAAgB,GAAG,EAAE,SAAS,gBAAgB;EAChF;;AAYH,eAAsB,0BAA0B,MAAkB,SAAkH;AAClL,QAAO,gBAAgB;EACrB,aAAa,QAAQ;EACrB,mBAAmB,QAAQ,aAAa,OAAO,QAAQ,YAAY,QAAQ,UAAU,SAAS;EAC9F,SAAS,QAAQ;EAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-app-impl.d.ts","names":[],"sources":["../../../../../../src/lib/stack-app/apps/implementations/admin-app-impl.ts"],"mappings":"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"}
|