seek-koala

Koa add-ons for SEEK-standard tracing, logging and metrics

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
seek-koala
417.0.425 days ago4 years agoMinified + gzip package size for seek-koala in KB

Readme

🐨 Koa Loose Add-ons
GitHub Release GitHub Validate Node.js version npm package Powered by skuba
Koala is a collection of Koa add-ons that make it easy to follow SEEK conventions around tracing, logging and metrics. Refer to the Koala manifesto for philosophy behind Koala.
yarn add seek-koala

Table of contents

Included add-ons

  • AsyncMiddleware facilitates lazy loading of an asynchronously-initialised middleware.



  • RequestLogging facilitates logging information about requests and responses.

  • SecureHeaders attaches response headers that opt-in to stricter browser security policies.


Koala manifesto

  • Koala is not a framework

It empowers developers to quickly develop SEEK web services using Koa using whatever structure they see fit.
  • Koala does not wrap other packages

The objects and types of JavaScript packages such as Axios and hot-shots should be used directly. While Koala may provide constructors for objects from those packages, developers should always be able to "bring their own instance".
  • Koala does not contain policy

It does not enforce timeouts, set caching headers, expect certain error objects, etc. Whenever a default policy is unavoidable it should be called out in the documentation and made configurable.
  • Koala modules should be usable in isolation

An application should not have to "buy in" to all of Koala at once. Modules should not require special middleware to set up their state.
  • Koala is not innovative

It implements best practices from SEEK and follows internal SEEK RFCs and s2sauth where applicable. The modular, policy-free nature of Koala allows individual apps to opt-out of Koala's implementation for experimentation.
  • Koala is not a dumping ground

It strictly contains functionality related to developing Koa web services at SEEK. It should not include features only relevant to a single application or team.