mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
🤖 Merge PR #46628 [zen-observable] Add zen observable esm entry point by @BenoitZugmeyer
* [zen-observable] apply prettier * [zen-observable] add zen-observable/esm module types This commit add support for importing "zen-observable/esm". Contrary to importing "zen-observable" directly, it doesn't expose the global namespace ZenObservable. Instead, it exports types directly. * [zen-observable] re-export types from the entrypoint Instead of declaring types in the 'esm' definitions, keep them in 'index' and re-export them in 'esm'. This commit also moves the 'extras' types in a separate module, to be closer to the upstream package.
This commit is contained in:
parent
89a11295bc
commit
d277a9fae5
14
types/zen-observable/esm.d.ts
vendored
Normal file
14
types/zen-observable/esm.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
import Observable = require('.');
|
||||
|
||||
/**
|
||||
* @see https://github.com/zenparsing/zen-observable/blob/master/esm.js
|
||||
*/
|
||||
export default Observable;
|
||||
export { Observable };
|
||||
export * from './extras';
|
||||
|
||||
export type SubscriptionObserver<T> = ZenObservable.SubscriptionObserver<T>;
|
||||
export type Subscription = ZenObservable.Subscription;
|
||||
export type Observer<T> = ZenObservable.Observer<T>;
|
||||
export type Subscriber<T> = ZenObservable.Subscriber<T>;
|
||||
export type ObservableLike<T> = ZenObservable.ObservableLike<T>;
|
||||
97
types/zen-observable/extras.d.ts
vendored
Normal file
97
types/zen-observable/extras.d.ts
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
import Observable = require('.');
|
||||
|
||||
export function merge(): Observable<never>;
|
||||
export function merge<A>(a: ZenObservable.ObservableLike<A>): Observable<A>;
|
||||
export function merge<A, B>(a: ZenObservable.ObservableLike<A>, b: ZenObservable.ObservableLike<B>): Observable<A | B>;
|
||||
export function merge<A, B, C>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
): Observable<A | B | C>;
|
||||
export function merge<A, B, C, D>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
): Observable<A | B | C | D>;
|
||||
export function merge<A, B, C, D, E>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
e: ZenObservable.ObservableLike<E>,
|
||||
): Observable<A | B | C | D | E>;
|
||||
export function merge<A, B, C, D, E, F>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
e: ZenObservable.ObservableLike<E>,
|
||||
f: ZenObservable.ObservableLike<F>,
|
||||
): Observable<A | B | C | D | E | F>;
|
||||
export function merge<T>(...observables: Array<ZenObservable.ObservableLike<T>>): Observable<T>;
|
||||
|
||||
export function combineLatest(): Observable<never>;
|
||||
export function combineLatest<A>(a: ZenObservable.ObservableLike<A>): Observable<[A]>;
|
||||
export function combineLatest<A, B>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
): Observable<[A, B]>;
|
||||
export function combineLatest<A, B, C>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
): Observable<[A, B, C]>;
|
||||
export function combineLatest<A, B, C, D>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
): Observable<[A, B, C, D]>;
|
||||
export function combineLatest<A, B, C, D, E>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
e: ZenObservable.ObservableLike<E>,
|
||||
): Observable<[A, B, C, D, E]>;
|
||||
export function combineLatest<A, B, C, D, E, F>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
e: ZenObservable.ObservableLike<E>,
|
||||
f: ZenObservable.ObservableLike<F>,
|
||||
): Observable<[A, B, C, D, E, F]>;
|
||||
export function combineLatest<T>(...observables: Array<ZenObservable.ObservableLike<T>>): Observable<T[]>;
|
||||
|
||||
export function zip(): Observable<never>;
|
||||
export function zip<A>(a: ZenObservable.ObservableLike<A>): Observable<[A]>;
|
||||
export function zip<A, B>(a: ZenObservable.ObservableLike<A>, b: ZenObservable.ObservableLike<B>): Observable<[A, B]>;
|
||||
export function zip<A, B, C>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
): Observable<[A, B, C]>;
|
||||
export function zip<A, B, C, D>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
): Observable<[A, B, C, D]>;
|
||||
export function zip<A, B, C, D, E>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
e: ZenObservable.ObservableLike<E>,
|
||||
): Observable<[A, B, C, D, E]>;
|
||||
export function zip<A, B, C, D, E, F>(
|
||||
a: ZenObservable.ObservableLike<A>,
|
||||
b: ZenObservable.ObservableLike<B>,
|
||||
c: ZenObservable.ObservableLike<C>,
|
||||
d: ZenObservable.ObservableLike<D>,
|
||||
e: ZenObservable.ObservableLike<E>,
|
||||
f: ZenObservable.ObservableLike<F>,
|
||||
): Observable<[A, B, C, D, E, F]>;
|
||||
export function zip<T>(...observables: Array<ZenObservable.ObservableLike<T>>): Observable<T[]>;
|
||||
12
types/zen-observable/index.d.ts
vendored
12
types/zen-observable/index.d.ts
vendored
@ -3,6 +3,7 @@
|
||||
// Definitions by: Kombu <https://github.com/aicest>
|
||||
// JounQin <https://github.com/JounQin>
|
||||
// Thomas <https://github.com/itomtom>
|
||||
// BenoitZugmeyer <https://github.com/BenoitZugmeyer>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare global {
|
||||
@ -40,10 +41,14 @@ declare global {
|
||||
}
|
||||
|
||||
declare class Observable<T> {
|
||||
constructor(subscriber: ZenObservable.Subscriber<T>)
|
||||
constructor(subscriber: ZenObservable.Subscriber<T>);
|
||||
|
||||
subscribe(observer: ZenObservable.Observer<T>): ZenObservable.Subscription;
|
||||
subscribe(onNext: (value: T) => void, onError?: (error: any) => void, onComplete?: () => void): ZenObservable.Subscription;
|
||||
subscribe(
|
||||
onNext: (value: T) => void,
|
||||
onError?: (error: any) => void,
|
||||
onComplete?: () => void,
|
||||
): ZenObservable.Subscription;
|
||||
|
||||
[Symbol.observable](): Observable<T>;
|
||||
|
||||
@ -59,7 +64,6 @@ declare class Observable<T> {
|
||||
static of<R>(...items: R[]): Observable<R>;
|
||||
}
|
||||
|
||||
declare namespace Observable {
|
||||
}
|
||||
declare namespace Observable {}
|
||||
|
||||
export = Observable;
|
||||
|
||||
83
types/zen-observable/test/esm.ts
Normal file
83
types/zen-observable/test/esm.ts
Normal file
@ -0,0 +1,83 @@
|
||||
import Observable, { Subscription, SubscriptionObserver, zip, combineLatest, merge } from 'zen-observable/esm';
|
||||
|
||||
// $ExpectType Subscription
|
||||
let subscription = new Observable<number>(
|
||||
(
|
||||
// $ExpectType SubscriptionObserver<number>
|
||||
observer,
|
||||
) => {
|
||||
observer.next(1);
|
||||
observer.complete();
|
||||
},
|
||||
).subscribe(
|
||||
(
|
||||
// $ExpectType number
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
// zip
|
||||
zip(Observable.of(1, 2, 3), Observable.of('a', 'b', 'c')).subscribe(
|
||||
(
|
||||
// $ExpectType [number, string]
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
zip().subscribe(
|
||||
(
|
||||
// $ExpectType never
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
zip(...[Observable.of(1)]).subscribe(
|
||||
(
|
||||
// $ExpectType number[]
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
// merge
|
||||
merge(Observable.of(1, 2, 3), Observable.of('a', 'b', 'c')).subscribe(
|
||||
(
|
||||
// $ExpectType string | number
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
merge().subscribe(
|
||||
(
|
||||
// $ExpectType never
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
merge(...[Observable.of(1)]).subscribe(
|
||||
(
|
||||
// $ExpectType number
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
// combineLatest
|
||||
combineLatest(Observable.of(1, 2, 3), Observable.of('a', 'b', 'c')).subscribe(
|
||||
(
|
||||
// $ExpectType [number, string]
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
combineLatest().subscribe(
|
||||
(
|
||||
// $ExpectType never
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
|
||||
combineLatest(...[Observable.of(1)]).subscribe(
|
||||
(
|
||||
// $ExpectType number[]
|
||||
val,
|
||||
) => {},
|
||||
);
|
||||
@ -13,25 +13,21 @@ function assert(val: boolean) {
|
||||
new Observable<number>(observer => {
|
||||
[1, 2, 3].forEach(one => observer.next(one));
|
||||
observer.complete();
|
||||
})
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
}).subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
/**
|
||||
* Observable.of
|
||||
*/
|
||||
|
||||
Observable.of(1, 2, 3)
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
Observable.of(1, 2, 3).subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
/**
|
||||
* Observable.from
|
||||
*/
|
||||
|
||||
Observable.from(Observable.of(1, 2, 3))
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
Observable.from(Observable.of(1, 2, 3)).subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
Observable.from([1, 2, 3])
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
Observable.from([1, 2, 3]).subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
Observable.from({
|
||||
subscribe(observer: ZenObservable.SubscriptionObserver<number>) {
|
||||
@ -40,23 +36,20 @@ Observable.from({
|
||||
},
|
||||
[Symbol.observable](this: ZenObservable.ObservableLike<number>) {
|
||||
return this;
|
||||
}
|
||||
})
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
},
|
||||
}).subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
Observable.from({
|
||||
[Symbol.observable]() {
|
||||
return Observable.of(1, 2, 3);
|
||||
}
|
||||
})
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
},
|
||||
}).subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
/**
|
||||
* observable.forEach
|
||||
*/
|
||||
|
||||
Observable.of(1, 2, 3)
|
||||
.forEach(val => assert(typeof val === 'number'));
|
||||
Observable.of(1, 2, 3).forEach(val => assert(typeof val === 'number'));
|
||||
|
||||
/**
|
||||
* observable.map
|
||||
@ -99,8 +92,8 @@ Observable.of(1, 2, 3)
|
||||
*/
|
||||
|
||||
Observable.of(1, 2, 3)
|
||||
.concat(Observable.of(4, 5, 6), Observable.of(7, 8, 9))
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
.concat(Observable.of(4, 5, 6), Observable.of(7, 8, 9))
|
||||
.subscribe(val => assert(typeof val === 'number'));
|
||||
|
||||
/**
|
||||
* ZenObservable
|
||||
@ -18,6 +18,7 @@
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"zen-observable-tests.ts"
|
||||
"test/index.ts",
|
||||
"test/esm.ts"
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user