UNPKG

@xylabs/threads

Version:

Web workers & worker threads as simple as a function call

1 lines 2.27 kB
{"version":3,"sources":["../../src/observable.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ObservableLike, SubscriptionObserver } from 'observable-fns'\nimport { Observable } from 'observable-fns'\n\nconst $observers = Symbol('observers')\n\n/**\n * Observable subject. Implements the Observable interface, but also exposes\n * the `next()`, `error()`, `complete()` methods to initiate observable\n * updates \"from the outside\".\n *\n * Use `Observable.from(subject)` to derive an observable that proxies all\n * values, errors and the completion raised on this subject, but does not\n * expose the `next()`, `error()`, `complete()` methods.\n */\nexport class Subject<T> extends Observable<T> implements ObservableLike<T> {\n private [$observers]: Array<SubscriptionObserver<T>>\n\n constructor() {\n super((observer) => {\n this[$observers] = [...(this[$observers] || []), observer]\n const unsubscribe = () => {\n this[$observers] = this[$observers].filter(someObserver => someObserver !== observer)\n }\n return unsubscribe\n })\n\n this[$observers] = []\n }\n\n complete() {\n for (const observer of this[$observers]) observer.complete()\n }\n\n error(error: any) {\n for (const observer of this[$observers]) observer.error(error)\n }\n\n next(value: T) {\n for (const observer of this[$observers]) observer.next(value)\n }\n}\n\nexport { Observable } from 'observable-fns'\n"],"mappings":";;;;AAEA,SAASA,kBAAkB;AAyC3B,SAASA,cAAAA,mBAAkB;AAvC3B,IAAMC,aAAaC,OAAO,WAAA;AAWnB,IAAMC,UAAN,cAAyBC,WAAAA;EAfhC,OAegCA;;;EACtB,CAACH,UAAAA;EAET,cAAc;AACZ,UAAM,CAACI,aAAAA;AACL,WAAKJ,UAAAA,IAAc;WAAK,KAAKA,UAAAA,KAAe,CAAA;QAAKI;;AACjD,YAAMC,cAAc,6BAAA;AAClB,aAAKL,UAAAA,IAAc,KAAKA,UAAAA,EAAYM,OAAOC,CAAAA,iBAAgBA,iBAAiBH,QAAAA;MAC9E,GAFoB;AAGpB,aAAOC;IACT,CAAA;AAEA,SAAKL,UAAAA,IAAc,CAAA;EACrB;EAEAQ,WAAW;AACT,eAAWJ,YAAY,KAAKJ,UAAAA,EAAaI,UAASI,SAAQ;EAC5D;EAEAC,MAAMA,OAAY;AAChB,eAAWL,YAAY,KAAKJ,UAAAA,EAAaI,UAASK,MAAMA,KAAAA;EAC1D;EAEAC,KAAKC,OAAU;AACb,eAAWP,YAAY,KAAKJ,UAAAA,EAAaI,UAASM,KAAKC,KAAAA;EACzD;AACF;","names":["Observable","$observers","Symbol","Subject","Observable","observer","unsubscribe","filter","someObserver","complete","error","next","value"]}