webs-sdk
v0.9.6
Published
SDK completo para aplicaciones web que proporciona funcionalidades esenciales para el desarrollo de aplicaciones modernas.
Keywords
Readme
WebsSDK
SDK completo para aplicaciones web que proporciona funcionalidades esenciales para el desarrollo de aplicaciones modernas.
Instalación
npm install webs-sdkUso Básico
import WebsSDK from 'webs-sdk';
// Inicializar el SDK
await WebsSDK.Session.init();
// Realizar una petición de red
const response = await WebsSDK.Networking.request('https://api.example.com/data');
// Almacenar datos
await WebsSDK.Storage.storeData('user_preferences', { theme: 'dark' });
// Obtener datos
const preferences = await WebsSDK.Storage.getData('user_preferences');Librerías Disponibles
🌐 Networking
Manejo avanzado de peticiones HTTP y comunicación con APIs.
// Petición básica
const data = await WebsSDK.Networking.request('/api/endpoint', { param: 'value' });
// Inicialización del SDK
await WebsSDK.Networking.executeInit();
// Envío de eventos
await WebsSDK.Networking.sendEvent('action', 'button_click', { button_id: 'submit' });
// Verificar conectividad
const isOnline = await WebsSDK.Networking.checkConnection();
// Gestión de suscripciones
const subscription = await WebsSDK.Networking.createSubscription(subscriptionData);
const isActive = await WebsSDK.Networking.checkSubscription();💾 Storage
Almacenamiento local avanzado con soporte para datos complejos.
// Métodos básicos
WebsSDK.Storage.set('key', 'value');
const value = WebsSDK.Storage.get('key');
// Almacenamiento de datos complejos
await WebsSDK.Storage.storeData('complex_data', { user: 'john', age: 30 });
const data = await WebsSDK.Storage.getData('complex_data');
// Manejo de creaciones (imágenes, archivos)
await WebsSDK.Storage.handleDownloadImageToCreations(base64Image, 'creation_1', metadata);
const creations = await WebsSDK.Storage.getCreations();
// Compresión de imágenes
const compressedImage = await WebsSDK.Storage.compressImage(imageUri, 2); // 2MB max
// Descarga de archivos
await WebsSDK.Storage.handleDownloadImage(base64, 'imagen');
// Compartir archivos
await WebsSDK.Storage.handleShareFile(fileUrl);👤 Session
Gestión completa de sesiones de usuario y datos del dispositivo.
// Inicializar sesión
await WebsSDK.Session.init();
// Obtener datos de sesión
const sessionData = WebsSDK.Session.getSessionData();
const userID = WebsSDK.Session.getUserID();
const sessionID = WebsSDK.Session.getSessionID();
// Gestión de suscripciones
await WebsSDK.Session.setIsSubscribed(true);
const isSubscribed = WebsSDK.Session.getIsSubscribed();
// Información del dispositivo y usuario
const language = WebsSDK.Session.getDeviceLanguage();
const languageRegion = WebsSDK.Session.getDeviceLanguageAndRegion();
const isFirstOpen = WebsSDK.Session.getIsFirstOpen();
// Gestión de usuarios
WebsSDK.Session.setUserID('user_123');
await WebsSDK.Session.setIsDevUser(true);🔧 Utils
Amplia colección de utilidades para desarrollo web.
// Utilidades de fecha y ID
const id = WebsSDK.Utils.generateId();
const formattedDate = WebsSDK.Utils.formatDate(new Date(), 'DD/MM/YYYY');
// Validaciones
const isValidEmail = WebsSDK.Utils.isValidEmail('[email protected]');
const isValidUrl = WebsSDK.Utils.isValidUrl('https://example.com');
// Manipulación de strings
const truncated = WebsSDK.Utils.truncateText('Long text...', 10);
const capitalized = WebsSDK.Utils.capitalizeFirst('hello world');
// Funciones de tiempo
await WebsSDK.Utils.sleep(1000); // Esperar 1 segundo
const randomNum = WebsSDK.Utils.getRandomInt(1, 100);
// Manipulación de arrays y objetos
const chunks = WebsSDK.Utils.arrayChunk([1,2,3,4,5], 2);
const unique = WebsSDK.Utils.arrayUnique([1,1,2,3,3]);
const picked = WebsSDK.Utils.objectPick(obj, ['key1', 'key2']);
// Funciones específicas para web
const deviceInfo = WebsSDK.Utils.getDeviceInfo();
const isMobile = WebsSDK.Utils.isMobile();
const isTablet = WebsSDK.Utils.isTablet();
const isDesktop = WebsSDK.Utils.isDesktop();
const browserInfo = WebsSDK.Utils.getBrowserInfo();
// Manejo de archivos y datos
const isBase64 = WebsSDK.Utils.isBase64(string);
const isBase64Image = WebsSDK.Utils.isBase64Image(dataUri);
WebsSDK.Utils.downloadFile(data, 'filename.txt', 'text/plain');
await WebsSDK.Utils.copyToClipboard('texto a copiar');
// Utilidades de formato
const formattedBytes = WebsSDK.Utils.formatBytes(1024); // "1 KB"
const queryParams = WebsSDK.Utils.parseQueryString('?a=1&b=2');
const queryString = WebsSDK.Utils.buildQueryString({a: 1, b: 2});📊 MixPanel
Sistema completo de análisis y tracking de eventos.
// Inicializar MixPanel
await WebsSDK.MixPanel.initialize('your_token', false, false, false);
// Tracking de eventos
await WebsSDK.MixPanel.trackEvent('page_view', { page: 'home' });
await WebsSDK.MixPanel.trackEventIfExist('special_event', { data: 'value' });
// Gestión de usuarios
await WebsSDK.MixPanel.identifyUser('user_123');
await WebsSDK.MixPanel.setUserProperties({ plan: 'premium' });
await WebsSDK.MixPanel.resetUserID();
// Super propiedades
await WebsSDK.MixPanel.superProperties({ app_version: '1.0.0' });
await WebsSDK.MixPanel.superPropertiesAppend({ session_id: 'abc123' });
// Control de tracking
WebsSDK.MixPanel.disableTracking();
WebsSDK.MixPanel.enableTracking();
const isInitialized = WebsSDK.MixPanel.isMixpanelInitialized();🔐 AuthManager
Gestión de autenticación (en desarrollo).
🌍 I18nManager
Sistema de internacionalización (en desarrollo).
🚀 Andromeda
Funcionalidades avanzadas (en desarrollo).
📝 ContentManager
Gestión y obtención de contenido dinámico.
const content = await WebsSDK.ContentManager.getContentByPreset('homepage', { lang: 'es' });Configuración
El SDK incluye configuración completa que puede ser personalizada según tus necesidades:
// Acceder a la configuración
const config = WebsSDK.Config;
// Configurar endpoints de API
config.endpoints.CONFIG = 'https://mi-api.com/config';
config.endpoints.USER_CREATE_ID = 'https://mi-api.com/user/create';
// Configurar MixPanel
config.MIXPANEL.TOKEN = 'tu_token_mixpanel';
// Configuración de desarrollo
config.DEBUG_MODE = true;
// Configuración de eventos especiales
config.SPECIAL_EVENTS = ['first_open', 'subscription_purchased'];
// Configuración de compresión de imágenes
config.IMAGE_COMPRESSION.COMPRESSION = 0.8;
config.IMAGE_COMPRESSION.WIDTH = 1024;
config.IMAGE_COMPRESSION.ACTIVE = true;Funcionalidades Avanzadas
Gestión de Eventos
// Configurar y enviar eventos personalizados
await WebsSDK.Networking.sendEvent('user_action', 'button_click', {
button_id: 'cta_primary',
page: 'landing',
timestamp: Date.now()
});
// Eventos pendientes (para cuando no hay conexión)
WebsSDK.Networking.addPendingEvent({
eventType: 'action',
eventKeyword: 'offline_action',
eventData: { action: 'save_draft' }
});
// Enviar eventos pendientes cuando se restaure la conexión
await WebsSDK.Networking.sendPendingEvents();Gestión de Archivos e Imágenes
// Comprimir y guardar imágenes
const compressedImage = await WebsSDK.Storage.compressImage(imageFile, 2);
await WebsSDK.Storage.handleDownloadImageToCreations(compressedImage, 'photo_1', {
timestamp: Date.now(),
location: 'homepage'
});
// Obtener todas las creaciones guardadas
const allCreations = await WebsSDK.Storage.getCreations();
// Eliminar creaciones específicas
await WebsSDK.Storage.deleteCreation('photo_1');Información del Dispositivo
// Obtener información completa del dispositivo
const deviceInfo = WebsSDK.Utils.getDeviceInfo();
console.log(deviceInfo);
// {
// userAgent: "Mozilla/5.0...",
// platform: "MacIntel",
// language: "es-ES",
// screenWidth: 1920,
// screenHeight: 1080,
// timezone: "Europe/Madrid"
// }
// Detectar tipo de dispositivo
if (WebsSDK.Utils.isMobile()) {
// Lógica específica para móviles
} else if (WebsSDK.Utils.isTablet()) {
// Lógica específica para tablets
} else {
// Lógica para desktop
}Estructura del Proyecto
src/
├── config.ts # Configuración central del SDK
├── index.ts # Punto de entrada principal
├── libraries/
│ ├── networking.ts # Peticiones HTTP y comunicación
│ ├── storage.ts # Almacenamiento local avanzado
│ ├── session.ts # Gestión de sesiones
│ ├── utils.ts # Utilidades generales
│ ├── mixpanel.ts # Analytics y tracking
│ ├── auth.ts # Autenticación
│ ├── i18n.ts # Internacionalización
│ ├── andromeda.ts # Funcionalidades avanzadas
│ ├── content.ts # Gestión de contenido
│ └── index.ts # Exports de librerías
└── types/
└── index.d.ts # Definiciones de tipos TypeScriptDesarrollo
# Instalar dependencias
npm install
# Compilar en modo desarrollo con watch
npm run build:watch
# Compilar para producción
npm run build
# Ejecutar linting
npm run lint
# Ejecutar servidor de desarrollo
npm run devPublicación
El proyecto está configurado para ser publicado como módulo npm:
# Compilar y preparar para publicación
npm run prepublishOnly
# Publicar en npm
npm publishCompatibilidad
- Navegadores: Chrome 60+, Firefox 55+, Safari 12+, Edge 79+
- Node.js: 16+ (para desarrollo)
- TypeScript: 5+
- Frameworks: Compatible con React, Vue, Angular, Vanilla JS
Ejemplos de Uso
Aplicación Básica
import WebsSDK from 'webs-sdk';
async function initApp() {
// Inicializar el SDK
await WebsSDK.Session.init();
// Configurar tracking
await WebsSDK.MixPanel.initialize(process.env.MIXPANEL_TOKEN);
// Obtener configuración del servidor
const config = await WebsSDK.Networking.request('/api/config');
// Guardar preferencias del usuario
await WebsSDK.Storage.storeData('app_config', config);
console.log('App inicializada correctamente');
}
initApp();E-commerce
// Tracking de eventos de e-commerce
await WebsSDK.MixPanel.trackEvent('product_viewed', {
product_id: 'ABC123',
category: 'electronics',
price: 299.99
});
// Gestión de carrito
await WebsSDK.Storage.storeData('cart_items', cartItems);
const savedCart = await WebsSDK.Storage.getData('cart_items');Aplicación con Suscripciones
// Verificar estado de suscripción
const isSubscribed = await WebsSDK.Session.getIsSubscribed();
if (!isSubscribed) {
// Mostrar paywall
await WebsSDK.MixPanel.trackEvent('paywall_shown', {
source: 'premium_feature'
});
}
// Crear nueva suscripción
const subscription = await WebsSDK.Networking.createSubscription({
plan: 'premium_monthly',
user_id: WebsSDK.Session.getUserID()
});Licencia
MIT License
