webs-sdk 0.2.0 → 0.2.2
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 +191 -58
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/libraries/audio.d.ts +49 -0
- package/dist/libraries/audio.d.ts.map +1 -0
- package/dist/libraries/audio.js +212 -0
- package/dist/libraries/audio.js.map +1 -0
- package/dist/libraries/index.d.ts +2 -0
- package/dist/libraries/index.d.ts.map +1 -1
- package/dist/libraries/index.js +3 -1
- package/dist/libraries/index.js.map +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +44 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# WebsSDK
|
|
2
2
|
|
|
3
|
-
SDK
|
|
3
|
+
SDK completo para aplicaciones web que proporciona funcionalidades esenciales para el desarrollo de aplicaciones modernas.
|
|
4
4
|
|
|
5
5
|
## Instalación
|
|
6
6
|
|
|
@@ -29,7 +29,7 @@ const preferences = await WebsSDK.Storage.getData('user_preferences');
|
|
|
29
29
|
## Librerías Disponibles
|
|
30
30
|
|
|
31
31
|
### 🌐 Networking
|
|
32
|
-
Manejo de peticiones HTTP
|
|
32
|
+
Manejo avanzado de peticiones HTTP y comunicación con APIs.
|
|
33
33
|
|
|
34
34
|
```javascript
|
|
35
35
|
// Petición básica
|
|
@@ -43,17 +43,21 @@ await WebsSDK.Networking.sendEvent('action', 'button_click', { button_id: 'submi
|
|
|
43
43
|
|
|
44
44
|
// Verificar conectividad
|
|
45
45
|
const isOnline = await WebsSDK.Networking.checkConnection();
|
|
46
|
+
|
|
47
|
+
// Gestión de suscripciones
|
|
48
|
+
const subscription = await WebsSDK.Networking.createSubscription(subscriptionData);
|
|
49
|
+
const isActive = await WebsSDK.Networking.checkSubscription();
|
|
46
50
|
```
|
|
47
51
|
|
|
48
52
|
### 💾 Storage
|
|
49
|
-
Almacenamiento local con
|
|
53
|
+
Almacenamiento local avanzado con soporte para datos complejos.
|
|
50
54
|
|
|
51
55
|
```javascript
|
|
52
56
|
// Métodos básicos
|
|
53
57
|
WebsSDK.Storage.set('key', 'value');
|
|
54
58
|
const value = WebsSDK.Storage.get('key');
|
|
55
59
|
|
|
56
|
-
//
|
|
60
|
+
// Almacenamiento de datos complejos
|
|
57
61
|
await WebsSDK.Storage.storeData('complex_data', { user: 'john', age: 30 });
|
|
58
62
|
const data = await WebsSDK.Storage.getData('complex_data');
|
|
59
63
|
|
|
@@ -63,10 +67,16 @@ const creations = await WebsSDK.Storage.getCreations();
|
|
|
63
67
|
|
|
64
68
|
// Compresión de imágenes
|
|
65
69
|
const compressedImage = await WebsSDK.Storage.compressImage(imageUri, 2); // 2MB max
|
|
70
|
+
|
|
71
|
+
// Descarga de archivos
|
|
72
|
+
await WebsSDK.Storage.handleDownloadImage(base64, 'imagen');
|
|
73
|
+
|
|
74
|
+
// Compartir archivos
|
|
75
|
+
await WebsSDK.Storage.handleShareFile(fileUrl);
|
|
66
76
|
```
|
|
67
77
|
|
|
68
78
|
### 👤 Session
|
|
69
|
-
Gestión de sesiones de usuario
|
|
79
|
+
Gestión completa de sesiones de usuario y datos del dispositivo.
|
|
70
80
|
|
|
71
81
|
```javascript
|
|
72
82
|
// Inicializar sesión
|
|
@@ -75,40 +85,68 @@ await WebsSDK.Session.init();
|
|
|
75
85
|
// Obtener datos de sesión
|
|
76
86
|
const sessionData = WebsSDK.Session.getSessionData();
|
|
77
87
|
const userID = WebsSDK.Session.getUserID();
|
|
88
|
+
const sessionID = WebsSDK.Session.getSessionID();
|
|
78
89
|
|
|
79
90
|
// Gestión de suscripciones
|
|
80
91
|
await WebsSDK.Session.setIsSubscribed(true);
|
|
81
92
|
const isSubscribed = WebsSDK.Session.getIsSubscribed();
|
|
82
93
|
|
|
83
|
-
// Información del dispositivo
|
|
94
|
+
// Información del dispositivo y usuario
|
|
84
95
|
const language = WebsSDK.Session.getDeviceLanguage();
|
|
85
96
|
const languageRegion = WebsSDK.Session.getDeviceLanguageAndRegion();
|
|
97
|
+
const isFirstOpen = WebsSDK.Session.getIsFirstOpen();
|
|
98
|
+
|
|
99
|
+
// Gestión de usuarios
|
|
100
|
+
WebsSDK.Session.setUserID('user_123');
|
|
101
|
+
await WebsSDK.Session.setIsDevUser(true);
|
|
86
102
|
```
|
|
87
103
|
|
|
88
104
|
### 🔧 Utils
|
|
89
|
-
|
|
105
|
+
Amplia colección de utilidades para desarrollo web.
|
|
90
106
|
|
|
91
107
|
```javascript
|
|
92
|
-
// Utilidades
|
|
108
|
+
// Utilidades de fecha y ID
|
|
93
109
|
const id = WebsSDK.Utils.generateId();
|
|
94
110
|
const formattedDate = WebsSDK.Utils.formatDate(new Date(), 'DD/MM/YYYY');
|
|
95
111
|
|
|
96
|
-
//
|
|
97
|
-
const
|
|
98
|
-
const
|
|
112
|
+
// Validaciones
|
|
113
|
+
const isValidEmail = WebsSDK.Utils.isValidEmail('user@example.com');
|
|
114
|
+
const isValidUrl = WebsSDK.Utils.isValidUrl('https://example.com');
|
|
99
115
|
|
|
100
|
-
//
|
|
116
|
+
// Manipulación de strings
|
|
117
|
+
const truncated = WebsSDK.Utils.truncateText('Long text...', 10);
|
|
118
|
+
const capitalized = WebsSDK.Utils.capitalizeFirst('hello world');
|
|
119
|
+
|
|
120
|
+
// Funciones de tiempo
|
|
121
|
+
await WebsSDK.Utils.sleep(1000); // Esperar 1 segundo
|
|
122
|
+
const randomNum = WebsSDK.Utils.getRandomInt(1, 100);
|
|
123
|
+
|
|
124
|
+
// Manipulación de arrays y objetos
|
|
125
|
+
const chunks = WebsSDK.Utils.arrayChunk([1,2,3,4,5], 2);
|
|
126
|
+
const unique = WebsSDK.Utils.arrayUnique([1,1,2,3,3]);
|
|
127
|
+
const picked = WebsSDK.Utils.objectPick(obj, ['key1', 'key2']);
|
|
128
|
+
|
|
129
|
+
// Funciones específicas para web
|
|
101
130
|
const deviceInfo = WebsSDK.Utils.getDeviceInfo();
|
|
102
131
|
const isMobile = WebsSDK.Utils.isMobile();
|
|
132
|
+
const isTablet = WebsSDK.Utils.isTablet();
|
|
133
|
+
const isDesktop = WebsSDK.Utils.isDesktop();
|
|
103
134
|
const browserInfo = WebsSDK.Utils.getBrowserInfo();
|
|
104
135
|
|
|
105
|
-
// Manejo de archivos
|
|
136
|
+
// Manejo de archivos y datos
|
|
137
|
+
const isBase64 = WebsSDK.Utils.isBase64(string);
|
|
138
|
+
const isBase64Image = WebsSDK.Utils.isBase64Image(dataUri);
|
|
106
139
|
WebsSDK.Utils.downloadFile(data, 'filename.txt', 'text/plain');
|
|
107
140
|
await WebsSDK.Utils.copyToClipboard('texto a copiar');
|
|
141
|
+
|
|
142
|
+
// Utilidades de formato
|
|
143
|
+
const formattedBytes = WebsSDK.Utils.formatBytes(1024); // "1 KB"
|
|
144
|
+
const queryParams = WebsSDK.Utils.parseQueryString('?a=1&b=2');
|
|
145
|
+
const queryString = WebsSDK.Utils.buildQueryString({a: 1, b: 2});
|
|
108
146
|
```
|
|
109
147
|
|
|
110
148
|
### 📊 MixPanel
|
|
111
|
-
|
|
149
|
+
Sistema completo de análisis y tracking de eventos.
|
|
112
150
|
|
|
113
151
|
```javascript
|
|
114
152
|
// Inicializar MixPanel
|
|
@@ -121,22 +159,29 @@ await WebsSDK.MixPanel.trackEventIfExist('special_event', { data: 'value' });
|
|
|
121
159
|
// Gestión de usuarios
|
|
122
160
|
await WebsSDK.MixPanel.identifyUser('user_123');
|
|
123
161
|
await WebsSDK.MixPanel.setUserProperties({ plan: 'premium' });
|
|
162
|
+
await WebsSDK.MixPanel.resetUserID();
|
|
124
163
|
|
|
125
164
|
// Super propiedades
|
|
126
165
|
await WebsSDK.MixPanel.superProperties({ app_version: '1.0.0' });
|
|
166
|
+
await WebsSDK.MixPanel.superPropertiesAppend({ session_id: 'abc123' });
|
|
167
|
+
|
|
168
|
+
// Control de tracking
|
|
169
|
+
WebsSDK.MixPanel.disableTracking();
|
|
170
|
+
WebsSDK.MixPanel.enableTracking();
|
|
171
|
+
const isInitialized = WebsSDK.MixPanel.isMixpanelInitialized();
|
|
127
172
|
```
|
|
128
173
|
|
|
129
174
|
### 🔐 AuthManager
|
|
130
175
|
Gestión de autenticación (en desarrollo).
|
|
131
176
|
|
|
132
177
|
### 🌍 I18nManager
|
|
133
|
-
|
|
178
|
+
Sistema de internacionalización (en desarrollo).
|
|
134
179
|
|
|
135
180
|
### 🚀 Andromeda
|
|
136
181
|
Funcionalidades avanzadas (en desarrollo).
|
|
137
182
|
|
|
138
183
|
### 📝 ContentManager
|
|
139
|
-
Gestión de contenido.
|
|
184
|
+
Gestión y obtención de contenido dinámico.
|
|
140
185
|
|
|
141
186
|
```javascript
|
|
142
187
|
const content = await WebsSDK.ContentManager.getContentByPreset('homepage', { lang: 'es' });
|
|
@@ -144,68 +189,102 @@ const content = await WebsSDK.ContentManager.getContentByPreset('homepage', { la
|
|
|
144
189
|
|
|
145
190
|
## Configuración
|
|
146
191
|
|
|
147
|
-
El SDK incluye configuración
|
|
192
|
+
El SDK incluye configuración completa que puede ser personalizada según tus necesidades:
|
|
148
193
|
|
|
149
194
|
```javascript
|
|
150
195
|
// Acceder a la configuración
|
|
151
196
|
const config = WebsSDK.Config;
|
|
152
197
|
|
|
153
|
-
// Configurar endpoints
|
|
198
|
+
// Configurar endpoints de API
|
|
154
199
|
config.endpoints.CONFIG = 'https://mi-api.com/config';
|
|
200
|
+
config.endpoints.USER_CREATE_ID = 'https://mi-api.com/user/create';
|
|
155
201
|
|
|
156
202
|
// Configurar MixPanel
|
|
157
203
|
config.MIXPANEL.TOKEN = 'tu_token_mixpanel';
|
|
158
204
|
|
|
159
|
-
//
|
|
205
|
+
// Configuración de desarrollo
|
|
160
206
|
config.DEBUG_MODE = true;
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Librerías NO Migradas (Específicas de Apps Nativas)
|
|
164
|
-
|
|
165
|
-
Las siguientes librerías del SDK de apps NO fueron migradas por ser específicas de aplicaciones nativas:
|
|
166
207
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
- **Rating**: Valoraciones en App Store/Google Play
|
|
170
|
-
- **Notifications**: Push notifications nativas
|
|
171
|
-
- **QuickActions**: Acciones rápidas del sistema
|
|
172
|
-
- **AdJust**: Tracking de atribución móvil
|
|
173
|
-
- **Adapty**: Suscripciones in-app nativas
|
|
174
|
-
- **PayWallLogic**: Lógica de paywall dependiente de Adapty
|
|
208
|
+
// Configuración de eventos especiales
|
|
209
|
+
config.SPECIAL_EVENTS = ['first_open', 'subscription_purchased'];
|
|
175
210
|
|
|
176
|
-
|
|
211
|
+
// Configuración de compresión de imágenes
|
|
212
|
+
config.IMAGE_COMPRESSION.COMPRESSION = 0.8;
|
|
213
|
+
config.IMAGE_COMPRESSION.WIDTH = 1024;
|
|
214
|
+
config.IMAGE_COMPRESSION.ACTIVE = true;
|
|
215
|
+
```
|
|
177
216
|
|
|
178
|
-
|
|
217
|
+
## Funcionalidades Avanzadas
|
|
179
218
|
|
|
180
|
-
###
|
|
219
|
+
### Gestión de Eventos
|
|
181
220
|
```javascript
|
|
182
|
-
//
|
|
183
|
-
await WebsSDK.
|
|
221
|
+
// Configurar y enviar eventos personalizados
|
|
222
|
+
await WebsSDK.Networking.sendEvent('user_action', 'button_click', {
|
|
223
|
+
button_id: 'cta_primary',
|
|
224
|
+
page: 'landing',
|
|
225
|
+
timestamp: Date.now()
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Eventos pendientes (para cuando no hay conexión)
|
|
229
|
+
WebsSDK.Networking.addPendingEvent({
|
|
230
|
+
eventType: 'action',
|
|
231
|
+
eventKeyword: 'offline_action',
|
|
232
|
+
eventData: { action: 'save_draft' }
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// Enviar eventos pendientes cuando se restaure la conexión
|
|
236
|
+
await WebsSDK.Networking.sendPendingEvents();
|
|
184
237
|
```
|
|
185
238
|
|
|
186
|
-
###
|
|
239
|
+
### Gestión de Archivos e Imágenes
|
|
187
240
|
```javascript
|
|
188
|
-
//
|
|
189
|
-
const
|
|
190
|
-
|
|
241
|
+
// Comprimir y guardar imágenes
|
|
242
|
+
const compressedImage = await WebsSDK.Storage.compressImage(imageFile, 2);
|
|
243
|
+
await WebsSDK.Storage.handleDownloadImageToCreations(compressedImage, 'photo_1', {
|
|
244
|
+
timestamp: Date.now(),
|
|
245
|
+
location: 'homepage'
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
// Obtener todas las creaciones guardadas
|
|
249
|
+
const allCreations = await WebsSDK.Storage.getCreations();
|
|
250
|
+
|
|
251
|
+
// Eliminar creaciones específicas
|
|
252
|
+
await WebsSDK.Storage.deleteCreation('photo_1');
|
|
191
253
|
```
|
|
192
254
|
|
|
193
|
-
###
|
|
255
|
+
### Información del Dispositivo
|
|
194
256
|
```javascript
|
|
195
|
-
//
|
|
196
|
-
WebsSDK.Utils.
|
|
197
|
-
|
|
257
|
+
// Obtener información completa del dispositivo
|
|
258
|
+
const deviceInfo = WebsSDK.Utils.getDeviceInfo();
|
|
259
|
+
console.log(deviceInfo);
|
|
260
|
+
// {
|
|
261
|
+
// userAgent: "Mozilla/5.0...",
|
|
262
|
+
// platform: "MacIntel",
|
|
263
|
+
// language: "es-ES",
|
|
264
|
+
// screenWidth: 1920,
|
|
265
|
+
// screenHeight: 1080,
|
|
266
|
+
// timezone: "Europe/Madrid"
|
|
267
|
+
// }
|
|
268
|
+
|
|
269
|
+
// Detectar tipo de dispositivo
|
|
270
|
+
if (WebsSDK.Utils.isMobile()) {
|
|
271
|
+
// Lógica específica para móviles
|
|
272
|
+
} else if (WebsSDK.Utils.isTablet()) {
|
|
273
|
+
// Lógica específica para tablets
|
|
274
|
+
} else {
|
|
275
|
+
// Lógica para desktop
|
|
276
|
+
}
|
|
198
277
|
```
|
|
199
278
|
|
|
200
279
|
## Estructura del Proyecto
|
|
201
280
|
|
|
202
281
|
```
|
|
203
282
|
src/
|
|
204
|
-
├── config.ts # Configuración del SDK
|
|
283
|
+
├── config.ts # Configuración central del SDK
|
|
205
284
|
├── index.ts # Punto de entrada principal
|
|
206
285
|
├── libraries/
|
|
207
286
|
│ ├── networking.ts # Peticiones HTTP y comunicación
|
|
208
|
-
│ ├── storage.ts # Almacenamiento local
|
|
287
|
+
│ ├── storage.ts # Almacenamiento local avanzado
|
|
209
288
|
│ ├── session.ts # Gestión de sesiones
|
|
210
289
|
│ ├── utils.ts # Utilidades generales
|
|
211
290
|
│ ├── mixpanel.ts # Analytics y tracking
|
|
@@ -224,23 +303,28 @@ src/
|
|
|
224
303
|
# Instalar dependencias
|
|
225
304
|
npm install
|
|
226
305
|
|
|
227
|
-
# Compilar en modo desarrollo
|
|
306
|
+
# Compilar en modo desarrollo con watch
|
|
228
307
|
npm run build:watch
|
|
229
308
|
|
|
230
309
|
# Compilar para producción
|
|
231
310
|
npm run build
|
|
232
311
|
|
|
233
|
-
#
|
|
312
|
+
# Ejecutar linting
|
|
234
313
|
npm run lint
|
|
314
|
+
|
|
315
|
+
# Ejecutar servidor de desarrollo
|
|
316
|
+
npm run dev
|
|
235
317
|
```
|
|
236
318
|
|
|
237
|
-
## Publicación
|
|
319
|
+
## Publicación
|
|
238
320
|
|
|
239
321
|
El proyecto está configurado para ser publicado como módulo npm:
|
|
240
322
|
|
|
241
323
|
```bash
|
|
242
|
-
# Compilar y
|
|
324
|
+
# Compilar y preparar para publicación
|
|
243
325
|
npm run prepublishOnly
|
|
326
|
+
|
|
327
|
+
# Publicar en npm
|
|
244
328
|
npm publish
|
|
245
329
|
```
|
|
246
330
|
|
|
@@ -249,16 +333,65 @@ npm publish
|
|
|
249
333
|
- **Navegadores**: Chrome 60+, Firefox 55+, Safari 12+, Edge 79+
|
|
250
334
|
- **Node.js**: 16+ (para desarrollo)
|
|
251
335
|
- **TypeScript**: 5+
|
|
336
|
+
- **Frameworks**: Compatible con React, Vue, Angular, Vanilla JS
|
|
252
337
|
|
|
253
|
-
##
|
|
338
|
+
## Ejemplos de Uso
|
|
254
339
|
|
|
255
|
-
|
|
340
|
+
### Aplicación Básica
|
|
341
|
+
```javascript
|
|
342
|
+
import WebsSDK from 'webs-sdk';
|
|
256
343
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
344
|
+
async function initApp() {
|
|
345
|
+
// Inicializar el SDK
|
|
346
|
+
await WebsSDK.Session.init();
|
|
347
|
+
|
|
348
|
+
// Configurar tracking
|
|
349
|
+
await WebsSDK.MixPanel.initialize(process.env.MIXPANEL_TOKEN);
|
|
350
|
+
|
|
351
|
+
// Obtener configuración del servidor
|
|
352
|
+
const config = await WebsSDK.Networking.request('/api/config');
|
|
353
|
+
|
|
354
|
+
// Guardar preferencias del usuario
|
|
355
|
+
await WebsSDK.Storage.storeData('app_config', config);
|
|
356
|
+
|
|
357
|
+
console.log('App inicializada correctamente');
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
initApp();
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### E-commerce
|
|
364
|
+
```javascript
|
|
365
|
+
// Tracking de eventos de e-commerce
|
|
366
|
+
await WebsSDK.MixPanel.trackEvent('product_viewed', {
|
|
367
|
+
product_id: 'ABC123',
|
|
368
|
+
category: 'electronics',
|
|
369
|
+
price: 299.99
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
// Gestión de carrito
|
|
373
|
+
await WebsSDK.Storage.storeData('cart_items', cartItems);
|
|
374
|
+
const savedCart = await WebsSDK.Storage.getData('cart_items');
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Aplicación con Suscripciones
|
|
378
|
+
```javascript
|
|
379
|
+
// Verificar estado de suscripción
|
|
380
|
+
const isSubscribed = await WebsSDK.Session.getIsSubscribed();
|
|
381
|
+
|
|
382
|
+
if (!isSubscribed) {
|
|
383
|
+
// Mostrar paywall
|
|
384
|
+
await WebsSDK.MixPanel.trackEvent('paywall_shown', {
|
|
385
|
+
source: 'premium_feature'
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Crear nueva suscripción
|
|
390
|
+
const subscription = await WebsSDK.Networking.createSubscription({
|
|
391
|
+
plan: 'premium_monthly',
|
|
392
|
+
user_id: WebsSDK.Session.getUserID()
|
|
393
|
+
});
|
|
394
|
+
```
|
|
262
395
|
|
|
263
396
|
## Licencia
|
|
264
397
|
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import AndromedaClass from './libraries/andromeda';
|
|
|
7
7
|
import ContentManagerClass from './libraries/content';
|
|
8
8
|
import SessionClass from './libraries/session';
|
|
9
9
|
import MixPanelClass from './libraries/mixpanel';
|
|
10
|
+
import AudioClass from './libraries/audio';
|
|
10
11
|
declare const WebsSDK: {
|
|
11
12
|
Networking: NetworkingClass;
|
|
12
13
|
AuthManager: AuthManagerClass;
|
|
@@ -17,6 +18,7 @@ declare const WebsSDK: {
|
|
|
17
18
|
ContentManager: ContentManagerClass;
|
|
18
19
|
Session: SessionClass;
|
|
19
20
|
MixPanel: MixPanelClass;
|
|
21
|
+
Audio: AudioClass;
|
|
20
22
|
Config: import("./config").Config;
|
|
21
23
|
};
|
|
22
24
|
export default WebsSDK;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,wBAAwB,CAAC;AACrD,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,mBAAmB,MAAM,qBAAqB,CAAC;AACtD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,wBAAwB,CAAC;AACrD,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,gBAAgB,MAAM,kBAAkB,CAAC;AAChD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,mBAAmB,MAAM,qBAAqB,CAAC;AACtD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAG3C,QAAA,MAAM,OAAO;;;;;;;;;;;;CAYZ,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ const andromeda_1 = __importDefault(require("./libraries/andromeda"));
|
|
|
12
12
|
const content_1 = __importDefault(require("./libraries/content"));
|
|
13
13
|
const session_1 = __importDefault(require("./libraries/session"));
|
|
14
14
|
const mixpanel_1 = __importDefault(require("./libraries/mixpanel"));
|
|
15
|
+
const audio_1 = __importDefault(require("./libraries/audio"));
|
|
15
16
|
const config_1 = __importDefault(require("./config"));
|
|
16
17
|
const WebsSDK = {
|
|
17
18
|
Networking: new networking_1.default(),
|
|
@@ -23,6 +24,7 @@ const WebsSDK = {
|
|
|
23
24
|
ContentManager: new content_1.default(),
|
|
24
25
|
Session: new session_1.default(),
|
|
25
26
|
MixPanel: new mixpanel_1.default(),
|
|
27
|
+
Audio: new audio_1.default(),
|
|
26
28
|
Config: config_1.default
|
|
27
29
|
};
|
|
28
30
|
exports.default = WebsSDK;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,wEAAqD;AACrD,4DAAgD;AAChD,4DAAgD;AAChD,kEAA+C;AAC/C,8DAA2C;AAC3C,sEAAmD;AACnD,kEAAsD;AACtD,kEAA+C;AAC/C,oEAAiD;AACjD,sDAA8B;AAE9B,MAAM,OAAO,GAAG;IACZ,UAAU,EAAE,IAAI,oBAAe,EAAE;IACjC,WAAW,EAAE,IAAI,cAAgB,EAAE;IACnC,WAAW,EAAE,IAAI,cAAgB,EAAE;IACnC,OAAO,EAAE,IAAI,iBAAY,EAAE;IAC3B,KAAK,EAAE,IAAI,eAAU,EAAE;IACvB,SAAS,EAAE,IAAI,mBAAc,EAAE;IAC/B,cAAc,EAAE,IAAI,iBAAmB,EAAE;IACzC,OAAO,EAAE,IAAI,iBAAY,EAAE;IAC3B,QAAQ,EAAE,IAAI,kBAAa,EAAE;IAC7B,MAAM,EAAE,gBAAM;CACjB,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,wEAAqD;AACrD,4DAAgD;AAChD,4DAAgD;AAChD,kEAA+C;AAC/C,8DAA2C;AAC3C,sEAAmD;AACnD,kEAAsD;AACtD,kEAA+C;AAC/C,oEAAiD;AACjD,8DAA2C;AAC3C,sDAA8B;AAE9B,MAAM,OAAO,GAAG;IACZ,UAAU,EAAE,IAAI,oBAAe,EAAE;IACjC,WAAW,EAAE,IAAI,cAAgB,EAAE;IACnC,WAAW,EAAE,IAAI,cAAgB,EAAE;IACnC,OAAO,EAAE,IAAI,iBAAY,EAAE;IAC3B,KAAK,EAAE,IAAI,eAAU,EAAE;IACvB,SAAS,EAAE,IAAI,mBAAc,EAAE;IAC/B,cAAc,EAAE,IAAI,iBAAmB,EAAE;IACzC,OAAO,EAAE,IAAI,iBAAY,EAAE;IAC3B,QAAQ,EAAE,IAAI,kBAAa,EAAE;IAC7B,KAAK,EAAE,IAAI,eAAU,EAAE;IACvB,MAAM,EAAE,gBAAM;CACjB,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface AudioVoice {
|
|
2
|
+
name: string;
|
|
3
|
+
lang: string;
|
|
4
|
+
localService: boolean;
|
|
5
|
+
default: boolean;
|
|
6
|
+
voiceURI: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SpeechOptions {
|
|
9
|
+
text: string;
|
|
10
|
+
voice?: string;
|
|
11
|
+
rate?: number;
|
|
12
|
+
pitch?: number;
|
|
13
|
+
volume?: number;
|
|
14
|
+
lang?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface AudioConfig {
|
|
17
|
+
defaultRate: number;
|
|
18
|
+
defaultPitch: number;
|
|
19
|
+
defaultVolume: number;
|
|
20
|
+
preferredLanguages: string[];
|
|
21
|
+
fallbackLanguage: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class Audio {
|
|
24
|
+
private synthesis;
|
|
25
|
+
private voices;
|
|
26
|
+
private isInitialized;
|
|
27
|
+
private audioConfig;
|
|
28
|
+
constructor();
|
|
29
|
+
private init;
|
|
30
|
+
private loadVoices;
|
|
31
|
+
getAvailableVoices(): AudioVoice[];
|
|
32
|
+
getBestVoiceForLanguage(language?: string): SpeechSynthesisVoice | null;
|
|
33
|
+
speak(options: SpeechOptions): Promise<void>;
|
|
34
|
+
speakText(text: string, language?: string): Promise<void>;
|
|
35
|
+
pause(): void;
|
|
36
|
+
resume(): void;
|
|
37
|
+
stop(): void;
|
|
38
|
+
isSpeaking(): boolean;
|
|
39
|
+
isPaused(): boolean;
|
|
40
|
+
isSupported(): boolean;
|
|
41
|
+
private getSystemLanguage;
|
|
42
|
+
setAudioConfig(config: Partial<AudioConfig>): void;
|
|
43
|
+
getAudioConfig(): AudioConfig;
|
|
44
|
+
getAudioInfo(): any;
|
|
45
|
+
speakSequence(texts: string[], options?: Partial<SpeechOptions>): Promise<void>;
|
|
46
|
+
speakWithEffect(text: string, effect: 'slow' | 'fast' | 'robot' | 'whisper'): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export default Audio;
|
|
49
|
+
//# sourceMappingURL=audio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/libraries/audio.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,KAAK;IACd,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,WAAW,CAAc;;YAcnB,IAAI;YAcJ,UAAU;IAwCjB,kBAAkB,IAAI,UAAU,EAAE;IAiBlC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAgDjE,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/D,KAAK,IAAI,IAAI;IASb,MAAM,IAAI,IAAI;IASd,IAAI,IAAI,IAAI;IASZ,UAAU,IAAI,OAAO;IAOrB,QAAQ,IAAI,OAAO;IAOnB,WAAW,IAAI,OAAO;IAO7B,OAAO,CAAC,iBAAiB;IAUlB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAOlD,cAAc,IAAI,WAAW;IAO7B,YAAY,IAAI,GAAG;IAeb,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/E,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB3G;AAED,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Audio = void 0;
|
|
4
|
+
class Audio {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.synthesis = null;
|
|
7
|
+
this.voices = [];
|
|
8
|
+
this.isInitialized = false;
|
|
9
|
+
this.audioConfig = {
|
|
10
|
+
defaultRate: 1.0,
|
|
11
|
+
defaultPitch: 1.0,
|
|
12
|
+
defaultVolume: 1.0,
|
|
13
|
+
preferredLanguages: ['es-ES', 'en-US', 'fr-FR'],
|
|
14
|
+
fallbackLanguage: 'en-US'
|
|
15
|
+
};
|
|
16
|
+
this.init();
|
|
17
|
+
}
|
|
18
|
+
async init() {
|
|
19
|
+
try {
|
|
20
|
+
if (typeof window !== 'undefined' && 'speechSynthesis' in window) {
|
|
21
|
+
this.synthesis = window.speechSynthesis;
|
|
22
|
+
await this.loadVoices();
|
|
23
|
+
this.isInitialized = true;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.warn('Speech Synthesis API no está disponible en este navegador');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('Error inicializando Audio SDK:', error);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async loadVoices() {
|
|
34
|
+
return new Promise((resolve) => {
|
|
35
|
+
if (!this.synthesis) {
|
|
36
|
+
resolve();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const loadVoicesCallback = () => {
|
|
40
|
+
this.voices = this.synthesis.getVoices();
|
|
41
|
+
if (this.voices.length > 0) {
|
|
42
|
+
resolve();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
this.voices = this.synthesis.getVoices();
|
|
47
|
+
resolve();
|
|
48
|
+
}, 100);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
this.voices = this.synthesis.getVoices();
|
|
52
|
+
if (this.voices.length > 0) {
|
|
53
|
+
resolve();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.synthesis.addEventListener('voiceschanged', loadVoicesCallback, { once: true });
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
this.voices = this.synthesis.getVoices();
|
|
59
|
+
resolve();
|
|
60
|
+
}, 1000);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
getAvailableVoices() {
|
|
65
|
+
if (!this.isInitialized || this.voices.length === 0) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
return this.voices.map(voice => ({
|
|
69
|
+
name: voice.name,
|
|
70
|
+
lang: voice.lang,
|
|
71
|
+
localService: voice.localService,
|
|
72
|
+
default: voice.default,
|
|
73
|
+
voiceURI: voice.voiceURI
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
getBestVoiceForLanguage(language) {
|
|
77
|
+
if (!this.isInitialized || this.voices.length === 0) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const targetLang = language || this.getSystemLanguage();
|
|
81
|
+
let matchingVoices = this.voices.filter(voice => voice.lang.toLowerCase() === targetLang.toLowerCase());
|
|
82
|
+
if (matchingVoices.length === 0) {
|
|
83
|
+
const baseLang = targetLang.split('-')[0];
|
|
84
|
+
matchingVoices = this.voices.filter(voice => voice.lang.toLowerCase().startsWith(baseLang.toLowerCase()));
|
|
85
|
+
}
|
|
86
|
+
if (matchingVoices.length === 0) {
|
|
87
|
+
const fallbackLang = this.audioConfig.fallbackLanguage;
|
|
88
|
+
matchingVoices = this.voices.filter(voice => voice.lang.toLowerCase().startsWith(fallbackLang.toLowerCase()));
|
|
89
|
+
}
|
|
90
|
+
if (matchingVoices.length === 0) {
|
|
91
|
+
return this.voices[0] || null;
|
|
92
|
+
}
|
|
93
|
+
const prioritizedVoices = matchingVoices.sort((a, b) => {
|
|
94
|
+
if (a.default && !b.default)
|
|
95
|
+
return -1;
|
|
96
|
+
if (!a.default && b.default)
|
|
97
|
+
return 1;
|
|
98
|
+
if (a.localService && !b.localService)
|
|
99
|
+
return -1;
|
|
100
|
+
if (!a.localService && b.localService)
|
|
101
|
+
return 1;
|
|
102
|
+
return 0;
|
|
103
|
+
});
|
|
104
|
+
return prioritizedVoices[0];
|
|
105
|
+
}
|
|
106
|
+
async speak(options) {
|
|
107
|
+
return new Promise((resolve, reject) => {
|
|
108
|
+
var _a, _b, _c;
|
|
109
|
+
if (!this.isInitialized || !this.synthesis) {
|
|
110
|
+
reject(new Error('Speech Synthesis no está disponible'));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.synthesis.cancel();
|
|
114
|
+
const utterance = new SpeechSynthesisUtterance(options.text);
|
|
115
|
+
const voice = this.getBestVoiceForLanguage(options.lang);
|
|
116
|
+
if (voice) {
|
|
117
|
+
utterance.voice = voice;
|
|
118
|
+
}
|
|
119
|
+
utterance.rate = (_a = options.rate) !== null && _a !== void 0 ? _a : this.audioConfig.defaultRate;
|
|
120
|
+
utterance.pitch = (_b = options.pitch) !== null && _b !== void 0 ? _b : this.audioConfig.defaultPitch;
|
|
121
|
+
utterance.volume = (_c = options.volume) !== null && _c !== void 0 ? _c : this.audioConfig.defaultVolume;
|
|
122
|
+
if (options.lang) {
|
|
123
|
+
utterance.lang = options.lang;
|
|
124
|
+
}
|
|
125
|
+
utterance.onend = () => resolve();
|
|
126
|
+
utterance.onerror = (event) => reject(new Error(`Error en síntesis de voz: ${event.error}`));
|
|
127
|
+
this.synthesis.speak(utterance);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
async speakText(text, language) {
|
|
131
|
+
return this.speak({
|
|
132
|
+
text,
|
|
133
|
+
lang: language
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
pause() {
|
|
137
|
+
if (this.synthesis && this.synthesis.speaking) {
|
|
138
|
+
this.synthesis.pause();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
resume() {
|
|
142
|
+
if (this.synthesis && this.synthesis.paused) {
|
|
143
|
+
this.synthesis.resume();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
stop() {
|
|
147
|
+
if (this.synthesis) {
|
|
148
|
+
this.synthesis.cancel();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
isSpeaking() {
|
|
152
|
+
return this.synthesis ? this.synthesis.speaking : false;
|
|
153
|
+
}
|
|
154
|
+
isPaused() {
|
|
155
|
+
return this.synthesis ? this.synthesis.paused : false;
|
|
156
|
+
}
|
|
157
|
+
isSupported() {
|
|
158
|
+
return this.isInitialized && this.synthesis !== null;
|
|
159
|
+
}
|
|
160
|
+
getSystemLanguage() {
|
|
161
|
+
var _a;
|
|
162
|
+
if (typeof navigator !== 'undefined') {
|
|
163
|
+
return navigator.language || ((_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) || this.audioConfig.fallbackLanguage;
|
|
164
|
+
}
|
|
165
|
+
return this.audioConfig.fallbackLanguage;
|
|
166
|
+
}
|
|
167
|
+
setAudioConfig(config) {
|
|
168
|
+
this.audioConfig = Object.assign(Object.assign({}, this.audioConfig), config);
|
|
169
|
+
}
|
|
170
|
+
getAudioConfig() {
|
|
171
|
+
return Object.assign({}, this.audioConfig);
|
|
172
|
+
}
|
|
173
|
+
getAudioInfo() {
|
|
174
|
+
return {
|
|
175
|
+
isSupported: this.isSupported(),
|
|
176
|
+
isInitialized: this.isInitialized,
|
|
177
|
+
voicesCount: this.voices.length,
|
|
178
|
+
systemLanguage: this.getSystemLanguage(),
|
|
179
|
+
isSpeaking: this.isSpeaking(),
|
|
180
|
+
isPaused: this.isPaused(),
|
|
181
|
+
config: this.getAudioConfig()
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
async speakSequence(texts, options) {
|
|
185
|
+
for (const text of texts) {
|
|
186
|
+
await this.speak(Object.assign({ text }, options));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async speakWithEffect(text, effect) {
|
|
190
|
+
let speechOptions = { text };
|
|
191
|
+
switch (effect) {
|
|
192
|
+
case 'slow':
|
|
193
|
+
speechOptions.rate = 0.5;
|
|
194
|
+
break;
|
|
195
|
+
case 'fast':
|
|
196
|
+
speechOptions.rate = 1.5;
|
|
197
|
+
break;
|
|
198
|
+
case 'robot':
|
|
199
|
+
speechOptions.rate = 0.8;
|
|
200
|
+
speechOptions.pitch = 0.5;
|
|
201
|
+
break;
|
|
202
|
+
case 'whisper':
|
|
203
|
+
speechOptions.rate = 0.7;
|
|
204
|
+
speechOptions.volume = 0.3;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
return this.speak(speechOptions);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.Audio = Audio;
|
|
211
|
+
exports.default = Audio;
|
|
212
|
+
//# sourceMappingURL=audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/libraries/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import AndromedaClass from './andromeda';
|
|
|
7
7
|
import ContentManagerClass from './content';
|
|
8
8
|
import SessionClass from './session';
|
|
9
9
|
import MixPanelClass from './mixpanel';
|
|
10
|
+
import AudioClass from './audio';
|
|
10
11
|
export declare const Networking: NetworkingClass;
|
|
11
12
|
export declare const AuthManager: AuthManagerClass;
|
|
12
13
|
export declare const I18nManager: I18nManagerClass;
|
|
@@ -16,4 +17,5 @@ export declare const Andromeda: AndromedaClass;
|
|
|
16
17
|
export declare const ContentManager: ContentManagerClass;
|
|
17
18
|
export declare const Session: SessionClass;
|
|
18
19
|
export declare const MixPanel: MixPanelClass;
|
|
20
|
+
export declare const Audio: AudioClass;
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/libraries/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,cAAc,CAAC;AAC3C,OAAO,gBAAgB,MAAM,QAAQ,CAAC;AACtC,OAAO,gBAAgB,MAAM,QAAQ,CAAC;AACtC,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,UAAU,MAAM,SAAS,CAAC;AACjC,OAAO,cAAc,MAAM,aAAa,CAAC;AACzC,OAAO,mBAAmB,MAAM,WAAW,CAAC;AAC5C,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,aAAa,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/libraries/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,cAAc,CAAC;AAC3C,OAAO,gBAAgB,MAAM,QAAQ,CAAC;AACtC,OAAO,gBAAgB,MAAM,QAAQ,CAAC;AACtC,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,UAAU,MAAM,SAAS,CAAC;AACjC,OAAO,cAAc,MAAM,aAAa,CAAC;AACzC,OAAO,mBAAmB,MAAM,WAAW,CAAC;AAC5C,OAAO,YAAY,MAAM,WAAW,CAAC;AACrC,OAAO,aAAa,MAAM,YAAY,CAAC;AACvC,OAAO,UAAU,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,UAAU,iBAAwB,CAAC;AAChD,eAAO,MAAM,WAAW,kBAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,kBAAyB,CAAC;AAClD,eAAO,MAAM,OAAO,cAAqB,CAAC;AAC1C,eAAO,MAAM,KAAK,YAAmB,CAAC;AACtC,eAAO,MAAM,SAAS,gBAAuB,CAAC;AAC9C,eAAO,MAAM,cAAc,qBAA4B,CAAC;AACxD,eAAO,MAAM,OAAO,cAAqB,CAAC;AAC1C,eAAO,MAAM,QAAQ,eAAsB,CAAC;AAC5C,eAAO,MAAM,KAAK,YAAmB,CAAC"}
|
package/dist/libraries/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MixPanel = exports.Session = exports.ContentManager = exports.Andromeda = exports.Utils = exports.Storage = exports.I18nManager = exports.AuthManager = exports.Networking = void 0;
|
|
6
|
+
exports.Audio = exports.MixPanel = exports.Session = exports.ContentManager = exports.Andromeda = exports.Utils = exports.Storage = exports.I18nManager = exports.AuthManager = exports.Networking = void 0;
|
|
7
7
|
const networking_1 = __importDefault(require("./networking"));
|
|
8
8
|
const auth_1 = __importDefault(require("./auth"));
|
|
9
9
|
const i18n_1 = __importDefault(require("./i18n"));
|
|
@@ -13,6 +13,7 @@ const andromeda_1 = __importDefault(require("./andromeda"));
|
|
|
13
13
|
const content_1 = __importDefault(require("./content"));
|
|
14
14
|
const session_1 = __importDefault(require("./session"));
|
|
15
15
|
const mixpanel_1 = __importDefault(require("./mixpanel"));
|
|
16
|
+
const audio_1 = __importDefault(require("./audio"));
|
|
16
17
|
exports.Networking = new networking_1.default();
|
|
17
18
|
exports.AuthManager = new auth_1.default();
|
|
18
19
|
exports.I18nManager = new i18n_1.default();
|
|
@@ -22,4 +23,5 @@ exports.Andromeda = new andromeda_1.default();
|
|
|
22
23
|
exports.ContentManager = new content_1.default();
|
|
23
24
|
exports.Session = new session_1.default();
|
|
24
25
|
exports.MixPanel = new mixpanel_1.default();
|
|
26
|
+
exports.Audio = new audio_1.default();
|
|
25
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/libraries/index.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA2C;AAC3C,kDAAsC;AACtC,kDAAsC;AACtC,wDAAqC;AACrC,oDAAiC;AACjC,4DAAyC;AACzC,wDAA4C;AAC5C,wDAAqC;AACrC,0DAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/libraries/index.ts"],"names":[],"mappings":";;;;;;AAAA,8DAA2C;AAC3C,kDAAsC;AACtC,kDAAsC;AACtC,wDAAqC;AACrC,oDAAiC;AACjC,4DAAyC;AACzC,wDAA4C;AAC5C,wDAAqC;AACrC,0DAAuC;AACvC,oDAAiC;AAEpB,QAAA,UAAU,GAAG,IAAI,oBAAe,EAAE,CAAC;AACnC,QAAA,WAAW,GAAG,IAAI,cAAgB,EAAE,CAAC;AACrC,QAAA,WAAW,GAAG,IAAI,cAAgB,EAAE,CAAC;AACrC,QAAA,OAAO,GAAG,IAAI,iBAAY,EAAE,CAAC;AAC7B,QAAA,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC;AACzB,QAAA,SAAS,GAAG,IAAI,mBAAc,EAAE,CAAC;AACjC,QAAA,cAAc,GAAG,IAAI,iBAAmB,EAAE,CAAC;AAC3C,QAAA,OAAO,GAAG,IAAI,iBAAY,EAAE,CAAC;AAC7B,QAAA,QAAQ,GAAG,IAAI,kBAAa,EAAE,CAAC;AAC/B,QAAA,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC"}
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -239,6 +239,49 @@ declare module "webs-sdk" {
|
|
|
239
239
|
enableTracking(): void;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
+
interface AudioVoice {
|
|
243
|
+
name: string;
|
|
244
|
+
lang: string;
|
|
245
|
+
localService: boolean;
|
|
246
|
+
default: boolean;
|
|
247
|
+
voiceURI: string;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
interface SpeechOptions {
|
|
251
|
+
text: string;
|
|
252
|
+
voice?: string;
|
|
253
|
+
rate?: number;
|
|
254
|
+
pitch?: number;
|
|
255
|
+
volume?: number;
|
|
256
|
+
lang?: string;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
interface AudioConfig {
|
|
260
|
+
defaultRate: number;
|
|
261
|
+
defaultPitch: number;
|
|
262
|
+
defaultVolume: number;
|
|
263
|
+
preferredLanguages: string[];
|
|
264
|
+
fallbackLanguage: string;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
interface Audio {
|
|
268
|
+
getAvailableVoices(): AudioVoice[];
|
|
269
|
+
getBestVoiceForLanguage(language?: string): any;
|
|
270
|
+
speak(options: SpeechOptions): Promise<void>;
|
|
271
|
+
speakText(text: string, language?: string): Promise<void>;
|
|
272
|
+
pause(): void;
|
|
273
|
+
resume(): void;
|
|
274
|
+
stop(): void;
|
|
275
|
+
isSpeaking(): boolean;
|
|
276
|
+
isPaused(): boolean;
|
|
277
|
+
isSupported(): boolean;
|
|
278
|
+
setAudioConfig(config: Partial<AudioConfig>): void;
|
|
279
|
+
getAudioConfig(): AudioConfig;
|
|
280
|
+
getAudioInfo(): any;
|
|
281
|
+
speakSequence(texts: string[], options?: Partial<SpeechOptions>): Promise<void>;
|
|
282
|
+
speakWithEffect(text: string, effect: 'slow' | 'fast' | 'robot' | 'whisper'): Promise<void>;
|
|
283
|
+
}
|
|
284
|
+
|
|
242
285
|
interface WebsSDK {
|
|
243
286
|
Networking: Networking;
|
|
244
287
|
AuthManager: AuthManager;
|
|
@@ -249,6 +292,7 @@ declare module "webs-sdk" {
|
|
|
249
292
|
ContentManager: ContentManager;
|
|
250
293
|
Session: Session;
|
|
251
294
|
MixPanel: MixPanel;
|
|
295
|
+
Audio: Audio;
|
|
252
296
|
Config: Config;
|
|
253
297
|
}
|
|
254
298
|
|