// Type definitions for continuation-local-storage 3.2 // Project: https://github.com/othiym23/node-continuation-local-storage // Definitions by: Jang-Ho Hwang // Kei Son // Dmitry Kudryavtsev // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.1 /// export type Context = { [key: string]: any; }; export type BindCallbackFn = (...args: any[]) => T; export type RunCallbackFn = (context: Context) => T; export interface Namespace { readonly name: string; // Note: this is readonly because changing it does not actually rename it readonly active: Context; // Note: this is readonly because changing it manually will break functionality createContext(): Context; set(key: string, value: T): T; get(key: string): T | undefined; run(callback: RunCallbackFn): Context; runAndReturn(callback: RunCallbackFn): T; bind(callback: BindCallbackFn, context?: Context): BindCallbackFn; bindEmitter(emitter: NodeJS.EventEmitter): void; enter(context: Context): void; exit(context: Context): void; } export function createNamespace(name: string): Namespace; export function getNamespace(name: string): Namespace | undefined; export function destroyNamespace(name: string): void; export function reset(): void; // declare namespace process { // var namespaces: ContinuationLocalStorage.Namespace[]; // }