@homeofthings/node-utils
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

npm version Build Workflow Coverage Status DeepScan grade Known Vulnerabilities

PRs Welcome License

@homeofthings/node-utils

  • AsyncContext<T>: little wrapper around AsyncLocalStorage providing default value

    asyncContext = new AsyncContext(defaultContext);
    ...
    asyncContext.set(newContext)
    ...
    currentContext = asyncContext.get();
  • ConfigService: singleton service based on node-config

configService = new ConfigService({ configDirectory: 'path/to/config' });

then use one of the methods provided by the ConfigService:

export declare class ConfigService {
  readonly configDirectory: string;
  readonly environment: string;

  constructor(_opts: ConfigOptions);

  getConfig(key: string): object | undefined;
  reloadConfig(): void;

  getString(key: string, defaultValue: string): string;
  getNumber(key: string, defaultValue: number): number;
  getBoolean(key: string, defaultValue: boolean): boolean;
  getObject(key: string, defaultValue: object): object;

  // resolve path relative to config-directory
  getPath(key: string, defaultValue: string): string;

  getOptionalString(key: string): string | undefined;
  getOptionalNumber(key: string): number | undefined;
  getOptionalBoolean(key: string): boolean | undefined;
  getOptionalObject(key: string): object | undefined;

  // resolve path relative to config-directory
  getOptionalPath(key: string): string | undefined;
}

reload on SIGHUP:

process.on('SIGHUP', () => ConfigService.getInstance().reloadConfig());
  • LruCache<T>: LRU cache

    cache = new LruCache<UserSession, number>(SESSION_CACHE_SIZE);
    
    cache.set(id, userSession); // add this to the cache and mark it as least recently used
    ...
    cache.get(anotherId); // if it is available in the cache it will be marked as least recently used
  • sequentialize: run Promises in sequence

    await sequentialize(item.map(() => doWork(item)));
  • wait: wait until a condition is true or timed out

    await wait(condition); // polls until condition is true
    await wait(condition, 1000); // polls until condition is true or timed out after 1000ms
  • WritableStrings: a Writable for writing to a string array

  • quoteArgs and quoteArg: quote arguments for better readability (e.g. for logging)

Package Sidebar

Install

npm i @homeofthings/node-utils

Weekly Downloads

5

Version

1.0.1

License

MIT

Unpacked Size

46.8 kB

Total Files

71

Last publish

Collaborators

  • gms1