@rempays/shared-core 1.0.2-beta.1 → 1.0.2-beta.10

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 (44) hide show
  1. package/README.md +133 -267
  2. package/dist/auth/authorizer-example.js +7 -3
  3. package/dist/auth/index.js +5 -1
  4. package/dist/auth/jwt-validator.js +7 -3
  5. package/dist/auth/types.js +2 -1
  6. package/dist/cognito/cognito.service.js +21 -17
  7. package/dist/cognito/index.js +20 -2
  8. package/dist/cognito/types.js +2 -1
  9. package/dist/dynamodb/dynamodb.client.js +31 -27
  10. package/dist/dynamodb/index.d.ts +1 -0
  11. package/dist/dynamodb/index.js +18 -1
  12. package/dist/dynamodb/modules/chat/chat.service.d.ts +59 -0
  13. package/dist/dynamodb/modules/chat/chat.service.js +294 -0
  14. package/dist/dynamodb/modules/chat/index.d.ts +2 -0
  15. package/dist/dynamodb/modules/chat/index.js +18 -0
  16. package/dist/dynamodb/modules/chat/types.d.ts +27 -0
  17. package/dist/dynamodb/modules/chat/types.js +2 -0
  18. package/dist/dynamodb/modules/index.d.ts +2 -0
  19. package/dist/dynamodb/modules/index.js +18 -0
  20. package/dist/dynamodb/modules/shared-types.d.ts +9 -0
  21. package/dist/dynamodb/modules/shared-types.js +2 -0
  22. package/dist/dynamodb/modules/system-prompt/index.d.ts +2 -0
  23. package/dist/dynamodb/modules/system-prompt/index.js +18 -0
  24. package/dist/dynamodb/modules/system-prompt/system-prompt.service.d.ts +51 -0
  25. package/dist/dynamodb/modules/system-prompt/system-prompt.service.js +262 -0
  26. package/dist/dynamodb/modules/system-prompt/types.d.ts +13 -0
  27. package/dist/dynamodb/modules/system-prompt/types.js +2 -0
  28. package/dist/facebook-api/embedded-signup.d.ts +56 -0
  29. package/dist/facebook-api/embedded-signup.js +203 -0
  30. package/dist/facebook-api/facebook.d.ts +1 -67
  31. package/dist/facebook-api/facebook.js +7 -3
  32. package/dist/facebook-api/http.js +9 -3
  33. package/dist/facebook-api/index.d.ts +7 -2
  34. package/dist/facebook-api/index.js +27 -1
  35. package/dist/facebook-api/types.d.ts +109 -0
  36. package/dist/facebook-api/types.js +2 -0
  37. package/dist/http/client.js +12 -4
  38. package/dist/http/index.js +6 -1
  39. package/dist/index.js +23 -7
  40. package/dist/s3/index.js +17 -1
  41. package/dist/s3/s3.service.js +9 -5
  42. package/dist/textract/index.js +17 -1
  43. package/dist/textract/textract.service.js +9 -5
  44. package/package.json +2 -2
package/README.md CHANGED
@@ -1,346 +1,212 @@
1
1
  # @rempays/shared-core
2
2
 
3
- Core utilities layer for RemPays platform with AWS services integration (Cognito, Auth, S3, Textract, Facebook API, HTTP Client).
3
+ Librería de utilidades core para la plataforma RemPays con integración de servicios AWS (Cognito, Auth, S3, Textract, Facebook API, HTTP Client, DynamoDB).
4
4
 
5
- ## Installation
5
+ ## Instalación
6
6
 
7
7
  ```bash
8
8
  npm install @rempays/shared-core
9
9
  ```
10
10
 
11
- ## Modules
11
+ ## Módulos
12
12
 
13
- ### 1. Cognito Service
13
+ Este paquete proporciona múltiples servicios organizados por funcionalidad. Cada módulo tiene su propia documentación detallada:
14
14
 
15
- Authentication and user management with AWS Cognito.
15
+ ### Autenticación y Autorización
16
+ - **[Cognito](src/cognito/README.md)** - Autenticación y gestión de usuarios con AWS Cognito
17
+ - **[Auth/JWT Validator](src/auth/README.md)** - Validación de tokens JWT para Lambda Authorizers
16
18
 
17
- ```typescript
18
- import { CognitoService } from '@rempays/shared-core/cognito';
19
+ ### Almacenamiento y Datos
20
+ - **[DynamoDB - Chat Service](src/dynamodb/modules/chat/README.md)** - Gestión de chats y mensajes
21
+ - **[DynamoDB - System Prompt Service](src/dynamodb/modules/system-prompt/README.md)** - Prompts del sistema versionados
22
+ - **[S3](src/s3/README.md)** - Operaciones de almacenamiento de archivos
19
23
 
20
- const cognito = new CognitoService({
21
- userPoolId: 'us-east-1_xxxxx',
22
- clientId: 'xxxxx',
23
- region: 'us-east-1'
24
- });
24
+ ### APIs Externas
25
+ - **[Facebook API (WhatsApp)](src/facebook-api/README.md)** - Integración con WhatsApp Business API
26
+ - **[HTTP Client](src/http/README.md)** - Cliente HTTP genérico con soporte de autenticación
25
27
 
26
- // Register user
27
- const result = await cognito.signUp({
28
- phoneNumber: '+1234567890',
29
- email: 'user@example.com',
30
- password: 'SecurePass123'
31
- });
28
+ ### Procesamiento de Documentos
29
+ - **[Textract](src/textract/README.md)** - Extracción de texto de documentos
32
30
 
33
- // Confirm registration with OTP
34
- await cognito.confirmSignUp('+1234567890', '123456');
31
+ ## Inicio Rápido
35
32
 
36
- // Sign in with custom auth
37
- const authResponse = await cognito.signInCustomAuth({
38
- phoneNumber: '+1234567890'
39
- });
33
+ ### Autenticación
40
34
 
41
- // Verify OTP code
42
- const tokens = await cognito.respondToAuthChallenge({
43
- phoneNumber: '+1234567890',
44
- code: '123456',
45
- session: authResponse.session
46
- });
35
+ ```typescript
36
+ import { CognitoService } from '@rempays/shared-core/cognito';
37
+ import { JwtValidator } from '@rempays/shared-core/auth';
47
38
 
48
- // Get user info
49
- const user = await cognito.getUser(tokens.accessToken!);
39
+ // Registro y login de usuarios
40
+ const cognito = new CognitoService({
41
+ userPoolId: process.env.COGNITO_USER_POOL_ID!,
42
+ clientId: process.env.COGNITO_CLIENT_ID!,
43
+ region: 'us-east-1',
44
+ });
50
45
 
51
- // Refresh token
52
- const newTokens = await cognito.refreshToken({
53
- refreshToken: tokens.refreshToken!
46
+ // Validación de JWT para authorizers
47
+ const validator = new JwtValidator({
48
+ region: 'us-east-1',
49
+ userPoolId: process.env.USER_POOL_ID!,
54
50
  });
55
51
  ```
56
52
 
57
- ### 2. JWT Validator (Auth)
58
-
59
- Validate Cognito JWT tokens for Lambda Authorizers.
53
+ ### Servicios de DynamoDB
60
54
 
61
55
  ```typescript
62
- import { JwtValidator } from '@rempays/shared-core/auth';
56
+ import { ChatService, SystemPromptService } from '@rempays/shared-core/dynamodb';
63
57
 
64
- const validator = new JwtValidator({
65
- region: 'us-east-1',
66
- userPoolId: 'us-east-1_xxxxx'
67
- });
58
+ // Gestión de chats
59
+ const chatService = new ChatService();
60
+ await chatService.createChat({...});
61
+ await chatService.getLastMessages('chat-123', 10);
68
62
 
69
- // Validate token from Authorization header
70
- const decoded = await validator.validateFromHeader(event.headers.Authorization);
71
- // Returns: { sub, username, exp, iat, token_use, ... }
72
-
73
- // Or validate token directly
74
- const token = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...';
75
- const decoded = await validator.validate(token);
76
-
77
- // Use in Lambda Authorizer
78
- export const handler = async (event: any) => {
79
- try {
80
- const decoded = await validator.validateFromHeader(event.headers.Authorization);
81
- return generateAllowPolicy(decoded.sub, event.methodArn, decoded);
82
- } catch (error) {
83
- return generateDenyPolicy('user', event.methodArn);
84
- }
85
- };
63
+ // Prompts del sistema
64
+ const promptService = new SystemPromptService();
65
+ const prompt = await promptService.getLatestActivePrompt('welcome');
86
66
  ```
87
67
 
88
- ### 3. HTTP Client
89
-
90
- Generic HTTP client built on axios with authentication support.
68
+ ### Mensajería WhatsApp
91
69
 
92
70
  ```typescript
93
- import { createHttpClient, HttpClient } from '@rempays/shared-core/http';
94
-
95
- // Create basic client
96
- const client = createHttpClient();
71
+ import { FacebookApi } from '@rempays/shared-core/facebook-api';
97
72
 
98
- // Create client with auth token
99
- const authClient = createHttpClient({
100
- token: 'your-bearer-token',
101
- baseURL: 'https://api.example.com',
102
- timeout: 5000
73
+ await FacebookApi.sendText({
74
+ to: '+1234567890',
75
+ body: '¡Hola desde WhatsApp!',
103
76
  });
104
77
 
105
- // Use convenience methods
106
- const data = await client.get('/users');
107
- await client.post('/users', { name: 'John' });
108
- await client.put('/users/1', { name: 'Jane' });
109
- await client.delete('/users/1');
110
-
111
- // Manage auth token dynamically
112
- authClient.setAuthToken('new-token');
113
- authClient.removeAuthToken();
114
-
115
- // Access underlying axios instance
116
- const axiosInstance = client.getInstance();
78
+ await FacebookApi.sendInteractiveButtons({
79
+ to: '+1234567890',
80
+ body: 'Elige una opción:',
81
+ buttons: [
82
+ { type: 'reply', id: 'opt1', title: 'Opción 1' },
83
+ { type: 'reply', id: 'opt2', title: 'Opción 2' },
84
+ ],
85
+ });
117
86
  ```
118
87
 
119
- ### 4. S3 Service
120
-
121
- File operations with AWS S3.
88
+ ### Almacenamiento y Procesamiento de Archivos
122
89
 
123
90
  ```typescript
124
91
  import { S3Service } from '@rempays/shared-core/s3';
92
+ import { TextractService } from '@rempays/shared-core/textract';
125
93
 
126
- // Upload file
94
+ // Subir archivo
127
95
  const s3Uri = await S3Service.uploadFile({
128
- key: 'documents/file.pdf',
129
- body: buffer,
130
- contentType: 'application/pdf',
131
- metadata: { userId: '123' }
96
+ key: 'documents/file.pdf',
97
+ body: buffer,
98
+ contentType: 'application/pdf',
132
99
  });
133
100
 
134
- // Download file
135
- const fileBuffer = await S3Service.downloadFile('documents/file.pdf');
136
-
137
- // Generate document key
138
- const key = S3Service.generateDocumentKey({
139
- chatId: 'chat123',
140
- messageId: 'msg456',
141
- extension: 'pdf'
142
- });
101
+ // Extraer texto
102
+ const text = await TextractService.analyzeDocumentFromS3(
103
+ 'my-bucket',
104
+ 'documents/file.pdf'
105
+ );
143
106
  ```
144
107
 
145
- ### 5. Textract Service
146
-
147
- Extract text from documents using AWS Textract.
108
+ ### Cliente HTTP
148
109
 
149
110
  ```typescript
150
- import { TextractService } from '@rempays/shared-core/textract';
111
+ import { createHttpClient } from '@rempays/shared-core/http';
151
112
 
152
- // Analyze document from S3
153
- const text = await TextractService.analyzeDocumentFromS3('my-bucket', 'document.pdf');
113
+ const client = createHttpClient({
114
+ baseURL: 'https://api.example.com',
115
+ token: 'bearer-token',
116
+ });
154
117
 
155
- // Analyze document from bytes
156
- const imageBytes = new Uint8Array(buffer);
157
- const extractedText = await TextractService.analyzeDocumentFromBytes(imageBytes);
118
+ const data = await client.get('/users');
119
+ await client.post('/users', { name: 'John' });
158
120
  ```
159
121
 
160
- ### 6. Facebook API (WhatsApp)
122
+ ## Variables de Entorno
161
123
 
162
- Send messages via WhatsApp Business API.
124
+ ### Requeridas
163
125
 
164
- ```typescript
165
- import { FacebookApi } from '@rempays/shared-core/facebook-api';
126
+ ```bash
127
+ # AWS
128
+ AWS_REGION=us-east-1
166
129
 
167
- // Send text message
168
- await FacebookApi.sendText({
169
- to: '+1234567890',
170
- body: 'Hello from RemPays!',
171
- previewUrl: true
172
- });
130
+ # Cognito
131
+ COGNITO_USER_POOL_ID=us-east-1_XXXXXXXXX
132
+ COGNITO_CLIENT_ID=XXXXXXXXXXXXXXXXXXXXXXXXXX
173
133
 
174
- // Send template
175
- await FacebookApi.sendTemplate({
176
- to: '+1234567890',
177
- name: 'welcome_template',
178
- languageCode: 'en',
179
- components: []
180
- });
134
+ # DynamoDB
135
+ DYNAMODB_CHAT_TABLE=rempays-chats
136
+ DYNAMODB_SYSTEM_PROMPT_TABLE=rempays-system-prompts
181
137
 
182
- // Send interactive buttons
183
- await FacebookApi.sendInteractiveButtons({
184
- to: '+1234567890',
185
- body: 'Choose an option:',
186
- buttons: [
187
- { type: 'reply', id: 'opt1', title: 'Option 1' },
188
- { type: 'reply', id: 'opt2', title: 'Option 2' }
189
- ]
190
- });
138
+ # Facebook API (WhatsApp)
139
+ FACEBOOK_API_TOKEN=your_facebook_token
140
+ FACEBOOK_PHONE_NUMBER_ID=your_phone_number_id
141
+ FACEBOOK_API_VERSION=v18.0 # Opcional
191
142
 
192
- // Send interactive list
193
- await FacebookApi.sendInteractiveList({
194
- to: '+1234567890',
195
- body: 'Select from menu:',
196
- buttonText: 'View Menu',
197
- sections: [
198
- {
199
- title: 'Main Options',
200
- rows: [
201
- { id: '1', title: 'Option 1', description: 'Description 1' },
202
- { id: '2', title: 'Option 2', description: 'Description 2' }
203
- ]
204
- }
205
- ]
206
- });
143
+ # S3
144
+ S3_BUCKET_NAME=your-bucket-name
145
+ ```
207
146
 
208
- // Send image
209
- await FacebookApi.sendImage({
210
- to: '+1234567890',
211
- link: 'https://example.com/image.jpg',
212
- caption: 'Check this out!'
213
- });
147
+ ## Documentación de Módulos
214
148
 
215
- // Send document
216
- await FacebookApi.sendDocument({
217
- to: '+1234567890',
218
- link: 'https://example.com/document.pdf',
219
- filename: 'invoice.pdf',
220
- caption: 'Your invoice'
221
- });
149
+ Para documentación detallada, ejemplos y referencia de API, consulta el README de cada módulo:
222
150
 
223
- // Mark as read
224
- await FacebookApi.markAsRead({ messageId: 'msg_id' });
225
- ```
151
+ - [Cognito Service](src/cognito/README.md) - Flujos completos de autenticación
152
+ - [JWT Validator](src/auth/README.md) - Implementación de Lambda authorizer
153
+ - [Chat Service](src/dynamodb/modules/chat/README.md) - Gestión de chats y mensajes
154
+ - [System Prompt Service](src/dynamodb/modules/system-prompt/README.md) - Versionado de prompts
155
+ - [S3 Service](src/s3/README.md) - Subida/descarga de archivos
156
+ - [Textract Service](src/textract/README.md) - Extracción de texto de documentos
157
+ - [Facebook API](src/facebook-api/README.md) - Mensajería WhatsApp
158
+ - [HTTP Client](src/http/README.md) - Peticiones HTTP genéricas
226
159
 
227
- ## Environment Variables
160
+ ## Permisos IAM
228
161
 
229
- ### Cognito
230
- ```bash
231
- COGNITO_USER_POOL_ID=us-east-1_XXXXXXXXX
232
- COGNITO_CLIENT_ID=XXXXXXXXXXXXXXXXXXXXXXXXXX
233
- AWS_REGION=us-east-1
234
- ```
162
+ Cada servicio requiere permisos IAM específicos. Consulta la documentación de cada módulo para requisitos detallados de permisos.
235
163
 
236
- ### Facebook API (WhatsApp)
237
- ```bash
238
- FACEBOOK_API_TOKEN=your_facebook_token
239
- FACEBOOK_PHONE_NUMBER_ID=your_phone_number_id
240
- FACEBOOK_API_VERSION=v18.0 # Optional, defaults to v18.0
241
- ```
242
-
243
- ## Available Methods Summary
244
-
245
- ### CognitoService
246
- - `signUp(params)` - Register new user
247
- - `confirmSignUp(phoneNumber, code)` - Confirm registration with OTP
248
- - `signInCustomAuth(params)` - Sign in with custom authentication
249
- - `signInSRP(params)` - Sign in with SRP
250
- - `respondToAuthChallenge(params)` - Verify OTP code
251
- - `refreshToken(params)` - Refresh access tokens
252
- - `getUser(accessToken)` - Get authenticated user info
253
- - `adminGetUser(phoneNumber)` - Get user info (admin)
254
- - `adminInitiateAuth(phoneNumber)` - Initiate auth as admin
255
-
256
- ### JwtValidator
257
- - `validate(token)` - Validate JWT token
258
- - `validateFromHeader(authHeader)` - Validate token from Authorization header
259
- - `extractToken(authHeader)` - Extract token from Bearer header
260
-
261
- ### HttpClient
262
- - `get<T>(url, config?)` - GET request
263
- - `post<T>(url, data?, config?)` - POST request
264
- - `put<T>(url, data?, config?)` - PUT request
265
- - `patch<T>(url, data?, config?)` - PATCH request
266
- - `delete<T>(url, config?)` - DELETE request
267
- - `setAuthToken(token)` - Set Bearer token
268
- - `removeAuthToken()` - Remove Bearer token
269
- - `getInstance()` - Get axios instance
270
-
271
- ### S3Service
272
- - `uploadFile(params)` - Upload file to S3
273
- - `downloadFile(key)` - Download file from S3
274
- - `generateDocumentKey(params)` - Generate unique document key
275
-
276
- ### TextractService
277
- - `analyzeDocumentFromS3(bucket, key)` - Extract text from S3 document
278
- - `analyzeDocumentFromBytes(bytes)` - Extract text from byte array
279
-
280
- ### FacebookApi
281
- - `sendText(params)` - Send text message
282
- - `sendTemplate(params)` - Send template message
283
- - `sendInteractiveButtons(params)` - Send interactive buttons
284
- - `sendInteractiveList(params)` - Send interactive list
285
- - `sendImage(params)` - Send image
286
- - `sendDocument(params)` - Send document
287
- - `sendLocation(params)` - Send location
288
- - `markAsRead(params)` - Mark message as read
289
- - `setTyping(params)` - Set typing indicator
290
-
291
- ## IAM Permissions Required
292
-
293
- Your Lambda or application needs these permissions:
164
+ ### Resumen de Permisos Mínimos
294
165
 
295
166
  ```json
296
167
  {
297
- "Version": "2012-10-17",
298
- "Statement": [
299
- {
300
- "Effect": "Allow",
301
- "Action": [
302
- "cognito-idp:SignUp",
303
- "cognito-idp:ConfirmSignUp",
304
- "cognito-idp:InitiateAuth",
305
- "cognito-idp:RespondToAuthChallenge",
306
- "cognito-idp:GetUser",
307
- "cognito-idp:AdminGetUser",
308
- "cognito-idp:AdminInitiateAuth"
309
- ],
310
- "Resource": "arn:aws:cognito-idp:REGION:ACCOUNT_ID:userpool/USER_POOL_ID"
311
- },
312
- {
313
- "Effect": "Allow",
314
- "Action": [
315
- "s3:GetObject",
316
- "s3:PutObject"
317
- ],
318
- "Resource": "arn:aws:s3:::YOUR_BUCKET/*"
319
- },
320
- {
321
- "Effect": "Allow",
322
- "Action": [
323
- "textract:AnalyzeDocument"
324
- ],
325
- "Resource": "*"
326
- }
327
- ]
168
+ "Version": "2012-10-17",
169
+ "Statement": [
170
+ {
171
+ "Effect": "Allow",
172
+ "Action": [
173
+ "cognito-idp:*",
174
+ "dynamodb:*",
175
+ "s3:GetObject",
176
+ "s3:PutObject",
177
+ "textract:AnalyzeDocument"
178
+ ],
179
+ "Resource": "*"
180
+ }
181
+ ]
328
182
  }
329
183
  ```
330
184
 
331
- ## Development
185
+ ## Desarrollo
332
186
 
333
187
  ```bash
334
- # Install dependencies
188
+ # Instalar dependencias
335
189
  npm install
336
190
 
337
191
  # Build
338
192
  npm run build
339
193
 
340
- # Watch mode
194
+ # Modo watch
341
195
  npm run dev
342
196
  ```
343
197
 
344
- ## License
198
+ ## Publicación
199
+
200
+ Este paquete usa versionado y publicación automatizados:
201
+
202
+ - **Releases beta**: Push a rama `develop` → publica tag `@beta`
203
+ - **Releases producción**: Push a rama `main` → publica tag `@latest`
204
+
205
+ Instalar versión beta:
206
+ ```bash
207
+ npm install @rempays/shared-core@beta
208
+ ```
209
+
210
+ ## Licencia
345
211
 
346
212
  UNLICENSED
@@ -1,18 +1,21 @@
1
+ "use strict";
1
2
  /**
2
3
  * Ejemplo de uso del JwtValidator en un Lambda Authorizer
3
4
  *
4
5
  * Este archivo es solo de referencia, no se exporta en el paquete
5
6
  */
6
- import { JwtValidator } from './jwt-validator';
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.handler = void 0;
9
+ const jwt_validator_1 = require("./jwt-validator");
7
10
  // Configuración del validador
8
- const validator = new JwtValidator({
11
+ const validator = new jwt_validator_1.JwtValidator({
9
12
  region: process.env.AWS_REGION || 'us-east-1',
10
13
  userPoolId: process.env.USER_POOL_ID,
11
14
  });
12
15
  /**
13
16
  * Lambda Authorizer Handler
14
17
  */
15
- export const handler = async (event) => {
18
+ const handler = async (event) => {
16
19
  try {
17
20
  // Extraer y validar el token
18
21
  const token = event.headers?.Authorization || event.headers?.authorization;
@@ -26,6 +29,7 @@ export const handler = async (event) => {
26
29
  return generatePolicy('user', 'Deny', event.methodArn);
27
30
  }
28
31
  };
32
+ exports.handler = handler;
29
33
  /**
30
34
  * Genera una policy de IAM para API Gateway
31
35
  */
@@ -1 +1,5 @@
1
- export { JwtValidator } from './jwt-validator';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwtValidator = void 0;
4
+ var jwt_validator_1 = require("./jwt-validator");
5
+ Object.defineProperty(exports, "JwtValidator", { enumerable: true, get: function () { return jwt_validator_1.JwtValidator; } });
@@ -1,5 +1,8 @@
1
- import { createHttpClient } from '../http/client';
2
- export class JwtValidator {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwtValidator = void 0;
4
+ const client_1 = require("../http/client");
5
+ class JwtValidator {
3
6
  constructor(config) {
4
7
  this.jwksCache = null;
5
8
  this.config = config;
@@ -60,7 +63,7 @@ export class JwtValidator {
60
63
  return this.jwksCache;
61
64
  }
62
65
  const jwksUrl = `${this.issuer}/.well-known/jwks.json`;
63
- const httpClient = createHttpClient();
66
+ const httpClient = (0, client_1.createHttpClient)();
64
67
  this.jwksCache = await httpClient.get(jwksUrl);
65
68
  return this.jwksCache;
66
69
  }
@@ -99,3 +102,4 @@ export class JwtValidator {
99
102
  return this.validate(token);
100
103
  }
101
104
  }
105
+ exports.JwtValidator = JwtValidator;
@@ -1 +1,2 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,8 +1,11 @@
1
- import { CognitoIdentityProviderClient, SignUpCommand, InitiateAuthCommand, RespondToAuthChallengeCommand, ConfirmSignUpCommand, GetUserCommand, AdminGetUserCommand, AdminInitiateAuthCommand, AuthFlowType, ChallengeNameType, } from '@aws-sdk/client-cognito-identity-provider';
2
- export class CognitoService {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CognitoService = void 0;
4
+ const client_cognito_identity_provider_1 = require("@aws-sdk/client-cognito-identity-provider");
5
+ class CognitoService {
3
6
  constructor(config) {
4
7
  this.config = config;
5
- this.client = new CognitoIdentityProviderClient({
8
+ this.client = new client_cognito_identity_provider_1.CognitoIdentityProviderClient({
6
9
  region: config.region,
7
10
  });
8
11
  }
@@ -17,7 +20,7 @@ export class CognitoService {
17
20
  if (email) {
18
21
  userAttributes.push({ Name: 'email', Value: email });
19
22
  }
20
- const command = new SignUpCommand({
23
+ const command = new client_cognito_identity_provider_1.SignUpCommand({
21
24
  ClientId: this.config.clientId,
22
25
  Username: phoneNumber,
23
26
  Password: password,
@@ -33,7 +36,7 @@ export class CognitoService {
33
36
  * Confirma el registro de un usuario con el código OTP
34
37
  */
35
38
  async confirmSignUp(phoneNumber, code) {
36
- const command = new ConfirmSignUpCommand({
39
+ const command = new client_cognito_identity_provider_1.ConfirmSignUpCommand({
37
40
  ClientId: this.config.clientId,
38
41
  Username: phoneNumber,
39
42
  ConfirmationCode: code,
@@ -45,9 +48,9 @@ export class CognitoService {
45
48
  */
46
49
  async signInCustomAuth(params) {
47
50
  const { phoneNumber } = params;
48
- const command = new InitiateAuthCommand({
51
+ const command = new client_cognito_identity_provider_1.InitiateAuthCommand({
49
52
  ClientId: this.config.clientId,
50
- AuthFlow: AuthFlowType.CUSTOM_AUTH,
53
+ AuthFlow: client_cognito_identity_provider_1.AuthFlowType.CUSTOM_AUTH,
51
54
  AuthParameters: {
52
55
  USERNAME: phoneNumber,
53
56
  },
@@ -64,9 +67,9 @@ export class CognitoService {
64
67
  */
65
68
  async signInSRP(params) {
66
69
  const { phoneNumber } = params;
67
- const command = new InitiateAuthCommand({
70
+ const command = new client_cognito_identity_provider_1.InitiateAuthCommand({
68
71
  ClientId: this.config.clientId,
69
- AuthFlow: AuthFlowType.USER_SRP_AUTH,
72
+ AuthFlow: client_cognito_identity_provider_1.AuthFlowType.USER_SRP_AUTH,
70
73
  AuthParameters: {
71
74
  USERNAME: phoneNumber,
72
75
  },
@@ -86,9 +89,9 @@ export class CognitoService {
86
89
  */
87
90
  async respondToAuthChallenge(params) {
88
91
  const { phoneNumber, code, session } = params;
89
- const command = new RespondToAuthChallengeCommand({
92
+ const command = new client_cognito_identity_provider_1.RespondToAuthChallengeCommand({
90
93
  ClientId: this.config.clientId,
91
- ChallengeName: ChallengeNameType.CUSTOM_CHALLENGE,
94
+ ChallengeName: client_cognito_identity_provider_1.ChallengeNameType.CUSTOM_CHALLENGE,
92
95
  Session: session,
93
96
  ChallengeResponses: {
94
97
  USERNAME: phoneNumber,
@@ -109,9 +112,9 @@ export class CognitoService {
109
112
  */
110
113
  async refreshToken(params) {
111
114
  const { refreshToken } = params;
112
- const command = new InitiateAuthCommand({
115
+ const command = new client_cognito_identity_provider_1.InitiateAuthCommand({
113
116
  ClientId: this.config.clientId,
114
- AuthFlow: AuthFlowType.REFRESH_TOKEN_AUTH,
117
+ AuthFlow: client_cognito_identity_provider_1.AuthFlowType.REFRESH_TOKEN_AUTH,
115
118
  AuthParameters: {
116
119
  REFRESH_TOKEN: refreshToken,
117
120
  },
@@ -126,7 +129,7 @@ export class CognitoService {
126
129
  * Obtiene información del usuario autenticado usando el access token
127
130
  */
128
131
  async getUser(accessToken) {
129
- const command = new GetUserCommand({
132
+ const command = new client_cognito_identity_provider_1.GetUserCommand({
130
133
  AccessToken: accessToken,
131
134
  });
132
135
  const response = await this.client.send(command);
@@ -142,7 +145,7 @@ export class CognitoService {
142
145
  * Obtiene información del usuario por username (requiere permisos de admin)
143
146
  */
144
147
  async adminGetUser(phoneNumber) {
145
- const command = new AdminGetUserCommand({
148
+ const command = new client_cognito_identity_provider_1.AdminGetUserCommand({
146
149
  UserPoolId: this.config.userPoolId,
147
150
  Username: phoneNumber,
148
151
  });
@@ -159,10 +162,10 @@ export class CognitoService {
159
162
  * Inicia autenticación como admin (útil para backend)
160
163
  */
161
164
  async adminInitiateAuth(phoneNumber) {
162
- const command = new AdminInitiateAuthCommand({
165
+ const command = new client_cognito_identity_provider_1.AdminInitiateAuthCommand({
163
166
  UserPoolId: this.config.userPoolId,
164
167
  ClientId: this.config.clientId,
165
- AuthFlow: AuthFlowType.CUSTOM_AUTH,
168
+ AuthFlow: client_cognito_identity_provider_1.AuthFlowType.CUSTOM_AUTH,
166
169
  AuthParameters: {
167
170
  USERNAME: phoneNumber,
168
171
  },
@@ -178,3 +181,4 @@ export class CognitoService {
178
181
  };
179
182
  }
180
183
  }
184
+ exports.CognitoService = CognitoService;