hunk.code_window: 			"requires": {
   				"ms": "^2.0.0"
   			}
   		},
   		"hyper-dom-expressions": {
   			"version": "0.23.3",
   			"resolved": "https://registry.npmjs.org/hyper-dom-expressions/-/hyper-dom-expressions-0.23.3.tgz",
   			"integrity": "sha512-sgNN+TzN4XwrCKjKdv+LupFMC5q2ciA/h33HJKdb9RjLJ+gMSrWLa5hl0DWFkDb5d52eSHaAMTyL/tH69DRXuQ==",
   			"dev": true
   		},
   		"iconv-lite": {
   			"version": "0.4.24",
  
hunk.labels: keep keep keep keep keep replace replace replace keep keep keep keep
hunk.after_edit: 			"version": "0.23.4",
   			"resolved": "https://registry.npmjs.org/hyper-dom-expressions/-/hyper-dom-expressions-0.23.4.tgz",
   			"integrity": "sha512-bnEkXgsf7XtLON63gSBKYWZFGBAfIP+HMyfw+WzzX9LIcWucTaS/nPHVhi3Cw+u/ia2lddOO10QrcbJIr/M0eg==",
  
hunk.file_path: package-lock.json
hunk.type: replace
file: import { createComputed, untrack } from "solid-js";
  
  const SymbolCopy = Symbol as any;
  const $$observable = SymbolCopy.observable || (SymbolCopy.observable = Symbol("observable"));
  
  type ObservableObserver<T> =
    | ((v: T) => void)
    | {
        next: (v: T) => void;
        error?: (v: any) => void;
        complete?: (v: boolean) => void;
      };
  export function observable<T>(input: () => T) {
    return {
      subscribe(observer: ObservableObserver<T>) {
        if (!(observer instanceof Object) || observer == null) {
          throw new TypeError("Expected the observer to be an object.");
        }
        const handler = "next" in observer ? observer.next : observer;
        let complete = false;
        createComputed(() => {
          const v = input();
          if (complete) return;
          untrack(() => handler(v));
        });
        return {
          unsubscribe() {
            complete = true;
          }
        };
      },
      [$$observable]() {
        return this;
      }
    };
  }
  