@huzapi/middleware-core v1.0.7
Huz Api / Middleware Core
Handles core middlewareCores
Commands
npm run clearClears dist folder
npm run lintRuns eslint for static code analysis - CleanCode
npm run testRuns test files - Test-Driven
npm run buildBuilds JS files at dist folder
npm run startRuns main file in dist folder (dist/index.js)
npm publishPublishes dist folder to npm
Standards
- Language:
TS - Eslint:
Yes - Static Code Analysis:
YesIntelliJ Code Inspections - DDD - Document Driven:
Yes - EDD - Exception Driven:
Yesgo 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
Initializeradd before your custom routers or middlewareCoresNpm Packagehelmet
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
Initializeradd before your custom routers or middlewareCoresNpm Packagecors
It enables that CORS (Cross-Origin Resource Sharing)
middlewareCore.cookie
Initializeradd before your custom routers or middlewareCoresNpm Packagecookie-parser
Parse "Cookie" header and populate req.cookies with an object keyed by the cookie names
middlewareCore.urlEncode
Initializeradd before your custom routers or middlewareCoresNpm Packagebody-parser
it parses if content-type is application/x-www-form-urlencoded
middlewareCore.json
Initializeradd before your custom routers or middlewareCoresNpm Packagebody-parser
it parses if content-type is application/json
middlewareCore.queryString
Initializeradd before your custom routers or middlewareCoresNpm Packageqs
it parses query string and converts it to json object
Sample: foobar=baz ===> {foo: {bar: 'baz'}}
middlewareCore.readiness
Initializeradd before your custom routers or middlewareCoresTutorialKubernetes
Creates an endpoint for Kubernetes readinessProbe
middlewareCore.liveness
Initializeradd before your custom routers or middlewareCoresTutorialKubernetes
Creates an endpoint for Kubernetes livenessProbe
middlewareCore.toHeader
Initializeradd 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
Initializeradd before your custom routers or middlewareCoresCustom solution for Huz
It calculates consumed time by called endpoint
middlewareCore.empty
Finalizeradd after your custom routers or middlewareCoresCustom solution for Huz
Handles empty endpoint and throws an error
app.get('/', (req, res) => {...});
middlewareCore.notFound
Finalizeradd after your custom routers or middlewareCoresCustom solution for Huz
Handles not-found endpoint and throws an error
app.use((req, res) => {...});
middlewareCore.generalError
Finalizeradd after your custom routers or middlewareCoresCustom solution for Huz
Handles any unknown error and throws an error
app.use((e, req, res, next) => {...});