feat(facade): do not reexport Observable from angular2/core

BREAKING CHANGE

Before import {Observable} from 'angular2/core'

After import {Observable} from 'rxjs/Observable';
This commit is contained in:
vsavkin 2015-12-12 08:29:02 -08:00 committed by Victor Savkin
parent a885f37dfa
commit 43f42d9c6e
10 changed files with 12 additions and 85 deletions

View File

@ -1,5 +1,6 @@
import {Component, provide, Observable} from 'angular2/core'; import {Component, provide} from 'angular2/core';
import {bootstrap} from 'angular2/bootstrap'; import {bootstrap} from 'angular2/bootstrap';
import {Observable} from 'rxjs/Observable';
// #docregion AsyncPipe // #docregion AsyncPipe
@Component({ @Component({

View File

@ -1,5 +1,5 @@
// #docregion Observable // #docregion Observable
import {Observable} from 'angular2/core'; import {Observable} from 'rxjs/Observable';
var obs = new Observable<number>(obs => { var obs = new Observable<number>(obs => {
var i = 0; var i = 0;
setInterval(_ => { obs.next(++i); }, 1000); setInterval(_ => { obs.next(++i); }, 1000);

View File

@ -1,5 +1,5 @@
// #docregion Observable // #docregion Observable
import {Observable} from 'angular2/core'; import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map'; import 'rxjs/add/operator/map';
var obs = new Observable(obs => { var obs = new Observable(obs => {

View File

@ -1,5 +1,5 @@
// #docregion Observable // #docregion Observable
import {Observable} from 'angular2/core'; import {Observable} from 'rxjs/Observable';
import {map} from 'rxjs/operator/map'; import {map} from 'rxjs/operator/map';
var obs = new Observable(obs => { var obs = new Observable(obs => {

View File

@ -4,14 +4,15 @@ import {global, isPresent, noop} from 'angular2/src/facade/lang';
import {Promise} from 'angular2/src/facade/promise'; import {Promise} from 'angular2/src/facade/promise';
export {PromiseWrapper, Promise, PromiseCompleter} from 'angular2/src/facade/promise'; export {PromiseWrapper, Promise, PromiseCompleter} from 'angular2/src/facade/promise';
import {Observable} from 'rxjs/Observable';
import {Subject} from 'rxjs/Subject'; import {Subject} from 'rxjs/Subject';
import {Observable as RxObservable} from 'rxjs/Observable';
import {Subscription} from 'rxjs/Subscription'; import {Subscription} from 'rxjs/Subscription';
import {Operator} from 'rxjs/Operator'; import {Operator} from 'rxjs/Operator';
import {PromiseObservable} from 'rxjs/observable/fromPromise'; import {PromiseObservable} from 'rxjs/observable/fromPromise';
import {toPromise} from 'rxjs/operator/toPromise'; import {toPromise} from 'rxjs/operator/toPromise';
export {Observable} from 'rxjs/Observable';
export {Subject} from 'rxjs/Subject'; export {Subject} from 'rxjs/Subject';
export namespace NodeJS { export namespace NodeJS {
@ -160,74 +161,4 @@ export class EventEmitter<T> extends Subject<T> {
return super.subscribe(schedulerFn, errorFn, completeFn); return super.subscribe(schedulerFn, errorFn, completeFn);
} }
} }
/**
* Allows publishing and subscribing to series of async values.
*
* The `Observable` class is an alias to the `Observable` returned from
* {@link https://github.com/reactivex/rxjs}. `Observables` are a means of delivering
* any number of values over any period of time. `Observables` can be thought of as a
* mixture of `Promise` and `Array`. `Observables` are like `Arrays` in that they can have
* chained combinators -- like `map`, `reduce`, and `filter` -- attached in order to
* perform projections and transformations of data. And they are like `Promises`
* in that they can asynchronously deliver values. But unlike a `Promise`, an
* `Observable` can emit many values over time, and decides if/when it is completed.
*
* `Observable` is also being considered for inclusion in the
* [ECMAScript spec](https://github.com/zenparsing/es-observable).
*
* ## Example
*
* A simple example of using an `Observable` is a timer `Observable`, which will
* notify an `Observer` each time an interval has completed.
*
* {@example facade/ts/async/observable.ts region='Observable'}
*
* The `Observable` in Angular currently doesn't provide any combinators by default.
* So it's necessary to explicitly import any combinators that an application requires.
* There are two ways to import RxJS combinators: pure and patched. The "pure" approach
* involves importing a combinator as a function every place that an application needs it,
* then calling the function with the source observable as the context of the function.
*
* ## Example
*
* {@example facade/ts/async/observable_pure.ts region='Observable'}
*
* The "patched" approach to using combinators is to import a special module for
* each combinator, which will automatically cause the combinator to be patched
* to the `Observable` prototype, which will make it available to use anywhere in
* an application after the combinator has been imported once.
*
* ## Example
*
* (Notice the extra "add" in the path to import `map`)
*
* {@example facade/ts/async/observable_patched.ts region='Observable'}
*
* Notice that the sequence of operations is now able to be expressed "left-to-right"
* because `map` is on the `Observable` prototype. For a simple example like this one,
* the left-to-right expression may seem insignificant. However, when several operators
* are used in combination, the "callback tree" grows several levels deep, and becomes
* difficult to read. For this reason, the "patched" approach is the recommended approach
* to add new operators to `Observable`.
*
* For applications that are less sensitive about payload size, the set of core operators
* can be patched onto the `Observable` prototype with a single import, by importing the
* `rxjs` module.
*
* {@example facade/ts/async/observable_all.ts region='Observable'}
*
* Full documentation on RxJS `Observable` and available combinators can be found
* in the RxJS [Observable docs](http://reactivex.io/RxJS/class/es6/Observable.js~Observable.html).
*
*/
// todo(robwormald): ts2dart should handle this properly
export class Observable<T> extends RxObservable<T> {
lift<T, R>(operator: Operator<T, R>): Observable<T> {
const observable = new Observable();
observable.source = this;
observable.operator = operator;
return observable;
}
}

View File

@ -1,5 +1,5 @@
// Public API for Facade // Public API for Facade
export {ConcreteType, Type} from './lang'; export {ConcreteType, Type} from './lang';
export {Observable, EventEmitter} from './async'; export {EventEmitter} from './async';
export {WrappedException} from './exceptions'; export {WrappedException} from './exceptions';
export {ExceptionHandler} from './exception_handler'; export {ExceptionHandler} from './exception_handler';

View File

@ -7,7 +7,7 @@ import {Injectable} from 'angular2/core';
import {BrowserJsonp} from './browser_jsonp'; import {BrowserJsonp} from './browser_jsonp';
import {makeTypeError} from 'angular2/src/facade/exceptions'; import {makeTypeError} from 'angular2/src/facade/exceptions';
import {StringWrapper, isPresent} from 'angular2/src/facade/lang'; import {StringWrapper, isPresent} from 'angular2/src/facade/lang';
import {Observable} from 'angular2/core'; import {Observable} from 'rxjs/Observable';
const JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.'; const JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';
const JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.'; const JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';

View File

@ -7,7 +7,7 @@ import {ResponseOptions, BaseResponseOptions} from '../base_response_options';
import {Injectable} from 'angular2/core'; import {Injectable} from 'angular2/core';
import {BrowserXhr} from './browser_xhr'; import {BrowserXhr} from './browser_xhr';
import {isPresent} from 'angular2/src/facade/lang'; import {isPresent} from 'angular2/src/facade/lang';
import {Observable} from 'angular2/core'; import {Observable} from 'rxjs/Observable';
import {isSuccess, getResponseURL} from '../http_utils'; import {isSuccess, getResponseURL} from '../http_utils';
/** /**
* Creates connections using `XMLHttpRequest`. Given a fully-qualified * Creates connections using `XMLHttpRequest`. Given a fully-qualified

View File

@ -6,7 +6,7 @@ import {Request} from './static_request';
import {Response} from './static_response'; import {Response} from './static_response';
import {BaseRequestOptions, RequestOptions} from './base_request_options'; import {BaseRequestOptions, RequestOptions} from './base_request_options';
import {RequestMethod} from './enums'; import {RequestMethod} from './enums';
import {Observable} from 'angular2/core'; import {Observable} from 'rxjs/Observable';
function httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> { function httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {
return backend.createConnection(request).response; return backend.createConnection(request).response;

View File

@ -1010,11 +1010,6 @@ var NG_CORE = [
RxJS API - may need to maintain as RxJS evolves RxJS API - may need to maintain as RxJS evolves
*/ */
'EventEmitter.emit():js', 'EventEmitter.emit():js',
'Observable:js',
'Observable#create():js',
'Observable.forEach():js',
'Observable.lift():js',
'Observable.subscribe():js',
'OutputMetadata', 'OutputMetadata',
'OutputMetadata.bindingPropertyName', 'OutputMetadata.bindingPropertyName',
'enableDevMode():js', 'enableDevMode():js',