Skip to content

Commit

Permalink
fix(typings): make an exported function's destructuring signature exp…
Browse files Browse the repository at this point in the history
…licitly.
  • Loading branch information
tetsuharuohzeki authored and benlesh committed Apr 12, 2016
1 parent bba13d8 commit ef305af
Show file tree
Hide file tree
Showing 11 changed files with 101 additions and 21 deletions.
14 changes: 12 additions & 2 deletions src/observable/BoundCallbackObservable.ts
Expand Up @@ -138,11 +138,21 @@ function dispatch<T>(state: { source: BoundCallbackObservable<T>, subscriber: Su
self.add(subject.subscribe(subscriber));
}

function dispatchNext({ value, subject }) {
interface DispatchNextArg<T> {
subject: AsyncSubject<T>;
value: T;
}
function dispatchNext<T>(arg: DispatchNextArg<T>) {
const { value, subject } = arg;
subject.next(value);
subject.complete();
}

function dispatchError({ err, subject }) {
interface DispatchErrorArg<T> {
subject: AsyncSubject<T>;
err: any;
}
function dispatchError<T>(arg: DispatchErrorArg<T>) {
const { err, subject } = arg;
subject.error(err);
}
14 changes: 12 additions & 2 deletions src/observable/BoundNodeCallbackObservable.ts
Expand Up @@ -135,11 +135,21 @@ function dispatch<T>(state: { source: BoundNodeCallbackObservable<T>, subscriber
self.add(subject.subscribe(subscriber));
}

function dispatchNext({ value, subject }) {
interface DispatchNextArg<T> {
subject: AsyncSubject<T>;
value: T;
}
function dispatchNext<T>(arg: DispatchNextArg<T>) {
const { value, subject } = arg;
subject.next(value);
subject.complete();
}

function dispatchError({ err, subject }) {
interface DispatchErrorArg<T> {
subject: AsyncSubject<T>;
err: any;
}
function dispatchError<T>(arg: DispatchErrorArg<T>) {
const { err, subject } = arg;
subject.error(err);
}
7 changes: 6 additions & 1 deletion src/observable/EmptyObservable.ts
Expand Up @@ -3,6 +3,10 @@ import {Subscriber} from '../Subscriber';
import {Observable} from '../Observable';
import {TeardownLogic} from '../Subscription';

export interface DispatchArg<T> {
subscriber: Subscriber<T>;
}

/**
* We need this JSDoc comment for affecting ESDoc.
* @extends {Ignored}
Expand Down Expand Up @@ -51,7 +55,8 @@ export class EmptyObservable<T> extends Observable<T> {
return new EmptyObservable<T>(scheduler);
}

static dispatch({ subscriber }) {
static dispatch<T>(arg: DispatchArg<T>) {
const { subscriber } = arg;
subscriber.complete();
}

Expand Down
8 changes: 7 additions & 1 deletion src/observable/ErrorObservable.ts
Expand Up @@ -2,6 +2,11 @@ import {Scheduler} from '../Scheduler';
import {Observable} from '../Observable';
import {TeardownLogic} from '../Subscription';

export interface DispatchArg {
error: any;
subscriber: any;
}

/**
* We need this JSDoc comment for affecting ESDoc.
* @extends {Ignored}
Expand Down Expand Up @@ -53,7 +58,8 @@ export class ErrorObservable extends Observable<any> {
return new ErrorObservable(error, scheduler);
}

static dispatch({ error, subscriber }) {
static dispatch(arg: DispatchArg) {
const { error, subscriber } = arg;
subscriber.error(error);
}

Expand Down
14 changes: 12 additions & 2 deletions src/observable/PromiseObservable.ts
Expand Up @@ -88,14 +88,24 @@ export class PromiseObservable<T> extends Observable<T> {
}
}

function dispatchNext({ value, subscriber }) {
interface DispatchNextArg<T> {
subscriber: Subscriber<T>;
value: T;
}
function dispatchNext<T>(arg: DispatchNextArg<T>) {
const { value, subscriber } = arg;
if (!subscriber.isUnsubscribed) {
subscriber.next(value);
subscriber.complete();
}
}

function dispatchError({ err, subscriber }) {
interface DispatchErrorArg<T> {
subscriber: Subscriber<T>;
err: any;
}
function dispatchError<T>(arg: DispatchErrorArg<T>) {
const { err, subscriber } = arg;
if (!subscriber.isUnsubscribed) {
subscriber.error(err);
}
Expand Down
8 changes: 7 additions & 1 deletion src/observable/SubscribeOnObservable.ts
Expand Up @@ -5,6 +5,11 @@ import {Observable} from '../Observable';
import {asap} from '../scheduler/asap';
import {isNumeric} from '../util/isNumeric';

export interface DispatchArg<T> {
source: Observable<T>;
subscriber: Subscriber<T>;
}

/**
* We need this JSDoc comment for affecting ESDoc.
* @extends {Ignored}
Expand All @@ -15,7 +20,8 @@ export class SubscribeOnObservable<T> extends Observable<T> {
return new SubscribeOnObservable(source, delay, scheduler);
}

static dispatch<T>({ source, subscriber }): Subscription {
static dispatch<T>(arg: DispatchArg<T>): Subscription {
const { source, subscriber } = arg;
return source.subscribe(subscriber);
}

Expand Down
10 changes: 8 additions & 2 deletions src/operator/bufferTime.ts
Expand Up @@ -152,16 +152,22 @@ function dispatchBufferTimeSpanOnly(state: any) {
}
}

interface DispatchArg<T> {
subscriber: BufferTimeSubscriber<T>;
buffer: Array<T>;
}

function dispatchBufferCreation<T>(state: CreationState<T>) {
const { bufferCreationInterval, bufferTimeSpan, subscriber, scheduler } = state;
const buffer = subscriber.openBuffer();
const action = <Action<CreationState<T>>>this;
if (!subscriber.isUnsubscribed) {
action.add(scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber, buffer }));
action.add(scheduler.schedule<DispatchArg<T>>(dispatchBufferClose, bufferTimeSpan, { subscriber, buffer }));
action.schedule(state, bufferCreationInterval);
}
}

function dispatchBufferClose({ subscriber, buffer }) {
function dispatchBufferClose<T>(arg: DispatchArg<T>) {
const { subscriber, buffer } = arg;
subscriber.closeBuffer(buffer);
}
12 changes: 10 additions & 2 deletions src/operator/expand.ts
Expand Up @@ -43,6 +43,13 @@ export class ExpandOperator<T, R> implements Operator<T, R> {
}
}

interface DispatchArg<T, R> {
subscriber: ExpandSubscriber<T, R>;
result: Observable<R>;
value: any;
index: number;
}

/**
* We need this JSDoc comment for affecting ESDoc.
* @ignore
Expand All @@ -64,7 +71,8 @@ export class ExpandSubscriber<T, R> extends OuterSubscriber<T, R> {
}
}

private static dispatch({subscriber, result, value, index}): void {
private static dispatch<T, R>(arg: DispatchArg<T, R>): void {
const {subscriber, result, value, index} = arg;
subscriber.subscribeToProjection(result, value, index);
}

Expand All @@ -85,7 +93,7 @@ export class ExpandSubscriber<T, R> extends OuterSubscriber<T, R> {
} else if (!this.scheduler) {
this.subscribeToProjection(result, value, index);
} else {
const state = { subscriber: this, result, value, index };
const state: DispatchArg<T, R> = { subscriber: this, result, value, index };
this.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));
}
} else {
Expand Down
5 changes: 3 additions & 2 deletions src/operator/observeOn.ts
Expand Up @@ -37,7 +37,8 @@ export class ObserveOnOperator<T> implements Operator<T, T> {
* @extends {Ignored}
*/
export class ObserveOnSubscriber<T> extends Subscriber<T> {
static dispatch({ notification, destination }) {
static dispatch(arg: ObserveOnMessage) {
const { notification, destination } = arg;
notification.observe(destination);
}

Expand Down Expand Up @@ -66,7 +67,7 @@ export class ObserveOnSubscriber<T> extends Subscriber<T> {
}
}

class ObserveOnMessage {
export class ObserveOnMessage {
constructor(public notification: Notification<any>,
public destination: PartialObserver<any>) {
}
Expand Down
7 changes: 6 additions & 1 deletion src/operator/throttleTime.ts
Expand Up @@ -60,6 +60,11 @@ class ThrottleTimeSubscriber<T> extends Subscriber<T> {
}
}

function dispatchNext<T>({ subscriber }) {
interface DispatchArg<T> {
subscriber: ThrottleTimeSubscriber<T>;
}

function dispatchNext<T>(arg: DispatchArg<T>) {
const { subscriber } = arg;
subscriber.clearThrottle();
}
23 changes: 18 additions & 5 deletions src/operator/windowTime.ts
Expand Up @@ -2,6 +2,7 @@ import {Operator} from '../Operator';
import {Subscriber} from '../Subscriber';
import {Observable} from '../Observable';
import {Subject} from '../Subject';
import {Subscription} from '../Subscription';
import {Scheduler} from '../Scheduler';
import {Action} from '../scheduler/Action';
import {async} from '../scheduler/async';
Expand Down Expand Up @@ -79,12 +80,12 @@ class WindowTimeOperator<T> implements Operator<T, Observable<T>> {
}
}

type CreationState<T> = {
interface CreationState<T> {
windowTimeSpan: number;
windowCreationInterval: number;
subscriber: WindowTimeSubscriber<T>;
scheduler: Scheduler;
};
}

/**
* We need this JSDoc comment for affecting ESDoc.
Expand Down Expand Up @@ -173,18 +174,30 @@ function dispatchWindowTimeSpanOnly<T>(state: TimeSpanOnlyState<T>) {
(<any>this).schedule(state, windowTimeSpan);
}

interface Context<T> {
action: Action<CreationState<T>>;
subscription: Subscription;
}

interface DispatchArg<T> {
subscriber: WindowTimeSubscriber<T>;
window: Subject<T>;
context: Context<T>;
}

function dispatchWindowCreation<T>(state: CreationState<T>) {
let { windowTimeSpan, subscriber, scheduler, windowCreationInterval } = state;
let window = subscriber.openWindow();
let action = <Action<CreationState<T>>>this;
let context = { action, subscription: <any>null };
const timeSpanState = { subscriber, window, context };
let context: Context<T> = { action, subscription: <any>null };
const timeSpanState: DispatchArg<T> = { subscriber, window, context };
context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);
action.add(context.subscription);
action.schedule(state, windowCreationInterval);
}

function dispatchWindowClose({ subscriber, window, context }) {
function dispatchWindowClose<T>(arg: DispatchArg<T>) {
const { subscriber, window, context } = arg;
if (context && context.action && context.subscription) {
context.action.remove(context.subscription);
}
Expand Down

0 comments on commit ef305af

Please sign in to comment.