@nauth-toolkit/social-google 0.1.13 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/nestjs/google-social-auth.module.d.ts +38 -0
  2. package/dist/nestjs/google-social-auth.module.d.ts.map +1 -1
  3. package/dist/nestjs/google-social-auth.module.js +54 -3
  4. package/dist/nestjs/google-social-auth.module.js.map +1 -1
  5. package/dist/nestjs/index.d.ts +5 -0
  6. package/dist/nestjs/index.d.ts.map +1 -1
  7. package/dist/nestjs/index.js +6 -0
  8. package/dist/nestjs/index.js.map +1 -1
  9. package/dist/src/dto/social-login.dto.d.ts +219 -0
  10. package/dist/src/dto/social-login.dto.d.ts.map +1 -1
  11. package/dist/src/dto/social-login.dto.js +219 -0
  12. package/dist/src/dto/social-login.dto.js.map +1 -1
  13. package/dist/src/google-oauth.client.d.ts +59 -0
  14. package/dist/src/google-oauth.client.d.ts.map +1 -1
  15. package/dist/src/google-oauth.client.js +62 -0
  16. package/dist/src/google-oauth.client.js.map +1 -1
  17. package/dist/src/google-social-auth.service.d.ts +43 -1
  18. package/dist/src/google-social-auth.service.d.ts.map +1 -1
  19. package/dist/src/google-social-auth.service.js +63 -1
  20. package/dist/src/google-social-auth.service.js.map +1 -1
  21. package/dist/src/index.d.ts +6 -0
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +6 -0
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/token-verifier.service.d.ts +45 -0
  26. package/dist/src/token-verifier.service.d.ts.map +1 -1
  27. package/dist/src/token-verifier.service.js +44 -1
  28. package/dist/src/token-verifier.service.js.map +1 -1
  29. package/dist/src/verified-token-profile.interface.d.ts +24 -0
  30. package/dist/src/verified-token-profile.interface.d.ts.map +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +2 -2
@@ -11,14 +11,45 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.SocialAccountsResponseDTO = exports.SocialLoginResponseDTO = exports.UnlinkSocialAccountDTO = exports.LinkSocialAccountDTO = exports.SocialCallbackDTO = exports.SocialLoginDTO = exports.SocialProvider = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Social provider enum
16
+ */
14
17
  var SocialProvider;
15
18
  (function (SocialProvider) {
16
19
  SocialProvider["GOOGLE"] = "google";
17
20
  SocialProvider["APPLE"] = "apple";
18
21
  SocialProvider["FACEBOOK"] = "facebook";
19
22
  })(SocialProvider || (exports.SocialProvider = SocialProvider = {}));
23
+ /**
24
+ * DTO for initiating social login
25
+ * Used to generate OAuth URLs for social providers
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Generate Google OAuth URL
30
+ * const dto = new SocialLoginDTO();
31
+ * dto.provider = 'google';
32
+ * dto.state = 'random-state-string';
33
+ * ```
34
+ */
20
35
  class SocialLoginDTO {
36
+ /**
37
+ * Social provider name
38
+ * Must be one of the configured providers
39
+ *
40
+ * Validation:
41
+ * - Must be a valid SocialProvider enum value
42
+ */
21
43
  provider;
44
+ /**
45
+ * Optional state parameter for OAuth flow
46
+ * Used to prevent CSRF attacks and maintain state
47
+ * If not provided, a random state will be generated
48
+ *
49
+ * Validation:
50
+ * - Must be a string if present
51
+ * - Max 500 characters (typical OAuth state length)
52
+ */
22
53
  state;
23
54
  }
24
55
  exports.SocialLoginDTO = SocialLoginDTO;
@@ -32,11 +63,63 @@ __decorate([
32
63
  (0, class_validator_1.MaxLength)(500, { message: 'State must not exceed 500 characters' }),
33
64
  __metadata("design:type", String)
34
65
  ], SocialLoginDTO.prototype, "state", void 0);
66
+ /**
67
+ * DTO for handling OAuth callback
68
+ * Used to process the authorization code from OAuth providers
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * // Handle Google OAuth callback
73
+ * const dto = new SocialCallbackDTO();
74
+ * dto.provider = 'google';
75
+ * dto.code = 'authorization-code-from-google';
76
+ * dto.state = 'state-from-initial-request';
77
+ * ```
78
+ */
35
79
  class SocialCallbackDTO {
80
+ /**
81
+ * Social provider name
82
+ * Must match the provider used in the initial request
83
+ *
84
+ * Validation:
85
+ * - Must be a valid SocialProvider enum value
86
+ */
36
87
  provider;
88
+ /**
89
+ * Authorization code from OAuth provider
90
+ * This code is exchanged for access token and user info
91
+ *
92
+ * Validation:
93
+ * - Must be a string
94
+ * - Max 1000 characters (typical OAuth code length)
95
+ */
37
96
  code;
97
+ /**
98
+ * State parameter from OAuth flow
99
+ * Must match the state sent in the initial request
100
+ *
101
+ * Validation:
102
+ * - Must be a string
103
+ * - Max 500 characters (typical OAuth state length)
104
+ */
38
105
  state;
106
+ /**
107
+ * Optional error parameter from OAuth provider
108
+ * Used when user denies permission or other errors occur
109
+ *
110
+ * Validation:
111
+ * - Must be a string if present
112
+ * - Max 100 characters
113
+ */
39
114
  error;
115
+ /**
116
+ * Optional error description from OAuth provider
117
+ * Provides more details about the error
118
+ *
119
+ * Validation:
120
+ * - Must be a string if present
121
+ * - Max 500 characters
122
+ */
40
123
  error_description;
41
124
  }
42
125
  exports.SocialCallbackDTO = SocialCallbackDTO;
@@ -68,9 +151,45 @@ __decorate([
68
151
  (0, class_validator_1.MaxLength)(500, { message: 'Error description must not exceed 500 characters' }),
69
152
  __metadata("design:type", String)
70
153
  ], SocialCallbackDTO.prototype, "error_description", void 0);
154
+ /**
155
+ * DTO for linking social account to existing user
156
+ * Used when an authenticated user wants to link a social provider
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * // Link Google account to current user
161
+ * const dto = new LinkSocialAccountDTO();
162
+ * dto.provider = 'google';
163
+ * dto.code = 'authorization-code-from-google';
164
+ * dto.state = 'state-from-initial-request';
165
+ * ```
166
+ */
71
167
  class LinkSocialAccountDTO {
168
+ /**
169
+ * Social provider name
170
+ * Must be one of the configured providers
171
+ *
172
+ * Validation:
173
+ * - Must be a valid SocialProvider enum value
174
+ */
72
175
  provider;
176
+ /**
177
+ * Authorization code from OAuth provider
178
+ * This code is exchanged for access token and user info
179
+ *
180
+ * Validation:
181
+ * - Must be a string
182
+ * - Max 1000 characters (typical OAuth code length)
183
+ */
73
184
  code;
185
+ /**
186
+ * State parameter from OAuth flow
187
+ * Must match the state sent in the initial request
188
+ *
189
+ * Validation:
190
+ * - Must be a string
191
+ * - Max 500 characters (typical OAuth state length)
192
+ */
74
193
  state;
75
194
  }
76
195
  exports.LinkSocialAccountDTO = LinkSocialAccountDTO;
@@ -90,7 +209,25 @@ __decorate([
90
209
  (0, class_validator_1.MaxLength)(500, { message: 'State must not exceed 500 characters' }),
91
210
  __metadata("design:type", String)
92
211
  ], LinkSocialAccountDTO.prototype, "state", void 0);
212
+ /**
213
+ * DTO for unlinking social account
214
+ * Used when an authenticated user wants to remove a social provider
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * // Unlink Google account from current user
219
+ * const dto = new UnlinkSocialAccountDTO();
220
+ * dto.provider = 'google';
221
+ * ```
222
+ */
93
223
  class UnlinkSocialAccountDTO {
224
+ /**
225
+ * Social provider name to unlink
226
+ * Must be one of the currently linked providers
227
+ *
228
+ * Validation:
229
+ * - Must be a valid SocialProvider enum value
230
+ */
94
231
  provider;
95
232
  }
96
233
  exports.UnlinkSocialAccountDTO = UnlinkSocialAccountDTO;
@@ -98,11 +235,71 @@ __decorate([
98
235
  (0, class_validator_1.IsEnum)(SocialProvider, { message: 'Provider must be one of: google, apple, facebook' }),
99
236
  __metadata("design:type", String)
100
237
  ], UnlinkSocialAccountDTO.prototype, "provider", void 0);
238
+ /**
239
+ * Response DTO for social login
240
+ * Contains authentication tokens and user information
241
+ *
242
+ * @example
243
+ * ```typescript
244
+ * // Response after successful social login
245
+ * {
246
+ * "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
247
+ * "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
248
+ * "expiresIn": 900,
249
+ * "user": {
250
+ * "sub": "user-uuid",
251
+ * "email": "user@example.com",
252
+ * "firstName": "John",
253
+ * "lastName": "Doe",
254
+ * "isEmailVerified": true,
255
+ * "socialProviders": ["google"]
256
+ * }
257
+ * }
258
+ * ```
259
+ */
101
260
  class SocialLoginResponseDTO {
261
+ /**
262
+ * JWT access token for API authentication
263
+ *
264
+ * Validation:
265
+ * - Must be a string
266
+ * - Max 2048 characters (typical JWT length)
267
+ */
102
268
  accessToken;
269
+ /**
270
+ * JWT refresh token for token renewal
271
+ *
272
+ * Validation:
273
+ * - Must be a string
274
+ * - Max 2048 characters (typical JWT length)
275
+ */
103
276
  refreshToken;
277
+ /**
278
+ * Access token expiration timestamp (Unix timestamp in seconds)
279
+ *
280
+ * Validation:
281
+ * - Must be a number
282
+ */
104
283
  accessTokenExpiresAt;
284
+ /**
285
+ * Refresh token expiration timestamp (Unix timestamp in seconds)
286
+ *
287
+ * Validation:
288
+ * - Must be a number
289
+ */
105
290
  refreshTokenExpiresAt;
291
+ /**
292
+ * User information
293
+ *
294
+ * Validation:
295
+ * - Nested fields validated in service layer:
296
+ * - sub: UUID v4 format, max 36 chars
297
+ * - email: Valid email format, max 255 chars
298
+ * - firstName: String, max 100 chars
299
+ * - lastName: String, max 100 chars
300
+ * - isEmailVerified: Boolean
301
+ * - socialProviders: Array of strings, each max 50 chars
302
+ */
106
303
  user;
107
304
  }
108
305
  exports.SocialLoginResponseDTO = SocialLoginResponseDTO;
@@ -124,7 +321,29 @@ __decorate([
124
321
  (0, class_validator_1.IsNumber)({}, { message: 'Refresh token expiration must be a number' }),
125
322
  __metadata("design:type", Number)
126
323
  ], SocialLoginResponseDTO.prototype, "refreshTokenExpiresAt", void 0);
324
+ /**
325
+ * Response DTO for social account information
326
+ * Contains details about linked social accounts
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * // Response for user's linked social accounts
331
+ * {
332
+ * "accounts": [
333
+ * {
334
+ * "provider": "google",
335
+ * "providerEmail": "user@gmail.com",
336
+ * "linkedAt": "2023-01-01T00:00:00Z",
337
+ * "lastUsedAt": "2023-01-15T12:00:00Z"
338
+ * }
339
+ * ]
340
+ * }
341
+ * ```
342
+ */
127
343
  class SocialAccountsResponseDTO {
344
+ /**
345
+ * Array of linked social accounts
346
+ */
128
347
  accounts;
129
348
  }
130
349
  exports.SocialAccountsResponseDTO = SocialAccountsResponseDTO;
@@ -1 +1 @@
1
- {"version":3,"file":"social-login.dto.js","sourceRoot":"","sources":["../../../src/dto/social-login.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"social-login.dto.js","sourceRoot":"","sources":["../../../src/dto/social-login.dto.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,74 @@
1
1
  import { OAuthClient, OAuthConfig, OAuthUserProfile } from '@nauth-toolkit/core';
2
+ /**
3
+ * Google OAuth Client Implementation (Platform-Agnostic)
4
+ *
5
+ * Handles OAuth flow with Google's OpenID Connect API
6
+ * Uses Google's userinfo endpoint for profile data
7
+ *
8
+ * This is a plain TypeScript class with no framework dependencies.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const client = new GoogleOAuthClient({
13
+ * clientId: 'google_client_id',
14
+ * clientSecret: 'google_client_secret',
15
+ * redirectUri: 'https://myapp.com/auth/google/callback'
16
+ * });
17
+ *
18
+ * const profile = await client.getUserProfile(accessToken);
19
+ * ```
20
+ */
2
21
  export declare class GoogleOAuthClient implements OAuthClient {
3
22
  private readonly config;
4
23
  private readonly tokenEndpoint;
5
24
  private readonly userInfoEndpoint;
6
25
  constructor(config: OAuthConfig);
26
+ /**
27
+ * Exchange authorization code for access token
28
+ *
29
+ * @param code - Authorization code from Google OAuth callback
30
+ * @param redirectUri - Redirect URI used in OAuth flow
31
+ * @returns Access token and optional refresh token
32
+ * @throws {Error} When token exchange fails
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const tokens = await client.exchangeCodeForToken(code, redirectUri);
37
+ * console.log(tokens.accessToken); // access_token_here
38
+ * ```
39
+ */
7
40
  exchangeCodeForToken(code: string, redirectUri: string): Promise<{
8
41
  accessToken: string;
9
42
  refreshToken?: string;
10
43
  expiresIn?: number;
11
44
  }>;
45
+ /**
46
+ * Get user profile from Google using access token
47
+ *
48
+ * @param accessToken - OAuth access token
49
+ * @returns User profile data
50
+ * @throws {Error} When API call fails or token is invalid
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const profile = await client.getUserProfile(accessToken);
55
+ * console.log(profile.email); // user@gmail.com
56
+ * console.log(profile.firstName); // John
57
+ * ```
58
+ */
12
59
  getUserProfile(accessToken: string): Promise<OAuthUserProfile>;
60
+ /**
61
+ * Generate Google OAuth authorization URL
62
+ *
63
+ * @param state - Optional state parameter for CSRF protection
64
+ * @returns Authorization URL for redirecting user to Google
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const authUrl = client.getAuthorizationUrl('random-state');
69
+ * // Redirect user to authUrl
70
+ * ```
71
+ */
13
72
  getAuthorizationUrl(state?: string): string;
14
73
  }
15
74
  //# sourceMappingURL=google-oauth.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-oauth.client.d.ts","sourceRoot":"","sources":["../../src/google-oauth.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAiC,MAAM,qBAAqB,CAAC;AAqBhH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmD;gBAExE,MAAM,EAAE,WAAW;IAqBzB,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAuDI,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkDpE,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAiB5C"}
1
+ {"version":3,"file":"google-oauth.client.d.ts","sourceRoot":"","sources":["../../src/google-oauth.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAiC,MAAM,qBAAqB,CAAC;AAEhH;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyC;IACvE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmD;gBAExE,MAAM,EAAE,WAAW;IAO/B;;;;;;;;;;;;;OAaG;IACG,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAyCF;;;;;;;;;;;;;OAaG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsCpE;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;CAiB5C"}
@@ -2,6 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GoogleOAuthClient = void 0;
4
4
  const core_1 = require("@nauth-toolkit/core");
5
+ /**
6
+ * Google OAuth Client Implementation (Platform-Agnostic)
7
+ *
8
+ * Handles OAuth flow with Google's OpenID Connect API
9
+ * Uses Google's userinfo endpoint for profile data
10
+ *
11
+ * This is a plain TypeScript class with no framework dependencies.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const client = new GoogleOAuthClient({
16
+ * clientId: 'google_client_id',
17
+ * clientSecret: 'google_client_secret',
18
+ * redirectUri: 'https://myapp.com/auth/google/callback'
19
+ * });
20
+ *
21
+ * const profile = await client.getUserProfile(accessToken);
22
+ * ```
23
+ */
5
24
  class GoogleOAuthClient {
6
25
  config;
7
26
  tokenEndpoint = 'https://oauth2.googleapis.com/token';
@@ -12,6 +31,20 @@ class GoogleOAuthClient {
12
31
  ...config,
13
32
  };
14
33
  }
34
+ /**
35
+ * Exchange authorization code for access token
36
+ *
37
+ * @param code - Authorization code from Google OAuth callback
38
+ * @param redirectUri - Redirect URI used in OAuth flow
39
+ * @returns Access token and optional refresh token
40
+ * @throws {Error} When token exchange fails
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const tokens = await client.exchangeCodeForToken(code, redirectUri);
45
+ * console.log(tokens.accessToken); // access_token_here
46
+ * ```
47
+ */
15
48
  async exchangeCodeForToken(code, redirectUri) {
16
49
  const params = new URLSearchParams({
17
50
  client_id: this.config.clientId,
@@ -46,6 +79,20 @@ class GoogleOAuthClient {
46
79
  throw new core_1.NAuthException(core_1.AuthErrorCode.SOCIAL_TOKEN_INVALID, 'Google token exchange failed: Unknown error');
47
80
  }
48
81
  }
82
+ /**
83
+ * Get user profile from Google using access token
84
+ *
85
+ * @param accessToken - OAuth access token
86
+ * @returns User profile data
87
+ * @throws {Error} When API call fails or token is invalid
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const profile = await client.getUserProfile(accessToken);
92
+ * console.log(profile.email); // user@gmail.com
93
+ * console.log(profile.firstName); // John
94
+ * ```
95
+ */
49
96
  async getUserProfile(accessToken) {
50
97
  try {
51
98
  const response = await fetch(this.userInfoEndpoint, {
@@ -60,6 +107,7 @@ class GoogleOAuthClient {
60
107
  throw new core_1.NAuthException(core_1.AuthErrorCode.INTERNAL_ERROR, `Google API call failed: ${response.status} ${response.statusText}`);
61
108
  }
62
109
  const data = (await response.json());
110
+ // Map Google's response to our standardized format
63
111
  return {
64
112
  id: data.id,
65
113
  email: data.email || null,
@@ -77,6 +125,18 @@ class GoogleOAuthClient {
77
125
  throw new core_1.NAuthException(core_1.AuthErrorCode.INTERNAL_ERROR, 'Google profile fetch failed: Unknown error');
78
126
  }
79
127
  }
128
+ /**
129
+ * Generate Google OAuth authorization URL
130
+ *
131
+ * @param state - Optional state parameter for CSRF protection
132
+ * @returns Authorization URL for redirecting user to Google
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const authUrl = client.getAuthorizationUrl('random-state');
137
+ * // Redirect user to authUrl
138
+ * ```
139
+ */
80
140
  getAuthorizationUrl(state) {
81
141
  const params = new URLSearchParams({
82
142
  client_id: this.config.clientId,
@@ -84,6 +144,8 @@ class GoogleOAuthClient {
84
144
  scope: this.config.scopes?.join(' ') || 'openid email profile',
85
145
  response_type: 'code',
86
146
  access_type: 'offline',
147
+ // Don't specify prompt - let Google decide when to show consent screen
148
+ // Google will show it on first login and skip it for returning users
87
149
  });
88
150
  if (state) {
89
151
  params.append('state', state);
@@ -1 +1 @@
1
- {"version":3,"file":"google-oauth.client.js","sourceRoot":"","sources":["../../src/google-oauth.client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-oauth.client.js","sourceRoot":"","sources":["../../src/google-oauth.client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,37 @@
1
1
  import { AuthService, SocialAuthService, ClientInfoService, NAuthConfig, NAuthLogger, OAuthUserProfile, ISocialAuthProviderService, ITokenVerifierService, PhoneVerificationService, BaseUser } from '@nauth-toolkit/core';
2
- import { BaseSocialAuthProviderService, JwtService, SessionService, AuthChallengeHelperService, AuthAuditService, TrustedDeviceService } from '@nauth-toolkit/core/internal';
2
+ import { BaseSocialAuthProviderService, JwtService, SessionService, AuthChallengeHelperService, AuthAuditService, // Internal version with recordEvent()
3
+ TrustedDeviceService } from '@nauth-toolkit/core/internal';
3
4
  import { Repository } from 'typeorm';
5
+ /**
6
+ * Google Social Authentication Service (Platform-Agnostic)
7
+ *
8
+ * Handles Google OAuth flow including:
9
+ * - OAuth web flow (redirect-based)
10
+ * - Native mobile token verification
11
+ * - Account linking
12
+ *
13
+ * This is a plain TypeScript class with no framework dependencies.
14
+ * Use `@nauth-toolkit/social-google/nestjs` for NestJS integration.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Direct instantiation (platform-agnostic)
19
+ * const googleAuth = new GoogleSocialAuthService(
20
+ * config,
21
+ * logger,
22
+ * authService,
23
+ * socialAuthService,
24
+ * jwtService,
25
+ * sessionService,
26
+ * challengeHelper,
27
+ * clientInfoService,
28
+ * auditService,
29
+ * stateStore,
30
+ * phoneVerificationService,
31
+ * tokenVerifier
32
+ * );
33
+ * ```
34
+ */
4
35
  export declare class GoogleSocialAuthService extends BaseSocialAuthProviderService implements ISocialAuthProviderService {
5
36
  readonly providerName = "google";
6
37
  private readonly oauthClient;
@@ -9,8 +40,19 @@ export declare class GoogleSocialAuthService extends BaseSocialAuthProviderServi
9
40
  timestamp: number;
10
41
  provider: string;
11
42
  }>, userRepository: Repository<BaseUser>, phoneVerificationService?: PhoneVerificationService, auditService?: AuthAuditService, trustedDeviceService?: TrustedDeviceService, tokenVerifier?: ITokenVerifierService);
43
+ /**
44
+ * Generate OAuth authorization URL for Google
45
+ */
12
46
  getAuthUrl(state?: string): Promise<string>;
47
+ /**
48
+ * Get OAuth user profile from callback
49
+ *
50
+ * Exchanges authorization code for access token and fetches user profile.
51
+ */
13
52
  protected getOAuthProfile(code: string, _state: string): Promise<OAuthUserProfile>;
53
+ /**
54
+ * Verify Google ID token from native mobile apps
55
+ */
14
56
  protected verifyNativeToken(idToken: string, _accessToken?: string, profileData?: unknown): Promise<OAuthUserProfile>;
15
57
  }
16
58
  //# sourceMappingURL=google-social-auth.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-social-auth.service.d.ts","sourceRoot":"","sources":["../../src/google-social-auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,gBAAgB,EAGhB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,6BAA6B,EAC7B,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAmCrC,qBAAa,uBAAwB,SAAQ,6BAA8B,YAAW,0BAA0B;IAC9G,QAAQ,CAAC,YAAY,YAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;gBAG3D,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,0BAA0B,EAC3C,iBAAiB,EAAE,iBAAiB,EAEpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAChE,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,EAEpC,wBAAwB,CAAC,EAAE,wBAAwB,EAEnD,YAAY,CAAC,EAAE,gBAAgB,EAE/B,oBAAoB,CAAC,EAAE,oBAAoB,EAE3C,aAAa,CAAC,EAAE,qBAAqB;IAsDjC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAcjC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;cAoBxE,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,gBAAgB,CAAC;CAkC7B"}
1
+ {"version":3,"file":"google-social-auth.service.d.ts","sourceRoot":"","sources":["../../src/google-social-auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,gBAAgB,EAGhB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,6BAA6B,EAC7B,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,gBAAgB,EAAE,sCAAsC;AACxD,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,uBAAwB,SAAQ,6BAA8B,YAAW,0BAA0B;IAC9G,QAAQ,CAAC,YAAY,YAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;gBAG3D,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,0BAA0B,EAC3C,iBAAiB,EAAE,iBAAiB,EAEpC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EAChE,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,EAEpC,wBAAwB,CAAC,EAAE,wBAAwB,EAEnD,YAAY,CAAC,EAAE,gBAAgB,EAE/B,oBAAoB,CAAC,EAAE,oBAAoB,EAE3C,aAAa,CAAC,EAAE,qBAAqB;IAmDvC;;OAEG;IACG,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASjD;;;;OAIG;cACa,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBxF;;OAEG;cACa,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,gBAAgB,CAAC;CAkC7B"}