cls-class-proxy
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

cls-class-proxy Build Status

A Proxy-based lightweight library to add Continuation-Local Storage aka (CLS) to class contructor, method calls, getters and setters.

Installation

  1. Install libraries

    npm i cls-class-proxy cls-hooked
    
  2. Install typings if you use typescript

    npm i -D @types/cls-hooked
    

Quick start

Decorator-based

  1. Set in your tsconfig.json

    "experimentalDecorators"true,
    "emitDecoratorMetadata"true
  2. In your code

    import { getNamespace } from 'cls-hooked'
    import { proxify, CLS_CLASS_PROXY_NAMESPACE_NAME } from 'cls-class-proxy'
     
    @proxify()
    class Example {
      constructor() {
        const namespace = getNamespace(CLS_CLASS_PROXY_NAMESPACE_NAME)
        // At this point the namespace has an active contex (namspace.active returns the context)
        // You can set and get data for the context
      }
      method1() {
        const namespace = getNamespace(CLS_CLASS_PROXY_NAMESPACE_NAME)
        // At this point the namespace has an active contex (namspace.active returns the context)
        // You can set and get data for the context
      }
      get prop1() {
        const namespace = getNamespace(CLS_CLASS_PROXY_NAMESPACE_NAME)
        // At this point the namespace has an active contex (namspace.active returns the context)
        // You can set and get data for the context
      }
      set prop2() {
        const namespace = getNamespace(CLS_CLASS_PROXY_NAMESPACE_NAME)
        // At this point the namespace has an active contex (namspace.active returns the context)
        // You can set and get data for the context
      }
    }

Non-decorator based

import { getNamespace } from 'cls-hooked'
import { proxify, CLS_CLASS_PROXY_NAMESPACE_NAME } from 'cls-class-proxy'
 
class Example {}
const ExampleProxified = proxify()(Example)

Options

proxify accepts an optional object with options:

  • namespace: string - custom namespace name to use instead of default CLS_CLASS_PROXY_NAMESPACE_NAME
  • cache: boolean - to wrap method, getter and setter calls in a CLS context cls-class-proxy recursively looks up property descriptors on a target object and its prototype chain. To avoid doing that for every call cls-class-proxy caches property descriptors in a Map. It's enabled by default.

Package Sidebar

Install

npm i cls-class-proxy

Weekly Downloads

0

Version

0.2.1

License

MIT

Unpacked Size

17 kB

Total Files

21

Last publish

Collaborators

  • keenondrums
  • aigoncharov