Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / rxjs / src / internal / operators / finalize.ts
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/rxjs/src/internal/operators/finalize.ts b/.config/coc/extensions/node_modules/coc-prettier/node_modules/rxjs/src/internal/operators/finalize.ts
new file mode 100644 (file)
index 0000000..d19d613
--- /dev/null
@@ -0,0 +1,38 @@
+import { Operator } from '../Operator';
+import { Subscriber } from '../Subscriber';
+import { Subscription } from '../Subscription';
+import { Observable } from '../Observable';
+import { MonoTypeOperatorFunction, TeardownLogic } from '../types';
+
+/**
+ * Returns an Observable that mirrors the source Observable, but will call a specified function when
+ * the source terminates on complete or error.
+ * @param {function} callback Function to be called when source terminates.
+ * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.
+ * @method finally
+ * @owner Observable
+ */
+export function finalize<T>(callback: () => void): MonoTypeOperatorFunction<T> {
+  return (source: Observable<T>) => source.lift(new FinallyOperator(callback));
+}
+
+class FinallyOperator<T> implements Operator<T, T> {
+  constructor(private callback: () => void) {
+  }
+
+  call(subscriber: Subscriber<T>, source: any): TeardownLogic {
+    return source.subscribe(new FinallySubscriber(subscriber, this.callback));
+  }
+}
+
+/**
+ * We need this JSDoc comment for affecting ESDoc.
+ * @ignore
+ * @extends {Ignored}
+ */
+class FinallySubscriber<T> extends Subscriber<T> {
+  constructor(destination: Subscriber<T>, callback: () => void) {
+    super(destination);
+    this.add(new Subscription(callback));
+  }
+}