@chanomhub/sdk 1.1.2 → 1.1.3

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/README.md CHANGED
@@ -209,6 +209,87 @@ await sdk.auth.signOut();
209
209
  const session = await sdk.auth.getSupabaseSession();
210
210
  ```
211
211
 
212
+ ### OAuth for React Native (Pure RN / Without Expo)
213
+
214
+ For React Native apps, install `react-native-app-auth`:
215
+
216
+ ```bash
217
+ npm install @chanomhub/sdk react-native-app-auth
218
+ ```
219
+
220
+ Configure and use native OAuth:
221
+
222
+ ```typescript
223
+ import { createChanomhubClient } from '@chanomhub/sdk';
224
+
225
+ const sdk = createChanomhubClient();
226
+
227
+ // Google Sign-In for React Native
228
+ const result = await sdk.auth.signInWithGoogleNative({
229
+ googleClientId: 'YOUR_GOOGLE_CLIENT_ID.apps.googleusercontent.com',
230
+ googleIosClientId: 'YOUR_IOS_CLIENT_ID.apps.googleusercontent.com', // Optional
231
+ redirectUri: 'com.yourapp://oauth',
232
+ });
233
+
234
+ if (result) {
235
+ // result contains: { user, token, refreshToken }
236
+ console.log('Logged in as:', result.user.username);
237
+ }
238
+ ```
239
+
240
+ Other providers:
241
+
242
+ ```typescript
243
+ // Discord
244
+ await sdk.auth.signInWithProviderNative('discord', {
245
+ discordClientId: 'YOUR_DISCORD_CLIENT_ID',
246
+ redirectUri: 'com.yourapp://oauth',
247
+ });
248
+
249
+ // GitHub
250
+ await sdk.auth.signInWithProviderNative('github', {
251
+ githubClientId: 'YOUR_GITHUB_CLIENT_ID',
252
+ redirectUri: 'com.yourapp://oauth',
253
+ });
254
+ ```
255
+
256
+ If you handle OAuth flow yourself:
257
+
258
+ ```typescript
259
+ import { authorize } from 'react-native-app-auth';
260
+
261
+ // Use your own OAuth config
262
+ const oauthResult = await authorize(myConfig);
263
+
264
+ // Exchange with backend
265
+ const loginResult = await sdk.auth.exchangeOAuthToken(oauthResult);
266
+ ```
267
+
268
+ ### Electron / Server-side OAuth
269
+
270
+ For environments where you need to handle the OAuth redirect manually (e.g., Electron, CLI):
271
+
272
+ ```typescript
273
+ // 1. Get the OAuth URL
274
+ const options = {
275
+ skipBrowserRedirect: true,
276
+ redirectTo: 'myapp://oauth-callback',
277
+ scopes: 'email profile', // Optional
278
+ };
279
+
280
+ const { url } = await sdk.auth.signInWithGoogle(options);
281
+ // OR generic provider:
282
+ // const { url } = await sdk.auth.signInWithProvider('github', options);
283
+
284
+ if (url) {
285
+ // 2. Open URL in external browser/window (Electron example)
286
+ // shell.openExternal(url);
287
+ }
288
+
289
+ // 3. In your app's deep link handler, process the returned code/token
290
+ // This depends on how you handle deep links in Electron
291
+ ```
292
+
212
293
  ---
213
294
 
214
295
  ## 📁 Project Structure
@@ -75,5 +75,96 @@ const authRepository_1 = require("../repositories/authRepository");
75
75
  (0, vitest_1.expect)(session).toBeNull();
76
76
  });
77
77
  });
78
+ // ============================================
79
+ // React Native OAuth Tests
80
+ // ============================================
81
+ (0, vitest_1.describe)('signInWithGoogleNative', () => {
82
+ (0, vitest_1.it)('should throw error when googleClientId is not provided', async () => {
83
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
84
+ await (0, vitest_1.expect)(auth.signInWithGoogleNative({ redirectUri: 'com.app://oauth' })).rejects.toThrow('Missing client ID for google');
85
+ });
86
+ (0, vitest_1.it)('should throw error when redirectUri is not provided', async () => {
87
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
88
+ await (0, vitest_1.expect)(auth.signInWithGoogleNative({
89
+ googleClientId: 'test-client-id',
90
+ redirectUri: '',
91
+ })).rejects.toThrow('Missing redirectUri');
92
+ });
93
+ });
94
+ (0, vitest_1.describe)('signInWithProviderNative', () => {
95
+ (0, vitest_1.it)('should throw error when discordClientId is missing for discord', async () => {
96
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
97
+ await (0, vitest_1.expect)(auth.signInWithProviderNative('discord', { redirectUri: 'com.app://oauth' })).rejects.toThrow('Missing client ID for discord');
98
+ });
99
+ (0, vitest_1.it)('should throw error when githubClientId is missing for github', async () => {
100
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
101
+ await (0, vitest_1.expect)(auth.signInWithProviderNative('github', { redirectUri: 'com.app://oauth' })).rejects.toThrow('Missing client ID for github');
102
+ });
103
+ });
104
+ (0, vitest_1.describe)('exchangeOAuthToken', () => {
105
+ (0, vitest_1.it)('should exchange OAuth token with backend', async () => {
106
+ mockFetcher.mockResolvedValue({
107
+ data: {
108
+ user: { id: 1, username: 'test' },
109
+ token: 'backend-token',
110
+ refreshToken: 'backend-refresh',
111
+ },
112
+ error: undefined,
113
+ });
114
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
115
+ const result = await auth.exchangeOAuthToken({
116
+ accessToken: 'oauth-access-token',
117
+ idToken: 'google-id-token',
118
+ });
119
+ (0, vitest_1.expect)(mockFetcher).toHaveBeenCalledWith('/api/users/login-oauth', {
120
+ method: 'POST',
121
+ body: {
122
+ accessToken: 'google-id-token', // Uses idToken when available
123
+ provider: 'google',
124
+ },
125
+ });
126
+ (0, vitest_1.expect)(result).toEqual({
127
+ user: { id: 1, username: 'test' },
128
+ token: 'backend-token',
129
+ refreshToken: 'backend-refresh',
130
+ });
131
+ });
132
+ (0, vitest_1.it)('should use accessToken when idToken is not available', async () => {
133
+ mockFetcher.mockResolvedValue({
134
+ data: { user: { id: 1 }, token: 'token', refreshToken: 'refresh' },
135
+ error: undefined,
136
+ });
137
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
138
+ await auth.exchangeOAuthToken({ accessToken: 'discord-token' });
139
+ (0, vitest_1.expect)(mockFetcher).toHaveBeenCalledWith('/api/users/login-oauth', {
140
+ method: 'POST',
141
+ body: {
142
+ accessToken: 'discord-token',
143
+ provider: 'oauth',
144
+ },
145
+ });
146
+ });
147
+ (0, vitest_1.it)('should return null when no token available', async () => {
148
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
149
+ const result = await auth.exchangeOAuthToken({ accessToken: '' });
150
+ (0, vitest_1.expect)(result).toBeNull();
151
+ });
152
+ });
153
+ // ============================================
154
+ // Electron / Server-side OAuth Tests
155
+ // ============================================
156
+ (0, vitest_1.describe)('getOAuthUrl', () => {
157
+ (0, vitest_1.it)('should return OAuth URL when Supabase is configured', async () => {
158
+ config.supabaseUrl = 'https://test.supabase.co';
159
+ config.supabaseAnonKey = 'test-key';
160
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
161
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
162
+ // Mock Supabase client setup would go here
163
+ });
164
+ });
165
+ (0, vitest_1.it)('should have getOAuthUrl method', () => {
166
+ const auth = (0, authRepository_1.createAuthRepository)(mockFetcher, config);
167
+ (0, vitest_1.expect)(typeof auth.getOAuthUrl).toBe('function');
168
+ });
78
169
  });
79
170
  //# sourceMappingURL=auth.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../__tests__/auth.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../__tests__/auth.test.ts"],"names":[],"mappings":"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"}
@@ -5,18 +5,53 @@
5
5
  */
6
6
  import type { ChanomhubConfig } from '../config';
7
7
  import type { RestFetcher } from '../client';
8
- import type { OAuthProvider, OAuthOptions, LoginResponse, RefreshResponse, SupabaseSession } from '../types/auth';
8
+ import type { OAuthProvider, OAuthOptions, LoginResponse, RefreshResponse, SupabaseSession, NativeOAuthConfig, NativeOAuthOptions, NativeOAuthResult } from '../types/auth';
9
9
  export interface AuthRepository {
10
10
  /** Check if Supabase OAuth is configured and available */
11
11
  isOAuthEnabled(): boolean;
12
- /** Sign in with Google OAuth - redirects to Google login page */
13
- signInWithGoogle(options?: OAuthOptions): Promise<void>;
12
+ /** Sign in with Google OAuth - redirects to Google login page (Web only) */
13
+ signInWithGoogle(options?: OAuthOptions): Promise<{
14
+ url: string | null;
15
+ }>;
14
16
  /** Sign in with any supported OAuth provider */
15
- signInWithProvider(provider: OAuthProvider, options?: OAuthOptions): Promise<void>;
17
+ signInWithProvider(provider: OAuthProvider, options?: OAuthOptions): Promise<{
18
+ url: string | null;
19
+ }>;
20
+ /**
21
+ * Get the OAuth URL for manual redirect handling (Electron, etc.)
22
+ * @param provider - OAuth provider
23
+ * @param options - OAuth options
24
+ * @returns OAuth URL string
25
+ */
26
+ getOAuthUrl(provider: OAuthProvider, options?: OAuthOptions): Promise<string | null>;
27
+ /**
28
+ * Sign in with Google OAuth for React Native apps.
29
+ * Uses react-native-app-auth under the hood.
30
+ * @param nativeConfig - Native OAuth configuration with client IDs and redirect URI
31
+ * @param options - Additional options like scopes
32
+ * @returns Login response with user and tokens from backend
33
+ */
34
+ signInWithGoogleNative(nativeConfig: NativeOAuthConfig, options?: NativeOAuthOptions): Promise<LoginResponse | null>;
35
+ /**
36
+ * Sign in with any OAuth provider for React Native apps.
37
+ * Uses react-native-app-auth under the hood.
38
+ * @param provider - OAuth provider (google, discord, github)
39
+ * @param nativeConfig - Native OAuth configuration
40
+ * @param options - Additional options
41
+ * @returns Login response with user and tokens from backend
42
+ */
43
+ signInWithProviderNative(provider: OAuthProvider, nativeConfig: NativeOAuthConfig, options?: NativeOAuthOptions): Promise<LoginResponse | null>;
44
+ /**
45
+ * Exchange OAuth token from react-native-app-auth with backend.
46
+ * Use this if you handle the OAuth flow yourself.
47
+ * @param oauthResult - Result from react-native-app-auth authorize()
48
+ * @returns Login response with user and backend tokens
49
+ */
50
+ exchangeOAuthToken(oauthResult: NativeOAuthResult): Promise<LoginResponse | null>;
16
51
  /**
17
52
  * Handle OAuth callback after redirect back from provider.
18
53
  * Exchanges Supabase access token for backend JWT.
19
- * Call this on your OAuth callback page.
54
+ * Call this on your OAuth callback page (Web only).
20
55
  */
21
56
  handleCallback(): Promise<LoginResponse | null>;
22
57
  /** Sign out from Supabase (clears Supabase session only) */
@@ -1 +1 @@
1
- {"version":3,"file":"authRepository.d.ts","sourceRoot":"","sources":["../../repositories/authRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EAGlB,MAAM,eAAe,CAAC;AAiBvB,MAAM,WAAW,cAAc;IAC3B,0DAA0D;IAC1D,cAAc,IAAI,OAAO,CAAC;IAE1B,iEAAiE;IACjE,gBAAgB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,gDAAgD;IAChD,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEhD,4DAA4D;IAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,2DAA2D;IAC3D,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAEpE,4CAA4C;IAC5C,kBAAkB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACzD;AAuBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CA6IlG"}
1
+ {"version":3,"file":"authRepository.d.ts","sourceRoot":"","sources":["../../repositories/authRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACpB,MAAM,eAAe,CAAC;AAsBvB,MAAM,WAAW,cAAc;IAC3B,0DAA0D;IAC1D,cAAc,IAAI,OAAO,CAAC;IAE1B,4EAA4E;IAC5E,gBAAgB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAE1E,gDAAgD;IAChD,kBAAkB,CACd,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAErF;;;;;;OAMG;IACH,sBAAsB,CAClB,YAAY,EAAE,iBAAiB,EAC/B,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEjC;;;;;;;OAOG;IACH,wBAAwB,CACpB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,iBAAiB,EAC/B,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAElF;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAEhD,4DAA4D;IAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,2DAA2D;IAC3D,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAEpE,4CAA4C;IAC5C,kBAAkB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACzD;AAuBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAwUlG"}
@@ -75,24 +75,50 @@ function createAuthRepository(fetcher, config) {
75
75
  function isOAuthEnabled() {
76
76
  return Boolean(config.supabaseUrl && config.supabaseAnonKey);
77
77
  }
78
+ async function getOAuthUrl(provider, options = {}) {
79
+ const client = await getSupabaseClient();
80
+ if (!client) {
81
+ throw new Error('Supabase is not configured. Please provide supabaseUrl and supabaseAnonKey in config.');
82
+ }
83
+ const { data, error } = await client.auth.signInWithOAuth({
84
+ provider,
85
+ options: {
86
+ redirectTo: options.redirectTo,
87
+ scopes: options.scopes,
88
+ queryParams: options.queryParams,
89
+ skipBrowserRedirect: true,
90
+ },
91
+ });
92
+ if (error) {
93
+ console.error(`Get OAuth URL error (${provider}):`, error.message);
94
+ throw error;
95
+ }
96
+ return data.url || null;
97
+ }
78
98
  async function signInWithProvider(provider, options = {}) {
79
99
  const client = await getSupabaseClient();
80
100
  if (!client) {
81
101
  throw new Error('Supabase is not configured. Please provide supabaseUrl and supabaseAnonKey in config, ' +
82
102
  'and install @supabase/supabase-js package.');
83
103
  }
84
- const { error } = await client.auth.signInWithOAuth({
104
+ const { data, error } = await client.auth.signInWithOAuth({
85
105
  provider,
86
106
  options: {
87
107
  redirectTo: options.redirectTo,
88
108
  scopes: options.scopes,
109
+ queryParams: options.queryParams,
110
+ skipBrowserRedirect: options.skipBrowserRedirect,
89
111
  },
90
112
  });
91
113
  if (error) {
92
114
  console.error(`OAuth sign-in error (${provider}):`, error.message);
93
115
  throw error;
94
116
  }
95
- // Browser will redirect to OAuth provider
117
+ // If skipBrowserRedirect is true, return the URL
118
+ if (options.skipBrowserRedirect && data.url) {
119
+ return { url: data.url };
120
+ }
121
+ return { url: null };
96
122
  }
97
123
  async function signInWithGoogle(options = {}) {
98
124
  return signInWithProvider('google', options);
@@ -159,10 +185,131 @@ function createAuthRepository(fetcher, config) {
159
185
  }
160
186
  return data.session;
161
187
  }
188
+ // ============================================
189
+ // React Native OAuth Methods
190
+ // ============================================
191
+ /** OAuth provider configurations */
192
+ const OAUTH_CONFIGS = {
193
+ google: {
194
+ issuer: 'https://accounts.google.com',
195
+ defaultScopes: ['openid', 'email', 'profile'],
196
+ },
197
+ discord: {
198
+ serviceConfiguration: {
199
+ authorizationEndpoint: 'https://discord.com/api/oauth2/authorize',
200
+ tokenEndpoint: 'https://discord.com/api/oauth2/token',
201
+ },
202
+ issuer: '',
203
+ defaultScopes: ['identify', 'email'],
204
+ },
205
+ github: {
206
+ serviceConfiguration: {
207
+ authorizationEndpoint: 'https://github.com/login/oauth/authorize',
208
+ tokenEndpoint: 'https://github.com/login/oauth/access_token',
209
+ },
210
+ issuer: '',
211
+ defaultScopes: ['read:user', 'user:email'],
212
+ },
213
+ facebook: {
214
+ serviceConfiguration: {
215
+ authorizationEndpoint: 'https://www.facebook.com/v18.0/dialog/oauth',
216
+ tokenEndpoint: 'https://graph.facebook.com/v18.0/oauth/access_token',
217
+ },
218
+ issuer: '',
219
+ defaultScopes: ['email', 'public_profile'],
220
+ },
221
+ };
222
+ function getClientIdForProvider(provider, nativeConfig) {
223
+ switch (provider) {
224
+ case 'google':
225
+ return nativeConfig.googleClientId || '';
226
+ case 'discord':
227
+ return nativeConfig.discordClientId || '';
228
+ case 'github':
229
+ return nativeConfig.githubClientId || '';
230
+ default:
231
+ return '';
232
+ }
233
+ }
234
+ async function signInWithProviderNative(provider, nativeConfig, options = {}) {
235
+ const clientId = getClientIdForProvider(provider, nativeConfig);
236
+ if (!clientId) {
237
+ throw new Error(`Missing client ID for ${provider}. Please provide ${provider}ClientId in nativeConfig.`);
238
+ }
239
+ if (!nativeConfig.redirectUri) {
240
+ throw new Error('Missing redirectUri in nativeConfig.');
241
+ }
242
+ // Try to dynamically import react-native-app-auth
243
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
244
+ let authorize;
245
+ try {
246
+ const appAuth = await Promise.resolve().then(() => __importStar(require('react-native-app-auth')));
247
+ authorize = appAuth.authorize;
248
+ }
249
+ catch (_a) {
250
+ throw new Error('react-native-app-auth is not installed. Please install it: npm install react-native-app-auth');
251
+ }
252
+ const providerConfig = OAUTH_CONFIGS[provider];
253
+ const scopes = options.scopes || providerConfig.defaultScopes;
254
+ const authConfig = {
255
+ clientId,
256
+ redirectUrl: nativeConfig.redirectUri,
257
+ scopes,
258
+ usePKCE: options.usePKCE !== false, // Default to true
259
+ };
260
+ // Use issuer or serviceConfiguration
261
+ if (providerConfig.issuer) {
262
+ authConfig.issuer = providerConfig.issuer;
263
+ }
264
+ else if (providerConfig.serviceConfiguration) {
265
+ authConfig.serviceConfiguration = providerConfig.serviceConfiguration;
266
+ }
267
+ // For Google iOS, use clientId specific config
268
+ if (provider === 'google' && nativeConfig.googleIosClientId) {
269
+ // iOS uses different clientId format
270
+ authConfig.clientId = nativeConfig.googleIosClientId;
271
+ }
272
+ try {
273
+ const result = await authorize(authConfig);
274
+ return exchangeOAuthToken(result);
275
+ }
276
+ catch (error) {
277
+ console.error(`Native OAuth error (${provider}):`, error);
278
+ throw error;
279
+ }
280
+ }
281
+ async function signInWithGoogleNative(nativeConfig, options = {}) {
282
+ return signInWithProviderNative('google', nativeConfig, options);
283
+ }
284
+ async function exchangeOAuthToken(oauthResult) {
285
+ // Use idToken for Google (OpenID Connect) or accessToken for others
286
+ const tokenToExchange = oauthResult.idToken || oauthResult.accessToken;
287
+ if (!tokenToExchange) {
288
+ console.error('No token available to exchange with backend');
289
+ return null;
290
+ }
291
+ // Exchange OAuth token for backend JWT
292
+ const { data, error } = await fetcher('/api/users/login-oauth', {
293
+ method: 'POST',
294
+ body: {
295
+ accessToken: tokenToExchange,
296
+ provider: oauthResult.idToken ? 'google' : 'oauth', // Backend needs to know provider
297
+ },
298
+ });
299
+ if (error) {
300
+ console.error('Failed to exchange OAuth token with backend:', error);
301
+ return null;
302
+ }
303
+ return data;
304
+ }
162
305
  return {
163
306
  isOAuthEnabled,
164
307
  signInWithGoogle,
165
308
  signInWithProvider,
309
+ getOAuthUrl,
310
+ signInWithGoogleNative,
311
+ signInWithProviderNative,
312
+ exchangeOAuthToken,
166
313
  handleCallback,
167
314
  signOut,
168
315
  refreshToken,
@@ -1 +1 @@
1
- {"version":3,"file":"authRepository.js","sourceRoot":"","sources":["../../repositories/authRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authRepository.js","sourceRoot":"","sources":["../../repositories/authRepository.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,12 @@ export interface OAuthOptions {
10
10
  redirectTo?: string;
11
11
  /** Additional scopes to request */
12
12
  scopes?: string;
13
+ /** Skip automatic browser redirect (useful for Electron/Server-side) */
14
+ skipBrowserRedirect?: boolean;
15
+ /** Additional query parameters for the OAuth URL */
16
+ queryParams?: {
17
+ [key: string]: string;
18
+ };
13
19
  }
14
20
  /** Login response from backend after token exchange */
15
21
  export interface LoginResponse {
@@ -47,4 +53,41 @@ export interface LoginSupabaseRequest {
47
53
  export interface RefreshTokenRequest {
48
54
  refreshToken: string;
49
55
  }
56
+ /** Native OAuth provider configuration for React Native */
57
+ export interface NativeOAuthConfig {
58
+ /** Google OAuth client ID (for Android/iOS) */
59
+ googleClientId?: string;
60
+ /** Google iOS client ID (optional, for iOS-specific config) */
61
+ googleIosClientId?: string;
62
+ /** Discord OAuth client ID */
63
+ discordClientId?: string;
64
+ /** GitHub OAuth client ID */
65
+ githubClientId?: string;
66
+ /** Custom redirect URI (e.g., com.yourapp://oauth) */
67
+ redirectUri: string;
68
+ /** Additional scopes to request */
69
+ scopes?: string[];
70
+ }
71
+ /** Native OAuth authorization result from react-native-app-auth */
72
+ export interface NativeOAuthResult {
73
+ /** Access token from OAuth provider */
74
+ accessToken: string;
75
+ /** ID token (for OpenID Connect providers like Google) */
76
+ idToken?: string;
77
+ /** Refresh token */
78
+ refreshToken?: string;
79
+ /** Token expiration date */
80
+ accessTokenExpirationDate?: string;
81
+ /** Token type (usually 'Bearer') */
82
+ tokenType?: string;
83
+ /** Scopes granted */
84
+ scopes?: string[];
85
+ }
86
+ /** Options for native OAuth sign-in */
87
+ export interface NativeOAuthOptions {
88
+ /** Additional scopes to request */
89
+ scopes?: string[];
90
+ /** Use PKCE (recommended, default: true) */
91
+ usePKCE?: boolean;
92
+ }
50
93
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../types/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzE,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,yBAAyB;AACzB,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACL;AAED,4BAA4B;AAC5B,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../types/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzE,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oDAAoD;IACpD,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,yBAAyB;AACzB,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACL;AAED,4BAA4B;AAC5B,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;CACxB;AAMD,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAC9B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAC9B,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IAC/B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chanomhub/sdk",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "ChanomHub SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -53,13 +53,15 @@
53
53
  "msw": "^2.12.7",
54
54
  "next": "^16.1.1",
55
55
  "prettier": "^3.7.4",
56
+ "react-native-app-auth": "^8.1.0",
56
57
  "typescript": "^5.9.3",
57
58
  "typescript-eslint": "^8.51.0",
58
59
  "vitest": "^4.0.16"
59
60
  },
60
61
  "peerDependencies": {
61
62
  "@supabase/supabase-js": ">=2.0.0",
62
- "next": ">=13.0.0"
63
+ "next": ">=13.0.0",
64
+ "react-native-app-auth": ">=7.0.0"
63
65
  },
64
66
  "peerDependenciesMeta": {
65
67
  "next": {
@@ -67,6 +69,9 @@
67
69
  },
68
70
  "@supabase/supabase-js": {
69
71
  "optional": true
72
+ },
73
+ "react-native-app-auth": {
74
+ "optional": true
70
75
  }
71
76
  }
72
77
  }