diff --git a/modules/angular2/http.ts b/modules/angular2/http.ts index 2e711aba46..5f44a13a83 100644 --- a/modules/angular2/http.ts +++ b/modules/angular2/http.ts @@ -5,9 +5,11 @@ * class. */ import {bind, Binding} from 'angular2/di'; -import {Http} from 'angular2/src/http/http'; +import {Http, Jsonp} from 'angular2/src/http/http'; import {XHRBackend, XHRConnection} from 'angular2/src/http/backends/xhr_backend'; +import {JSONPBackend, JSONPConnection} from 'angular2/src/http/backends/jsonp_backend'; import {BrowserXhr} from 'angular2/src/http/backends/browser_xhr'; +import {BrowserJsonp} from 'angular2/src/http/backends/browser_jsonp'; import {BaseRequestOptions, RequestOptions} from 'angular2/src/http/base_request_options'; import {ConnectionBackend} from 'angular2/src/http/interfaces'; @@ -26,7 +28,8 @@ export { export {BaseRequestOptions, RequestOptions} from 'angular2/src/http/base_request_options'; export {BaseResponseOptions, ResponseOptions} from 'angular2/src/http/base_response_options'; export {XHRBackend, XHRConnection} from 'angular2/src/http/backends/xhr_backend'; -export {Http} from 'angular2/src/http/http'; +export {JSONPBackend, JSONPConnection} from 'angular2/src/http/backends/jsonp_backend'; +export {Http, Jsonp} from 'angular2/src/http/http'; export {Headers} from 'angular2/src/http/headers'; @@ -65,3 +68,12 @@ export var httpInjectables: List = [ bind(ResponseOptions).toClass(BaseResponseOptions), Http ]; + +export var jsonpInjectables: List = [ + bind(ConnectionBackend) + .toClass(JSONPBackend), + BrowserJsonp, + bind(RequestOptions).toClass(BaseRequestOptions), + bind(ResponseOptions).toClass(BaseResponseOptions), + Jsonp +]; diff --git a/modules/angular2/src/facade/lang.dart b/modules/angular2/src/facade/lang.dart index 1b555e62f3..7f64937600 100644 --- a/modules/angular2/src/facade/lang.dart +++ b/modules/angular2/src/facade/lang.dart @@ -190,6 +190,10 @@ class BaseException extends Error { } } +Error makeTypeError([String message = ""]) { + return new BaseException(message); +} + const _NAN_KEY = const Object(); // Dart can have identical(str1, str2) == false while str1 == str2 diff --git a/modules/angular2/src/facade/lang.ts b/modules/angular2/src/facade/lang.ts index 1bf4e4dd78..03402316cf 100644 --- a/modules/angular2/src/facade/lang.ts +++ b/modules/angular2/src/facade/lang.ts @@ -15,6 +15,10 @@ export class BaseException extends Error { toString(): string { return this.message; } } +export function makeTypeError(message?: string): Error { + return new TypeError(message); +} + export var Math = _global.Math; export var Date = _global.Date; diff --git a/modules/angular2/src/http/backends/browser_jsonp.dart b/modules/angular2/src/http/backends/browser_jsonp.dart new file mode 100644 index 0000000000..9bf4ef2ef0 --- /dev/null +++ b/modules/angular2/src/http/backends/browser_jsonp.dart @@ -0,0 +1,59 @@ +library angular2.src.http.backends.browser_jsonp; +import 'package:angular2/di.dart'; +import 'dart:html' show document; +import 'dart:js' show context, JsObject, JsArray; + +int _nextRequestId = 0; +const JSONP_HOME = '__ng_jsonp__'; + +var _jsonpConnections = null; + +JsObject _getJsonpConnections() { + if (_jsonpConnections == null) { + _jsonpConnections = context[JSONP_HOME] = new JsObject(context['Object']); + } + return _jsonpConnections; +} + +// Make sure not to evaluate this in a non-browser environment! +@Injectable() +class BrowserJsonp { + // Construct a