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

crossflex

v7.2.4

Published

Dexkit bundle for connect with mysql remote databses.

Readme

Inicio Rápido e instalación

Descarga de los archivos

npm install crossflex

Estructura y distribución del proyecto

CrossFlex/
├── bin/
│   ├── com.execute.php
│   └── com.connection.php
│
├── docs/
│   ├── com.logo.png
│   └── Sign.png
│
├── bundle.js                     //archivo principal
├── com.settings.json            // archivo de configuración
├── package.json
└──

Ver información y versión de CrossFlex

Puedes ejecutar cualquiera de estos comandos para ver la versión o información de tu instalación


npm view crossflex

npm view crossflex version

Importación en JavaScript


  import { DatabaseConnection, Table } from 'crossflex'

Información y configuración de CrossFlex

A continuación se detallan las opciones y detalles para configurar CrossFlex:

El com.settings.json ya está listo para funcionar, pero puedes modificar cualquier parte del archivo para adaptarlo a tus necesidades:

{

    "mode": "local",
    "location": "bin/com.execute.php",
    "method": "POST",
    "safeMode": true,
    "logs": {

        "enabled": false,
        "mode": "console"

    },

    "enveroiment": "development"


}

CrossFlex requiere ejecutarse en un servidor (Apache/NGINX). Si trabajas desde un entorno local como Electron o Node, deberás servir el ejecutor PHP desde un servidor HTTPS, usar mode: "remote" y configurar CORS para permitir POST. Sin esto, las consultas no funcionarán.

Estos son los métodos aceptados para enviar las consultas


    "method": "POST",

    "method": "GET",

se recomienda más usar POST para mantener la información más segura.

Safe Mode está diseñado para evitar la ejecución accidental de operaciones destructivas, como remove (DELETE). Este modo acepta dos parámetros:


    "safeMode": true,

Eso significa que la protección está activa, y que se debe enviar una confirmación para eliminar los datos.


    "safeMode": false,

Esto significa que la protección está desactivada, y que se ejecutará remove sin necesidad de solicitar una confirmación.

Archivo de configuración de conexión

Para mantener la seguridad y privacidad las credenciales de acceso a las bases de datos y las tablas se alojan en el archivo com.connection.php, dentro de la carpeta Bin, deben ser reemplazadas antes de ejecutar el script para evitar errores de conexión.


    $host = "host.example.com";
    $username = "salinxlg";
    $password = "ABC123";

Conexión con base de datos y con tablas

CrossFlex admite múltiples conexiones de bases de datos, la forma de establecer conexión con una base de datos es:


  const nombre = new DatabaseConnection("nombre_de_la_db");

los parámetros esperados son un string con el nombre de la base de datos.

Asímismo admite múltiples conexiónes a diferentes tablas simultaneamente de la siguiente forma:


  const tabla = new Table("nombre_de_la_tabla", base_de_datos);

los parámetros esperados aqui son string instance con el nombre de la tabla y la conexión a la base de datos.

Ejemplo de conexión:


  const store = new DatabaseConnection("store");
  const stock = new Table("stock", store)

Formas de uso y métodos

CrossFlex cuenta con 4 funcionalidades principales para gestion de registros: new, get, change y remove, a continuación se especifican sus usos, parámetros e información adicional:

Método New

El método new permite crear registros en una tabla específica de la base de datos. Se utiliza para insertar nuevos datos, especificando los valores de cada columna que se desea agregar. Este método recibe un objeto con los datos a insertar y se asegura de manejar la información de forma segura, evitando conflictos o errores de conexión.

La estructura de new es:


  stock.new({data: {

        column: "value",
        column: "value",
        column: "value",

    }})

Ejemplo de uso de new


  //Se debe especificar la tabla donde se trabajará y crear el objeto data, luego asignar el nombre del la columna y su valor

    const crear = await stock.new({data: {

      //Columna
        SKU: "ABC123", //Valor
        ProductName: 'Airpods Pro',
        Price: 250,
        Currency: "$",

    }})

    console.log(crear) // salida

CrossFlex funciona de manera asíncrona, por lo que se debe usar await, o .then() para obtener el estado de la query

Al resolverse la promesa, en caso de una adición exitosa deberías obtener un json asi:


{"execute": true, "insert_id": 0}

en caso de error deberías ver:


{"execute": false, "error": "Información sobre el error"}

la forma de saber el estado de la ejecución es de la siguiente:


const crear = await stock.new({data: {

  SKU: "ABC123",
  ProductName: 'Airpods Pro',
  Price: 250,
  Currency: "$",

}})

const status = crear.execute;

if(status){

  console.log("ok");

}else{

  console.log("!ok")

}

Método Get

El método get permite consultar registros de una tabla. Se pueden especificar condiciones (where), columnas a seleccionar (select), límite de resultados (limit) y orden (order). Si no se especifica ninguna condición, el método devuelve todos los registros disponibles. Esta función devuelve los datos en formato JSON listo para ser procesado por la aplicación.

La estructura de get es:


    stock.get({
        select: ["column", "column"], 
        where: { column: "name", value: "value"},
        order: { column: "name", data: "ASC" },
        limit: 1
    });

Ejemplo de uso de get


    const get = stock.get({

      select: ["name", "position"],
      where: { column: "name", value: "Alejandro Salinas"},
      order: { column: "name", data: "ASC" },
      limit: 1

    });

    console.log(get) // salida

Este proceso obtiene únicamente las columnas solicitadas y aplica, si se especifican, las condiciones de filtrado, ordenamiento y límite en la consulta. Los parámetros where, order y limit son opcionales:

Si no se define where, se devuelven todos los registros disponibles.

Si no se establece order, no se aplicará ningún tipo de ordenamiento.

Si no se indica limit, la consulta retornará la totalidad de los registros coincidentes.

Ejemplo para obtener todos los registros de la base de datos


    stock.get({

      select: ["name", "position"],

    });

    console.log(crear) // salida

La forma de obtener el resultado de la solicitud es de la siguiente:


const get = await stock.get({

  select: ["name", "position"],

  });

const status = get.execute;

if(status){

  const resultado = get.result.dato //en caso de ser un unico registro
  const resultado = get.result.forEach(element => {}); //en caso de ser un múltiples registros

  console.log(resultado);

}else{

  console.log("!ok")

}

Al resolverse la promesa, en caso de una salir todo deberías obtener un json asi:


{
  "execute":true,
  "result":[
      {"columna":"valor"},
      {"columna":"valor"}
      {"columna":"valor"},
    ]
        
}

si tu consulta tiene varias respuestas se devuelve un array, si es una sola se devuelve como objeto único.

en caso de error deberías ver:


{"execute": false, "error": "Información sobre el error"}

Método Change

El método change permite actualizar registros existentes en una tabla. Se debe indicar qué registros se van a modificar mediante condiciones (where) y los valores que se van a actualizar. Este método garantiza que solo se modifiquen los registros especificados, evitando cambios accidentales sobre toda la tabla.

La estructura de change es:


stock.change({

    data: {

        column: 'value',
        column: 'value',
        column: 'value'

    },
    where: {column: 'name', value: 'value'}

})

Ejemplo de uso de change


const actualizar = await stock.change({

  data: {

    ProductName: 'Airpods Max'
    Price: 450

  },
  where: {column: 'SKU', value: 'ABC123'}

})

console.log(actualizar)

Al resolverse la promesa, en caso de una actualización exitosa deberías obtener un json asi:


{"execute":true,"affected_rows":1}

en caso de error deberías ver:


{"execute": false, "error": "Información sobre el error"}

la forma de saber el estado de la ejecución es de la siguiente:


const actualizar = await stock.change({

  data: {

    ProductName: 'Airpods Max'
    Price: 450

  },
  where: {column: 'SKU', value: 'ABC123'}

})

const status = actualizar.execute;

if(status){

  console.log("ok");

}else{

  console.log("!ok")

}

Método Remove

El método remove permite eliminar registros de una tabla. Se debe indicar qué registros eliminar mediante condiciones (where). Además, si safeMode está activado en la configuración, será necesario enviar un parámetro de confirmación (permission: true) para evitar la eliminación accidental de datos importantes.

La estructura de remove es:


stock.remove({

    where: {

        column: "name",
        value: "value"

    },
    permission: true

})

Ejemplo de uso de remove


const eliminar = await stock.remove({

    where: {

        column: "SKU",
        value: "ABC123"

    },
    permission: true // es importante enviar esto, ya que si Safe Mode está activo se ignorará la petición

})

console.log(eliminar)

Al resolverse la promesa, en caso de una actualización exitosa deberías obtener un json asi:


{"execute":true,"affected_rows":1}

en caso de error deberías ver:


{"execute": false, "error": "Información sobre el error"}

la forma de saber el estado de la ejecución es de la siguiente:


const eliminar = await stock.remove({

    where: {

        column: "SKU",
        value: "ABC123"

    },
    permission: true

})

const status = eliminar.execute;

if(status){

  console.log("ok");

}else{

  console.log("!ok")

}

Información sobre el funcionamiento de where

El parámetro where permite filtrar los registros que deseas obtener, modificar o eliminar. CrossFlex admite múltiples condiciones al mismo tiempo y cada condición se procesa usando el operador lógico AND por defecto.

Cómo funcionan varios where

Puedes enviar un array con varias condiciones, por ejemplo:


where: [

  {"field": "status", "operator": "=", "value": "active"},
  {"field": "age", "operator": ">", "value": 18}

]

Esto generará una consulta equivalente a:


WHERE status = 'active' AND age > 18

Cada objeto dentro del array representa una condición independiente.

Operadores permitidos

Los operadores más comunes son: =

!=

>

<

>=

<=

LIKE (para patrones)

IN (cuando el valor es un array)

Ejemplo con IN:


where: [

  {"field": "role", "operator": "IN", "value": ["admin", "editor"]}

]

¿Qué pasa si no pones select?

Si no especificas el parámetro select, CrossFlex devolverá todas las columnas de la tabla por defecto.

Información de versiones del proyecto:

7.6.0

Use npm v11.5.1

  • Usarlo para fines personales y comerciales
  • Modificarlo
  • Distribuirlo
  • Integrarlo en otros proyectos

Sin embargo, este software se entrega “tal cual”, sin garantías de ningún tipo. Ni el autor ni Dexly Studios se hacen responsables de daños, fallos, pérdidas de datos, mal uso o cualquier consecuencia derivada del uso de este proyecto.

Puedes usarlo, estudiarlo, modificarlo y adaptarlo con total libertad, siempre conservando este aviso de licencia.

Información final del proyecto:

  • Alejandro Salinas es el creador de este proyecto
  • La versión actual de CrossFlex es v7.1.2
  • Puedes instalar el proyecto clonando el repositorio o con npm install crossflex
  • © 2026 Alejandro Salinas, Dexly Studios, Todos los derechos Reservados.