@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.
- package/index.cjs.js +4 -4
- package/index.esm.js +4 -4
- package/package.json +1 -1
- package/{env.d.ts → sdk/src/env.d.ts} +0 -0
- package/{index.d.ts → sdk/src/index.d.ts} +0 -0
- package/{player → sdk/src/player}/Player.d.ts +1 -0
- package/{player → sdk/src/player}/types.d.ts +4 -0
- package/{player → sdk/src/player}/utils/position.d.ts +0 -0
- package/{player → sdk/src/player}/utils/selectContainer.d.ts +0 -0
- package/{player → sdk/src/player}/utils/watchCoverage.d.ts +3 -4
- package/{providers → sdk/src/providers}/ChromecastProvider/ChromecastInitializer/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/ChromecastProvider/ChromecastInitializer/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/ChromecastProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashIFProvider/BigRequestLoader.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashIFProvider/dashjsTypes.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashIFProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashIFProvider/observableManifestLoader.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashIFProvider/stripRangeHeader.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/DashLiveProvider.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/utils/FilesFetcher.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/utils/LiveDashPlayer.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/utils/ThroughputEstimator.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashLiveProvider/utils/liveDashPlayerUtil.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashProvider/DashProvider.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashProvider/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashProvider/utils/DashLite.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashProvider/utils/stream.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashProvider/utils/xhr2.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashVKProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashVKProvider/lib/buffer.d.ts +5 -1
- package/{providers → sdk/src/providers}/DashVKProvider/lib/ebml.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashVKProvider/lib/fetch.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashVKProvider/lib/mpd.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashVKProvider/lib/player.d.ts +6 -1
- package/{providers → sdk/src/providers}/DashVKProvider/lib/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/DashVKProvider/lib/webm.d.ts +0 -0
- package/{providers → sdk/src/providers}/HlsJsProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/HlsLiveProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/HlsLiveProvider/seekBackTimeExtractor.d.ts +0 -0
- package/{providers → sdk/src/providers}/HlsProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/HlsProvider/qualityExtractor.d.ts +0 -0
- package/{providers → sdk/src/providers}/MpegProvider/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/ProviderContainer/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/ProviderContainer/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/ProviderContainer/utils/formatsSupport.d.ts +0 -0
- package/{providers → sdk/src/providers}/ProviderContainer/utils/playbackHangup.d.ts +0 -0
- package/{providers → sdk/src/providers}/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/HtmlVideoTextTrackManager.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/LiveOffset/index.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/LiveOffset/types.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/firstBytesEventForVideoElement.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/firstFrameEvent.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/forcePlay.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/generateLiveUrl.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/initVideoInContainer.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/observableVideo.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/syncDesiredState.d.ts +0 -0
- package/{providers → sdk/src/providers}/utils/syncPlaybackState.d.ts +0 -0
- package/{utils → sdk/src/utils}/StateMachine/StateMachine.d.ts +0 -0
- package/{utils → sdk/src/utils}/StateMachine/types.d.ts +0 -0
- package/{utils → sdk/src/utils}/StatefulIterator/StatefulIterator.spec.d.ts +0 -0
- package/{utils → sdk/src/utils}/StatefulIterator/index.d.ts +0 -0
- package/sdk/src/utils/ThroughputEstimator.d.ts +25 -0
- package/{utils → sdk/src/utils}/addScript.d.ts +0 -0
- package/{utils → sdk/src/utils}/autoSelectVideoTrack.d.ts +2 -1
- package/{utils → sdk/src/utils}/buffer/HttpVideoBuffer.d.ts +0 -0
- package/{utils → sdk/src/utils}/buffer/getBufferedRangeForPosition.d.ts +0 -0
- package/sdk/src/utils/buffer/getForwardBufferDuration.d.ts +3 -0
- package/{utils → sdk/src/utils}/buffer/types.d.ts +0 -0
- package/{utils → sdk/src/utils}/hostnameFromUrl.d.ts +0 -0
- package/{utils → sdk/src/utils}/iframeSafeStorage.d.ts +0 -0
- package/{utils → sdk/src/utils}/isSafari.d.ts +0 -0
- package/{utils → sdk/src/utils}/link.d.ts +0 -0
- package/{utils → sdk/src/utils}/observeElementSize.d.ts +0 -0
- package/{utils → sdk/src/utils}/playbackTelemetry.d.ts +0 -0
- package/{utils → sdk/src/utils}/quality/quality.spec.d.ts +0 -0
- package/{utils → sdk/src/utils}/quality/types.d.ts +0 -0
- package/{utils → sdk/src/utils}/quality/utils.d.ts +0 -0
- package/{utils → sdk/src/utils}/range.d.ts +0 -0
- package/{utils → sdk/src/utils}/rectangle.d.ts +0 -0
- package/sdk/src/utils/smoothedValue.d.ts +24 -0
- package/{utils → sdk/src/utils}/tuningConfig.d.ts +10 -4
- package/{utils → sdk/src/utils}/videoFormat.d.ts +0 -0
- package/shared/src/Logger/Logger.d.ts +10 -0
- package/shared/src/Logger/index.d.ts +2 -0
- package/shared/src/index.d.ts +4 -0
- package/shared/src/reactive/Observable.d.ts +7 -0
- package/shared/src/reactive/Subject.d.ts +10 -0
- package/shared/src/reactive/Subscription.d.ts +6 -0
- package/shared/src/reactive/ValueSubject.d.ts +10 -0
- package/shared/src/reactive/combine.d.ts +10 -0
- package/shared/src/reactive/fromEvent.d.ts +7 -0
- package/shared/src/reactive/index.d.ts +19 -0
- package/shared/src/reactive/merge.d.ts +12 -0
- package/shared/src/reactive/observableFrom.d.ts +3 -0
- package/shared/src/reactive/operators/debounce.d.ts +6 -0
- package/shared/src/reactive/operators/filter.d.ts +3 -0
- package/shared/src/reactive/operators/filterChanged.d.ts +5 -0
- package/shared/src/reactive/operators/map.d.ts +2 -0
- package/shared/src/reactive/operators/mapTo.d.ts +2 -0
- package/shared/src/reactive/operators/once.d.ts +5 -0
- package/shared/src/reactive/operators/pairwise.d.ts +4 -0
- package/shared/src/reactive/operators/tap.d.ts +2 -0
- package/shared/src/reactive/operators/throttle.d.ts +5 -0
- package/shared/src/reactive/timeout.d.ts +3 -0
- package/shared/src/types/index.d.ts +18 -0
- package/shared/src/utils/addScript.d.ts +1 -0
- package/shared/src/utils/index.d.ts +5 -0
- package/shared/src/utils/never.d.ts +2 -0
- package/shared/src/utils/noop.d.ts +1 -0
- package/shared/src/utils/nullable.d.ts +6 -0
- package/utils/ThroughputEstimator.d.ts +0 -31
package/package.json
CHANGED
|
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
|
|
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
|
-
|
|
8
|
+
playbackAbort$: IObservable<void>;
|
|
10
9
|
position$: IValueObservable<number>;
|
|
11
10
|
}
|
|
12
|
-
export declare const watchCoverageRecord: ({ playbackState, seekPosition,
|
|
13
|
-
export declare const watchCoverageLive: ({ playbackState, seekPosition,
|
|
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 {};
|
|
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
|
|
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
|
|
@@ -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
|
-
|
|
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>;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -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 {
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
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;
|
|
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
|
|
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
|
-
|
|
14
|
+
bitrateFactorAtEmptyBuffer: number;
|
|
15
|
+
bitrateFactorAtFullBuffer: number;
|
|
15
16
|
limitByContainer: boolean;
|
|
16
17
|
usePixelRatio: boolean;
|
|
17
18
|
containerSizeFactor: number;
|
|
18
|
-
|
|
19
|
-
|
|
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,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,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,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>;
|