1.0.7 • Published 3 years ago

@huzapi/middleware-core v1.0.7

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
3 years ago

Huz Api / Middleware Core

Handles core middlewareCores

Commands

  • npm run clear

    Clears dist folder

  • npm run lint

    Runs eslint for static code analysis - CleanCode

  • npm run test

    Runs test files - Test-Driven

  • npm run build

    Builds JS files at dist folder

  • npm run start

    Runs main file in dist folder (dist/index.js)

  • npm publish

    Publishes dist folder to npm

Standards

  • Language: TS
  • Eslint: Yes
  • Static Code Analysis: Yes IntelliJ Code Inspections
  • DDD - Document Driven: Yes
  • EDD - Exception Driven: Yes go to test folder
  • TDD - Test Driven: Yes
  • Standards Complied: Huz Standards

Install

npm i @huzapi/middlewareCore-core

Sample - Detailed

const middlewareCore = require('@huzapi/middlewareCore-core');
// ES6: import {middlewareCore} from "@huzapi/middleware-core";

const app = express();

//initializer functions
middlewareCore.with(app)
    .helmet() // (options), def: null, ie: ##helmet
    .cors() // (options), def: null, ie: ##cors
    .cookie() // (secret, options), ie: ##cookie-parser
    .urlEncode() // options, def: { extended: false }, ##body-parser
    .json() // options, def: null, ##body-parser
    // query string objectify ?obj[name]=value ==> {obj: {name: value}}    
    .queryString() // options, def: {depth: 12}, ##qs
    // it moves keys which start with "__" in query to headers    
    .toHeader() // option is prefix of key, def: __ (double underscore)
    // it applies kubernetes readinessProbe     
    .readiness((req) => null) // if success callback should return null, else error message
    // it applies kubernetes livenessProbe     
    .liveness((req) => null) // // if success callback should return null, else error message
    // calculates endpoint duration
    .duration((req, path, msec) => console.log(`>> ${path} consumes ${msec}`)) // it takes async function to process duration
;

// ...................................................
// Your custom codes (other middlewareCores, other routes)
// ...................................................

//finalizer functions
middlewareCore
    .empty() // Throws when empty endpoint or route
    .notFound() // Throws when not-found endpoint or 404 error
    .generalError() // Throws when unhandled error
;

Sample - Short

const middlewareCore = require('@huzapi/middlewareCore-core');
// ES6: import {middlewareCore} from "@huzapi/middleware-core";

const app = express();

// it takes on async function to process duration, ie: duration()
middlewareCore.with(app).initializer();
// ...................................................
// Your custom codes (other middlewareCores, other routes)
// ...................................................
middlewareCore.finalizer();

Dependency

middlewareCore.helmet

  • Initializer add before your custom routers or middlewareCores
  • Npm Package helmet

It enables small security middlewareCores

  1. contentSecurityPolicy: CSP: Content Security Policy by Mozilla
  2. dnsPrefetchControl: X-DNS-Prefetch-Control by Mozilla
  3. expectCt: Expect-CT by Mozilla
  4. frameGuard: X-Frame-Options by Mozilla
  5. hidePoweredBy: X-Powered-By by Mozilla
  6. hsts: HSTS: HTTP Strict Transport Security by Mozilla
  7. ieNoOpen: X-Download-Options by NWebsec
  8. noSniff: X-Content-Type-Options by Mozilla
  9. permittedCrossDomainPolicies: X-Permitted-Cross-Domain-Policies by OWASP
  10. referrerPolicy: Referrer-Policy by Mozilla
  11. xssFilter: XSS: Cross-Site Scripting by OWASP

middlewareCore.cors

  • Initializer add before your custom routers or middlewareCores
  • Npm Package cors

It enables that CORS (Cross-Origin Resource Sharing)

middlewareCore.cookie

  • Initializer add before your custom routers or middlewareCores
  • Npm Package cookie-parser

Parse "Cookie" header and populate req.cookies with an object keyed by the cookie names

middlewareCore.urlEncode

  • Initializer add before your custom routers or middlewareCores
  • Npm Package body-parser

it parses if content-type is application/x-www-form-urlencoded

middlewareCore.json

  • Initializer add before your custom routers or middlewareCores
  • Npm Package body-parser

it parses if content-type is application/json

middlewareCore.queryString

  • Initializer add before your custom routers or middlewareCores
  • Npm Package qs

it parses query string and converts it to json object

Sample: foobar=baz ===> {foo: {bar: 'baz'}}

middlewareCore.readiness

  • Initializer add before your custom routers or middlewareCores
  • Tutorial Kubernetes

Creates an endpoint for Kubernetes readinessProbe

middlewareCore.liveness

  • Initializer add before your custom routers or middlewareCores
  • Tutorial Kubernetes

Creates an endpoint for Kubernetes livenessProbe

middlewareCore.toHeader

  • Initializer add before your custom routers or middlewareCores
  • Custom solution for Huz

It parses query string and moves some keys to headers

Sample: ?silent=true&token=foo-bar ==> {silent: true, token: 'foo-bar'}

middlewareCore.duration

  • Initializer add before your custom routers or middlewareCores
  • Custom solution for Huz

It calculates consumed time by called endpoint

middlewareCore.empty

  • Finalizer add after your custom routers or middlewareCores
  • Custom solution for Huz

Handles empty endpoint and throws an error

app.get('/', (req, res) => {...});

middlewareCore.notFound

  • Finalizer add after your custom routers or middlewareCores
  • Custom solution for Huz

Handles not-found endpoint and throws an error

app.use((req, res) => {...});

middlewareCore.generalError

  • Finalizer add after your custom routers or middlewareCores
  • Custom solution for Huz

Handles any unknown error and throws an error

app.use((e, req, res, next) => {...});