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 🙏

© 2024 – Pkg Stats / Ryan Hefner

mechdb

v0.0.3

Published

Interfaz para manejar datos en archivos JSON

Downloads

14

Readme

Documentación en proceso, todos los métodos están documentados con JsDoc, cualquier duda: https://discord.gg/rPaBEz4

Ejemplo:

    async function main() {
    let db = await mechdb.abrirDB.async("datos/usuarios"); //Si se quiere abrir de forma síncrona, usar sync
    await db.establecer("clientes.390234", {nombre: "Nombre", apellido: "Apellido", edad: 18});
    let cliente = db.obtener("clientes.390234"); //{ nombre: 'Nombre', apellido: 'Apellido', edad: 18 }
    await db.opreacion("clientes.390234.edad", 2, "sumar");
    //cliente = { nombre: 'Nombre', apellido: 'Apellido', edad: 20 }
    
}

main()

size(): number

Muestra la cantidad de claves principales que tiene la base de datos

establecer(): Promise

/**
 * Establece un valor en la base de datos de manera asíncrona
 * @param {string} clave 
 * @param {any} dato 
 * @param {{separador: ".", guardar: true}} opciones 
 * @example await establecer("id", 1)
 * @example await establecer("usuario.dinero.cartera", 200)
 * @example await establecer("usuario-dinero-cartera", 200, {separador: "-"})
 * @returns {Promise<Database>} La base de datos actualizada
 */

tiene(): boolean

/**
 * Comprueba si la base de datos contiene la clave indicada
 * @param {string} clave Clave que se quiera comprobar
 * @example .tiene("usuarios.234123");
 * @param {{separador: "."}} opciones Opciones extra
 * @returns {boolean}
 */

eliminar(): Promise

/**
 * Elimina un elemento de la base de datos
 * @param {string} clave Clave del elemento
 * @param {{separador: ".", guardar: true}} opciones Opciones extra
 * @example .eliminar("usuarios.12342");
 * @returns {Promise<Database>} La base de datos actualizada
 */

push(): Promise

/**
 * Agrega un valor al final de un array
 * @param {string} clave Clave del array
 * @param {*} dato Dato que se quiera agregar
 * @param {{separador: ".", guardar: true}} opciones Opciones extra
 * @example .push("usuarios.12341.logros", {nombre: "Logro", xp: 200});
 * @returns {Promise<Database>} La base de datos actualizada
 */

buscar(): any

/**
 * Adaptación de Array.prototype.find (Busca un elemento dentro de un array)
 * @param {string} clave La clave del array
 * @param {any} callback Callback que se usará para hacer la comprobación (valor) => void
 * @example .buscar("usuarios.12341.logros", (valor) => valor.xp > 10);
 * @returns {any} El resultado o undefined
 */

filtrar(): any[]

/**
 * Adaptación de Array.prototype.filter (Devuelve un nuevo array, con los valores del array indicado que cumplan la condición)
 * @param {string} clave La clave del array
 * @param {any} callback Callback que se usará para hacer la comprobación (valor) => void
 * @param {string} separador Signo que se usará para separar las claves
 * @example .filtrar("usuarios.12341.logros", (valor) => valor.xp > 10);
 * @returns {any[]} El array filtrado
 */

map(): any[]

/**
 * Adaptación de Array.prototype.map
 * @param {string} clave  Clave del array que se quiere mapear
 * @param {any} callback Callback que se usará para hacer el mapeo (valor) => void
 * @example .map("usuarios.12341.logros", (valor) => "El logro " + valor.nombre + " otorga " + valor.xp + "experiencia")
 * @param {string} separador SIgno que se usará para separar las claves
 * @returns {any[]} El array mapeado
 */

ordenar(): any[]

/**
 * Ordena un array, se puede indicar si se quiere ordenar de manera ascendente, o descendente
 * En caso de indicar un callback, se usará para ordenar el array
 * @param {string} clave Clave del array que se quere ordenar
 * @param {{callback: (a, b) => void, asc: true, separador: ".", guardar: false}} opciones Opciones extra
 * @example .ordenar("usuarios.12341.logros", {asc: false}) //Ordena el array de manera descendente
 * @example .ordenar("usuarios.12341.logros", {callback: (a, b) => a.xp - b.xp}) //Ordena el array usando un callback
 * @returns {any[]} El array ordenado
 */

some(): any

/**
 * Busca un valor dentro de la base de datos, que cumpla con la condición, usando la clave
 * En caso de marcar 'global' como true, se ignorará la clave y se buscará en toda la base de datos.
 * También al marcar 'global' como true, se devolverá un array -> [valor, clave]
 * 
 * @param {string} clave La calve del objeto donde se quiera buscar el valor
 * @param {(valor, clave: string) => void} callback  Callback que se usará para la comprobación
 * @param {global: false, separador: "."} opciones Opciones extra
 * @example .some("usuarios", (valor, clave) => valor.fechas.includes(20/12/2020))
 * @returns {any} El valor encontrado o undefined
 */

delIndex(): Promise

/**
 * Elimina un elemento que tenga la posición indicada, en el array
 * @param {string} clave Clave del array
 * @param {number} index Posición del array en la que se quiere eliminar
 * @param {{separador: ".", guardar: true}} opciones Opciones extra
 * @example .delIndex("usuarios.12341.logros", 1)
 * @returns {Promise<Database>} La base de datos actualizada
 */

setIndex(): Promise

 /**
 * Cambia un elemento del array indicado, en la posición indicada
 * @param {string} clave Clave del array
 * @param {number} index Posición del array que se quiere modificar
 * @param {any} valor Nuevo valor que se insertará
 * @param {{separador: ".", guardar: true}} opciones Opciones extra
 * @exapmle .setIndex("usuarios.12341.logros", 1, {Nombre: "Nombre", xp: 20})
 * @returns {Promise<Database>} La base de datos actualizada
 */

splice(): Promise

/**
 * Elimina el valor especificado, del array especificado -> Array.prototype.splice
 * @param {string} clave Clave del array
 * @param {any} valor Valor que se quiera eliminar
 * @param {{separador: ".", guardar: true}} opciones Opciones extra
 * @exapmle .splice("usuarios.12314.logros", {Nombre: "Nombre", xp: 20})
 * @returns {Promise<Database>} La base de datos actualizada
 */

random(): any[]

/**
 * Devuelve la cantidad especificada de objetos aleatorios, en la clave indicada
 * @param {string} clave Clave del objeto
 * @param {number} cantidad Cantidad que se quiera devolver
 * @param {{separador: "."}} opciones Opciones extra
 * @exapmle .random("usuarios", 5);
 * @returns {any[]} Los objetos aleatorios
 */

obtener(): any

/**
 * Devuelve el valor indicado
 * @param {string} clave Clave del valor
 * @param {{separador: "."}} opciones Opciones extra
 * @example .obtener("usuarios.12421");
 * @returns {any} El valor obtenido
 */

opreacion(): Promise

/**
 * Realiza una operación matemática con dicha clave
 * @param {string} clave Clave en la que se realizará la operación
 * @param {number} cantidad La cantidad que se que se usará
 * @param {"sumar"|"restar"|"multiplicar"|"dividir"} operacion El tipo de operación
 * @param {{separador: ".", guardar: true}} opciones Opciones extra
 * @exapmle .operacion("usuarios.1241.nivel", 1, "sumar");
 * @returns {Promise<Database>} La base de datos actualizada
 */

vaciar(): Promise

/**
 * Vacía la base de datos
 * @param {boolean} guardar Si se desea guardar
 * @example .guardar()
 * @returns {Promise<Database>} La base de datos actualizada
 */

valores(): any[]

/**
 * Devuelve todos los valores de la propiedad indicada (tiene que ser un objeto)
 * @param {string} clave La calve de la propiedad
 * @param {{separador: "."}} opciones Opciones extra
 * @example .valores("usuarios");
 * @returns {any[]} Los valores del objeto
 */

claves(): string[]

/**
 * Devuelve todas las claves de la propiedad indicada (tiene que ser un objeto)
 * @param {string} clave La calve de la propiedad
 * @param {{separador: "."}} opciones Opciones extra
 * @exapmle .claves("usuarios");
 * @returns {string[]} Las claves del objeto
 */