npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

webs-sdk

v0.9.6

Published

SDK completo para aplicaciones web que proporciona funcionalidades esenciales para el desarrollo de aplicaciones modernas.

Readme

WebsSDK

SDK completo para aplicaciones web que proporciona funcionalidades esenciales para el desarrollo de aplicaciones modernas.

Instalación

npm install webs-sdk

Uso 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 TypeScript

Desarrollo

# 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 dev

Publicació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 publish

Compatibilidad

  • 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