Insieme di utilità suddivise in categorie di applicazione.
Package per npm
.
- Installazione
- Contenuto del package
$ npm install leukos-tech-jsutils --save
Di seguito l'elenco degli oggetti contenuti nel package.
Oggetto contenente funzioni dedicate all'I/O (lettura, scrittura, copia, etc)
Crea una copia dell'oggetto (json-parsable) fornito come 1° argomento
-
object
{Object} Oggetto da copiare (deve essere json-parsable). -
safeJson
{Boolean} Sefalse
(default) copia l'oggetto così come è. Altrimenti applica il filtro inleukos-tech-jsutils.json.safeJsonData()
(Vai alla documentazione).
-
copied
{Object} La copia dell'oggetto fornito, indipendente dall'oggetto originario (modificando i valori dell'uno l'altro rimane invariato).
const {copyObj} = require('leukos-tech-jsutils').io;
// Require dell'oggetto
let independent_copy = copyObj(object_to_copy, false);
// Restituisce una copia dell'oggetto
let independent_copy = copyObj(object_to_copy, true);
// Restituisce una copia dell'oggetto in cui i campi sensibili sono stati alterati
Oggetto contenente funzioni dedicate all'oggetto JSON
.
Filtro da utilizzare come 2° argomento per la funzione JSON.stringify(object, replacer). Sanitizza proprietà dell'oggetto fornito come argomento contenenti dati sensibili (come le password).
-
key
{String} Chiave corrente -
value
{any} Valore associato alla chiave, eventualmente da sanitizzare se la chiave è inclusa tra le regole di sanitizzazione.
-
filteredValue
{any} Il valore intonso, se la chiave non ricade tra quelle da sanitizzare, o il valore sanitizzato.
const {safeJsonData} = require('leukos-tech-jsutils').json;
let cleanObj = JSON.stringify(some_object, safeJsonData);
Per campi identificati dalle chiavi:
password
pwd
passkey
passphrase
restituisce "***********" invece del valore originale
Oggetto contenente funzioni di utilità per il logging
Aggiunge al messaggio info utili al logging
come il nome del file del modulo, il nome della funzione, il numero di riga, etc.
-
message
{String} Messaggio da loggare -
addTimestamp
{Boolean} Setrue
(default) aggiunge il timestamp a inizio della riga
-
toLogger
{String} Stringa pronta per essere passata al logger.
Aggiunge al messaggio info utili al logging
come il nome del file del modulo, il nome della funzione, il numero di riga, etc. e quelle di base dell'errore (message
e name
)
-
message
{String} Messaggio da loggare -
err
{Object} Derivato diError
da cui estrapolarename
emessage
. -
addTimestamp
{Boolean} Setrue
(default) aggiunge il timestamp a inizio della riga
-
toLogger
{String} Stringa pronta per essere passata al logger.
Contiene funzioni dedicate agli errori e alla loro gestione
Estrapola lo stack dell'oggetto fornito come argomento err
. Wrapper di errors.stackParser()
.
-
err
{Object} Oggetto da cui estrapolare la proprietà.stack
{String}. -
meaningIndex
{Number} Indice iniziale per i dati significativi da estrapolare dalla stringastack
(elimina quelli precedenti).mUna volta trasformato in array esegue il metodoArray.splice(0, meaningIndex)
per rimuovere da esso dati spuri dovuti all'elaborazione.
stackData
{StackObject}, oggetto con le seguenti proprietà:
-
meaning
{StackData} Oggetto contenente le proprietà per il livello più alto dellastack
(secondo le proprietàfile
,func
,line
,col
) -
caller
{StackData} Oggetto contenente le proprietà del livello caller (secondo le proprietàfile
,func
,line
,col
)) -
lower
{Array} Array di oggettiStackData
a ritroso per la stack
Effettua il parsing della stringa di stack fornita come argomento.
-
stack
{String} Stack di cui effettuare il parsing -
meaningIndex
{Number} Indice iniziale per i dati significativi da estrapolare dalla stringastack
(elimina quelli precedenti). Una volta trasformato in array esegue il metodoArray.splice(0, meaningIndex)
per rimuovere da esso dati spuri dovuti all'elaborazione.
stackData
{StackObject}, oggetto con le seguenti proprietà:
-
meaning
{StackData} Oggetto contenente le proprietà per il livello più alto dellastack
(secondo le proprietàfile
,func
,line
,col
) -
caller
{StackData} Oggetto contenente le proprietà del livello caller (secondo le proprietàfile
,func
,line
,col
)) -
lower
{Array} Array di oggettiStackData
a ritroso per la stack
Restituisce l'oggetto StackObject
dell'istante in cui viene chiamata sollevando una eccezione fittizia ed utilizzando su di essa la funzione stackParser()
.
stackData
{StackObject}, oggetto con le seguenti proprietà:
-
meaning
{StackData} Oggetto contenente le proprietà per il livello più alto dellastack
(secondo le proprietàfile
,func
,line
,col
) -
caller
{StackData} Oggetto contenente le proprietà del livello caller (secondo le proprietàfile
,func
,line
,col
)) -
lower
{Array} Array di oggettiStackData
a ritroso per la stack
Package di Classi ancestor da ereditare per implementare funzionalità specifiche negli oggetti.
Classe Ancestor per fornire a quelle che la ereditano funzionalità native di logging.
Ognuna delle classi child possiederà i metodi:
._debug(message)
._info(message)
._warn(message)
._error(message)
Le classi che la ereditano devono prevedere, nel proprio costruttore, gli argomenti:
-
debugEnabled
{Boolean} -
loggerInstance
{Object} (opzionale) -
loggerLevel
{Number} (opzionale)
da fornire al costruttore di LoggedClass
tramite
super(debugEnabled, loggerInstance, loggerLevel);
Package di classi Errore personalizzate da utilizzare nei progetti Leukos-Tech
.
Errori relativi agli argomenti delle funzioni
Un argomento necessario allo svolgimento della funzione non è stato fornito
new MissingArgError(argName {String})
Un argomento è stato fornito del tipo sbagliato
new WrongArgTypeError(argName{String}, value{Any}, expected{Any})
Utilità focalizzate sullo unittesting.
leukos-tech-jsutils.tests.getHeaderString( headerString {String}, delimiter {Number}, spacer {String}, delta {Number}, extra {String} ): graphicString {String}
Genera una stringa grafica con l'header sulla sinistra e una serie di carateri ai lati.
-
headerString
{String} Stringa da utilizzare come header -
delimiter
{String} Carattere da utilizzare al principio e fine della stringa generata (Delimitatore) -
spacer
{String} Carattere da utilizzare per riempire la stringa ai lati dell'headerString
-
delta
{Number} Numero di char di rientro laterale (default=0) (Viene moltiplicato per una costante - 2). -
extra
{String} Caratteri extra da aggiungere al termine della stringa (generalmente\n
per spaziature verticali)
-
graphicString
{String} Stringa da utilizzare come header per le funzionidescribe()
di unittesting
Se process.env.DEBUG
è true
o 1
aggiunge un \n
all'inizio della stringa per aumentare la spaziatura verticale
Restituisce una stringa grafica per l'header fornito, in base al preset selezionato
-
header
{String} Stringa con l'header -
level
{Number} Identificativo del tipo di formattazione (default=2)
-
graphicString
{String} Stringa da utilizzare come header per le funzionidescribe()
di unittesting
Se process.env.DEBUG
è true
aggiunge un \n
all'inizio della stringa per aumentare la spaziatura verticale
-
0
>
|======== <header> ===========================|
-
1
-->
:------ <header> -------------------------:
-
2
---->
----- <header> ------------------------
[DEFAULT] -
3
---->
~~~~~ <header ~~~~~~~~~~~~~~~~~~~~~~~~~
-
4
-->
¦~~~~~~ <header> ~~~~~~~~~~~~~~~~~~~~~~~~~¦
-
5
>
§~~~~~~~~ <header> ~~~~~~~~~~~~~~~~~~~~~~~~~~~§
Classe per gestire, mostrare e memorizzare misurazioni temporali in alta risoluzione dell'esecuzione delle funzioni testate.
Costruttore dell'oggetto
-
header
{String} stringa da utilizzare come intestazione per il report coi risultati (es."myfunction(arg1, arg2)"
)
Aggiunge una misurazione ai risultati (da utilizzare nei metodi it()
).
-
header
{String} Signature della funzione testata o id del test case(es."myfunction(arg1, arg2)"
) -
time
{Array} Array di 2 elementi prodotto dal metodoprocess.hrtime()
-
args
{Array} Array con gli argomenti utilizzati per la chiamata al metodo testato
Restituisce i risultati sotto forma di stringa multilinea. Se save
è true
, li memorizza su disco. Se reset
è true
azzera l'oggetto prima di restituirli sotto forma di stringa multilinea.
-
save
{Boolean} Setrue
(default) memorizza i dati su disco nella posizione{%HOME}/Leukos-Tech-TimingResults/{header}/{isoDate}.txt
, altrimenti si limita a visualizzare il report a schermo. -
reset
{Boolean} Setrue
(default) azzera i dati nell'oggetto prima di restituirli sotto forma di stringa multilinea, altrimenti li matiene.
-
resultsString
{String} Stringa multilinea da passare allaconsole
in fase di unittesting.
Decoratori per funzioni e metodi suddivisi per categoria
Sottopone a caching il metodo/funzione decorato/a.
-
method
{Function} Funzione o metodo cui applicare il caching. -
enabled
{Boolean} Setrue
(default) la funzionalità di caching viene abilitata.
-
cachedFunc
{Function} La funzione sottoposta a caching.
Notazione standard
let cachedMethod = leukos-tech-jsutils.decorators.cacheIt(method, true);
Notazione decoratore
@leukos-tech-jsutils.decorators.cacheIt(true)
function laMiaFunzione(args) {
...
}
Funzioni di verifica per gli oggetti.
Verifica che l'oggetto inspected
fornito come argomento possieda le proprietà specificate nell'oggetto cfrData
.
-
inspected
{Object} Oggetto da validare. -
cfrData
{Object} Oggetto con i dati per la verificaLa struttura deve essere la seguente:
{ <propertyName>: <propertyType>, <propertyName>: <propertyType>, ...}
es.
{ "name": "string", "phone": "number", ... }
Se al posto della stringa con tipo atteso viene fornito
null
il type-check viene saltato, e la sola presenza della proprietà viene assicurata.
Restituisce un oggetto con le seguenti proprietà:
-
success
{Boolean}true
se la validazione è stata superata. -
problem
{String} Sesuccess
èfalse
indica la natura del primo problema incontrato dalla funzione ("MISS"
per una proprietà mancante,"WRONG"
per una con type errato); -
propertyName
{String} Sesuccess
èfalse
contiene il nome della proprietà che non ha passato il test. -
value
{Any} Sesuccess==false
eproblem=="WRONG"
contiene il valore (errato) fornito per la proprietàpropertyName
. -
expected
{Any} Sesuccess==false
eproblem=="WRONG"
contiene iltype
del valore atteso.
Importare il package equivale automaticamente ad arricchiere gli oggetti di base delle seguenti funzionalità
Rimpiazza tutte le occorrenze della stringa str1
con la stringa str2
, in modalità case-unsensitive
se l'argomento ignore
viene fornito true
-
str1
{String} Porzione della stringa da rimpiazzare -
str2
{String} Stringa con cui rimpiazzarestr1
nella stringa -
ignore
{Boolean} Setrue
ignora il case. Altrimenti (default) lo tiene in cosiderazione.
require('leukos-tech-jsutils'); // L'estensione dei types avviene qui.
"ABABAB".replaceAll("A", "C") ==> "CBCBCB";
"x".replaceAll("x", "xyz") ==> "xyz"
"x".replaceAll("", "xyz") ==> "xyzxxyz"
"aA".replaceAll("a", "b", true) ==> "bb"
"Hello???".replaceAll("?", "!") ==> "Hello!!!""