All files / redis-smq-monitor-app/src registry.ts

80% Statements 8/10
0% Branches 0/2
100% Functions 3/3
80% Lines 8/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4657x                                     57x   57x         99x         99x       33x     33x       33x      
import { errors, RedisClient } from 'redis-smq-common';
import { ICompatibleLogger } from 'redis-smq-common/dist/types';
import { TConfig } from '../types';
 
export type TRegistryItems = {
  redis: RedisClient;
  logger: ICompatibleLogger;
  config: TConfig;
};
 
export type TRegistry = {
  register<T extends keyof TRegistryItems>(
    key: T,
    value: TRegistryItems[T],
  ): void;
  getItem<T extends keyof TRegistryItems>(key: T): TRegistryItems[T];
  reset(): void;
};
 
let registryMap: Record<string, any> = {};
 
export const registry: TRegistry = {
  register<T extends keyof TRegistryItems>(
    key: T,
    value: TRegistryItems[T],
  ): void {
    Iif (registryMap[key]) {
      throw new errors.PanicError(
        `An item with key [${key}] is already registered`,
      );
    }
    registryMap[key] = value;
  },
 
  getItem<T extends keyof TRegistryItems>(key: T): TRegistryItems[T] {
    Iif (!registryMap[key]) {
      throw new errors.PanicError(`Item with key [${key}] is not registered`);
    }
    return registryMap[key];
  },
 
  reset(): void {
    registryMap = {};
  },
};