# @sumanta23/server-wrapper

> api server wrapping express with best practices"

Latest version **2.0.15** (published 2020-07-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install @sumanta23/server-wrapper
pnpm add @sumanta23/server-wrapper
yarn add @sumanta23/server-wrapper
bun add @sumanta23/server-wrapper
```

## 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 | 2.0.15 |
| Published | 2020-07-11 |
| First published | 2019-07-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 15 |
| Unpacked size | 35.7 KB |
| Known vulnerabilities | 0 (+8 in 1 direct dependencies) |
| Install scripts | no |
| Author | sumanta23 |
| Maintainers | sumanta23 |
| Keywords | api, validator, swagger |

## Links

- npm: https://www.npmjs.com/package/@sumanta23/server-wrapper
- npm.io page: https://npm.io/package/@sumanta23/server-wrapper

## Dependencies (15)

- [ws](https://npm.io/package/ws.md) ^7.3.1
- [ajv](https://npm.io/package/ajv.md) ^6.12.3
- [xss](https://npm.io/package/xss.md) ^1.0.7
- [debug](https://npm.io/package/debug.md) ^4.1.1
- [helmet](https://npm.io/package/helmet.md) ^3.23.3
- [lodash](https://npm.io/package/lodash.md) ^4.17.19
- [express](https://npm.io/package/express.md) ^4.17.1
- [bluebird](https://npm.io/package/bluebird.md) ^3.7.2
- [ajv-errors](https://npm.io/package/ajv-errors.md) ^1.0.1
- [body-parser](https://npm.io/package/body-parser.md) ^1.19.0
- [opentracing](https://npm.io/package/opentracing.md) ^0.14.4
- [sanitize-html](https://npm.io/package/sanitize-html.md) ^1.27.0
- [common-wrapper](https://npm.io/package/common-wrapper.md) ^1.0.4
- [perror-wrapper](https://npm.io/package/perror-wrapper.md) ^1.0.2
- [swagger-ui-express](https://npm.io/package/swagger-ui-express.md) ^4.1.4

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 2.0.15 (latest) — 2020-07-11
- 2.0.14 — 2020-07-11
- 2.0.13 — 2020-07-11
- 2.0.12 — 2020-07-11
- 2.0.11 — 2020-07-11
- 2.0.10 — 2020-07-09
- 2.0.9 — 2020-07-08
- 2.0.8 — 2020-01-16
- 2.0.7 — 2020-01-15
- 2.0.6 — 2020-01-15
- 2.0.5 — 2020-01-15
- 2.0.4 — 2020-01-14
- 2.0.3 — 2020-01-13
- 2.0.2 — 2020-01-13
- 2.0.1 — 2020-01-13
- … 13 more at https://npm.io/package/@sumanta23/server-wrapper/versions

## README

# API server

    var config = require("config-wrapper");
    var redisconnection = require("redisconnection-wrapper")(config.get("redis"));

    var mq = require("rabbitmqconnection-wrapper");
    mq.start(config.get("rabbitmq"));

    var logger = require("applogger-wrapper");
    logger.init(config.get("logger"));

    var dbMgr = require('mongodbconnection-wrapper');
    var dbname = process.env.NODE_ENV === 'test' ? "test" : undefined;
    var modelPath= "./db/models";
    var schemaPath= "./db/schemas";

    var boot = require("boot-wrapper");
    var api = require("@sumanta/server-wrapper").api;
    var cors = require("cors");
    var express = require("express");
    var app = express();
    app.use(cors("*"));

    restPath = __dirname+"/rest";
    schemaPath= __dirname+"/schema";
    validationRequired= apidocRequired= basicSecRequired = true;
    xssIgnoreList=[]
    baseURL = "localhost:5000"


    boot.init(config)
    .then(async ()=>{
        await boot.bootlogger(logger);
        await boot.bootredis(redisconnection)
        await dbMgr.initialize(config.get("db"), { dbname, modelPath, schemaPath })
            .then((mInst)=>boot.bootdb(mInst, dbMgr.getModel()));
        await boot.bootrabbitmq(mq.getConn);
    }).then(async ()=>{
        // var Model = appGlobals.dbModels;
        // var vModelName = 'votings';
        // var vDbModels = Model.getModelInstance(vModelName);
        // mq.sendToQueue("test",{"helo":"data"});
        // mq.registerConsumer("test",(data)=>{logger.info(data); return Promise.resolve();});  
        // await vDbModels.create({callId:"55", option:"kl", userId:"ioio"}).tap(()=>vDbModels.findOne({}).tap(console.log))
        api.init(app, 5000, { restPath, schemaPath, validationRequired, apidocRequired, basicSecRequired, xssIgnoreList, baseURL })
        api.loadapi(app);
        api.start(app);
    })

# Socket server
    var _         = require("lodash");
    var debug     = require("debug")("wsserver");
    var boot = require("boot-wrapper");
    var config = require("config-wrapper");
    var redisconnection = require("redisconnection-wrapper")(config.get("redis"));
    var subchannel = require("redisconnection-wrapper")(config.get("redis"));

    var wsconfig = config.get("ws");

    var express = require("express");
    var http = require("http");
    var app = express();
    var server = http.createServer(app);

    var port = process.env.PORT || wsconfig.port;

    boot.init(config)
    .then(async () => {
        await boot.bootredis(redisconnection);
        var senderM = require("@sumanta23/server-wrapper").sender;
        await boot.bootsender(senderM);
        //await boot.enableHealthMonitoring("ws");
    }).then(async () => {
        var ws = require("@sumanta23/server-wrapper").wsserver;
        ws.listen(server, wsconfig, ()=>{}, redisconnection, subchannel, ()=>{});
        server.listen(port, function () {
        debug("server started on localhost:" + port);
        });
    })

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