@vkontakte/videoplayer-core 2.0.33 → 2.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/index.cjs.js +4 -4
  2. package/index.esm.js +4 -4
  3. package/package.json +1 -1
  4. package/{env.d.ts → sdk/src/env.d.ts} +0 -0
  5. package/{index.d.ts → sdk/src/index.d.ts} +0 -0
  6. package/{player → sdk/src/player}/Player.d.ts +1 -0
  7. package/{player → sdk/src/player}/types.d.ts +4 -0
  8. package/{player → sdk/src/player}/utils/position.d.ts +0 -0
  9. package/{player → sdk/src/player}/utils/selectContainer.d.ts +0 -0
  10. package/{player → sdk/src/player}/utils/watchCoverage.d.ts +3 -4
  11. package/{providers → sdk/src/providers}/ChromecastProvider/ChromecastInitializer/index.d.ts +0 -0
  12. package/{providers → sdk/src/providers}/ChromecastProvider/ChromecastInitializer/types.d.ts +0 -0
  13. package/{providers → sdk/src/providers}/ChromecastProvider/index.d.ts +0 -0
  14. package/{providers → sdk/src/providers}/DashIFProvider/BigRequestLoader.d.ts +0 -0
  15. package/{providers → sdk/src/providers}/DashIFProvider/dashjsTypes.d.ts +0 -0
  16. package/{providers → sdk/src/providers}/DashIFProvider/index.d.ts +0 -0
  17. package/{providers → sdk/src/providers}/DashIFProvider/observableManifestLoader.d.ts +0 -0
  18. package/{providers → sdk/src/providers}/DashIFProvider/stripRangeHeader.d.ts +0 -0
  19. package/{providers → sdk/src/providers}/DashLiveProvider/DashLiveProvider.d.ts +0 -0
  20. package/{providers → sdk/src/providers}/DashLiveProvider/index.d.ts +0 -0
  21. package/{providers → sdk/src/providers}/DashLiveProvider/types.d.ts +0 -0
  22. package/{providers → sdk/src/providers}/DashLiveProvider/utils/FilesFetcher.d.ts +0 -0
  23. package/{providers → sdk/src/providers}/DashLiveProvider/utils/LiveDashPlayer.d.ts +0 -0
  24. package/{providers → sdk/src/providers}/DashLiveProvider/utils/ThroughputEstimator.d.ts +0 -0
  25. package/{providers → sdk/src/providers}/DashLiveProvider/utils/liveDashPlayerUtil.d.ts +0 -0
  26. package/{providers → sdk/src/providers}/DashProvider/DashProvider.d.ts +0 -0
  27. package/{providers → sdk/src/providers}/DashProvider/index.d.ts +0 -0
  28. package/{providers → sdk/src/providers}/DashProvider/types.d.ts +0 -0
  29. package/{providers → sdk/src/providers}/DashProvider/utils/DashLite.d.ts +0 -0
  30. package/{providers → sdk/src/providers}/DashProvider/utils/stream.d.ts +0 -0
  31. package/{providers → sdk/src/providers}/DashProvider/utils/xhr2.d.ts +0 -0
  32. package/{providers → sdk/src/providers}/DashVKProvider/index.d.ts +0 -0
  33. package/{providers → sdk/src/providers}/DashVKProvider/lib/buffer.d.ts +5 -1
  34. package/{providers → sdk/src/providers}/DashVKProvider/lib/ebml.d.ts +0 -0
  35. package/{providers → sdk/src/providers}/DashVKProvider/lib/fetch.d.ts +0 -0
  36. package/{providers → sdk/src/providers}/DashVKProvider/lib/mpd.d.ts +0 -0
  37. package/{providers → sdk/src/providers}/DashVKProvider/lib/player.d.ts +6 -1
  38. package/{providers → sdk/src/providers}/DashVKProvider/lib/types.d.ts +0 -0
  39. package/{providers → sdk/src/providers}/DashVKProvider/lib/webm.d.ts +0 -0
  40. package/{providers → sdk/src/providers}/HlsJsProvider/index.d.ts +0 -0
  41. package/{providers → sdk/src/providers}/HlsLiveProvider/index.d.ts +0 -0
  42. package/{providers → sdk/src/providers}/HlsLiveProvider/seekBackTimeExtractor.d.ts +0 -0
  43. package/{providers → sdk/src/providers}/HlsProvider/index.d.ts +0 -0
  44. package/{providers → sdk/src/providers}/HlsProvider/qualityExtractor.d.ts +0 -0
  45. package/{providers → sdk/src/providers}/MpegProvider/index.d.ts +0 -0
  46. package/{providers → sdk/src/providers}/ProviderContainer/index.d.ts +0 -0
  47. package/{providers → sdk/src/providers}/ProviderContainer/types.d.ts +0 -0
  48. package/{providers → sdk/src/providers}/ProviderContainer/utils/formatsSupport.d.ts +0 -0
  49. package/{providers → sdk/src/providers}/ProviderContainer/utils/playbackHangup.d.ts +0 -0
  50. package/{providers → sdk/src/providers}/types.d.ts +0 -0
  51. package/{providers → sdk/src/providers}/utils/HtmlVideoTextTrackManager.d.ts +0 -0
  52. package/{providers → sdk/src/providers}/utils/LiveOffset/index.d.ts +0 -0
  53. package/{providers → sdk/src/providers}/utils/LiveOffset/types.d.ts +0 -0
  54. package/{providers → sdk/src/providers}/utils/firstBytesEventForVideoElement.d.ts +0 -0
  55. package/{providers → sdk/src/providers}/utils/firstFrameEvent.d.ts +0 -0
  56. package/{providers → sdk/src/providers}/utils/forcePlay.d.ts +0 -0
  57. package/{providers → sdk/src/providers}/utils/generateLiveUrl.d.ts +0 -0
  58. package/{providers → sdk/src/providers}/utils/initVideoInContainer.d.ts +0 -0
  59. package/{providers → sdk/src/providers}/utils/observableVideo.d.ts +0 -0
  60. package/{providers → sdk/src/providers}/utils/syncDesiredState.d.ts +0 -0
  61. package/{providers → sdk/src/providers}/utils/syncPlaybackState.d.ts +0 -0
  62. package/{utils → sdk/src/utils}/StateMachine/StateMachine.d.ts +0 -0
  63. package/{utils → sdk/src/utils}/StateMachine/types.d.ts +0 -0
  64. package/{utils → sdk/src/utils}/StatefulIterator/StatefulIterator.spec.d.ts +0 -0
  65. package/{utils → sdk/src/utils}/StatefulIterator/index.d.ts +0 -0
  66. package/sdk/src/utils/ThroughputEstimator.d.ts +25 -0
  67. package/{utils → sdk/src/utils}/addScript.d.ts +0 -0
  68. package/{utils → sdk/src/utils}/autoSelectVideoTrack.d.ts +2 -1
  69. package/{utils → sdk/src/utils}/buffer/HttpVideoBuffer.d.ts +0 -0
  70. package/{utils → sdk/src/utils}/buffer/getBufferedRangeForPosition.d.ts +0 -0
  71. package/sdk/src/utils/buffer/getForwardBufferDuration.d.ts +3 -0
  72. package/{utils → sdk/src/utils}/buffer/types.d.ts +0 -0
  73. package/{utils → sdk/src/utils}/hostnameFromUrl.d.ts +0 -0
  74. package/{utils → sdk/src/utils}/iframeSafeStorage.d.ts +0 -0
  75. package/{utils → sdk/src/utils}/isSafari.d.ts +0 -0
  76. package/{utils → sdk/src/utils}/link.d.ts +0 -0
  77. package/{utils → sdk/src/utils}/observeElementSize.d.ts +0 -0
  78. package/{utils → sdk/src/utils}/playbackTelemetry.d.ts +0 -0
  79. package/{utils → sdk/src/utils}/quality/quality.spec.d.ts +0 -0
  80. package/{utils → sdk/src/utils}/quality/types.d.ts +0 -0
  81. package/{utils → sdk/src/utils}/quality/utils.d.ts +0 -0
  82. package/{utils → sdk/src/utils}/range.d.ts +0 -0
  83. package/{utils → sdk/src/utils}/rectangle.d.ts +0 -0
  84. package/sdk/src/utils/smoothedValue.d.ts +24 -0
  85. package/{utils → sdk/src/utils}/tuningConfig.d.ts +10 -4
  86. package/{utils → sdk/src/utils}/videoFormat.d.ts +0 -0
  87. package/shared/src/Logger/Logger.d.ts +10 -0
  88. package/shared/src/Logger/index.d.ts +2 -0
  89. package/shared/src/index.d.ts +4 -0
  90. package/shared/src/reactive/Observable.d.ts +7 -0
  91. package/shared/src/reactive/Subject.d.ts +10 -0
  92. package/shared/src/reactive/Subscription.d.ts +6 -0
  93. package/shared/src/reactive/ValueSubject.d.ts +10 -0
  94. package/shared/src/reactive/combine.d.ts +10 -0
  95. package/shared/src/reactive/fromEvent.d.ts +7 -0
  96. package/shared/src/reactive/index.d.ts +19 -0
  97. package/shared/src/reactive/merge.d.ts +12 -0
  98. package/shared/src/reactive/observableFrom.d.ts +3 -0
  99. package/shared/src/reactive/operators/debounce.d.ts +6 -0
  100. package/shared/src/reactive/operators/filter.d.ts +3 -0
  101. package/shared/src/reactive/operators/filterChanged.d.ts +5 -0
  102. package/shared/src/reactive/operators/map.d.ts +2 -0
  103. package/shared/src/reactive/operators/mapTo.d.ts +2 -0
  104. package/shared/src/reactive/operators/once.d.ts +5 -0
  105. package/shared/src/reactive/operators/pairwise.d.ts +4 -0
  106. package/shared/src/reactive/operators/tap.d.ts +2 -0
  107. package/shared/src/reactive/operators/throttle.d.ts +5 -0
  108. package/shared/src/reactive/timeout.d.ts +3 -0
  109. package/shared/src/types/index.d.ts +18 -0
  110. package/shared/src/utils/addScript.d.ts +1 -0
  111. package/shared/src/utils/index.d.ts +5 -0
  112. package/shared/src/utils/never.d.ts +2 -0
  113. package/shared/src/utils/noop.d.ts +1 -0
  114. package/shared/src/utils/nullable.d.ts +6 -0
  115. package/utils/ThroughputEstimator.d.ts +0 -31
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/videoplayer-core",
3
- "version": "2.0.33",
3
+ "version": "2.0.37",
4
4
  "author": "vk.com",
5
5
  "description": "Videoplayer core library based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
File without changes
File without changes
@@ -46,6 +46,7 @@ export default class Player implements IPlayer {
46
46
  startAttempt$: Subject<StartStatus>;
47
47
  willPause$: Subject<void>;
48
48
  willResume$: Subject<void>;
49
+ willDestruct$: Subject<void>;
49
50
  watchCoverageRecord$: Subject<IRange<number>>;
50
51
  watchCoverageLive$: Subject<IRange<number>>;
51
52
  managedError$: Subject<IError>;
@@ -78,6 +78,10 @@ export interface IPlayerEvents {
78
78
  * Запрошено возобновление воспроизведения после паузы
79
79
  */
80
80
  willResume$: IObservable<void>;
81
+ /**
82
+ * Плеер будет уничтожен, в момент события можно синхронно запросить последние данные о его состоянии.
83
+ */
84
+ willDestruct$: IObservable<void>;
81
85
  /**
82
86
  * Просмотрен промежуток видео.
83
87
  * Параметр содержит диапазон: начальная и конечная позиция просмотра (в секундах от начала ролика).
File without changes
@@ -2,13 +2,12 @@ import { IObservable, IValueObservable } from '@vkontakte/videoplayer-shared';
2
2
  import { IRange } from "../../utils/range";
3
3
  import { IStateMachine } from "../../utils/StateMachine/types";
4
4
  import { PlaybackState } from "../types";
5
- import { IProviderEntry } from "../../providers/ProviderContainer/types";
6
5
  interface IParams {
7
6
  playbackState: IStateMachine<PlaybackState>;
8
7
  seekPosition: IStateMachine<number | undefined>;
9
- provider$: IValueObservable<IProviderEntry>;
8
+ playbackAbort$: IObservable<void>;
10
9
  position$: IValueObservable<number>;
11
10
  }
12
- export declare const watchCoverageRecord: ({ playbackState, seekPosition, provider$, position$, }: IParams) => IObservable<IRange<number>>;
13
- export declare const watchCoverageLive: ({ playbackState, seekPosition, provider$, position$, }: IParams) => IObservable<IRange<number>>;
11
+ export declare const watchCoverageRecord: ({ playbackState, seekPosition, playbackAbort$, position$, }: IParams) => IObservable<IRange<number>>;
12
+ export declare const watchCoverageLive: ({ playbackState, seekPosition, playbackAbort$, position$, }: IParams) => IObservable<IRange<number>>;
14
13
  export {};
@@ -1,8 +1,10 @@
1
1
  import type ThroughputEstimator from "../../../utils/ThroughputEstimator";
2
+ import { ITuningConfig } from "../../../utils/tuningConfig";
2
3
  import { IError, ISubject, IValueSubject, Milliseconds } from '@vkontakte/videoplayer-shared';
3
4
  import { Representation, RepresentationKind } from './types';
4
5
  export interface Dependencies {
5
6
  throughputEstimator: ThroughputEstimator;
7
+ tuning: ITuningConfig['dash'];
6
8
  }
7
9
  export declare class BufferManager {
8
10
  ended$: IValueSubject<boolean>;
@@ -20,8 +22,10 @@ export declare class BufferManager {
20
22
  private segmentDownloadPromise;
21
23
  private abortController;
22
24
  private loadAllInitsPromise;
25
+ private allInitsLoaded;
23
26
  private throughputEstimator;
24
- constructor(kind: RepresentationKind, mediaSource: MediaSource, representations: Representation[], { throughputEstimator }: Dependencies);
27
+ private tuning;
28
+ constructor(kind: RepresentationKind, mediaSource: MediaSource, representations: Representation[], { throughputEstimator, tuning }: Dependencies);
25
29
  startWith(id: Representation['id']): Promise<void>;
26
30
  switchTo(newRepresentationId: Representation['id']): Promise<void>;
27
31
  maintain(currentPosition: Milliseconds): Promise<void>;
@@ -1,7 +1,8 @@
1
1
  import { Representation, RepresentationKind } from "./types";
2
2
  import StateMachine from "../../../utils/StateMachine/StateMachine";
3
3
  import type ThroughputEstimator from "../../../utils/ThroughputEstimator";
4
- import { IValueSubject, Milliseconds } from '@vkontakte/videoplayer-shared';
4
+ import { ITuningConfig } from "../../../utils/tuningConfig";
5
+ import { ISubject, IValueSubject, Milliseconds, IError } from '@vkontakte/videoplayer-shared';
5
6
  import { Manifest } from './mpd';
6
7
  export declare enum State {
7
8
  NONE = "none",
@@ -10,17 +11,21 @@ export declare enum State {
10
11
  }
11
12
  export interface Params {
12
13
  throughputEstimator: ThroughputEstimator;
14
+ tuning: ITuningConfig;
13
15
  }
14
16
  export declare class Player {
15
17
  private element;
16
18
  private source;
17
19
  private manifest;
20
+ private tuning;
18
21
  private videoBufferManager;
19
22
  private audioBufferManager;
20
23
  private throughputEstimator;
21
24
  private subscription;
22
25
  state$: StateMachine<State>;
23
26
  currentVideoRepresentation$: IValueSubject<Representation['id'] | undefined>;
27
+ error$: ISubject<IError>;
28
+ private forceEnded$;
24
29
  constructor(params: Params);
25
30
  initManifest(element: HTMLVideoElement, manifestUrl: string): Promise<Manifest>;
26
31
  initRepresentations(initialVideo: Representation['id'], initialAudio: Representation['id']): Promise<void>;
File without changes
File without changes
@@ -0,0 +1,25 @@
1
+ import { Byte, Kbps, Milliseconds } from '@vkontakte/videoplayer-shared';
2
+ import { ITuningConfig } from "./tuningConfig";
3
+ import { IValueSubject } from '../../../shared/src';
4
+ declare class ThroughputEstimator {
5
+ private throughput;
6
+ private rtt;
7
+ private subscription;
8
+ private tuningConfig;
9
+ throughput$: IValueSubject<Kbps>;
10
+ rtt$: IValueSubject<Milliseconds>;
11
+ rttAdjustedThroughput$: IValueSubject<Kbps>;
12
+ constructor(tuning: ITuningConfig['throughputEstimator']);
13
+ destroy(): void;
14
+ trackXHR(xhr: XMLHttpRequest): void;
15
+ trackStream(stream: ReadableStream): void;
16
+ addRawSpeed(size: Byte, time: Milliseconds): void;
17
+ /**
18
+ * Стоит использовать только когда другие методы совсем не получается
19
+ */
20
+ addRawThroughput(rate: Kbps): void;
21
+ addRawRtt(time: Milliseconds): void;
22
+ private static sanityCheck;
23
+ private static load;
24
+ }
25
+ export default ThroughputEstimator;
File without changes
@@ -6,6 +6,7 @@ export interface Constraints {
6
6
  container?: IRectangle;
7
7
  throughput?: Kbps;
8
8
  tuning: ITuningConfig['autoTrackSelection'];
9
+ forwardBufferHealth?: number;
9
10
  }
10
- declare const autoSelectVideoTrack: (tracks: IVideoTrack[], { container, throughput, tuning, }: Constraints) => IVideoTrack;
11
+ declare const autoSelectVideoTrack: (tracks: IVideoTrack[], { container, throughput, tuning, forwardBufferHealth, }: Constraints) => IVideoTrack;
11
12
  export default autoSelectVideoTrack;
@@ -0,0 +1,3 @@
1
+ import { Milliseconds } from '@vkontakte/videoplayer-shared';
2
+ declare const _default: (timeRanges: TimeRanges, position: Milliseconds) => Milliseconds;
3
+ export default _default;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,24 @@
1
+ import { IValueSubject } from '@vkontakte/videoplayer-shared';
2
+ interface IParams {
3
+ initial: number;
4
+ emaAlphaSlow: number;
5
+ emaAlphaFast: number;
6
+ changeThreshold: number;
7
+ fastDirection: 1 | -1;
8
+ label?: string;
9
+ }
10
+ export declare class SmoothedValue {
11
+ private prevReported;
12
+ private slow;
13
+ private fast;
14
+ private smoothed;
15
+ private params;
16
+ private rawSeries$;
17
+ private smoothedSeries$;
18
+ private reportedSeries$;
19
+ smoothed$: IValueSubject<number>;
20
+ debounced$: IValueSubject<number>;
21
+ constructor(params: IParams);
22
+ next(value: number): void;
23
+ }
24
+ export {};
@@ -2,21 +2,26 @@ import { VideoFormat } from "../player/types";
2
2
  import { Byte, Milliseconds } from '@vkontakte/videoplayer-shared';
3
3
  export declare type ITuningConfig = {
4
4
  throughputEstimator: {
5
- emaAlpha: number;
6
5
  emaAlphaSlow: number;
7
6
  emaAlphaFast: number;
8
7
  changeThreshold: number;
9
8
  useBrowserEstimation: boolean;
9
+ rttPenaltyRequestSize: Byte;
10
10
  streamMinSampleSize: Byte;
11
11
  streamMinSampleTime: Milliseconds;
12
12
  };
13
13
  autoTrackSelection: {
14
- bitrateFactor: number;
14
+ bitrateFactorAtEmptyBuffer: number;
15
+ bitrateFactorAtFullBuffer: number;
15
16
  limitByContainer: boolean;
16
17
  usePixelRatio: boolean;
17
18
  containerSizeFactor: number;
18
- stepQualityDown: boolean;
19
- stepQualityDownExceptForTop: boolean;
19
+ };
20
+ dash: {
21
+ extraInitSize: Milliseconds;
22
+ forwardBufferTarget: Milliseconds;
23
+ segmentRequestSize: Byte;
24
+ representationSwitchForwardBufferGap: Milliseconds;
20
25
  };
21
26
  enableTelemetryAtStart: boolean;
22
27
  formatsToAvoid: VideoFormat[];
@@ -30,6 +35,7 @@ export declare type ITuningConfig = {
30
35
  insufficientBufferRuleMargin: Milliseconds;
31
36
  dashSeekInSegmentDurationThreshold: Milliseconds;
32
37
  dashSeekInSegmentAlwaysSeekDelta: Milliseconds;
38
+ endGapTolerance: Milliseconds;
33
39
  };
34
40
  export declare type IOptionalTuningConfig = {
35
41
  [key in keyof ITuningConfig]?: Partial<ITuningConfig[key]>;
File without changes
@@ -0,0 +1,10 @@
1
+ import Subject from '../reactive/Subject';
2
+ import { ILogger, ILogInputEntry, IComponentLogger, ILogEntry } from './types';
3
+ export declare class Logger implements ILogger {
4
+ log$: Subject<ILogEntry>;
5
+ private logs;
6
+ log: (inputEntry: ILogInputEntry) => void;
7
+ createCustomLog<TArgs extends unknown[]>(transform: (...args: TArgs) => ILogInputEntry): (...args: TArgs) => void;
8
+ createComponentLog(component: string): IComponentLogger;
9
+ getAllLogs: () => ILogEntry[];
10
+ }
@@ -0,0 +1,2 @@
1
+ export { Logger } from './Logger';
2
+ export type { ILogger, ILogInputEntry, IComponentLogEntry, IComponentLogger, ILogEntry } from './types';
@@ -0,0 +1,4 @@
1
+ export * from './Logger';
2
+ export * from './utils';
3
+ export * from './reactive';
4
+ export * from './types';
@@ -0,0 +1,7 @@
1
+ import { IEmitter, IListener, IObservable, IOperator, ISubscription, IUnsubscriber } from './types';
2
+ export default class Observable<T> implements IObservable<T> {
3
+ constructor(subscribe?: (emitter: IEmitter<T>) => IUnsubscriber | ISubscription | void);
4
+ subscribe(listener: IListener<T>, error?: IListener<Error | unknown>): ISubscription;
5
+ pipe(...operators: IOperator<unknown, unknown>[]): IObservable<unknown>;
6
+ protected _subscribe(_emitter: IEmitter<T>): IUnsubscriber | ISubscription | void;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { IEmitter, ISubject, ISubscription, IUnsubscriber } from './types';
2
+ import Observable from './Observable';
3
+ export default class Subject<T> extends Observable<T> implements ISubject<T> {
4
+ private keyCounter;
5
+ private subscribers;
6
+ constructor();
7
+ next(value: T): void;
8
+ error(value: T): void;
9
+ protected _subscribe(emitter: IEmitter<T>): IUnsubscriber | ISubscription | void;
10
+ }
@@ -0,0 +1,6 @@
1
+ import { ISubscription, IUnsubscriber } from './types';
2
+ export default class Subscription implements ISubscription {
3
+ private subscriptions;
4
+ unsubscribe(): void;
5
+ add(item: ISubscription | IUnsubscriber): ISubscription;
6
+ }
@@ -0,0 +1,10 @@
1
+ import { IEmitter, ISubscription, IUnsubscriber, IValueSubject } from './types';
2
+ import Subject from './Subject';
3
+ export default class ValueSubject<T> extends Subject<T> implements IValueSubject<T> {
4
+ private value;
5
+ constructor(initialValue: T);
6
+ next(value: T): void;
7
+ error(value: T): void;
8
+ getValue(): T;
9
+ protected _subscribe(emitter: IEmitter<T>): IUnsubscriber | ISubscription | void;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { IObservable, TypeOfObservable } from './types';
2
+ /**
3
+ * Создаёт Observable, который состоит из объектов, ключами которых являются последние значения исходных Observable.
4
+ * Первое событие возникает тогда, когда каждый исходный Observable выдал хотя бы одно значение.
5
+ */
6
+ declare type CombineObservables<T extends Record<string, IObservable<unknown>>> = {
7
+ [key in keyof T]: TypeOfObservable<T[key]>;
8
+ };
9
+ export default function combine<T extends Record<string, IObservable<unknown>>>(observables: T): IObservable<CombineObservables<T>>;
10
+ export {};
@@ -0,0 +1,7 @@
1
+ import { IObservable } from './types';
2
+ interface IEventTarget {
3
+ addEventListener(type: string, handler: (...params: any[]) => void): void;
4
+ removeEventListener(type: string, handler: (...params: any[]) => void): void;
5
+ }
6
+ declare const _default: <T>(target: IEventTarget, eventName: string) => IObservable<T>;
7
+ export default _default;
@@ -0,0 +1,19 @@
1
+ export { default as Subscription } from './Subscription';
2
+ export { default as Observable } from './Observable';
3
+ export { default as Subject } from './Subject';
4
+ export { default as ValueSubject } from './ValueSubject';
5
+ export { default as combine } from './combine';
6
+ export { default as merge } from './merge';
7
+ export { default as timeout } from './timeout';
8
+ export { default as observableFrom } from './observableFrom';
9
+ export { default as fromEvent } from './fromEvent';
10
+ export { default as debounce } from './operators/debounce';
11
+ export { default as throttle } from './operators/throttle';
12
+ export { default as filter } from './operators/filter';
13
+ export { default as filterChanged } from './operators/filterChanged';
14
+ export { default as map } from './operators/map';
15
+ export { default as mapTo } from './operators/mapTo';
16
+ export { default as once } from './operators/once';
17
+ export { default as pairwise } from './operators/pairwise';
18
+ export { default as tap } from './operators/tap';
19
+ export type { ISubscription, IUnsubscriber, IObservable, ISubject, IValueSubject, IValueObservable, IListener, IEmitter, IValue, IOperator, } from './types';
@@ -0,0 +1,12 @@
1
+ import { IObservable } from './types';
2
+ export default function merge<T1, T2>(v1: IObservable<T1>, v2: IObservable<T2>): IObservable<T1 | T2>;
3
+ export default function merge<T1, T2, T3>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>): IObservable<T1 | T2 | T3>;
4
+ export default function merge<T1, T2, T3, T4>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>): IObservable<T1 | T2 | T3 | T4>;
5
+ export default function merge<T1, T2, T3, T4, T5>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>): IObservable<T1 | T2 | T3 | T4 | T5>;
6
+ export default function merge<T1, T2, T3, T4, T5, T6>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>, v6: IObservable<T6>): IObservable<T1 | T2 | T3 | T4 | T5 | T6>;
7
+ export default function merge<T1, T2, T3, T4, T5, T6>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>, v6: IObservable<T6>): IObservable<T1 | T2 | T3 | T4 | T5 | T6>;
8
+ export default function merge<T1, T2, T3, T4, T5, T6, T7>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>, v6: IObservable<T6>, v7: IObservable<T7>): IObservable<T1 | T2 | T3 | T4 | T5 | T6 | T7>;
9
+ export default function merge<T1, T2, T3, T4, T5, T6, T7, T8>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>, v6: IObservable<T6>, v7: IObservable<T7>, v8: IObservable<T8>): IObservable<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8>;
10
+ export default function merge<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>, v6: IObservable<T6>, v7: IObservable<T7>, v8: IObservable<T8>, v9: IObservable<T9>): IObservable<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9>;
11
+ export default function merge<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1: IObservable<T1>, v2: IObservable<T2>, v3: IObservable<T3>, v4: IObservable<T4>, v5: IObservable<T5>, v6: IObservable<T6>, v7: IObservable<T7>, v8: IObservable<T8>, v9: IObservable<T9>, v10: IObservable<T10>): IObservable<T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10>;
12
+ export default function merge<R>(...observables: IObservable<unknown>[]): IObservable<R>;
@@ -0,0 +1,3 @@
1
+ import { IObservable } from './types';
2
+ declare const _default: <T>(values: T[]) => IObservable<T>;
3
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { Milliseconds } from '../../utils/semanticTypes';
2
+ import { IOperator } from '../types';
3
+ export default function debounce<T>(time: Milliseconds, config?: {
4
+ leading: boolean;
5
+ trailing: boolean;
6
+ }): IOperator<T>;
@@ -0,0 +1,3 @@
1
+ import { IOperator } from '../types';
2
+ export default function filter<T, S extends T>(predicate: (value: T) => value is S): IOperator<T, S>;
3
+ export default function filter<T>(predicate: (value: T) => boolean): IOperator<T>;
@@ -0,0 +1,5 @@
1
+ import { IOperator } from '../types';
2
+ /**
3
+ * Пропускает только события, содержащие значения, отличные от предыдущего
4
+ */
5
+ export default function filterChanged<T>(equal?: (prev: T, next: T) => boolean): IOperator<T>;
@@ -0,0 +1,2 @@
1
+ import { IOperator } from '../types';
2
+ export default function map<T, S>(mapper: (value: T) => S): IOperator<T, S>;
@@ -0,0 +1,2 @@
1
+ import { IOperator } from '../types';
2
+ export default function mapTo<T, S>(value: S): IOperator<T, S>;
@@ -0,0 +1,5 @@
1
+ import { IOperator } from '../types';
2
+ /**
3
+ * Отписывается от исходного потока после получения первого события.
4
+ */
5
+ export default function once<T>(): IOperator<T>;
@@ -0,0 +1,4 @@
1
+ import { IOperator } from '../types';
2
+ declare type IPair<T> = [previous: T, current: T];
3
+ export default function pairwise<T>(): IOperator<T, IPair<T>>;
4
+ export {};
@@ -0,0 +1,2 @@
1
+ import { IOperator } from '../types';
2
+ export default function tap<T>(effect: (value: T) => void): IOperator<T>;
@@ -0,0 +1,5 @@
1
+ import { IOperator } from '../types';
2
+ export default function throttle<T>(time: number, config?: {
3
+ leading: boolean;
4
+ trailing: boolean;
5
+ }): IOperator<T>;
@@ -0,0 +1,3 @@
1
+ import { IObservable } from './types';
2
+ declare const _default: (interval: number) => IObservable<void>;
3
+ export default _default;
@@ -0,0 +1,18 @@
1
+ export interface IError {
2
+ /**
3
+ * Код или другой идентификатор для статистики
4
+ */
5
+ id: string;
6
+ /**
7
+ * Сообщение по которому можно разобрать что случилось
8
+ */
9
+ message: string;
10
+ /**
11
+ * Данные, полезные для отладки
12
+ */
13
+ data?: any;
14
+ /**
15
+ * Возникшее исключение
16
+ */
17
+ thrown?: Error | unknown;
18
+ }
@@ -0,0 +1 @@
1
+ export declare const addScript: (scriptSrc: string, abortSignal: AbortSignal, timeout?: number | undefined) => Promise<void>;