snugerror
v0.0.6
Published
Snugerror is a library that facilitates the handling of errors in a given routine; was raised aimed at separating the code focused on business rules and error checking.
Downloads
18
Maintainers
Readme
Snugerror
Installation:
npm install snugerror
# or
yarn add snugerror
Methods:
Basic example with next method:
Triggers the next instruction for error checking, starts at position 0 of the array.
.next(...args)
import handleError from 'snugerror'
let errors = handleError([
function(data){
// Your routine for data validation here
if (!data) throw new Error('You error: error 1')
},
function(a, b){
// Your routine for data validation here
if (a !== b) throw new Error('Values is not equals')
},
(data) => {
// Your routine for data validation here
if(!data?.name) throw new Error('Type your name')
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
let data = {
a: 1,
b: 1,
name: null
}
iterator.next(data)
console.log('hello') // this console.log will running
data.b = 3
iterator.next(data.a, data.b) // will launch error 'Values is not equals'
iterator.next(data)
res.send('Hello World') // This answer will not be delivered
});
Method repeatNext:
Repeats execution of .next() a certain number of times passed as an argument.
.repeatNext(total_repeat)(...args)
import handleError from 'snugerror'
let errors = handleError([
function(data){
// Your routine for data validation here
if (!data) throw new Error('You error: error 1')
},
function(data){
// Your routine for data validation here
if (data.a !== data.b) throw new Error('Values is not equals')
},
(data) => {
// Your routine for data validation here
if(!data?.name) throw new Error('Type yout name')
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
let data = {
a: 1,
b: 1,
name: null
}
iterator.repeatNext(3)(data) // Will iterate over function 0, 1 and 2 of the array
res.send('Hello World') // This answer will not be delivered
});
Error method:
Returns an error from a specific position, or from a specific function.
.error(<position>)(...args)
.error(<name_function>)(...args)
import handleError from 'snugerror'
let errors = handleError([
function (data){
// Your routine for data validation here
if (!data) throw new Error('You error: error 1')
},
function check_id_user (data){
// Your routine for data validation here
if(!data?.id) throw new Error('User id is not valid')
},
(a, b) => {
// Your routine for data validation here
if (a !== b) throw new Error('Values is not equals')
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
let data = {
a: 1,
b: 3,
name: null
}
iterator.error(0)(data) // will launch <Error: 'You error: error 1'>
iterator.error(2)(data.a, data.b) // will launch <Error: 'Values is not equals'>
iterator.error('check_id_user')(data) // will launch <Error: 'User id is not valid'>
res.send('Hello World') // This answer will not be delivered
});
Message method:
Passes a message to the function context.
.message(<your message error>).error
.message(<your message error>).next
.message([<your message error 1>, <your message error 2>]).repeatNext
import handleError from 'snugerror'
let errors = handleError([
function(data){
// Your routine for data validation here
if (!data) throw new Error(this.message || 'Failed operation') // will launch <Error: 'You error: error 1'>
},
function(data){
// Your routine for data validation here
if (!data) throw new Error(this.message || 'Failed operation') // will launch <Error: 'this is error 2'>
},
function(data){
// Your routine for data validation here
if (!data) throw new Error(this.message || 'Failed operation') // will launch <Error: 'this is error 3'>
},
])
...
app.get("/", (req, res) => {
const iterator = errors()
iterator.message('You error: error 1').next(undefined)
iterator.message('You error: error 1').error(0)(undefined)
iterator.message(['this is error 2', 'this is error 3']).repeatNext(2)(undefined)
res.send('Hello World') // This answer will not be delivered
});
Method errors:
Returns a list of errors issued up to the call of this function.
import handleError from 'snugerror'
let errors = handleError([
function (data){
// Your routine for data validation here
if (!data) throw new Error('You error: error 1')
},
function check_id_user (a, b){
// Your routine for data validation here
if(!data?.id) throw new Error('User id is not valid')
},
(data) => {
// Your routine for data validation here
if (a !== b) throw new Error('Values is not equals')
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
try{
iterator.next(undefined)
iterator.next(1, 3)
iterator.next({name: null})
} catch (error){}
console.log(iterator.errors) // [<uncaughtException>, <uncaughtException>, <uncaughtException>]
...
});
Method checkAll:
Cycles through all error handling functions.
import handleError from 'snugerror'
let errors = handleError([
function (data){
// Your routine for data validation here
if (!data) throw new Error('You error: error 1')
},
function check_id_user (a, b){
// Your routine for data validation here
if(!data?.id) throw new Error('User id is not valid')
},
(data) => {
// Your routine for data validation here
if (a !== b) throw new Error('Values is not equals')
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
iterator.checkAll(undefined)
...
});
Attributes:
Parameter passing: this.params
Pass parameters in constructor.
import handleError from 'snugerror'
let errors = handleError([
function(data){
console.log(this.params) // [{foo: 'bar'}, 'hello', 'world', 1]
...
},
function(a, b){
const [obj, var_1, var_2, var_3] = this.params
console.log(obj) // {foo: 'bar'}
console.log(var_1) // hello
console.log(var_2) // world
console.log(var_3) // 1
...
}
])
...
app.get("/", (req, res) => {
const iterator = errors({foo: 'bar'}, 'hello', 'world', 1)
...
});
Return message: this.message
Returns the message passed when the error was issued, see message method
Error handler/function name: this.errorName
Returns the name of the exception-throwing function, ie the name of the error/function handle if you prefer.
import handleError from 'snugerror'
let errors = handleError([
function check_payment(data){
console.log(this.errorName) // check_payment
...
},
function verify_user_id(data){
console.log(this.errorName) // verify_user_id
...
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
...
});
Method return: this.methods
Returns all methods.
import handleError from 'snugerror'
let errors = handleError([
function (data){
console.log(this.methods) // {next, repeatNext, error, errors, message}
...
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
...
});
Throw attribute: this.throw
Throw an exception.
this.throw(<error_name>, <error_message>)
or
this.throw(<error_message>)
import handleError from 'snugerror'
let errors = handleError([
function (data) {
if (!data?.name) this.throw('E001', 'Here is a error') // <E001: Here is a error> instead of <Error: Here is a error>
}
])
// ----------------------------or---------------------------
let errors = handleError([
function (data) {
if (!data?.name) this.throw('Here is a error') // <Error: Here is a error>
}
])
// ----------------------------or---------------------------
let errors = handleError({
'E001': (foo) => 'erro 1 '+foo
}, [
function (data) {
if (!data?.name) this.throw('E001', 'here') // <E001: erro 1 here>
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
...
});
Other settings:
Dictionary errors:
import handleError from 'snugerror'
let errors = handleError({
'E001': () => 'Example error 1',
'E002': (a, b) => `Values is not equals: ${a} !== ${b}`
}, [
function(data){
// Your routine for data validation here
if (!data) this.throw('E001') // will launch <E001: 'Example error 1'>
},
function(a, b){
// Your routine for data validation here
if (a !== b) this.throw('E002', a, b) // will launch <E002: 'Values is not equals: 1 !== 3'>
},
(data) => {
// Your routine for data validation here
if(!data?.name) throw new Error('Type yout name') // will launch <Error: 'Type yout name'>
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
let data = {
a: 1,
b: 1,
name: null
}
iterator.next(data)
console.log('hello') // this console.log will running
data.b = 3
iterator.next(data.a, data.b) // will launch error 'Values is not equals'
iterator.next(data)
res.send('Hello World') // This answer will not be delivered
});
Create method:
In this way it is possible to configure an error message dictionary and an exception listener.
//----------------config.ts-------------------------------
import snugerror from 'snugerror'
export const handleError = snugerror.create({
dictionary: {
'E001': () => 'Example error 1',
'E002': (a, b) => `Values is not equals: ${a} !== ${b}`
'E003': () => 'ERRO 3 here',
},
onError(error){
console.log(error.name, error.message)
}
})
//----------------any-file.ts-------------------------------
let errors = handleError([
function(data){
// Your routine for data validation here
if (!data) this.throw('E001') // will launch <E001: 'Example error 1'> Obs.: error by dictionary in config.ts
},
function(a, b){
// Your routine for data validation here
if (a !== b) this.throw('E002', a, b) // will launch <E002: 'Values is not equals: 1 !== 3'> Obs.: error by dictionary in config.ts
},
(data) => {
// Your routine for data validation here
if(!data?.name) throw new Error('Type yout name') // will launch <Error: 'Type yout name'>
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
let data = {
a: 1,
b: 1,
name: null
}
iterator.next(data)
console.log('hello') // this console.log will running
data.b = 3
iterator.next(data.a, data.b) // will launch error 'Values is not equals'
iterator.next(data)
res.send('Hello World') // This answer will not be delivered
});
Create method and local dictionary:
It is possible to rewrite certain dictionary items if I pass a local dictionary.
//----------------config.ts-------------------------------
import snugerror from 'snugerror'
export const handleError = snugerror.create({
dictionary: {
'E001': () => 'Example error 1',
'E002': (a, b) => `Values is not equals: ${a} !== ${b}`
'E003': () => 'ERRO 3 here',
},
onError(error){
console.log(error.name, error.message)
}
})
//----------------any-file.ts-------------------------------
let errors = handleError({
'E001': () => 'Example error 1, hello i am a local error',
'OTHER': (a, b) => `Hello, data are bad`,
},[
function(data){
// Your routine for data validation here
if (!data) this.throw('E001') // will launch <E001: 'Example error 1, hello i am a local error'> Obs.: error by local dictionary
},
function(a, b){
// Your routine for data validation here
if (a !== b) this.throw('E002', a, b) // will launch <E002: 'Values is not equals: 1 !== 3'> Obs.: error by dictionary in config.ts
},
(data) => {
// Your routine for data validation here
if(!data?.name) this.throw('OTHER') // will launch <OTHER: 'Hello, data are bad'>
}
])
...
app.get("/", (req, res) => {
const iterator = errors()
let data = {
a: 1,
b: 1,
name: null
}
iterator.next(data)
console.log('hello') // this console.log will running
data.b = 3
iterator.next(data.a, data.b) // will launch error 'Values is not equals'
iterator.next(data)
res.send('Hello World') // This answer will not be delivered
});