viddo/atom-textual-velocity

View on GitHub
lib/atom-rxjs/observeConfig.js

Summary

Maintainability
A
0 mins
Test Coverage
/* @flow */

import { Observable } from "rxjs";

export default function observeConfig(key: string) {
  if (typeof key !== "string")
    throw new Error(
      `key must be a string, given key was ${JSON.stringify(key)}`
    );
  if (key.trim().length === 0)
    throw new Error(`key must be a non-empty string`);

  return Observable.create(function subscribe(observer) {
    const disposable = atom.config.observe(key, (value: any) => {
      observer.next(value);
    });

    return function unsubscribe() {
      disposable.dispose();
      observer.complete();
    };
  });
}