# errformance

> Permette di decidere se utilizzare assert o throw error in base a configurazione iniziale, e di poter disabilitare gli assert ad esempio in base all'ambiente per migliorare le performance in produzione.

Latest version **0.0.0** (published 2022-05-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install errformance
pnpm add errformance
yarn add errformance
bun add errformance
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.0 |
| Published | 2022-05-17 |
| First published | 2022-05-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 4.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Raffaele Balsamo |
| Maintainers | cityseventeen |
| Keywords | assert, error, disabling |

## Links

- npm: https://www.npmjs.com/package/errformance
- Repository: https://github.com/CitySeventeen/Errformance
- Homepage: https://github.com/CitySeventeen/Errformance#readme
- Issues: https://github.com/CitySeventeen/Errformance/issues
- npm.io page: https://npm.io/package/errformance

## Alternatives

- [@sentry/react-native](https://npm.io/package/@sentry/react-native.md) — 2.6M weekly downloads
- [@ardatan/aggregate-error](https://npm.io/package/@ardatan/aggregate-error.md) — 708.1K weekly downloads
- [custom-error-generator](https://npm.io/package/custom-error-generator.md) — 2.0K weekly downloads
- [@technik-sde/prosemirror-recreate-transform](https://npm.io/package/@technik-sde/prosemirror-recreate-transform.md) — 1.5K weekly downloads
- [@suchipi/error-utils](https://npm.io/package/@suchipi/error-utils.md) — 78 weekly downloads

## Recent versions

- 0.0.0 (latest) — 2022-05-17

## README

# Performance Error
Permette in modo agevole la disabilitazione degli assert inseriti a scopo di unit test, ad esempio in ambiente di produzione per migliorare le performance.
Pensato anche per chi scrive package e moduli, si può configurare la restituzione di errori o assert senza modificare nulla nel codice;
in questo modo, si possono inserire assert puri per le funzioni interne, o private, e tipi `errformance` nelle interfacce verso l'utilizzatore,
così che possa decidere lui se mantenerli come assert disattivabili in produzione, o come errori puri non disattibili.

## Esempio di utilizzo
```js
//Modulo A
const e = require('errformance')('dev') //gli assert sono disattivati se l'ambiente è diverso da dev, oppure si può inserire una callback più complesa per le regole di disattivazione

class interfaccia{
    metodo(arg){
        e.error(typeof arg === 'string', 'messaggio errore') // o anche, come da metodi assert es di chai, errformance.isString(arg, 'messaggio errore')
        return funzioneInterna(arg)
} 
}
function funzioneInterna(arg){
    e.assert(arg === 'valore1' || arg === 'valore2', 'messaggio errore')
    let new_value = maipolaArg(arg)
    return new value
}
module.exports = interfaccia;

//Modulo B
process.env.NODE_ENV = 'prod'
const moduloA = require('moduloA') // -> gli assert vengono disattivati

function funzioneCheUsaModuloA(args){
    /* corpo */}
}

module.exports = funzioneCheUsaModuloA;
```
Ed eventualmente, se a sua volta il modulo B verrà usato in altri progetti (Modulo C), l'utilizzatore potrà decidere se avere restituiti gli errori se sbaglia ad usare l'interfaccia, o dopo esito positivo unit test, trasformarli in assert disabilitabili
```js
//ModuloC

process.env.NODE_ENV = 'dev' // -> gli assert di modulo A sono attivi
const moduloB = require('moduloB')
function unitTest(){/*...*/}
// utilizzo del modulo B in produzione
process.env.NODE_ENV = 'prod' // -> assert disattivati, ma rimangono ancora attivi gli e.error
process.env.ERRFORMANCE = 'assert' // -> gli e.error sono considerati come assert, e quindi essendo NODE_ENV = prod sono disattivati
```

---
_Source: https://npm.io/package/errformance · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
