@emartech/cls-adapter
DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/emartech__cls-adapter package

2.1.0 • Public • Published

@emartech/cls-adapter

A wrapper around the Continuation Local Storage library cls-hooked. Makes storing and retrieving of context dependent information easier. It acts as a thread aware storage.

When a value is set on the storage with a given key, that value will be available inside functions calls from the parent function.

Installation

npm install @emartech/cls-adapter

Usage

const Koa = require('koa');
const ClsAdapter = require('@emartech/cls-adapter');

const logWithStorage = (message) => {
  console.log(Object.assign({ message }, ClsAdapter.getContextStorage()));
};
const calculationResult = () => {
  logWithStorage(100);
};

const app = new Koa();
app.use(ClsAdapter.getKoaMiddleware());

app.use(async (ctx) => {
  ClsAdapter.setOnContext('customer_id', 1000);

  logWithStorage('works');
  // { message: 'works', request_id: 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a' }
  
  calculationResult();
  // { message: 100, request_id: 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a' }

  ctx.body = 'It works';
});

app.listen(3000);

API

ClsAdapter.getKoaMiddleware()

Returns a middleware function compatible with Koa that stores (or generates if missing) the request identifier from the header (X-Request-Id) and sets it on the storage as request_id.

const app = new Koa();
app.use(ClsAdapter.getKoaMiddleware());

app.use(async () => {
  ClsAdapter.getContextStorage();
  // { request_id: 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a' }
});

ClsAdapter.getExpressMiddleware()

Returns a middleware function compatible with Express that stores (or generates if missing) the request identifier from the header (X-Request-Id) and sets it on the storage as request_id.

const app = express();
app.use(ClsAdapter.getExpressMiddleware());

app.use(() => {
  ClsAdapter.getContextStorage();
  // { request_id: 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a' }
});

ClsAdapter.getContextStorage()

Returns the all the values set on the storage.

ClsAdapter.setOnContext(key, value)

Sets a key with a given value on the storage.

ClsAdapter.setOnContext('customer_id', 1);
ClsAdapter.setOnContext('application.customer.id', 11);

ClsAdapter.getContextStorage();
// { customer_id: 1, application: { customer: { id: 11 } } }

ClsAdapter.getRequestId()

Returns the the request identifier set on the storage. The identifiers key is request_id.

ClsAdapter.setOnContext('request_id', 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a');
ClsAdapter.getRequestId();
// 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a'

ClsAdapter.addContextStorageToInput()

Returns a function that extends the given object with the current storage.

ClsAdapter.setOnContext('customer_id', 1);

ClsAdapter.addContextStorageToInput()({ debug: true });
// { debug: true, customer_id: 1 }

ClsAdapter.addRequestIdToInput()

Returns a function that extends the given object with the request identifier set on the current storage.

ClsAdapter.setOnContext('request_id', 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a');

ClsAdapter.addRequestIdToInput()({ debug: true });
// { debug: true, request_id: 'd5caaa0e-b04e-4d94-bc88-3ed3b62dc94a' }

Package Sidebar

Install

npm i @emartech/cls-adapter

Weekly Downloads

493

Version

2.1.0

License

MIT

Unpacked Size

9.42 kB

Total Files

7

Last publish

Collaborators

  • fhase
  • alanshi
  • jisaacson
  • i850773
  • csjakabos
  • borcsa
  • bcsizmadia
  • schroedersteffen
  • sfariel
  • botondjavorka
  • i534456
  • daniel.balazs
  • tade82
  • probalazs
  • luca.fasolino.se
  • rmafteiuscai
  • lhammerl
  • bencso
  • mfel0123
  • franziskajung
  • d056437
  • ekkovats
  • laralangnau
  • emarsys-stephen-ives
  • tothbence8
  • earlpitts
  • iabraham
  • zholler
  • balintkemenyemarsys
  • ccarrollem
  • dunaicapa
  • bobby_russel
  • sovagos
  • tothmarci25
  • mariannag
  • estefanlesnjakovic
  • mrmeszaros
  • bence.toth
  • jason-nelson-01
  • drahos.istvan
  • pecc
  • birokhun
  • laszlo.ori
  • dpkemarsys
  • nathan-matthews-sap
  • troywiegand
  • nikolett.tar
  • bronika
  • cenglersap
  • mlesh-sap
  • gillyes
  • danielisap
  • sridevir
  • abieler-sap
  • aidanlesh-sap
  • tonyhsap
  • karlabrandl
  • konradschewe
  • manasbommakanti
  • dudaaslaci
  • emarsys-security
  • norbert-levajsics-emarsys
  • ronnykrosse
  • vszegedi
  • sap-am
  • nnieman-sap
  • ariceem
  • dwolter_emarsys
  • rcsullag
  • ttoth2
  • tbucsanszki
  • dszunomar
  • dschuppa
  • andras.sarro
  • ndomke
  • sevket-ataseven
  • plsap
  • mattfeldhake_emarsys
  • atittel
  • andrasp3a
  • mruell
  • adroszler
  • erikpetroemar
  • rimo86
  • tillmannr
  • markjarvis
  • geczirobert
  • tsiraitnpm
  • bankyadam
  • bborsi
  • zbalazs
  • ziyadg
  • pintera
  • apoon
  • ianhelmrich
  • varszegik
  • rkumari03
  • cseby92
  • bozsadam
  • jfillmore
  • viktor.szell
  • bencekadaremar
  • roxanams
  • dkocsis-emarsys
  • demajo_ems
  • marko.fritzsche
  • agrucza
  • dmorvai
  • nish343
  • kolosh
  • azorahai3904
  • skrivoo
  • mark.adorjan
  • burci
  • dimitrovn
  • ivanfroehlich
  • iulianmihai
  • xueboliang
  • greszter
  • bercziand
  • criley
  • drewhodsonsap
  • jviesersap
  • sixstep
  • sap-jjf
  • sapfs
  • attilamuller01
  • scotthetrick
  • oliverweisenburger
  • maurogreco
  • nicolaeciumac
  • asciortino1
  • pendicg24
  • marton.matusek
  • adamszabolcs
  • btalos
  • bence.uto
  • daniels1404
  • saphendricksjoerg
  • mmartin2
  • fenyopeti
  • mmothersill
  • brandon-sap
  • pjohnson02
  • mhunyady
  • mengjiao.zhao
  • ushnpm
  • dkorpos
  • xin.he
  • viau
  • zsomborh
  • muddam
  • nvkaur2
  • jbleclerc
  • jamescocker
  • arnaud.buchholz
  • jerryrichardson
  • retfalvibence
  • akapa
  • mkls
  • kaaj
  • knagy
  • rehreth
  • mhegedus
  • mmartin
  • bsoos
  • emarsys-deployer
  • draven
  • judge
  • daniel.banky
  • szeist
  • rgargya
  • marton.papp.emarsys
  • dgyenes
  • s.viktor
  • m4w4q7
  • david.barkoczi
  • qw3r
  • tamas.toth
  • gergaczd
  • gerike
  • alkra
  • epgrubmair
  • morban
  • ettancos
  • epmartini
  • gabor.balla.emarsys
  • mzsombor
  • ejpersson
  • ejwalker
  • llosonczy
  • iben12
  • kartonfarkas
  • adamoa
  • mbarna
  • peva
  • bforgacs
  • kozma
  • ngabor84
  • zerosuxx
  • edosrecki
  • eadaniel
  • selator
  • kkimak
  • gaborb
  • glendvai
  • lveraszto
  • rdoczi
  • fentosi
  • boristomic
  • mbazso
  • dmihalek
  • lhalasz
  • evspasevski
  • dsztanko
  • tbugar
  • fqqdk
  • eggarcia
  • menyhertfatyol
  • zoltanrideg-emarsys
  • sarakoll
  • mmolnar-emar
  • attila.gal
  • benjamingehl
  • tdorkaa
  • lkonya
  • gpap_ema
  • vimtaai
  • lloki-emarsys
  • borzi
  • pmaksa_emarsys
  • dfarago