@sublay/core 7.0.4 → 7.1.1

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.
@@ -0,0 +1,70 @@
1
+ import type { AppDispatch } from "../../store/types";
2
+ /**
3
+ * Platform-agnostic OAuth helpers shared by the web (`@sublay/react-js`) and
4
+ * Expo (`@sublay/expo`) `useOAuthSignIn` hooks.
5
+ *
6
+ * These helpers deliberately contain NO browser/DOM globals (`window`,
7
+ * `document`, `localStorage`) and NO React Native globals, so the same code
8
+ * path runs on every platform. Each platform owns only its own I/O: obtaining
9
+ * the redirect URL (web reads `window.location`, Expo opens a web-browser auth
10
+ * session) and any navigation/URL cleanup.
11
+ */
12
+ export declare const OAUTH_BASE_URL = "https://api.sublay.io/v7";
13
+ /**
14
+ * Server-call head: POST to `/{projectId}/oauth/{authorize|link}` and return the
15
+ * provider `authorizationUrl`.
16
+ *
17
+ * - `authorize` is unauthenticated; `link` requires the caller's access token,
18
+ * passed via `accessToken` (sent as a Bearer header only when present).
19
+ * - Throws an `Error` carrying the server's `error` body on a non-ok response.
20
+ */
21
+ export declare function requestOAuthAuthorizationUrl({ projectId, endpoint, provider, redirectAfterAuth, accessToken, baseUrl, }: {
22
+ projectId: string;
23
+ endpoint: "authorize" | "link";
24
+ provider: string;
25
+ redirectAfterAuth: string;
26
+ /** Required for `link`, omitted for `authorize`. */
27
+ accessToken?: string | null;
28
+ baseUrl?: string;
29
+ }): Promise<string>;
30
+ export interface OAuthRedirectParams {
31
+ accessToken: string | null;
32
+ refreshToken: string | null;
33
+ error: string | null;
34
+ errorDescription: string | null;
35
+ }
36
+ /**
37
+ * Tolerantly parse a redirect URL string into OAuth params.
38
+ *
39
+ * The Sublay OAuth callback carries tokens in the URL **fragment**
40
+ * (`#accessToken=...&refreshToken=...`) and errors in the **query**
41
+ * (`?error=...&error_description=...`). This splits the string by hand rather
42
+ * than relying on `new URL().hash`, whose fragment handling is unreliable under
43
+ * React Native's URL polyfill — exactly where the tokens live.
44
+ */
45
+ export declare function parseOAuthRedirectUrl(url: string): OAuthRedirectParams;
46
+ export interface HandleOAuthRedirectResult {
47
+ /** True when tokens were found and dispatched. */
48
+ success: boolean;
49
+ /** A human-readable error message when the redirect carried an `?error=`. */
50
+ error: string | null;
51
+ }
52
+ /**
53
+ * Token-handling tail: given a redirect URL **string**, extract the tokens /
54
+ * error and, on success, perform the same Redux dispatches the web hook has
55
+ * always done (`setTokens` → `setInitialized` → `requestNewAccessTokenThunk`).
56
+ *
57
+ * Pure of any I/O beyond dispatching: it does not read globals, navigate, or
58
+ * clean the URL — the caller owns that. Accepts a URL string (or pre-parsed
59
+ * `params`, e.g. from `expo-linking`) so any platform can feed it whatever it
60
+ * obtained however it likes.
61
+ *
62
+ * Returns `{ success, error }` instead of throwing so callers can drive their
63
+ * own loading/error UI state.
64
+ */
65
+ export declare function handleOAuthRedirect({ dispatch, projectId, url, params, }: {
66
+ dispatch: AppDispatch;
67
+ projectId: string | null | undefined;
68
+ url?: string;
69
+ params?: OAuthRedirectParams;
70
+ }): HandleOAuthRedirectResult;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OAUTH_BASE_URL = void 0;
4
+ exports.requestOAuthAuthorizationUrl = requestOAuthAuthorizationUrl;
5
+ exports.parseOAuthRedirectUrl = parseOAuthRedirectUrl;
6
+ exports.handleOAuthRedirect = handleOAuthRedirect;
7
+ const authSlice_1 = require("../../store/slices/authSlice");
8
+ const authThunks_1 = require("../../store/slices/authThunks");
9
+ /**
10
+ * Platform-agnostic OAuth helpers shared by the web (`@sublay/react-js`) and
11
+ * Expo (`@sublay/expo`) `useOAuthSignIn` hooks.
12
+ *
13
+ * These helpers deliberately contain NO browser/DOM globals (`window`,
14
+ * `document`, `localStorage`) and NO React Native globals, so the same code
15
+ * path runs on every platform. Each platform owns only its own I/O: obtaining
16
+ * the redirect URL (web reads `window.location`, Expo opens a web-browser auth
17
+ * session) and any navigation/URL cleanup.
18
+ */
19
+ // Single source of truth for the API base URL. Matches the web hook's prior
20
+ // hardcoded value exactly — do NOT swap in `getApiBaseUrl()`, which is
21
+ // env-aware and would diverge from the web hook's production-only behavior.
22
+ exports.OAUTH_BASE_URL = "https://api.sublay.io/v7";
23
+ /**
24
+ * Server-call head: POST to `/{projectId}/oauth/{authorize|link}` and return the
25
+ * provider `authorizationUrl`.
26
+ *
27
+ * - `authorize` is unauthenticated; `link` requires the caller's access token,
28
+ * passed via `accessToken` (sent as a Bearer header only when present).
29
+ * - Throws an `Error` carrying the server's `error` body on a non-ok response.
30
+ */
31
+ async function requestOAuthAuthorizationUrl({ projectId, endpoint, provider, redirectAfterAuth, accessToken, baseUrl = exports.OAUTH_BASE_URL, }) {
32
+ const headers = {
33
+ "Content-Type": "application/json",
34
+ };
35
+ if (accessToken) {
36
+ headers["Authorization"] = `Bearer ${accessToken}`;
37
+ }
38
+ const response = await fetch(`${baseUrl}/${projectId}/oauth/${endpoint}`, {
39
+ method: "POST",
40
+ headers,
41
+ body: JSON.stringify({ provider, redirectAfterAuth }),
42
+ });
43
+ if (!response.ok) {
44
+ const data = await response.json();
45
+ throw new Error(data.error || "Failed to initiate OAuth");
46
+ }
47
+ const data = await response.json();
48
+ return data.authorizationUrl;
49
+ }
50
+ /**
51
+ * Tolerantly parse a redirect URL string into OAuth params.
52
+ *
53
+ * The Sublay OAuth callback carries tokens in the URL **fragment**
54
+ * (`#accessToken=...&refreshToken=...`) and errors in the **query**
55
+ * (`?error=...&error_description=...`). This splits the string by hand rather
56
+ * than relying on `new URL().hash`, whose fragment handling is unreliable under
57
+ * React Native's URL polyfill — exactly where the tokens live.
58
+ */
59
+ function parseOAuthRedirectUrl(url) {
60
+ const hashIndex = url.indexOf("#");
61
+ const fragment = hashIndex >= 0 ? url.substring(hashIndex + 1) : "";
62
+ const beforeHash = hashIndex >= 0 ? url.substring(0, hashIndex) : url;
63
+ const queryIndex = beforeHash.indexOf("?");
64
+ const query = queryIndex >= 0 ? beforeHash.substring(queryIndex + 1) : "";
65
+ const fragmentParams = new URLSearchParams(fragment);
66
+ const queryParams = new URLSearchParams(query);
67
+ return {
68
+ accessToken: fragmentParams.get("accessToken"),
69
+ refreshToken: fragmentParams.get("refreshToken"),
70
+ error: queryParams.get("error"),
71
+ errorDescription: queryParams.get("error_description"),
72
+ };
73
+ }
74
+ /**
75
+ * Token-handling tail: given a redirect URL **string**, extract the tokens /
76
+ * error and, on success, perform the same Redux dispatches the web hook has
77
+ * always done (`setTokens` → `setInitialized` → `requestNewAccessTokenThunk`).
78
+ *
79
+ * Pure of any I/O beyond dispatching: it does not read globals, navigate, or
80
+ * clean the URL — the caller owns that. Accepts a URL string (or pre-parsed
81
+ * `params`, e.g. from `expo-linking`) so any platform can feed it whatever it
82
+ * obtained however it likes.
83
+ *
84
+ * Returns `{ success, error }` instead of throwing so callers can drive their
85
+ * own loading/error UI state.
86
+ */
87
+ function handleOAuthRedirect({ dispatch, projectId, url, params, }) {
88
+ const parsed = params ?? (url != null ? parseOAuthRedirectUrl(url) : null);
89
+ if (!parsed) {
90
+ return { success: false, error: null };
91
+ }
92
+ // Errors arrive in the query string. Surface them without dispatching.
93
+ if (parsed.error) {
94
+ return { success: false, error: parsed.errorDescription || parsed.error };
95
+ }
96
+ // Tokens arrive in the fragment. Only dispatch when both are present.
97
+ if (parsed.accessToken && parsed.refreshToken) {
98
+ dispatch((0, authSlice_1.setTokens)({
99
+ accessToken: parsed.accessToken,
100
+ refreshToken: parsed.refreshToken,
101
+ }));
102
+ dispatch((0, authSlice_1.setInitialized)(true));
103
+ // Fetch the user profile so `useAccountSync` can persist the account. The
104
+ // thunk reads the just-set refresh token from Redux, calls the server, and
105
+ // dispatches setUser + setUserInUserSlice on success.
106
+ if (projectId) {
107
+ dispatch((0, authThunks_1.requestNewAccessTokenThunk)({ projectId }));
108
+ }
109
+ return { success: true, error: null };
110
+ }
111
+ return { success: false, error: null };
112
+ }
113
+ //# sourceMappingURL=oauthCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthCore.js","sourceRoot":"","sources":["../../../../src/hooks/auth/oauthCore.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,19 @@ function extractExpFromJwt(jwt) {
27
27
  return 0;
28
28
  }
29
29
  }
30
+ // A JWT's `sub` claim — the user id it was minted for. Used to detect a transient token/user
31
+ // desync before we persist an account entry.
32
+ function extractSubFromJwt(jwt) {
33
+ if (!jwt)
34
+ return null;
35
+ try {
36
+ const payload = JSON.parse(base64UrlDecode(jwt.split(".")[1]));
37
+ return typeof payload.sub === "string" ? payload.sub : null;
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
30
43
  function useAccountSync(storage, projectId) {
31
44
  const dispatch = (0, hooks_1.useSublayDispatch)();
32
45
  const refreshToken = (0, hooks_1.useSublaySelector)(authSlice_1.selectRefreshToken);
@@ -68,6 +81,21 @@ function useAccountSync(storage, projectId) {
68
81
  (0, react_1.useEffect)(() => {
69
82
  if (!isReady || !refreshToken || !user?.id)
70
83
  return;
84
+ // Guard against a transient token/user desync. The accounts map keys by user.id but the entry
85
+ // stores the CURRENT refresh token, so if the two are momentarily mismatched we'd persist the
86
+ // wrong pairing — two account ids sharing one refresh token, a corrupt map that breaks switching
87
+ // and sign-out. Two flows cause this: (1) an OAuth callback sets the new tokens via setTokens
88
+ // while `user` only resolves a tick later, and (2) cross-tab sync (Phase D) swaps in another
89
+ // account's refresh token while this tab's `user` is still the previous account.
90
+ //
91
+ // The refresh token is itself a JWT whose `sub` is the id it was minted for — and it's the
92
+ // credential we're about to store — so validate ITS sub against the current user (the access
93
+ // token can be staler than the refresh token, e.g. case 2, so it isn't a reliable signal here).
94
+ // Only persist once they agree; otherwise skip and wait — the effect re-runs (deps: refreshToken,
95
+ // user) when they catch up.
96
+ const sub = extractSubFromJwt(refreshToken);
97
+ if (sub && sub !== user.id)
98
+ return;
71
99
  const summary = {
72
100
  id: user.id,
73
101
  name: user.name ?? null,
@@ -100,7 +128,11 @@ function useAccountSync(storage, projectId) {
100
128
  }, [accounts, activeAccountId, isReady]);
101
129
  // Phase D: Cross-tab sync (web only)
102
130
  (0, react_1.useEffect)(() => {
103
- if (typeof window === "undefined")
131
+ // React Native exposes a partial `window` global without the DOM event API,
132
+ // so `typeof window === "undefined"` passes there and then crashes on
133
+ // window.addEventListener. Require the listener API to actually exist.
134
+ if (typeof window === "undefined" ||
135
+ typeof window.addEventListener !== "function")
104
136
  return;
105
137
  const storageKey = `sublay-accounts:${projectId}`;
106
138
  const handleStorageEvent = (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useAccountSync.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAccountSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAccountSync.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAccountSync.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export { useSignTestingJwt, type SignTestingJwtProps } from "./hooks/crypto";
13
13
  export { useAuth, useRequestPasswordReset, useSendVerificationEmail, useVerifyEmail, type UseAuthValues, type SignUpWithEmailAndPasswordProps, type SignInWithEmailAndPasswordProps, type ChangePasswordProps, type RequestPasswordResetProps, type SendVerificationEmailProps, type VerifyEmailProps, } from "./hooks/auth";
14
14
  export { useAccountSync, useAccounts, useSwitchAccount, useAddAccount, useRemoveAccount, useSignOutAll, type UseAccountsReturn, type UseSwitchAccountReturn, type UseAddAccountReturn, type UseRemoveAccountReturn, type UseSignOutAllReturn, } from "./hooks/auth";
15
15
  export { useOAuthIdentities, type OAuthIdentity, type UseOAuthIdentitiesReturn, } from "./hooks/auth";
16
+ export { OAUTH_BASE_URL, requestOAuthAuthorizationUrl, parseOAuthRedirectUrl, handleOAuthRedirect, type OAuthRedirectParams, type HandleOAuthRedirectResult, } from "./hooks/auth/oauthCore";
16
17
  export { useSublayDispatch, useSublaySelector } from "./store/hooks";
17
18
  export { setTokens, setInitialized, selectAccessToken, } from "./store/slices/authSlice";
18
19
  export { requestNewAccessTokenThunk } from "./store/slices/authThunks";
package/dist/cjs/index.js CHANGED
@@ -36,11 +36,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.useAppNotificationsActions = exports.useAppNotifications = exports.useUserActions = exports.useUser = exports.MAX_ACCOUNTS = exports.requestNewAccessTokenThunk = exports.selectAccessToken = exports.setInitialized = exports.setTokens = exports.useSublaySelector = exports.useSublayDispatch = exports.useOAuthIdentities = exports.useSignOutAll = exports.useRemoveAccount = exports.useAddAccount = exports.useSwitchAccount = exports.useAccounts = exports.useAccountSync = exports.useVerifyEmail = exports.useSendVerificationEmail = exports.useRequestPasswordReset = exports.useAuth = exports.useSignTestingJwt = exports.useProjectData = exports.useProject = exports.sublayApi = exports.sublayMiddleware = exports.sublayApiReducer = exports.sublayReducers = exports.useMessageThreadContext = exports.useConversationContext = exports.useChatContext = exports.MessageThreadProvider = exports.ConversationProvider = exports.ChatProvider = exports.SpaceProvider = exports.CommentSectionProvider = exports.EntityProvider = exports.SublayIntegrationProvider = exports.SublayProvider = exports.reportReasons = exports.getEnvVar = exports.getApiBaseUrl = exports.isProduction = exports.isDevelopment = exports.getPublicFileUrl = exports.getUserName = exports.safeMergeStyleProps = exports.keywordHelpers = exports.handleError = void 0;
40
- exports.useDeleteRule = exports.useUpdateRule = exports.useCreateRule = exports.useUpdateDigestConfig = exports.useFetchDigestConfig = exports.useCheckMyMembership = exports.useSpaceMentions = exports.useSpacePermissions = exports.useModerateSpaceComment = exports.useModerateSpaceEntity = exports.useUnbanMember = exports.useRemoveMember = exports.useDeclineMember = exports.useApproveMember = exports.useUpdateMemberRole = exports.useFetchUserSpaces = exports.useFetchSpaceTeam = exports.useFetchSpaceMembers = exports.useLeaveSpace = exports.useJoinSpace = exports.useDeleteSpace = exports.useUpdateSpace = exports.useCreateSpace = exports.useCheckSlugAvailability = exports.useFetchManySpaces = exports.useFetchSpaceChildren = exports.useFetchSpaceBreadcrumb = exports.useFetchSpaceBySlug = exports.useFetchSpaceByShortId = exports.useFetchSpace = exports.useSpaceData = exports.useSpace = exports.useEntityListActions = exports.useEntityList = exports.useIsEntitySaved = exports.usePublishDraft = exports.useFetchDrafts = exports.useUpdateEntity = exports.useFetchManyEntitiesWrapper = exports.useFetchManyEntities = exports.useFetchEntityByShortId = exports.useFetchEntityByForeignId = exports.useFetchEntity = exports.useDeleteEntity = exports.useCreateEntity = exports.useEntityData = exports.useEntity = exports.useCollectionEntitiesWrapper = exports.useCollectionsActions = exports.useCollections = void 0;
41
- exports.useFetchConnectionsCount = exports.useRemoveConnectionByUserId = exports.useFetchConnectionStatus = exports.useFetchConnections = exports.useRemoveConnection = exports.useDeclineConnection = exports.useAcceptConnection = exports.useRequestConnection = exports.useUnfollowUserByUserId = exports.useUnfollowByFollowId = exports.useFollowUser = exports.useFollowManager = exports.useFetchFollowingCountByUserId = exports.useFetchFollowingCount = exports.useFetchFollowingByUserId = exports.useFetchFollowing = exports.useFetchFollowersCountByUserId = exports.useFetchFollowersCount = exports.useFetchFollowersByUserId = exports.useFetchFollowers = exports.useFetchFollowStatus = exports.useUserMentions = exports.useFetchUserSuggestions = exports.useCheckUsernameAvailability = exports.useFetchUserByUsername = exports.useFetchUserByForeignId = exports.useFetchUser = exports.useReactionToggle = exports.useRemoveReaction = exports.useAddReaction = exports.useFetchCommentReactionsWrapper = exports.useFetchEntityReactionsWrapper = exports.useFetchCommentReactions = exports.useFetchEntityReactions = exports.useFetchManyCommentsWrapper = exports.useEntityComments = exports.useDeleteComment = exports.useUpdateComment = exports.useReplies = exports.useFetchCommentByForeignId = exports.useFetchComment = exports.useFetchManyComments = exports.useCreateComment = exports.useCommentSectionData = exports.useCommentSection = exports.useSpaceListActions = exports.useSpaceList = exports.useReorderRules = exports.useFetchManyRules = exports.useFetchRule = void 0;
42
- exports.clearUnread = exports.incrementUnread = exports.upsertConversationPreview = exports.setConversationListCursor = exports.setConversationListHasMore = exports.setConversationListLoading = exports.setConversationList = exports.setConversationLoading = exports.setConversation = exports.useChatSocket = exports.useTypingIndicator = exports.useConversationData = exports.useReportMessage = exports.useMarkConversationAsRead = exports.useUnreadConversationCount = exports.useTotalUnreadCount = exports.useMessageThread = exports.useToggleReaction = exports.useDeleteMessage = exports.useEditMessage = exports.useSendMessage = exports.useChatMessages = exports.useConversationMembers = exports.useFetchSpaceConversation = exports.useCreateDirectConversation = exports.useDeleteConversation = exports.useUpdateConversation = exports.useFetchConversation = exports.useConversation = exports.useConversations = exports.validateSortType = exports.validateMetadataPropertyName = exports.validateSortBy = exports.AppNotification = exports.useUploadImage = exports.useUploadFile = exports.useAskContent = exports.useSearchSpaces = exports.useSearchUsers = exports.useSearchContent = exports.useGetMetadata = exports.useHandleSpaceCommentReport = exports.useHandleSpaceEntityReport = exports.useFetchModeratedReports = exports.useCreateReport = exports.useConnectionManager = exports.useFetchConnectionsCountByUserId = exports.useFetchConnectionsByUserId = exports.useFetchReceivedPendingConnections = exports.useFetchSentPendingConnections = void 0;
43
- exports.selectSocketConnected = exports.selectTypingUsers = exports.selectThreadHasMore = exports.selectThreadLoading = exports.selectThreadReplies = exports.selectNewestMessageId = exports.selectOldestMessageId = exports.selectMessagesHasMore = exports.selectMessagesLoading = exports.selectMessages = exports.selectConversationListCursor = exports.selectConversationListHasMore = exports.selectConversationListLoading = exports.selectConversationList = exports.selectConversationLoading = exports.selectConversation = exports.setSocketConnected = exports.setTypingUsers = exports.setThreadLoading = exports.setThreadReplies = exports.updateReactions = exports.removeMessage = exports.failOptimisticMessage = exports.addOptimisticMessage = exports.upsertMessage = exports.setMessagesHasMore = exports.setMessagesLoading = void 0;
39
+ exports.MAX_ACCOUNTS = exports.requestNewAccessTokenThunk = exports.selectAccessToken = exports.setInitialized = exports.setTokens = exports.useSublaySelector = exports.useSublayDispatch = exports.handleOAuthRedirect = exports.parseOAuthRedirectUrl = exports.requestOAuthAuthorizationUrl = exports.OAUTH_BASE_URL = exports.useOAuthIdentities = exports.useSignOutAll = exports.useRemoveAccount = exports.useAddAccount = exports.useSwitchAccount = exports.useAccounts = exports.useAccountSync = exports.useVerifyEmail = exports.useSendVerificationEmail = exports.useRequestPasswordReset = exports.useAuth = exports.useSignTestingJwt = exports.useProjectData = exports.useProject = exports.sublayApi = exports.sublayMiddleware = exports.sublayApiReducer = exports.sublayReducers = exports.useMessageThreadContext = exports.useConversationContext = exports.useChatContext = exports.MessageThreadProvider = exports.ConversationProvider = exports.ChatProvider = exports.SpaceProvider = exports.CommentSectionProvider = exports.EntityProvider = exports.SublayIntegrationProvider = exports.SublayProvider = exports.reportReasons = exports.getEnvVar = exports.getApiBaseUrl = exports.isProduction = exports.isDevelopment = exports.getPublicFileUrl = exports.getUserName = exports.safeMergeStyleProps = exports.keywordHelpers = exports.handleError = void 0;
40
+ exports.useFetchDigestConfig = exports.useCheckMyMembership = exports.useSpaceMentions = exports.useSpacePermissions = exports.useModerateSpaceComment = exports.useModerateSpaceEntity = exports.useUnbanMember = exports.useRemoveMember = exports.useDeclineMember = exports.useApproveMember = exports.useUpdateMemberRole = exports.useFetchUserSpaces = exports.useFetchSpaceTeam = exports.useFetchSpaceMembers = exports.useLeaveSpace = exports.useJoinSpace = exports.useDeleteSpace = exports.useUpdateSpace = exports.useCreateSpace = exports.useCheckSlugAvailability = exports.useFetchManySpaces = exports.useFetchSpaceChildren = exports.useFetchSpaceBreadcrumb = exports.useFetchSpaceBySlug = exports.useFetchSpaceByShortId = exports.useFetchSpace = exports.useSpaceData = exports.useSpace = exports.useEntityListActions = exports.useEntityList = exports.useIsEntitySaved = exports.usePublishDraft = exports.useFetchDrafts = exports.useUpdateEntity = exports.useFetchManyEntitiesWrapper = exports.useFetchManyEntities = exports.useFetchEntityByShortId = exports.useFetchEntityByForeignId = exports.useFetchEntity = exports.useDeleteEntity = exports.useCreateEntity = exports.useEntityData = exports.useEntity = exports.useCollectionEntitiesWrapper = exports.useCollectionsActions = exports.useCollections = exports.useAppNotificationsActions = exports.useAppNotifications = exports.useUserActions = exports.useUser = void 0;
41
+ exports.useRemoveConnection = exports.useDeclineConnection = exports.useAcceptConnection = exports.useRequestConnection = exports.useUnfollowUserByUserId = exports.useUnfollowByFollowId = exports.useFollowUser = exports.useFollowManager = exports.useFetchFollowingCountByUserId = exports.useFetchFollowingCount = exports.useFetchFollowingByUserId = exports.useFetchFollowing = exports.useFetchFollowersCountByUserId = exports.useFetchFollowersCount = exports.useFetchFollowersByUserId = exports.useFetchFollowers = exports.useFetchFollowStatus = exports.useUserMentions = exports.useFetchUserSuggestions = exports.useCheckUsernameAvailability = exports.useFetchUserByUsername = exports.useFetchUserByForeignId = exports.useFetchUser = exports.useReactionToggle = exports.useRemoveReaction = exports.useAddReaction = exports.useFetchCommentReactionsWrapper = exports.useFetchEntityReactionsWrapper = exports.useFetchCommentReactions = exports.useFetchEntityReactions = exports.useFetchManyCommentsWrapper = exports.useEntityComments = exports.useDeleteComment = exports.useUpdateComment = exports.useReplies = exports.useFetchCommentByForeignId = exports.useFetchComment = exports.useFetchManyComments = exports.useCreateComment = exports.useCommentSectionData = exports.useCommentSection = exports.useSpaceListActions = exports.useSpaceList = exports.useReorderRules = exports.useFetchManyRules = exports.useFetchRule = exports.useDeleteRule = exports.useUpdateRule = exports.useCreateRule = exports.useUpdateDigestConfig = void 0;
42
+ exports.setConversationListHasMore = exports.setConversationListLoading = exports.setConversationList = exports.setConversationLoading = exports.setConversation = exports.useChatSocket = exports.useTypingIndicator = exports.useConversationData = exports.useReportMessage = exports.useMarkConversationAsRead = exports.useUnreadConversationCount = exports.useTotalUnreadCount = exports.useMessageThread = exports.useToggleReaction = exports.useDeleteMessage = exports.useEditMessage = exports.useSendMessage = exports.useChatMessages = exports.useConversationMembers = exports.useFetchSpaceConversation = exports.useCreateDirectConversation = exports.useDeleteConversation = exports.useUpdateConversation = exports.useFetchConversation = exports.useConversation = exports.useConversations = exports.validateSortType = exports.validateMetadataPropertyName = exports.validateSortBy = exports.AppNotification = exports.useUploadImage = exports.useUploadFile = exports.useAskContent = exports.useSearchSpaces = exports.useSearchUsers = exports.useSearchContent = exports.useGetMetadata = exports.useHandleSpaceCommentReport = exports.useHandleSpaceEntityReport = exports.useFetchModeratedReports = exports.useCreateReport = exports.useConnectionManager = exports.useFetchConnectionsCountByUserId = exports.useFetchConnectionsByUserId = exports.useFetchReceivedPendingConnections = exports.useFetchSentPendingConnections = exports.useFetchConnectionsCount = exports.useRemoveConnectionByUserId = exports.useFetchConnectionStatus = exports.useFetchConnections = void 0;
43
+ exports.selectSocketConnected = exports.selectTypingUsers = exports.selectThreadHasMore = exports.selectThreadLoading = exports.selectThreadReplies = exports.selectNewestMessageId = exports.selectOldestMessageId = exports.selectMessagesHasMore = exports.selectMessagesLoading = exports.selectMessages = exports.selectConversationListCursor = exports.selectConversationListHasMore = exports.selectConversationListLoading = exports.selectConversationList = exports.selectConversationLoading = exports.selectConversation = exports.setSocketConnected = exports.setTypingUsers = exports.setThreadLoading = exports.setThreadReplies = exports.updateReactions = exports.removeMessage = exports.failOptimisticMessage = exports.addOptimisticMessage = exports.upsertMessage = exports.setMessagesHasMore = exports.setMessagesLoading = exports.clearUnread = exports.incrementUnread = exports.upsertConversationPreview = exports.setConversationListCursor = void 0;
44
44
  // Helpers & Utilities
45
45
  var handleError_1 = require("./utils/handleError");
46
46
  Object.defineProperty(exports, "handleError", { enumerable: true, get: function () { return handleError_1.handleError; } });
@@ -103,6 +103,12 @@ Object.defineProperty(exports, "useSignOutAll", { enumerable: true, get: functio
103
103
  // -- authentication (OAuth)
104
104
  var auth_3 = require("./hooks/auth");
105
105
  Object.defineProperty(exports, "useOAuthIdentities", { enumerable: true, get: function () { return auth_3.useOAuthIdentities; } });
106
+ // -- authentication (OAuth shared helpers — consumed by platform hooks)
107
+ var oauthCore_1 = require("./hooks/auth/oauthCore");
108
+ Object.defineProperty(exports, "OAUTH_BASE_URL", { enumerable: true, get: function () { return oauthCore_1.OAUTH_BASE_URL; } });
109
+ Object.defineProperty(exports, "requestOAuthAuthorizationUrl", { enumerable: true, get: function () { return oauthCore_1.requestOAuthAuthorizationUrl; } });
110
+ Object.defineProperty(exports, "parseOAuthRedirectUrl", { enumerable: true, get: function () { return oauthCore_1.parseOAuthRedirectUrl; } });
111
+ Object.defineProperty(exports, "handleOAuthRedirect", { enumerable: true, get: function () { return oauthCore_1.handleOAuthRedirect; } });
106
112
  // -- store internals (for platform-specific hooks in react-js / react-native)
107
113
  var hooks_1 = require("./store/hooks");
108
114
  Object.defineProperty(exports, "useSublayDispatch", { enumerable: true, get: function () { return hooks_1.useSublayDispatch; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import type { AppDispatch } from "../../store/types";
2
+ /**
3
+ * Platform-agnostic OAuth helpers shared by the web (`@sublay/react-js`) and
4
+ * Expo (`@sublay/expo`) `useOAuthSignIn` hooks.
5
+ *
6
+ * These helpers deliberately contain NO browser/DOM globals (`window`,
7
+ * `document`, `localStorage`) and NO React Native globals, so the same code
8
+ * path runs on every platform. Each platform owns only its own I/O: obtaining
9
+ * the redirect URL (web reads `window.location`, Expo opens a web-browser auth
10
+ * session) and any navigation/URL cleanup.
11
+ */
12
+ export declare const OAUTH_BASE_URL = "https://api.sublay.io/v7";
13
+ /**
14
+ * Server-call head: POST to `/{projectId}/oauth/{authorize|link}` and return the
15
+ * provider `authorizationUrl`.
16
+ *
17
+ * - `authorize` is unauthenticated; `link` requires the caller's access token,
18
+ * passed via `accessToken` (sent as a Bearer header only when present).
19
+ * - Throws an `Error` carrying the server's `error` body on a non-ok response.
20
+ */
21
+ export declare function requestOAuthAuthorizationUrl({ projectId, endpoint, provider, redirectAfterAuth, accessToken, baseUrl, }: {
22
+ projectId: string;
23
+ endpoint: "authorize" | "link";
24
+ provider: string;
25
+ redirectAfterAuth: string;
26
+ /** Required for `link`, omitted for `authorize`. */
27
+ accessToken?: string | null;
28
+ baseUrl?: string;
29
+ }): Promise<string>;
30
+ export interface OAuthRedirectParams {
31
+ accessToken: string | null;
32
+ refreshToken: string | null;
33
+ error: string | null;
34
+ errorDescription: string | null;
35
+ }
36
+ /**
37
+ * Tolerantly parse a redirect URL string into OAuth params.
38
+ *
39
+ * The Sublay OAuth callback carries tokens in the URL **fragment**
40
+ * (`#accessToken=...&refreshToken=...`) and errors in the **query**
41
+ * (`?error=...&error_description=...`). This splits the string by hand rather
42
+ * than relying on `new URL().hash`, whose fragment handling is unreliable under
43
+ * React Native's URL polyfill — exactly where the tokens live.
44
+ */
45
+ export declare function parseOAuthRedirectUrl(url: string): OAuthRedirectParams;
46
+ export interface HandleOAuthRedirectResult {
47
+ /** True when tokens were found and dispatched. */
48
+ success: boolean;
49
+ /** A human-readable error message when the redirect carried an `?error=`. */
50
+ error: string | null;
51
+ }
52
+ /**
53
+ * Token-handling tail: given a redirect URL **string**, extract the tokens /
54
+ * error and, on success, perform the same Redux dispatches the web hook has
55
+ * always done (`setTokens` → `setInitialized` → `requestNewAccessTokenThunk`).
56
+ *
57
+ * Pure of any I/O beyond dispatching: it does not read globals, navigate, or
58
+ * clean the URL — the caller owns that. Accepts a URL string (or pre-parsed
59
+ * `params`, e.g. from `expo-linking`) so any platform can feed it whatever it
60
+ * obtained however it likes.
61
+ *
62
+ * Returns `{ success, error }` instead of throwing so callers can drive their
63
+ * own loading/error UI state.
64
+ */
65
+ export declare function handleOAuthRedirect({ dispatch, projectId, url, params, }: {
66
+ dispatch: AppDispatch;
67
+ projectId: string | null | undefined;
68
+ url?: string;
69
+ params?: OAuthRedirectParams;
70
+ }): HandleOAuthRedirectResult;
@@ -0,0 +1,107 @@
1
+ import { setTokens, setInitialized } from "../../store/slices/authSlice";
2
+ import { requestNewAccessTokenThunk } from "../../store/slices/authThunks";
3
+ /**
4
+ * Platform-agnostic OAuth helpers shared by the web (`@sublay/react-js`) and
5
+ * Expo (`@sublay/expo`) `useOAuthSignIn` hooks.
6
+ *
7
+ * These helpers deliberately contain NO browser/DOM globals (`window`,
8
+ * `document`, `localStorage`) and NO React Native globals, so the same code
9
+ * path runs on every platform. Each platform owns only its own I/O: obtaining
10
+ * the redirect URL (web reads `window.location`, Expo opens a web-browser auth
11
+ * session) and any navigation/URL cleanup.
12
+ */
13
+ // Single source of truth for the API base URL. Matches the web hook's prior
14
+ // hardcoded value exactly — do NOT swap in `getApiBaseUrl()`, which is
15
+ // env-aware and would diverge from the web hook's production-only behavior.
16
+ export const OAUTH_BASE_URL = "https://api.sublay.io/v7";
17
+ /**
18
+ * Server-call head: POST to `/{projectId}/oauth/{authorize|link}` and return the
19
+ * provider `authorizationUrl`.
20
+ *
21
+ * - `authorize` is unauthenticated; `link` requires the caller's access token,
22
+ * passed via `accessToken` (sent as a Bearer header only when present).
23
+ * - Throws an `Error` carrying the server's `error` body on a non-ok response.
24
+ */
25
+ export async function requestOAuthAuthorizationUrl({ projectId, endpoint, provider, redirectAfterAuth, accessToken, baseUrl = OAUTH_BASE_URL, }) {
26
+ const headers = {
27
+ "Content-Type": "application/json",
28
+ };
29
+ if (accessToken) {
30
+ headers["Authorization"] = `Bearer ${accessToken}`;
31
+ }
32
+ const response = await fetch(`${baseUrl}/${projectId}/oauth/${endpoint}`, {
33
+ method: "POST",
34
+ headers,
35
+ body: JSON.stringify({ provider, redirectAfterAuth }),
36
+ });
37
+ if (!response.ok) {
38
+ const data = await response.json();
39
+ throw new Error(data.error || "Failed to initiate OAuth");
40
+ }
41
+ const data = await response.json();
42
+ return data.authorizationUrl;
43
+ }
44
+ /**
45
+ * Tolerantly parse a redirect URL string into OAuth params.
46
+ *
47
+ * The Sublay OAuth callback carries tokens in the URL **fragment**
48
+ * (`#accessToken=...&refreshToken=...`) and errors in the **query**
49
+ * (`?error=...&error_description=...`). This splits the string by hand rather
50
+ * than relying on `new URL().hash`, whose fragment handling is unreliable under
51
+ * React Native's URL polyfill — exactly where the tokens live.
52
+ */
53
+ export function parseOAuthRedirectUrl(url) {
54
+ const hashIndex = url.indexOf("#");
55
+ const fragment = hashIndex >= 0 ? url.substring(hashIndex + 1) : "";
56
+ const beforeHash = hashIndex >= 0 ? url.substring(0, hashIndex) : url;
57
+ const queryIndex = beforeHash.indexOf("?");
58
+ const query = queryIndex >= 0 ? beforeHash.substring(queryIndex + 1) : "";
59
+ const fragmentParams = new URLSearchParams(fragment);
60
+ const queryParams = new URLSearchParams(query);
61
+ return {
62
+ accessToken: fragmentParams.get("accessToken"),
63
+ refreshToken: fragmentParams.get("refreshToken"),
64
+ error: queryParams.get("error"),
65
+ errorDescription: queryParams.get("error_description"),
66
+ };
67
+ }
68
+ /**
69
+ * Token-handling tail: given a redirect URL **string**, extract the tokens /
70
+ * error and, on success, perform the same Redux dispatches the web hook has
71
+ * always done (`setTokens` → `setInitialized` → `requestNewAccessTokenThunk`).
72
+ *
73
+ * Pure of any I/O beyond dispatching: it does not read globals, navigate, or
74
+ * clean the URL — the caller owns that. Accepts a URL string (or pre-parsed
75
+ * `params`, e.g. from `expo-linking`) so any platform can feed it whatever it
76
+ * obtained however it likes.
77
+ *
78
+ * Returns `{ success, error }` instead of throwing so callers can drive their
79
+ * own loading/error UI state.
80
+ */
81
+ export function handleOAuthRedirect({ dispatch, projectId, url, params, }) {
82
+ const parsed = params ?? (url != null ? parseOAuthRedirectUrl(url) : null);
83
+ if (!parsed) {
84
+ return { success: false, error: null };
85
+ }
86
+ // Errors arrive in the query string. Surface them without dispatching.
87
+ if (parsed.error) {
88
+ return { success: false, error: parsed.errorDescription || parsed.error };
89
+ }
90
+ // Tokens arrive in the fragment. Only dispatch when both are present.
91
+ if (parsed.accessToken && parsed.refreshToken) {
92
+ dispatch(setTokens({
93
+ accessToken: parsed.accessToken,
94
+ refreshToken: parsed.refreshToken,
95
+ }));
96
+ dispatch(setInitialized(true));
97
+ // Fetch the user profile so `useAccountSync` can persist the account. The
98
+ // thunk reads the just-set refresh token from Redux, calls the server, and
99
+ // dispatches setUser + setUserInUserSlice on success.
100
+ if (projectId) {
101
+ dispatch(requestNewAccessTokenThunk({ projectId }));
102
+ }
103
+ return { success: true, error: null };
104
+ }
105
+ return { success: false, error: null };
106
+ }
107
+ //# sourceMappingURL=oauthCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthCore.js","sourceRoot":"","sources":["../../../../src/hooks/auth/oauthCore.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,19 @@ function extractExpFromJwt(jwt) {
24
24
  return 0;
25
25
  }
26
26
  }
27
+ // A JWT's `sub` claim — the user id it was minted for. Used to detect a transient token/user
28
+ // desync before we persist an account entry.
29
+ function extractSubFromJwt(jwt) {
30
+ if (!jwt)
31
+ return null;
32
+ try {
33
+ const payload = JSON.parse(base64UrlDecode(jwt.split(".")[1]));
34
+ return typeof payload.sub === "string" ? payload.sub : null;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
27
40
  export default function useAccountSync(storage, projectId) {
28
41
  const dispatch = useSublayDispatch();
29
42
  const refreshToken = useSublaySelector(selectRefreshToken);
@@ -65,6 +78,21 @@ export default function useAccountSync(storage, projectId) {
65
78
  useEffect(() => {
66
79
  if (!isReady || !refreshToken || !user?.id)
67
80
  return;
81
+ // Guard against a transient token/user desync. The accounts map keys by user.id but the entry
82
+ // stores the CURRENT refresh token, so if the two are momentarily mismatched we'd persist the
83
+ // wrong pairing — two account ids sharing one refresh token, a corrupt map that breaks switching
84
+ // and sign-out. Two flows cause this: (1) an OAuth callback sets the new tokens via setTokens
85
+ // while `user` only resolves a tick later, and (2) cross-tab sync (Phase D) swaps in another
86
+ // account's refresh token while this tab's `user` is still the previous account.
87
+ //
88
+ // The refresh token is itself a JWT whose `sub` is the id it was minted for — and it's the
89
+ // credential we're about to store — so validate ITS sub against the current user (the access
90
+ // token can be staler than the refresh token, e.g. case 2, so it isn't a reliable signal here).
91
+ // Only persist once they agree; otherwise skip and wait — the effect re-runs (deps: refreshToken,
92
+ // user) when they catch up.
93
+ const sub = extractSubFromJwt(refreshToken);
94
+ if (sub && sub !== user.id)
95
+ return;
68
96
  const summary = {
69
97
  id: user.id,
70
98
  name: user.name ?? null,
@@ -97,7 +125,11 @@ export default function useAccountSync(storage, projectId) {
97
125
  }, [accounts, activeAccountId, isReady]);
98
126
  // Phase D: Cross-tab sync (web only)
99
127
  useEffect(() => {
100
- if (typeof window === "undefined")
128
+ // React Native exposes a partial `window` global without the DOM event API,
129
+ // so `typeof window === "undefined"` passes there and then crashes on
130
+ // window.addEventListener. Require the listener API to actually exist.
131
+ if (typeof window === "undefined" ||
132
+ typeof window.addEventListener !== "function")
101
133
  return;
102
134
  const storageKey = `sublay-accounts:${projectId}`;
103
135
  const handleStorageEvent = (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useAccountSync.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAccountSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAccountSync.js","sourceRoot":"","sources":["../../../../src/hooks/auth/useAccountSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GAIpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,SAAS,eAAe,CAAC,GAAW;IAClC,uCAAuC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,OAAO,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,8EAA8E;IAC9E,MAAM,YAAY,GAAI,UAAkB,CAAC,MAAM,CAAC;IAChD,IAAI,OAAO,YAAY,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrG,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,6CAA6C;AAC7C,SAAS,iBAAiB,CAAC,GAA8B;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,OAAuB,EACvB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,6BAA6B;IACzE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtC,gDAAgD;IAChD,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAEnC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACnD,IAAI,GAAG,EAAE,CAAC;oBACR,mEAAmE;oBACnE,iDAAiD;oBACjD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC7C,IACE,UAAU,CAAC,MAAM,GAAG,CAAC;wBACrB,CAAC,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAC5D,CAAC;wBACD,GAAG,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBACtC,CAAC;oBAED,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7B,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;wBAC7D,QAAQ,CACN,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAChE,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC;YAChE,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC;QAEF,YAAY,EAAE,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qDAAqD;IAE7D,8DAA8D;IAC9D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,EAAE;YAAE,OAAO;QAEnD,8FAA8F;QAC9F,8FAA8F;QAC9F,iGAAiG;QACjG,8FAA8F;QAC9F,6FAA6F;QAC7F,iFAAiF;QACjF,EAAE;QACF,2FAA2F;QAC3F,6FAA6F;QAC7F,gGAAgG;QAChG,kGAAkG;QAClG,4BAA4B;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE;YAAE,OAAO;QAEnC,MAAM,OAAO,GAAmB;YAC9B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;SAC5B,CAAC;QAEF,MAAM,KAAK,GAAiB;YAC1B,YAAY;YACZ,cAAc,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC/C,IAAI,EAAE,OAAO;SACd,CAAC;QAEF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,EAAE,KAAK,eAAe,EAAE,CAAC;YAChC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAElC,kCAAkC;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,iEAAiE;QACjE,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;QACtD,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACpD,WAAW,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzC,qCAAqC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,4EAA4E;QAC5E,sEAAsE;QACtE,uEAAuE;QACvE,IACE,OAAO,MAAM,KAAK,WAAW;YAC7B,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU;YAE7C,OAAO;QAET,MAAM,UAAU,GAAG,mBAAmB,SAAS,EAAE,CAAC;QAElD,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAAE,OAAO;YACxD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAe,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACnD,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC7D,QAAQ,CACN,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAChE,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,EAAE,+CAA+C,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5B,CAAC"}
@@ -13,6 +13,7 @@ export { useSignTestingJwt, type SignTestingJwtProps } from "./hooks/crypto";
13
13
  export { useAuth, useRequestPasswordReset, useSendVerificationEmail, useVerifyEmail, type UseAuthValues, type SignUpWithEmailAndPasswordProps, type SignInWithEmailAndPasswordProps, type ChangePasswordProps, type RequestPasswordResetProps, type SendVerificationEmailProps, type VerifyEmailProps, } from "./hooks/auth";
14
14
  export { useAccountSync, useAccounts, useSwitchAccount, useAddAccount, useRemoveAccount, useSignOutAll, type UseAccountsReturn, type UseSwitchAccountReturn, type UseAddAccountReturn, type UseRemoveAccountReturn, type UseSignOutAllReturn, } from "./hooks/auth";
15
15
  export { useOAuthIdentities, type OAuthIdentity, type UseOAuthIdentitiesReturn, } from "./hooks/auth";
16
+ export { OAUTH_BASE_URL, requestOAuthAuthorizationUrl, parseOAuthRedirectUrl, handleOAuthRedirect, type OAuthRedirectParams, type HandleOAuthRedirectResult, } from "./hooks/auth/oauthCore";
16
17
  export { useSublayDispatch, useSublaySelector } from "./store/hooks";
17
18
  export { setTokens, setInitialized, selectAccessToken, } from "./store/slices/authSlice";
18
19
  export { requestNewAccessTokenThunk } from "./store/slices/authThunks";
package/dist/esm/index.js CHANGED
@@ -21,6 +21,8 @@ export { useAuth, useRequestPasswordReset, useSendVerificationEmail, useVerifyEm
21
21
  export { useAccountSync, useAccounts, useSwitchAccount, useAddAccount, useRemoveAccount, useSignOutAll, } from "./hooks/auth";
22
22
  // -- authentication (OAuth)
23
23
  export { useOAuthIdentities, } from "./hooks/auth";
24
+ // -- authentication (OAuth shared helpers — consumed by platform hooks)
25
+ export { OAUTH_BASE_URL, requestOAuthAuthorizationUrl, parseOAuthRedirectUrl, handleOAuthRedirect, } from "./hooks/auth/oauthCore";
24
26
  // -- store internals (for platform-specific hooks in react-js / react-native)
25
27
  export { useSublayDispatch, useSublaySelector } from "./store/hooks";
26
28
  export { setTokens, setInitialized, selectAccessToken, } from "./store/slices/authSlice";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sublay/core",
3
- "version": "7.0.4",
3
+ "version": "7.1.1",
4
4
  "private": false,
5
5
  "license": "Apache-2.0",
6
6
  "author": "Sublay, maintained by Yanay Tsabary",