@huzapi/middleware-core v1.0.7
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 middlewareCoresNpm Package
helmet
It enables small security middlewareCores
- contentSecurityPolicy: CSP: Content Security Policy by Mozilla
- dnsPrefetchControl: X-DNS-Prefetch-Control by Mozilla
- expectCt: Expect-CT by Mozilla
- frameGuard: X-Frame-Options by Mozilla
- hidePoweredBy: X-Powered-By by Mozilla
- hsts: HSTS: HTTP Strict Transport Security by Mozilla
- ieNoOpen: X-Download-Options by NWebsec
- noSniff: X-Content-Type-Options by Mozilla
- permittedCrossDomainPolicies: X-Permitted-Cross-Domain-Policies by OWASP
- referrerPolicy: Referrer-Policy by Mozilla
- xssFilter: XSS: Cross-Site Scripting by OWASP
middlewareCore.cors
Initializer
add before your custom routers or middlewareCoresNpm Package
cors
It enables that CORS (Cross-Origin Resource Sharing)
middlewareCore.cookie
Initializer
add before your custom routers or middlewareCoresNpm 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 middlewareCoresNpm Package
body-parser
it parses if content-type is application/x-www-form-urlencoded
middlewareCore.json
Initializer
add before your custom routers or middlewareCoresNpm Package
body-parser
it parses if content-type is application/json
middlewareCore.queryString
Initializer
add before your custom routers or middlewareCoresNpm 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 middlewareCoresTutorial
Kubernetes
Creates an endpoint for Kubernetes readinessProbe
middlewareCore.liveness
Initializer
add before your custom routers or middlewareCoresTutorial
Kubernetes
Creates an endpoint for Kubernetes livenessProbe
middlewareCore.toHeader
Initializer
add before your custom routers or middlewareCoresCustom 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 middlewareCoresCustom solution for Huz
It calculates consumed time by called endpoint
middlewareCore.empty
Finalizer
add after your custom routers or middlewareCoresCustom solution for Huz
Handles empty endpoint and throws an error
app.get('/', (req, res) => {...});
middlewareCore.notFound
Finalizer
add after your custom routers or middlewareCoresCustom solution for Huz
Handles not-found endpoint and throws an error
app.use((req, res) => {...});
middlewareCore.generalError
Finalizer
add after your custom routers or middlewareCoresCustom solution for Huz
Handles any unknown error and throws an error
app.use((e, req, res, next) => {...});