# synapseapi

> Azu lib Typscript

Latest version **1.5.51** (published 2025-03-07) · 0 weekly downloads

## Install

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

## Health

**Score 30/100 (F)** — status: maintenance-mode.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.5.51 |
| Published | 2025-03-07 |
| First published | 2024-04-10 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 43 |
| Unpacked size | 300.3 KB |
| Known vulnerabilities | 0 (+17 in 3 direct dependencies) |
| Install scripts | no |
| Maintainers | alvozeroum |

## Links

- npm: https://www.npmjs.com/package/synapseapi
- npm.io page: https://npm.io/package/synapseapi

## Dependencies (43)

- [pg](https://npm.io/package/pg.md) ^8.11.3
- [ws](https://npm.io/package/ws.md) ^8.16.0
- [md5](https://npm.io/package/md5.md) ^2.3.0
- [cors](https://npm.io/package/cors.md) ^2.8.5
- [uuid](https://npm.io/package/uuid.md) ^9.0.1
- [axios](https://npm.io/package/axios.md) ^1.6.8
- [chalk](https://npm.io/package/chalk.md) ^4.1.2
- [mssql](https://npm.io/package/mssql.md) ^9.1.1
- [sharp](https://npm.io/package/sharp.md) ^0.29.3
- [bcrypt](https://npm.io/package/bcrypt.md) ^5.1.1
- [linqts](https://npm.io/package/linqts.md) ^2.0.0
- [moment](https://npm.io/package/moment.md) ^2.29.4
- [mysql2](https://npm.io/package/mysql2.md) ^3.6.5
- [qrcode](https://npm.io/package/qrcode.md) ^1.5.3
- [sql.js](https://npm.io/package/sql.js.md) ^1.8.0
- [express](https://npm.io/package/express.md) ^4.18.2
- [mongodb](https://npm.io/package/mongodb.md) ^5.9.2
- [sqlite3](https://npm.io/package/sqlite3.md) ^5.1.6
- [typeorm](https://npm.io/package/typeorm.md) ^0.3.17
- [download](https://npm.io/package/download.md) ^8.0.0
- [hdb-pool](https://npm.io/package/hdb-pool.md) ^0.1.6
- [oracledb](https://npm.io/package/oracledb.md) ^5.1.0
- [node-cron](https://npm.io/package/node-cron.md) ^3.0.3
- [jet-logger](https://npm.io/package/jet-logger.md) ^1.3.1
- [mime-types](https://npm.io/package/mime-types.md) ^2.1.35
- [node-cache](https://npm.io/package/node-cache.md) ^5.1.2
- [nodemailer](https://npm.io/package/nodemailer.md) ^6.9.7
- [superagent](https://npm.io/package/superagent.md) ^8.1.2
- [compression](https://npm.io/package/compression.md) ^1.7.4
- [cli-progress](https://npm.io/package/cli-progress.md) ^3.12.0
- [jsonwebtoken](https://npm.io/package/jsonwebtoken.md) ^9.0.2
- [skipper-disk](https://npm.io/package/skipper-disk.md) ^0.5.12
- [cookie-parser](https://npm.io/package/cookie-parser.md) ^1.4.6
- [promise-events](https://npm.io/package/promise-events.md) ^0.2.4
- [image-to-base64](https://npm.io/package/image-to-base64.md) ^2.2.0
- [read-last-lines](https://npm.io/package/read-last-lines.md) ^1.8.0
- [@sap/hana-client](https://npm.io/package/@sap/hana-client.md) ^2.18.24
- [reflect-metadata](https://npm.io/package/reflect-metadata.md) ^0.1.13
- [cpf-cnpj-validator](https://npm.io/package/cpf-cnpj-validator.md) ^1.0.3
- [express-fileupload](https://npm.io/package/express-fileupload.md) ^1.4.2
- [express-http-proxy](https://npm.io/package/express-http-proxy.md) ^2.0.0
- [express-rate-limit](https://npm.io/package/express-rate-limit.md) ^7.1.4
- [express-swagger-generator](https://npm.io/package/express-swagger-generator.md) ^1.1.17

## Recent versions

- 1.5.51 (latest) — 2025-03-07
- 1.5.50 — 2025-03-06
- 1.5.49 — 2025-03-06
- 1.5.48 — 2025-03-06
- 1.5.47 — 2025-03-06
- 1.5.46 — 2025-03-06
- 1.5.45 — 2025-03-06
- 1.5.44 — 2025-03-06
- 1.5.43 — 2025-03-05
- 1.5.42 — 2025-03-04
- 1.5.41 — 2025-03-04
- 1.5.40 — 2025-03-04
- 1.5.39 — 2025-03-04
- 1.5.38 — 2025-03-04
- 1.5.37 — 2025-03-04
- … 293 more at https://npm.io/package/synapseapi/versions

## README

# SinapseApi

Desenvolver APIs robustas e eficientes em Node.js agora ficou mais simples com a nossa nova framework. Projetada para agilizar e simplificar o processo de construção, nossa framework oferece uma estrutura flexível e intuitiva, permitindo que os desenvolvedores concentrem-se na lógica de negócios em vez de se preocuparem com detalhes técnicos.

Com uma arquitetura modular e extensível, nossa framework proporciona um ambiente altamente adaptável para atender às necessidades específicas de qualquer projeto. Desde a autenticação e autorização até a manipulação de solicitações HTTP e a integração de bancos de dados, cada aspecto do desenvolvimento de API é simplificado e otimizado.

Além disso, nossa framework oferece uma documentação abrangente e exemplos práticos para orientar os desenvolvedores em cada etapa do processo de desenvolvimento. Isso reduz drasticamente o tempo de ramp-up e permite que equipes de desenvolvimento coloquem rapidamente suas ideias em prática.

Em resumo, nossa framework em Node.js não apenas simplifica a construção de APIs, mas também promove a produtividade e a qualidade do código, permitindo que você desenvolva APIs de alto desempenho com facilidade e eficiência.


## Instalação

Comandos para Instalação;

```bash
  npm install sinapseapi-cli -g;
```

## Inicializar Projeto

Para iniciar um novo projeto, crie primeiro uma pasta vazia. Em seguida, abra um terminal ou prompt de comando dentro dessa pasta e execute o seguinte comando:

```bash
  syapi tsinit
```
## Arquivos e Pastas do Projeto

![App Screenshot](https://drive.usercontent.google.com/download?id=1QCaHGgH2pPgsEBFzPkx1d7N622FeXOK3&export=viewer&authuser=0)

  - ***startpm2.json***;
    - O arquivo de configuração do PM2 é essencial para a implantação da API em ambiente de produção. Ele define as configurações necessárias para garantir que a aplicação seja executada de forma estável e eficiente, gerenciando processos, monitorando o desempenho e garantindo a disponibilidade contínua do serviço. Este arquivo é fundamental para a configuração adequada do PM2 e a correta execução da API em um ambiente de produção;

```json
{
  "apps": [
    {
      "name": "<pm2 app name>",
      "script": "index.js",
      "cron_restart": "0 0 * * *",
      "exec_mode": "fork",
      "instances": 1,
      "namespace": "<pm2 app namespace>"
    }
  ]
}
```

  - ***index.ts***;
    - O arquivo de entrada da API é onde a inicialização da mesma ocorre. É aqui que os processos essenciais para o funcionamento da API são iniciados, estabelecendo as bases para sua operação. Este arquivo desempenha um papel fundamental, sendo o ponto de partida para a execução da API;

```javascript
import { AppApi } from 'synapseapi';
const appApi = new AppApi();
appApi.start();
```

  - ***app.json/app.prod.json***;
    - O arquivo de configuração da API é onde estão centralizados todos os dados de conexão e configuração dos serviços integrados à framework. Essencialmente, este arquivo serve como um repositório de informações cruciais para a operação adequada da API, garantindo que as conexões e configurações estejam corretamente estabelecidas para o funcionamento eficiente da aplicação. Quando na frente do nome do aplicativo houver um .prod, significa que o arquivo é de produção, nele contém as mesmas definições do app.json, só que no ambiente de produção. ***Importante***_: não subir este arquivo para o repositório git, pois ele contem informações de autenticações gerais e de banco de dados_;

## Configurações

## Pastas
  - ***sql;***
    - A pasta SQL é responsável por armazenar os arquivos SQL que serão executados diretamente pela engine. Para evitar dependências específicas de um único banco de dados, é recomendado evitar o uso de sintaxe exclusiva. Dentro desta pasta, é possível organizar os SQLs em subpastas para uma melhor estruturação. Todos os arquivos devem ter a extensão .sql e podem ser carregados utilizando o método abaixo:

```javascript
  let sql = await Helper.sql().loadSQL("vendas/vendas-por-periodo");
```
  - ***shared***;

    A pasta 'shared' contém arquivos de uso geral da API, incluindo aqueles que serão compartilhados por todo o processo. Abaixo, segue a explicação de cada arquivo predefinido nesta pasta;


  - ***shared/user_helper.ts***;

    O arquivo user_helper.ts contém métodos específicos do projeto. Para utilizá-los, utilize o comando abaixo.

```javascript
// Exemplo da Chamada
await (await Helper.userHelper<UserHelper>(req)).metodoDaApi()

// Codigo do arquivo user_helper.ts
import { ApiRequest } from "synapseapi";

export class UserHelper {
  private req?: ApiRequest;
  constructor(req?: ApiRequest) {
    this.req = req;
  }

  metodoDaApi(): Promise<void>{
    return new Promise(async(resolve, reject)=>{})
  }
}
```
  - ***shared/user_session.ts***;

    Neste arquivo, encontra-se a classe de sessão. Quando a configuração de sessão está ativada, cada endpoint passa por este método _UserSession.session_. O retorno deste método será enviado para o campo _session_ no retorno do endpoint. O campo _id_, presente na classe TokenData, é retornado pela framework e contém o Id do usuário capturado do token de acesso. Este parâmetro deve ser fornecido no método de login, que será detalhado mais adiante na documentação.

```javascript
import { ApiRequest } from "synapseapi";

export class UserSession {
  session(req: ApiRequest<TokenData>): Promise<any> {
    return new Promise(async (resolve, reject)=>{
      try {
        resolve({})
      } catch(error){
        return reject(error)
      }
    })
  }
}

export interface TokenData {
  id: string
}
```


  - ***shared/user_settings.ts***;

    Neste arquivo estão contidas as configurações específicas do projeto, ou seja, aquelas que vão além das configurações do arquivo _app..json_. Para configurar um parâmetro específico, deve-se acessar os arquivos _app.json_ e _app..json_ e adicionar suas configurações na seção _usersettings_. Abaixo, segue como acessar seus valores

```javascript
// Classe UserSetting contida no arquivo user_settings.ts
export interface UserSettings {
  meuparametro: string;
}
```

```json
// Pedaço do arquivo app.json ou app.prod.json
{
  ...
  "usersettings":{
    "meuparametro": "valor do parâmetro"
  }
}
```

```javascript
// Como pegar o valor definido
let valor = ConfigApp.getConfig<UserSettings>().usersettings.meuparametro;
```

  - ***report***;

    Na pasta _report_ estão armazenados os arquivos de relatório da API. Esses relatórios devem ser criados utilizando o _JasperReport_. Dentro da pasta _template_ encontra-se o projeto do Jasper, com cada relatório em suas respectivas subpastas. A pasta _lib_ contém a biblioteca Java responsável por compilar o relatório em PDF. Esta biblioteca é baixada automaticamente pela framework se o parâmetro _reportlib.init_ no arquivo de configuração for configurado como _true_
## Pasta models
## Pasta controllers

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