# kron

> O kron e um framework, que visa ser rápido e fácil de ser utilizado.

Latest version **1.0.30** (published 2019-10-01) · MIT license · 0 weekly downloads

## Install

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

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.30 |
| Published | 2019-10-01 |
| First published | 2019-09-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 29 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Matheus Moreira Militão |
| Maintainers | matheus3693 |
| Keywords | http, nodejs http, server, framework server, kron |

## Links

- npm: https://www.npmjs.com/package/kron
- Repository: https://github.com/Militao36/kron
- Homepage: https://github.com/Militao36/kron#readme
- Issues: https://github.com/Militao36/kron/issues
- npm.io page: https://npm.io/package/kron

## Dependencies (3)

- [qs](https://npm.io/package/qs.md) ^6.9.0
- [url-pattern](https://npm.io/package/url-pattern.md) ^1.0.3
- [querystringify](https://npm.io/package/querystringify.md) ^2.1.1

## Recent versions

- 1.0.30 (latest) — 2019-10-01
- 1.0.29 — 2019-10-01
- 1.0.28 — 2019-10-01
- 1.0.27 — 2019-09-29
- 1.0.26 — 2019-09-28
- 1.0.25 — 2019-09-28
- 1.0.24 — 2019-09-28
- 1.0.23 — 2019-09-28
- 1.0.22 — 2019-09-28
- 1.0.21 — 2019-09-28
- 1.0.20 — 2019-09-28
- 1.0.19 — 2019-09-27
- 1.0.18 — 2019-09-26
- 1.0.17 — 2019-09-26
- 1.0.16 — 2019-09-26
- … 16 more at https://npm.io/package/kron/versions

## README

### Framework Kron



# Kron

#### Como utilizar o módulo  Kron.

```javascript
import { Kron } from 'kron';
const kron = new Kron(); 

const middleware = ({ request, response, next }) => {
    return next;
}

kron.route({
    method: 'GET',
    path: '/',
    handler: ({ response }) => {
        return response.status(203).json({ tudo: "certo" });
    }
});

kron.listen(3000); // Inicia o server, conter apenas um em todo sistema
```

### Métodos.


# Kron
O módulo kron ao ser importado, ele deverá ser instanciado, deverá conter apenas uma instância do kron, onde será o ponto de entrada. Para inciar o servidor deve-se no final usar o `server.listen(3000);`
```javascript
import { kron } from 'kron';
const kron = new Kron();

kron.route({
    method: 'GET',
    path: '/',
    handler: ({ response }) => {
        return response.status(203).json({ tudo: "/Cliente" });
    }
});

kron.listen(3000);
```

## Rotas
O kron tem um sistema de rotas, bem elegante, com ele você pode criar suas rotas muito facilmente. Segue abaixo o modo de criar novas rotas, deverá ser importado do módulo kron, deverá ser criado uma nova instância. Com isso já poderá ser criado novas rotas.
```javascript
import { kron } from 'kron';
const kron = new Kron();
```
### Como criar novas rotas.
```javascript
import { kron } from 'kron';
const kron = new Kron();

kron.route({
    method: 'GET',
    path: '/',
    handler: ({ response }) => {
        return response.status(203).json({ tudo: "/Cliente" });
    }
});

kron.listen(3000);
``` 
A sintaxe de se trabalhar com rotas no kron, e bem simples deve apenas passar um objeto, que terá as seguinte propriedades.

## Exemplo de rota.
```javascript
{
    method:"GET",
    path:"/",
    middleware:[], // Opcional
    handler:({ response, request, next }) {
    
    }
}
```
## Explicação dos campos da estrutura da rota.

- **method**: Nesse atributo, deverá ser adicionado o método `HTTP` em upperCase.

- **path**: Nesse atributo, deverá ser adicionado o `path`.

- **middleware** : Esse atributo e o único que não é obrigatório, nele será passado um array de middlewares, que será executado antes do método `handler`, caso queira  apenas validar alguns dados, é caso esteja tudo certo ele vá para método handler, deverá ser retornado o next, propriedade que terá acesso pela desestruturação dos argumentos, e caso queira que o próprio middleware realiza a resposta para o solicitante, e que não chegue no handler, será preciso apenas realizar a resposta normalmente.
>return response.send("Método parou no middleware")

```javascript
const middleware = ({ request, response, next }) => {
    return response.send("Método parou no middleware")
}
kron.route({
    method: 'GET',
    path: '/',
    middleware: [middleware],
    handler: ({ response }) => {
        return response.status(203).json({ tudo: "/Cliente" });
    }
});
```
- **Handler**:  O método handler e um dos mais importantes, e que acredito, o que mais você vai utilizar, nele é onde irá ficar a resposta da sua rota. Os argumentos que ela recebe, pode ser acessados usando desestruturação, onde irá retornar os argumentos `{ request, response, next }`. Nele deverá ser retornado uma resposta, caso não seja retornado next o **kron** irá retornar uma mensagem default que não houve resposta.

>`{ request, response, next }`.


### Métodos requests
- **request.body**: Utilizando esse método, terá acesso ao corpo da request em formato JSON
```javascript
const { nome } = request.body;
console.log(body) // value = "Matheus"
```
- **request.params**: Utilizando esse método, terá acessa aos parâmetros passados na url das rotas
```javascript
const { nome } = request.params;
console.log(body) // value = "Matheus"
```
     
#### Métodos response

* **response.status(200)**: Utilizando esse método, você conseguirá setar o status code de resposta.
```javascript
response.status(200).send("tudo certo");
```
* **response.json()**: Faz com que a resposta,seja retornada em formato JSON.
```javascript
response.status(200).json({retorno:"retorno"});
```
* **response.send()**: Faz com que as resposta, seja retornada em formato de texto.
```javascript
response.status(200).send("Tudo certo");
```
* **response.ContentType()**: Faz com que o que a pessoa, especifique o content type da resposta.
```javascript
response.status(200).ContentType(
    {
    'Content-Type': 'text/plain',
    'Cache-Control': 'max-age=3600' 
    }
);
```
<!-- 
## Testes do kron feitas em versão beta.
##### Segue abaixo os resultados do ExpressJS e do Kron testados na hospedagem da Umbler. Para testes estou usando a aplicação bombaider  que podemos ter estatísticas do servidor (requests). Foram realizados 3 testes com cada.


#### Disco: 5 GB
#### CPU: 0,5 Core
#### RAM: 256 MB
#### Tráfego: 256 GB .

## ExpressJS

### Testes 1
|  Statistics  |  Avg     |  Stdev   | Max    |
| ------------ | -------- | ------   | ------ |
| Reqs/sec     | 772.20   | 613.89   | 3528.34|
| Latency      | 160.53ms | 148.65ms |  3.52s |

#### Throughput: 222.39KB/s

### Testes 2
|  Statistics  |  Avg     |  Stdev   | Max     |
| ------------ | -------- | -------- | ------- |
| Reqs/sec     | 881.69   | 660.29   | 4059.47 |
| Latency      | 142.01ms | 136.12ms |  3.37s  |

#### Throughput: 251.31KB/s


### Testes 3
|  Statistics  |  Avg     |  Stdev   | Max     |
| ------------ | -------- | -------- | ------- |
| Reqs/sec     | 856.15   | 602.96   | 2902.83 |
| Latency      | 145.28ms | 141.36ms |  3.39s  |

#### Throughput: 245.60KB/s


## Kron


### Testes 1
|  Statistics  |  Avg     |  Stdev  | Max       |
| ------------ | -------- | ------- | --------- |
| Reqs/sec     | 782.92   | 648.00  | 3910.45   |
| Latency      | 159.75ms | 41.56ms |  496.98ms |

#### Throughput: 179.42KB/s

### Testes 2

| Statistics    | Avg           | Stdev  | Max       |
| ------------- | --------------| ------ | --------- | 
| Reqs/sec      |  845.97       | 725.98 | 3444.99   |
| Latency       |  146.88ms     | 34.81ms|  445.02ms |

#### Throughput: 194.54KB/s


### Testes 3

| Statistics    | Avg           | Stdev  | Max       |
| ------------- | --------------| ------ | --------- | 
| Reqs/sec      |  843.08       | 740.03 | 4354.51   |
| Latency       |  147.85ms     | 45.39ms|  488.43ms |

##### Throughput: 193.77KB/s



 -->

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