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

liburno_lib

v5.0.28

Published

Liburno SQLite and utils Library

Downloads

35

Readme

liburno_lib

Questa libreria mette a disposizione un set di funzioni per facilitare la realizzazione di progetti CLI:

Mette a disposizione una classe Database (basata su better-sqlite3), alcune funzioni di servizio, per la gestione di stringhe, una classe 'Post' per comunicare con servizi BackEnd 'Liburno' e una classe per l'invio di Mail.

L'installazione:

npm i liburno_lib

la libreria include l'installazione di alcuni moduli:

  • better-sqlite (con fts5)
  • request
  • nodemailer

all'interno della libreria ci sono diversi moduli e funzioni.

database

const {database} = require("liburno_lib")
var db=database.db('nome.db')
...
db.chiudi()  // chiude anche le eventuali transazioni aperte

Questo è un wrapper di della classe database di better-sqllite. Ha le seguenti funzioni:

  • db=database.db(nomefile): apre e torna un oggetto database

  • res=database.cleansql(sql): pulisce uno statement sql di spazi e commenti. sono accettati anche // come inizio di commento.

  • res=database.splitsql(sql): divide i comandi sq in un vettore 'pulito' in cui a ogni riga corrispone un solo comando

  • database.closeall(): chiude tutte le istanze aperte di database.

Sono state aggiunte diverse funzioni all'oggetto db

  • db.run(sql,pars): anzichè utilizzare db.prepare(sql).run(pars) si può utilizzare questo metodo che permette di inserire diversi comandi sql, separati con ;. Da utilizzarsi in particolare per la creazione del database.

  • db.begin(), db.commit(): inizia e termina una transazione. viene tenuto uno stack delle transazioni.

  • db.chiudi(): da utilizzare al posto di db.close: tiene traccia delle transazioni e mappa il database come chiuso.

  • db.esisteTabella(tb),db.esisteCampo(tb,campo), ispeziona la struttura per determinare se una tabella o un campo sono presenti.

  • db.schema(table,alsodelete): ritorna i comandi sql per la creazione dell'intero database (table=null), ed eventualmente i comandi per la cancellazione con alsodelete=true

  • db.tabledef (tb): comando semplificato per la creazione di una tabella. ritorna l'sql specifico, in particolare per tutti i comandi di creazione FTs5 quando previsto

  • db.export(table,mode): esporta una tabella in una struttura per JSON

  • db.import(table,data): importa e sovrascrive la tabella esportata. Inoltre controlla di inserire solo i campi che corrispondono all'esportazione lasciando invariati gli altri.

  • altri: vi sono altre funzioni interessanti per la generazione automatica di comandi SQL su una tabella: db.tabelle(),db.campi(tabella,modo),db.strinsert(table),db.strdelete(table),db.strvirtual(table,search) per la costruzione di una ricerca FTS5, db.strselect(table,orderder=false)

init

const {init}=require('liburno_lib');
const const { Reset, Bold, Reverse, Red, Green, Yellow, Blue, Magenta, Cyan, White } = init(); // ritorna una serie di varibili per colorare la console.
console.log(Red,'rosso',Yellow,Bold,'yellow',Reset,'back');

Init ha la funzione di richiamare una serie di prototipi sulle classi String, Number e Date che ne estendono la funzionalità.

L'intellisense di code, permette di visualizzarle e usarle.

B

Contiene una serie di funzioni globali di servizio, accedibili anche direttamente.

const {B}=require('liburno_lib');
// esempio B.creaCartella('alfa/beta/gamma/) 
// oppure
const {random,clamp,shuffle,creaCartella}=require('liburno_lib')

Post

Usa node-fetch per rendere disponibili le funzioni per l'accesso ai servizi 'liburno' , e per una lista di utilità :

const {Post}=require('liburno_lib')
const post=new Post(baseurl,utente) // i parametri baseURL e utente sono opzionali

post.post('modulo/funzione', { data}).then(res=>{ console.log(res)}) // accede a un servizio liburno
post.fetchtxt('https:///www.liburno.com').then(d=> console.log(d));           // get dell'indirizzo in formato testo
post.fetchfile(indirizzo,fileout)                        // scarica un file
post.fetchjson(indirizzo).then(d=> console.log(d));      // parsa un indirizzo json
post.fetchbuffer(indirizzo).then (buffer => {  })        // parsa un indirizzo in formato binario, ottimo con sharp!

Mail

Questa utility usa 'nodemailer' per creare una classe mail e spedire una email.

const fs=require('fs')
const {Mail}=require('liburno_lib');
const mail=new mail(email,password);
// utilities
const fileconf=".mailconfig.json"; // file configurazione nascosto
fs.writeFileSync(fileconf,JSON.stringify(mail.config,null,2)) // struttura di un file di configurazione
    
... // oppure
const mail=new mail();
mail.configFile(fileconf)    // imposta un file di configurazione per il trasporto

... // per inviare

mail.send(to, subject, text)
    .then((info)=>{
        console.log(info.messageId);
    })
    .catch(e=>{
        console.log("Error",e);
    })