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

invocandojs

v1.1.0

Published

Librería modular y educativa para validación de formularios en JavaScript. Incluye validaciones robustas, documentación automatizada y ejemplos claros para proyectos modernos y didácticos.

Readme

🧙 InvocandoJS

InvocandoJS es una librería moderna, simple, extensible y en español, para validar formularios HTML y organizar el código JS. No tiene dependencias externas. Está pensada para que desarrolladores experimentados, principiantes y también quienes llevan tiempo sin actualizarse puedan comprender rápidamente su estructura y adaptarla fácilmente a sus necesidades.

✨ Diseñada como herramienta pedagógica y utilitaria. Ideal para proyectos pequeños, medianos o educativos.

npm version


📦 Instalación

MODO 1 - Usando un gestor de paquetes

Puedes instalar InvocandoJS usando tu gestor de paquetes favorito:

npm install invocandojs
# o
yarn add invocandojs
# o
pnpm add invocandojs

Puedes agregar la librería a tu proyecto de varias formas distintas

1- Usando el archivo de ES6:

Útil si trabajarás con js moderno y quieres decidir con qué módulo trabajar

// Archivo de js tipo module externo
import { Validador, Input } from 'invocandojs';

2- Usando los fuentes:

Útil si trabajarás con js moderno, quieres agregar funciones a la librería y leer los jdocs en tiempo de desarrollo

// Archivo de js tipo module externo

// Con Node.js se puede usar la carpeta node_modules
import { Validador, Input } from 'node_modules/invocandojs/src/invocando.js';

// Sin Node.js debe copiarse la librería a una carpeta pública
import { Validador, Input } from 'public/invocandojs/src/invocando.js';

3- Incluyendo el archivo UMD directamente:

Útil si trabajarás con js clásico y la librería completa

<!-- Fin del body -->

<!-- Nota: normalmente debes copiar el archivo desde node_modules/invocandojs/dist/ a tu carpeta pública, ya que la mayoría de los servidores no exponen node_modules directamente. -->
<script src="public/invocandojs/dist/invocandojs.umd.js"></script>

4- Usando el archivo alquimia.js para elegir los módulos e integrarlos a JS clásico:

Útil si trabajarás con js clásico, quieres elegir los módulos de la librería y poder ejecutar las funciones en la consola del navegador

// Archivo alquimia.js
import { Validador, Input } from 'invocando.js';

window.invocandojs = { Validador, Input };
// Archivo de js clásico externo (no hay que importar nada)
const form = new invocandojs.Validador();

MODO 2 - Clonando la librería

Puedes agregar la librería a tu proyecto de varias formas distintas

1- Usando el archivo de ES6:

Útil si trabajarás con js moderno y quieres decidir con qué módulo trabajar

// Archivo de js tipo module externo
import { Validador, Input } from './ruta/plugins/invocandojs/dist/invocandojs.es.js';

2- Usando los fuentes:

Útil si trabajarás con js moderno, quieres agregar funciones a la librería y leer los jdocs en tiempo de desarrollo

// Archivo de js tipo module externo
import { Validador, Input } from './ruta/plugins/invocandojs/src/invocando.js';

3- Incluyendo el archivo UMD directamente:

Útil si trabajarás con js clásico y la librería completa

<!-- Fin del body -->

<!-- Usando unpkg CDN -->
<script src="https://unpkg.com/invocandojs/dist/invocandojs.umd.js"></script>

<!-- Usando carpeta de plugins -->
<script src="./ruta/plugins/invocandojs/dist/invocandojs.umd.js"></script>

4- Usando el archivo alquimia.js para elegir los módulos e integrarlos a JS clásico:

Útil si trabajarás con js clásico, quieres elegir los módulos de la librería y poder ejecutar las funciones en la consola del navegador

// Archivo alquimia.js
import { Validador, Input } from 'invocando.js';

window.invocandojs = { Validador, Input };
// Archivo de js clásico externo (no hay que importar nada)
const form = new invocandojs.Validador();

Compatibilidad:

  • ES Modules (import/export)
  • Script clásico en navegador (<script>)
  • No requiere dependencias externas

Uso básico

Ejemplo mínimo en HTML clásico

<form id="miFormulario">
    <input name="nombre" data-invocando-error="error-nombre"/>
    <span id="error-nombre"></span>
    <button type="submit">Enviar</button>
</form>

<script src="https://unpkg.com/invocandojs/dist/invocandojs.umd.js"></script>
<script>
    const form = new invocandojs.Validador('miFormulario');
    form.input('nombre', [[form.regla(invocandojs.Input.requerido), 'Campo obligatorio']]);

    document.getElementById('miFormulario').onsubmit = function (e) {
        if (!form.valida()) {
            form.mostrarErrores();
        }else{
          e.preventDefault();
          // Acción si no hay errores
        }
    };
</script>

Ejemplo simple con módulos ES6

<form id="formularioRegistro">
    <div>
        <label class="asterisco" for="nombre">Nombre:</label>
        <input type="text" id="nombre" name="nombre" data-invocando-error="error-nombre" />
        <span id="error-nombre"></span>
    </div>

    <div>
        <label class="asterisco" for="email">Email:</label>
        <input type="email" id="email" name="email" data-invocando-error="error-email" />
        <span id="error-email"></span>
    </div>

    <div>
        <label class="asterisco" for="celular">Teléfono:</label>
        <input type="tel" id="celular" name="celular" data-invocando-error="error-celular" />
        <span id="error-celular"></span>
    </div>

    <button type="submit">Registrar</button>
</form>
// Inicializar InvocandoJS
import { Validador, Input } from 'invocandojs';

// Instanciar y configurar el formulario
const form = new Validador('formularioRegistro', 'inputs', {
    cssInputError: 'campo-error',
    cssInputExito: 'campo-valido',
    cssMensajeError: 'mensaje-error',
    asteriscos: 'asterisco',
});

// Definir reglas y mensajes para la validación
form.input('nombre', [
    [form.regla(Input.requerido), 'Debe escribir un nombre'],
    [form.regla(Input.text.largoMaximo, 100), 'Debe escribir un nombre, no un papiro'],
])
    .input('email', [
        [form.regla(Input.requerido), 'Debe escribir un email'],
        [form.regla(Input.email.generico), 'Formato de email inválido'],
    ])
    .input('celular', [
        [form.regla(Input.requerido), 'Debe escribir un celular'],
        [form.regla(Input.tel.chile.celular), 'Celular no tiene formato chileno'],
    ]);

// Validar
document.getElementById('formularioRegistro').onsubmit = function (e) {
    if (form.valida()) {
        e.preventDefault();
        // Código a ejecutar si valida
    } else {
        form.mostrarErrores();
    }
};

🎯 Modos de salida

  • "alert"/"alerta": Muestra los errores en una alerta.
  • "array"/"arreglo": Devuelve los errores como un arreglo.
  • "console"/"consola": Muestra los errores en la consola como warnings.
  • "corto-circuito": Muestra solo el primer error dentro de un alert.
  • "inputs"/"input": Muestra los errores directamente al lado de los inputs, pero debes crear los contenedores de error para cada input requerido.
  • "html": Crea una lista de divs con clases de error personalizadas para poder insertarla en otro contenedor.

Puedes seleccionar el modo de salida al instanciar el validador:

// El segundo parámetro define el modo de salida
const form = new Validador('formulario', 'inputs'); // 'inputs' es el modo de salida

🧩 Extensibilidad

const form = new Validador();

const mayorDeEdad = (valor) => parseInt(valor) >= 18;

form.input('#edad', [form.regla(mayorDeEdad), 'Debe ser mayor de edad']);

🧠 Filosofía

Esta librería busca ofrecer:

  • Un validador de formularios moderno y flexible
  • Un repositorio para guardar funciones de forma ordenada
  • Validaciones explícitas y personalizables
  • Código transparente
  • Fácil lectura, incluso para principiantes
  • EN ESPAÑOL.

Esta librería está pensada y desarrollada en español, como parte de su identidad y propósito. Si bien se valoran iniciativas para adaptarla a otros idiomas, el proyecto principal se mantendrá en español. Forks y traducciones son bienvenidos.

🔧 Estructura del Proyecto

invocandojs/
├── dist/                ← Bundle final
├── src/                 ← Código fuente modular
├── docs/                ← Documentación
├── vite.config.js       ← Build con Vite
└── package.json

📄 Licencia

MIT © Uriel Olivares ¡Copia, adapta y aprende!

MIT License


🤝 Soporte y comunidad