@trpc/server
Version:
1 lines • 8.41 kB
Source Map (JSON)
{"version":3,"file":"observable-CSprJVOf.mjs","names":[],"sources":["../src/observable/operators.ts","../src/observable/behaviorSubject.ts"],"sourcesContent":["import { observable } from './observable';\nimport type {\n MonoTypeOperatorFunction,\n Observer,\n OperatorFunction,\n Unsubscribable,\n} from './types';\n\nexport function map<TValueBefore, TError, TValueAfter>(\n project: (value: TValueBefore, index: number) => TValueAfter,\n): OperatorFunction<TValueBefore, TError, TValueAfter, TError> {\n return (source) => {\n return observable((destination) => {\n let index = 0;\n const subscription = source.subscribe({\n next(value) {\n destination.next(project(value, index++));\n },\n error(error) {\n destination.error(error);\n },\n complete() {\n destination.complete();\n },\n });\n return subscription;\n });\n };\n}\n\ninterface ShareConfig {}\nexport function share<TValue, TError>(\n _opts?: ShareConfig,\n): MonoTypeOperatorFunction<TValue, TError> {\n return (source) => {\n let refCount = 0;\n\n let subscription: Unsubscribable | null = null;\n const observers: Partial<Observer<TValue, TError>>[] = [];\n\n function startIfNeeded() {\n if (subscription) {\n return;\n }\n subscription = source.subscribe({\n next(value) {\n for (const observer of observers) {\n observer.next?.(value);\n }\n },\n error(error) {\n for (const observer of observers) {\n observer.error?.(error);\n }\n },\n complete() {\n for (const observer of observers) {\n observer.complete?.();\n }\n },\n });\n }\n function resetIfNeeded() {\n // \"resetOnRefCountZero\"\n if (refCount === 0 && subscription) {\n const _sub = subscription;\n subscription = null;\n _sub.unsubscribe();\n }\n }\n\n return observable((subscriber) => {\n refCount++;\n\n observers.push(subscriber);\n startIfNeeded();\n return {\n unsubscribe() {\n refCount--;\n resetIfNeeded();\n\n const index = observers.findIndex((v) => v === subscriber);\n\n if (index > -1) {\n observers.splice(index, 1);\n }\n },\n };\n });\n };\n}\n\nexport function tap<TValue, TError>(\n observer: Partial<Observer<TValue, TError>>,\n): MonoTypeOperatorFunction<TValue, TError> {\n return (source) => {\n return observable((destination) => {\n return source.subscribe({\n next(value) {\n observer.next?.(value);\n destination.next(value);\n },\n error(error) {\n observer.error?.(error);\n destination.error(error);\n },\n complete() {\n observer.complete?.();\n destination.complete();\n },\n });\n });\n };\n}\n\nconst distinctUnsetMarker = Symbol();\nexport function distinctUntilChanged<TValue, TError>(\n compare: (a: TValue, b: TValue) => boolean = (a, b) => a === b,\n): MonoTypeOperatorFunction<TValue, TError> {\n return (source) => {\n return observable((destination) => {\n let lastValue: TValue | typeof distinctUnsetMarker = distinctUnsetMarker;\n\n return source.subscribe({\n next(value) {\n if (lastValue !== distinctUnsetMarker && compare(lastValue, value)) {\n return;\n }\n lastValue = value;\n destination.next(value);\n },\n error(error) {\n destination.error(error);\n },\n complete() {\n destination.complete();\n },\n });\n });\n };\n}\n\nconst isDeepEqual = <T>(a: T, b: T): boolean => {\n if (a === b) {\n return true;\n }\n const bothAreObjects =\n a && b && typeof a === 'object' && typeof b === 'object';\n\n return (\n !!bothAreObjects &&\n Object.keys(a).length === Object.keys(b).length &&\n Object.entries(a).every(([k, v]) => isDeepEqual(v, b[k as keyof T]))\n );\n};\nexport function distinctUntilDeepChanged<\n TValue,\n TError,\n>(): MonoTypeOperatorFunction<TValue, TError> {\n return distinctUntilChanged(isDeepEqual);\n}\n","import { observable } from './observable';\nimport type { Observable, Observer } from './types';\n\nexport interface BehaviorSubject<TValue> extends Observable<TValue, never> {\n observable: Observable<TValue, never>;\n next: (value: TValue) => void;\n get: () => TValue;\n}\n\nexport interface ReadonlyBehaviorSubject<TValue> extends Omit<\n BehaviorSubject<TValue>,\n 'next'\n> {}\n\n/**\n * @internal\n * An observable that maintains and provides a \"current value\" to subscribers\n * @see https://www.learnrxjs.io/learn-rxjs/subjects/behaviorsubject\n */\nexport function behaviorSubject<TValue>(\n initialValue: TValue,\n): BehaviorSubject<TValue> {\n let value: TValue = initialValue;\n\n const observerList: Observer<TValue, never>[] = [];\n\n const addObserver = (observer: Observer<TValue, never>) => {\n if (value !== undefined) {\n observer.next(value);\n }\n observerList.push(observer);\n };\n const removeObserver = (observer: Observer<TValue, never>) => {\n observerList.splice(observerList.indexOf(observer), 1);\n };\n\n const obs = observable<TValue, never>((observer) => {\n addObserver(observer);\n return () => {\n removeObserver(observer);\n };\n }) as BehaviorSubject<TValue>;\n\n obs.next = (nextValue: TValue) => {\n if (value === nextValue) {\n return;\n }\n value = nextValue;\n for (const observer of observerList) {\n observer.next(nextValue);\n }\n };\n\n obs.get = () => value;\n\n return obs;\n}\n"],"mappings":";;AAQA,SAAgB,IACd,SAC6D;CAC7D,QAAQ,WAAW;EACjB,OAAO,YAAY,gBAAgB;GACjC,IAAI,QAAQ;GAYZ,OAXqB,OAAO,UAAU;IACpC,KAAK,OAAO;KACV,YAAY,KAAK,QAAQ,OAAO,OAAO,CAAC;IAC1C;IACA,MAAM,OAAO;KACX,YAAY,MAAM,KAAK;IACzB;IACA,WAAW;KACT,YAAY,SAAS;IACvB;GACF,CACkB;EACpB,CAAC;CACH;AACF;AAGA,SAAgB,MACd,OAC0C;CAC1C,QAAQ,WAAW;EACjB,IAAI,WAAW;EAEf,IAAI,eAAsC;EAC1C,MAAM,YAAiD,CAAC;EAExD,SAAS,gBAAgB;GACvB,IAAI,cACF;GAEF,eAAe,OAAO,UAAU;IAC9B,KAAK,OAAO;KACV,KAAK,MAAM,YAAY,WAAW;;MAChC,CAAA,iBAAA,SAAS,UAAA,QAAA,mBAAA,KAAA,KAAA,eAAA,KAAA,UAAO,KAAK;KACvB;IACF;IACA,MAAM,OAAO;KACX,KAAK,MAAM,YAAY,WAAW;;MAChC,CAAA,kBAAA,SAAS,WAAA,QAAA,oBAAA,KAAA,KAAA,gBAAA,KAAA,UAAQ,KAAK;KACxB;IACF;IACA,WAAW;KACT,KAAK,MAAM,YAAY,WAAW;;MAChC,CAAA,qBAAA,SAAS,cAAA,QAAA,uBAAA,KAAA,KAAA,mBAAA,KAAA,QAAW;KACtB;IACF;GACF,CAAC;EACH;EACA,SAAS,gBAAgB;GAEvB,IAAI,aAAa,KAAK,cAAc;IAClC,MAAM,OAAO;IACb,eAAe;IACf,KAAK,YAAY;GACnB;EACF;EAEA,OAAO,YAAY,eAAe;GAChC;GAEA,UAAU,KAAK,UAAU;GACzB,cAAc;GACd,OAAO,EACL,cAAc;IACZ;IACA,cAAc;IAEd,MAAM,QAAQ,UAAU,WAAW,MAAM,MAAM,UAAU;IAEzD,IAAI,QAAQ,IACV,UAAU,OAAO,OAAO,CAAC;GAE7B,EACF;EACF,CAAC;CACH;AACF;AAEA,SAAgB,IACd,UAC0C;CAC1C,QAAQ,WAAW;EACjB,OAAO,YAAY,gBAAgB;GACjC,OAAO,OAAO,UAAU;IACtB,KAAK,OAAO;;KACV,CAAA,kBAAA,SAAS,UAAA,QAAA,oBAAA,KAAA,KAAA,gBAAA,KAAA,UAAO,KAAK;KACrB,YAAY,KAAK,KAAK;IACxB;IACA,MAAM,OAAO;;KACX,CAAA,mBAAA,SAAS,WAAA,QAAA,qBAAA,KAAA,KAAA,iBAAA,KAAA,UAAQ,KAAK;KACtB,YAAY,MAAM,KAAK;IACzB;IACA,WAAW;;KACT,CAAA,sBAAA,SAAS,cAAA,QAAA,wBAAA,KAAA,KAAA,oBAAA,KAAA,QAAW;KACpB,YAAY,SAAS;IACvB;GACF,CAAC;EACH,CAAC;CACH;AACF;AAEA,MAAM,sBAAsB,OAAO;AACnC,SAAgB,qBACd,WAA8C,GAAG,MAAM,MAAM,GACnB;CAC1C,QAAQ,WAAW;EACjB,OAAO,YAAY,gBAAgB;GACjC,IAAI,YAAiD;GAErD,OAAO,OAAO,UAAU;IACtB,KAAK,OAAO;KACV,IAAI,cAAc,uBAAuB,QAAQ,WAAW,KAAK,GAC/D;KAEF,YAAY;KACZ,YAAY,KAAK,KAAK;IACxB;IACA,MAAM,OAAO;KACX,YAAY,MAAM,KAAK;IACzB;IACA,WAAW;KACT,YAAY,SAAS;IACvB;GACF,CAAC;EACH,CAAC;CACH;AACF;AAEA,MAAM,eAAkB,GAAM,MAAkB;CAC9C,IAAI,MAAM,GACR,OAAO;CAKT,OACE,CAAC,EAHD,KAAK,KAAK,OAAO,MAAM,YAAY,OAAO,MAAM,aAIhD,OAAO,KAAK,CAAC,CAAC,CAAC,WAAW,OAAO,KAAK,CAAC,CAAC,CAAC,UACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,OAAO,YAAY,GAAG,EAAE,EAAa,CAAC;AAEvE;AACA,SAAgB,2BAG8B;CAC5C,OAAO,qBAAqB,WAAW;AACzC;;;;;;;;AC7IA,SAAgB,gBACd,cACyB;CACzB,IAAI,QAAgB;CAEpB,MAAM,eAA0C,CAAC;CAEjD,MAAM,eAAe,aAAsC;EACzD,IAAI,UAAU,KAAA,GACZ,SAAS,KAAK,KAAK;EAErB,aAAa,KAAK,QAAQ;CAC5B;CACA,MAAM,kBAAkB,aAAsC;EAC5D,aAAa,OAAO,aAAa,QAAQ,QAAQ,GAAG,CAAC;CACvD;CAEA,MAAM,MAAM,YAA2B,aAAa;EAClD,YAAY,QAAQ;EACpB,aAAa;GACX,eAAe,QAAQ;EACzB;CACF,CAAC;CAED,IAAI,QAAQ,cAAsB;EAChC,IAAI,UAAU,WACZ;EAEF,QAAQ;EACR,KAAK,MAAM,YAAY,cACrB,SAAS,KAAK,SAAS;CAE3B;CAEA,IAAI,YAAY;CAEhB,OAAO;AACT"}