Files

Return to Package Diff Home.
Brought to you by Intrinsic.

Package Diff: @angular/http @ 7.2.7 .. 7.2.8

bundles/http-testing.umd.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/

bundles/http-testing.umd.min.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/

bundles/http-testing.umd.min.js.map

@@ -1 +1 @@
-{"version":3,"sources":["packages/http/http-testing.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ng","http","testing","core","rxjs","operators","this","MockConnection","req","response","ReplaySubject","pipe","take","readyState","ReadyState","Open","request","prototype","mockRespond","res","Done","Cancelled","Error","next","complete","mockDownload","mockError","err","error","MockBackend","_this","connectionsArray","connections","Subject","subscribe","connection","push","pendingConnections","verifyNoPendingRequests","pending","c","resolveAllConnections","createConnection","Request","__decorate","decorators","target","key","desc","d","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Injectable","__metadata","metadataKey","metadataValue","metadata","value"],"mappings":";;;;;CAMC,SAAUA,EAAQC,GACI,iBAAZC,SAA0C,oBAAXC,OAAyBF,EAAQC,QAASE,QAAQ,iBAAkBA,QAAQ,iBAAkBA,QAAQ,QAASA,QAAQ,mBAC3I,mBAAXC,QAAyBA,OAAOC,IAAMD,OAAO,yBAA0B,UAAW,gBAAiB,gBAAiB,OAAQ,kBAAmBJ,GAC5HA,IAAzBD,EAASA,GAAUO,MAAsBC,GAAKR,EAAOQ,OAAUR,EAAOQ,GAAGC,KAAOT,EAAOQ,GAAGC,SAAYT,EAAOQ,GAAGC,KAAKC,YAAeV,EAAOQ,GAAGG,KAAMX,EAAOQ,GAAGC,KAAMT,EAAOY,KAAMZ,EAAOY,KAAKC,WAHlM,CAIEC,KAAM,SAAUZ,EAASS,EAAMF,EAAMG,EAAMC,GAAa;;;;;;;;AA8DtD,IAAIE,EAAgC,WAChC,SAASA,EAAeC,GACpBF,KAAKG,SAAW,IAAIL,EAAKM,cAAc,GAAGC,KAAKN,EAAUO,KAAK,IAC9DN,KAAKO,WAAaZ,EAAKa,WAAWC,KAClCT,KAAKU,QAAUR,EAuCnB,OAhCAD,EAAeU,UAAUC,YAAc,SAAUC,GAC7C,GAAIb,KAAKO,aAAeZ,EAAKa,WAAWM,MAAQd,KAAKO,aAAeZ,EAAKa,WAAWO,UAChF,MAAM,IAAIC,MAAM,wCAEpBhB,KAAKO,WAAaZ,EAAKa,WAAWM,KAClCd,KAAKG,SAASc,KAAKJ,GACnBb,KAAKG,SAASe,YAQlBjB,EAAeU,UAAUQ,aAAe,SAAUN,KAalDZ,EAAeU,UAAUS,UAAY,SAAUC,GAE3CrB,KAAKO,WAAaZ,EAAKa,WAAWM,KAClCd,KAAKG,SAASmB,MAAMD,IAEjBpB,EA3CwB,GAoI/BsB,EAA6B,WAC7B,SAASA,IACL,IAAIC,EAAQxB,KACZA,KAAKyB,oBACLzB,KAAK0B,YAAc,IAAI5B,EAAK6B,QAC5B3B,KAAK0B,YAAYE,UAAU,SAAUC,GAAc,OAAOL,EAAMC,iBAAiBK,KAAKD,KACtF7B,KAAK+B,mBAAqB,IAAIjC,EAAK6B,QAsCvC,OA/BAJ,EAAYZ,UAAUqB,wBAA0B,WAC5C,IAAIC,EAAU,EAEd,GADAjC,KAAK+B,mBAAmBH,UAAU,SAAUM,GAAK,OAAOD,MACpDA,EAAU,EACV,MAAM,IAAIjB,MAAMiB,EAAU,wCAQlCV,EAAYZ,UAAUwB,sBAAwB,WAAcnC,KAAK0B,YAAYE,UAAU,SAAUM,GAAK,OAAOA,EAAE3B,WAAa,KAO5HgB,EAAYZ,UAAUyB,iBAAmB,SAAUlC,GAC/C,KAAKA,GAASA,aAAeP,EAAK0C,SAC9B,MAAM,IAAIrB,MAAM,yDAA2Dd,GAE/E,IAAI2B,EAAa,IAAI5B,EAAeC,GAEpC,OADAF,KAAK0B,YAAYT,KAAKY,GACfA,GAvNf,SAASS,EAAWC,EAAYC,EAAQC,EAAKC,GACzC,IAA2HC,EAAvHT,EAAIU,UAAUC,OAAQC,EAAIZ,EAAI,EAAIM,EAAkB,OAATE,EAAgBA,EAAOK,OAAOC,yBAAyBR,EAAQC,GAAOC,EACrH,GAAuB,iBAAZO,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASX,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIS,EAAIZ,EAAWM,OAAS,EAAGM,GAAK,EAAGA,KAASR,EAAIJ,EAAWY,MAAIL,GAAKZ,EAAI,EAAIS,EAAEG,GAAKZ,EAAI,EAAIS,EAAEH,EAAQC,EAAKK,GAAKH,EAAEH,EAAQC,KAASK,GAChJ,OAAOZ,EAAI,GAAKY,GAAKC,OAAOK,eAAeZ,EAAQC,EAAKK,GAAIA,EAqN9CR,EACVzC,EAAKwD,aAnNb,SAASC,EAAWC,EAAaC,GAC7B,GAAuB,iBAAZP,SAAoD,mBAArBA,QAAQQ,SAAyB,OAAOR,QAAQQ,SAASF,EAAaC,GAmN5GF,CAAW,yBACZ/B,GA3CyB;;;;;;;;;;;;;;;;;;;;;;AA2EhCnC,EAAQa,eAAiBA,EACzBb,EAAQmC,YAAcA,EAEtBwB,OAAOK,eAAehE,EAAS,cAAgBsE,OAAO","sourcesContent":["/**\n * @license Angular v7.2.7\n * (c) 2010-2019 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/http'), require('rxjs'), require('rxjs/operators')) :\n typeof define === 'function' && define.amd ? define('@angular/http/testing', ['exports', '@angular/core', '@angular/http', 'rxjs', 'rxjs/operators'], factory) :\n (global = global || self, factory((global.ng = global.ng || {}, global.ng.http = global.ng.http || {}, global.ng.http.testing = {}), global.ng.core, global.ng.http, global.rxjs, global.rxjs.operators));\n}(this, function (exports, core, http, rxjs, operators) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n }\r\n\r\n function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n }\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n *\n * Mock Connection to represent a {@link Connection} for tests.\n *\n * @usageNotes\n * ### Example of `mockRespond()`\n *\n * ```\n * var connection;\n * backend.connections.subscribe(c => connection = c);\n * http.request('data.json').subscribe(res => console.log(res.text()));\n * connection.mockRespond(new Response(new ResponseOptions({ body: 'fake response' }))); //logs\n * 'fake response'\n * ```\n *\n * ### Example of `mockError()`\n *\n * ```\n * var connection;\n * backend.connections.subscribe(c => connection = c);\n * http.request('data.json').subscribe(res => res, err => console.log(err)));\n * connection.mockError(new Error('error'));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var MockConnection = /** @class */ (function () {\n function MockConnection(req) {\n this.response = new rxjs.ReplaySubject(1).pipe(operators.take(1));\n this.readyState = http.ReadyState.Open;\n this.request = req;\n }\n /**\n * Sends a mock response to the connection. This response is the value that is emitted to the\n * {@link EventEmitter} returned by {@link Http}.\n *\n */\n MockConnection.prototype.mockRespond = function (res) {\n if (this.readyState === http.ReadyState.Done || this.readyState === http.ReadyState.Cancelled) {\n throw new Error('Connection has already been resolved');\n }\n this.readyState = http.ReadyState.Done;\n this.response.next(res);\n this.response.complete();\n };\n /**\n * Not yet implemented!\n *\n * Sends the provided {@link Response} to the `downloadObserver` of the `Request`\n * associated with this connection.\n */\n MockConnection.prototype.mockDownload = function (res) {\n // this.request.downloadObserver.onNext(res);\n // if (res.bytesLoaded === res.totalBytes) {\n // this.request.downloadObserver.onCompleted();\n // }\n };\n // TODO(jeffbcross): consider using Response type\n /**\n * Emits the provided error object as an error to the {@link Response} {@link EventEmitter}\n * returned\n * from {@link Http}.\n *\n */\n MockConnection.prototype.mockError = function (err) {\n // Matches ResourceLoader semantics\n this.readyState = http.ReadyState.Done;\n this.response.error(err);\n };\n return MockConnection;\n }());\n /**\n * A mock backend for testing the {@link Http} service.\n *\n * This class can be injected in tests, and should be used to override providers\n * to other backends, such as {@link XHRBackend}.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Injectable, Injector} from '@angular/core';\n * import {async, fakeAsync, tick} from '@angular/core/testing';\n * import {BaseRequestOptions, ConnectionBackend, Http, RequestOptions} from '@angular/http';\n * import {Response, ResponseOptions} from '@angular/http';\n * import {MockBackend, MockConnection} from '@angular/http/testing';\n *\n * const HERO_ONE = 'HeroNrOne';\n * const HERO_TWO = 'WillBeAlwaysTheSecond';\n *\n * @Injectable()\n * class HeroService {\n * constructor(private http: Http) {}\n *\n * getHeroes(): Promise<String[]> {\n * return this.http.get('myservices.de/api/heroes')\n * .toPromise()\n * .then(response => response.json().data)\n * .catch(e => this.handleError(e));\n * }\n *\n * private handleError(error: any): Promise<any> {\n * console.error('An error occurred', error);\n * return Promise.reject(error.message || error);\n * }\n * }\n *\n * describe('MockBackend HeroService Example', () => {\n * beforeEach(() => {\n * this.injector = Injector.create([\n * {provide: ConnectionBackend, useClass: MockBackend},\n * {provide: RequestOptions, useClass: BaseRequestOptions},\n * Http,\n * HeroService,\n * ]);\n * this.heroService = this.injector.get(HeroService);\n * this.backend = this.injector.get(ConnectionBackend) as MockBackend;\n * this.backend.connections.subscribe((connection: any) => this.lastConnection = connection);\n * });\n *\n * it('getHeroes() should query current service url', () => {\n * this.heroService.getHeroes();\n * expect(this.lastConnection).toBeDefined('no http service connection at all?');\n * expect(this.lastConnection.request.url).toMatch(/api\\/heroes$/, 'url invalid');\n * });\n *\n * it('getHeroes() should return some heroes', fakeAsync(() => {\n * let result: String[];\n * this.heroService.getHeroes().then((heroes: String[]) => result = heroes);\n * this.lastConnection.mockRespond(new Response(new ResponseOptions({\n * body: JSON.stringify({data: [HERO_ONE, HERO_TWO]}),\n * })));\n * tick();\n * expect(result.length).toEqual(2, 'should contain given amount of heroes');\n * expect(result[0]).toEqual(HERO_ONE, ' HERO_ONE should be the first hero');\n * expect(result[1]).toEqual(HERO_TWO, ' HERO_TWO should be the second hero');\n * }));\n *\n * it('getHeroes() while server is down', fakeAsync(() => {\n * let result: String[];\n * let catchedError: any;\n * this.heroService.getHeroes()\n * .then((heroes: String[]) => result = heroes)\n * .catch((error: any) => catchedError = error);\n * this.lastConnection.mockError(new Response(new ResponseOptions({\n * status: 404,\n * statusText: 'URL not Found',\n * })));\n * tick();\n * expect(result).toBeUndefined();\n * expect(catchedError).toBeDefined();\n * }));\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var MockBackend = /** @class */ (function () {\n function MockBackend() {\n var _this = this;\n this.connectionsArray = [];\n this.connections = new rxjs.Subject();\n this.connections.subscribe(function (connection) { return _this.connectionsArray.push(connection); });\n this.pendingConnections = new rxjs.Subject();\n }\n /**\n * Checks all connections, and raises an exception if any connection has not received a response.\n *\n * This method only exists in the mock implementation, not in real Backends.\n */\n MockBackend.prototype.verifyNoPendingRequests = function () {\n var pending = 0;\n this.pendingConnections.subscribe(function (c) { return pending++; });\n if (pending > 0)\n throw new Error(pending + \" pending connections to be resolved\");\n };\n /**\n * Can be used in conjunction with `verifyNoPendingRequests` to resolve any not-yet-resolve\n * connections, if it's expected that there are connections that have not yet received a response.\n *\n * This method only exists in the mock implementation, not in real Backends.\n */\n MockBackend.prototype.resolveAllConnections = function () { this.connections.subscribe(function (c) { return c.readyState = 4; }); };\n /**\n * Creates a new {@link MockConnection}. This is equivalent to calling `new\n * MockConnection()`, except that it also will emit the new `Connection` to the `connections`\n * emitter of this `MockBackend` instance. This method will usually only be used by tests\n * against the framework itself, not by end-users.\n */\n MockBackend.prototype.createConnection = function (req) {\n if (!req || !(req instanceof http.Request)) {\n throw new Error(\"createConnection requires an instance of Request, got \" + req);\n }\n var connection = new MockConnection(req);\n this.connections.next(connection);\n return connection;\n };\n MockBackend = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], MockBackend);\n return MockBackend;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.MockConnection = MockConnection;\n exports.MockBackend = MockBackend;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=http-testing.umd.js.map\n"]}
\ No newline at end of file
+{"version":3,"sources":["packages/http/http-testing.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ng","http","testing","core","rxjs","operators","this","MockConnection","req","response","ReplaySubject","pipe","take","readyState","ReadyState","Open","request","prototype","mockRespond","res","Done","Cancelled","Error","next","complete","mockDownload","mockError","err","error","MockBackend","_this","connectionsArray","connections","Subject","subscribe","connection","push","pendingConnections","verifyNoPendingRequests","pending","c","resolveAllConnections","createConnection","Request","__decorate","decorators","target","key","desc","d","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","Injectable","__metadata","metadataKey","metadataValue","metadata","value"],"mappings":"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","sourcesContent":["/**\n * @license Angular v7.2.8\n * (c) 2010-2019 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/http'), require('rxjs'), require('rxjs/operators')) :\n typeof define === 'function' && define.amd ? define('@angular/http/testing', ['exports', '@angular/core', '@angular/http', 'rxjs', 'rxjs/operators'], factory) :\n (global = global || self, factory((global.ng = global.ng || {}, global.ng.http = global.ng.http || {}, global.ng.http.testing = {}), global.ng.core, global.ng.http, global.rxjs, global.rxjs.operators));\n}(this, function (exports, core, http, rxjs, operators) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n }\r\n\r\n function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n }\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n *\n * Mock Connection to represent a {@link Connection} for tests.\n *\n * @usageNotes\n * ### Example of `mockRespond()`\n *\n * ```\n * var connection;\n * backend.connections.subscribe(c => connection = c);\n * http.request('data.json').subscribe(res => console.log(res.text()));\n * connection.mockRespond(new Response(new ResponseOptions({ body: 'fake response' }))); //logs\n * 'fake response'\n * ```\n *\n * ### Example of `mockError()`\n *\n * ```\n * var connection;\n * backend.connections.subscribe(c => connection = c);\n * http.request('data.json').subscribe(res => res, err => console.log(err)));\n * connection.mockError(new Error('error'));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var MockConnection = /** @class */ (function () {\n function MockConnection(req) {\n this.response = new rxjs.ReplaySubject(1).pipe(operators.take(1));\n this.readyState = http.ReadyState.Open;\n this.request = req;\n }\n /**\n * Sends a mock response to the connection. This response is the value that is emitted to the\n * {@link EventEmitter} returned by {@link Http}.\n *\n */\n MockConnection.prototype.mockRespond = function (res) {\n if (this.readyState === http.ReadyState.Done || this.readyState === http.ReadyState.Cancelled) {\n throw new Error('Connection has already been resolved');\n }\n this.readyState = http.ReadyState.Done;\n this.response.next(res);\n this.response.complete();\n };\n /**\n * Not yet implemented!\n *\n * Sends the provided {@link Response} to the `downloadObserver` of the `Request`\n * associated with this connection.\n */\n MockConnection.prototype.mockDownload = function (res) {\n // this.request.downloadObserver.onNext(res);\n // if (res.bytesLoaded === res.totalBytes) {\n // this.request.downloadObserver.onCompleted();\n // }\n };\n // TODO(jeffbcross): consider using Response type\n /**\n * Emits the provided error object as an error to the {@link Response} {@link EventEmitter}\n * returned\n * from {@link Http}.\n *\n */\n MockConnection.prototype.mockError = function (err) {\n // Matches ResourceLoader semantics\n this.readyState = http.ReadyState.Done;\n this.response.error(err);\n };\n return MockConnection;\n }());\n /**\n * A mock backend for testing the {@link Http} service.\n *\n * This class can be injected in tests, and should be used to override providers\n * to other backends, such as {@link XHRBackend}.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Injectable, Injector} from '@angular/core';\n * import {async, fakeAsync, tick} from '@angular/core/testing';\n * import {BaseRequestOptions, ConnectionBackend, Http, RequestOptions} from '@angular/http';\n * import {Response, ResponseOptions} from '@angular/http';\n * import {MockBackend, MockConnection} from '@angular/http/testing';\n *\n * const HERO_ONE = 'HeroNrOne';\n * const HERO_TWO = 'WillBeAlwaysTheSecond';\n *\n * @Injectable()\n * class HeroService {\n * constructor(private http: Http) {}\n *\n * getHeroes(): Promise<String[]> {\n * return this.http.get('myservices.de/api/heroes')\n * .toPromise()\n * .then(response => response.json().data)\n * .catch(e => this.handleError(e));\n * }\n *\n * private handleError(error: any): Promise<any> {\n * console.error('An error occurred', error);\n * return Promise.reject(error.message || error);\n * }\n * }\n *\n * describe('MockBackend HeroService Example', () => {\n * beforeEach(() => {\n * this.injector = Injector.create([\n * {provide: ConnectionBackend, useClass: MockBackend},\n * {provide: RequestOptions, useClass: BaseRequestOptions},\n * Http,\n * HeroService,\n * ]);\n * this.heroService = this.injector.get(HeroService);\n * this.backend = this.injector.get(ConnectionBackend) as MockBackend;\n * this.backend.connections.subscribe((connection: any) => this.lastConnection = connection);\n * });\n *\n * it('getHeroes() should query current service url', () => {\n * this.heroService.getHeroes();\n * expect(this.lastConnection).toBeDefined('no http service connection at all?');\n * expect(this.lastConnection.request.url).toMatch(/api\\/heroes$/, 'url invalid');\n * });\n *\n * it('getHeroes() should return some heroes', fakeAsync(() => {\n * let result: String[];\n * this.heroService.getHeroes().then((heroes: String[]) => result = heroes);\n * this.lastConnection.mockRespond(new Response(new ResponseOptions({\n * body: JSON.stringify({data: [HERO_ONE, HERO_TWO]}),\n * })));\n * tick();\n * expect(result.length).toEqual(2, 'should contain given amount of heroes');\n * expect(result[0]).toEqual(HERO_ONE, ' HERO_ONE should be the first hero');\n * expect(result[1]).toEqual(HERO_TWO, ' HERO_TWO should be the second hero');\n * }));\n *\n * it('getHeroes() while server is down', fakeAsync(() => {\n * let result: String[];\n * let catchedError: any;\n * this.heroService.getHeroes()\n * .then((heroes: String[]) => result = heroes)\n * .catch((error: any) => catchedError = error);\n * this.lastConnection.mockError(new Response(new ResponseOptions({\n * status: 404,\n * statusText: 'URL not Found',\n * })));\n * tick();\n * expect(result).toBeUndefined();\n * expect(catchedError).toBeDefined();\n * }));\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var MockBackend = /** @class */ (function () {\n function MockBackend() {\n var _this = this;\n this.connectionsArray = [];\n this.connections = new rxjs.Subject();\n this.connections.subscribe(function (connection) { return _this.connectionsArray.push(connection); });\n this.pendingConnections = new rxjs.Subject();\n }\n /**\n * Checks all connections, and raises an exception if any connection has not received a response.\n *\n * This method only exists in the mock implementation, not in real Backends.\n */\n MockBackend.prototype.verifyNoPendingRequests = function () {\n var pending = 0;\n this.pendingConnections.subscribe(function (c) { return pending++; });\n if (pending > 0)\n throw new Error(pending + \" pending connections to be resolved\");\n };\n /**\n * Can be used in conjunction with `verifyNoPendingRequests` to resolve any not-yet-resolve\n * connections, if it's expected that there are connections that have not yet received a response.\n *\n * This method only exists in the mock implementation, not in real Backends.\n */\n MockBackend.prototype.resolveAllConnections = function () { this.connections.subscribe(function (c) { return c.readyState = 4; }); };\n /**\n * Creates a new {@link MockConnection}. This is equivalent to calling `new\n * MockConnection()`, except that it also will emit the new `Connection` to the `connections`\n * emitter of this `MockBackend` instance. This method will usually only be used by tests\n * against the framework itself, not by end-users.\n */\n MockBackend.prototype.createConnection = function (req) {\n if (!req || !(req instanceof http.Request)) {\n throw new Error(\"createConnection requires an instance of Request, got \" + req);\n }\n var connection = new MockConnection(req);\n this.connections.next(connection);\n return connection;\n };\n MockBackend = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], MockBackend);\n return MockBackend;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.MockConnection = MockConnection;\n exports.MockBackend = MockBackend;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=http-testing.umd.js.map\n"]}
\ No newline at end of file

bundles/http.umd.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/
@@ -1899,7 +1899,7 @@
* @deprecated see https://angular.io/guide/http
* @publicApi
*/
- var VERSION = new core.Version('7.2.7');
+ var VERSION = new core.Version('7.2.8');
/**
* @license

bundles/http.umd.js.map

@@ -1 +1 @@
-{"version":3,"file":"http.umd.js","sources":["../../../../../../../../../../external/ngdeps/node_modules/tslib/tslib.es6.js","../../../../../packages/http/src/backends/browser_xhr.ts","../../../../../packages/http/src/enums.ts","../../../../../packages/http/src/headers.ts","../../../../../packages/http/src/base_response_options.ts","../../../../../packages/http/src/interfaces.ts","../../../../../packages/http/src/http_utils.ts","../../../../../packages/http/src/url_search_params.ts","../../../../../packages/http/src/body.ts","../../../../../packages/http/src/static_response.ts","../../../../../packages/http/src/backends/browser_jsonp.ts","../../../../../packages/http/src/backends/jsonp_backend.ts","../../../../../packages/http/src/backends/xhr_backend.ts","../../../../../packages/http/src/base_request_options.ts","../../../../../packages/http/src/static_request.ts","../../../../../packages/http/src/http.ts","../../../../../packages/http/src/http_module.ts","../../../../../packages/http/src/version.ts","../../../../../packages/http/src/index.ts","../../../../../packages/http/public_api.ts","../../../../../packages/http/index.ts","../../../../../packages/http/http.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BrowserXhr {\n constructor() {}\n build(): any { return <any>(new XMLHttpRequest()); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Supported http methods.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum RequestMethod {\n Get,\n Post,\n Put,\n Delete,\n Options,\n Head,\n Patch\n}\n\n/**\n * All possible states in which a connection can be, based on\n * [States](http://www.w3.org/TR/XMLHttpRequest/#states) from the `XMLHttpRequest` spec, but with an\n * additional \"CANCELLED\" state.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ReadyState {\n Unsent,\n Open,\n HeadersReceived,\n Loading,\n Done,\n Cancelled\n}\n\n/**\n * Acceptable response types to be associated with a {@link Response}, based on\n * [ResponseType](https://fetch.spec.whatwg.org/#responsetype) from the Fetch spec.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseType {\n Basic,\n Cors,\n Default,\n Error,\n Opaque\n}\n\n/**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\nexport enum ContentType {\n NONE,\n JSON,\n FORM,\n FORM_DATA,\n TEXT,\n BLOB,\n ARRAY_BUFFER\n}\n\n/**\n * Define which buffer to use to store the response\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseContentType {\n Text,\n Json,\n ArrayBuffer,\n Blob\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Headers {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n // TODO(vicb): any -> string|string[]\n constructor(headers?: Headers|{[name: string]: any}|null) {\n if (!headers) {\n return;\n }\n\n if (headers instanceof Headers) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n static fromResponseHeaderString(headersString: string): Headers {\n const headers = new Headers();\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete (name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string|undefined, headers: Map<string, string[]>) => void):\n void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string|null {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string|string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): {[name: string]: any} {\n const serialized: {[name: string]: string[]} = {};\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[this._normalizedNames.get(name) !] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[]|null {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n\n /**\n * This method is not implemented.\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {ResponseOptionsArgs} from './interfaces';\n\n\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class ResponseOptions {\n // TODO: FormData | Blob\n /**\n * String, Object, ArrayBuffer or Blob representing the body of the {@link Response}.\n */\n body: string|Object|ArrayBuffer|Blob|null;\n /**\n * Http {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html status code}\n * associated with the response.\n */\n status: number|null;\n /**\n * Response {@link Headers headers}\n */\n headers: Headers|null;\n /**\n * @internal\n */\n statusText: string|null;\n /**\n * @internal\n */\n type: ResponseType|null;\n url: string|null;\n constructor(opts: ResponseOptionsArgs = {}) {\n const {body, status, headers, statusText, type, url} = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n merge(options?: ResponseOptionsArgs): ResponseOptions {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n\n/**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers()});\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {Request} from './static_request';\nimport {URLSearchParams} from './url_search_params';\n\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class ConnectionBackend { abstract createConnection(request: any): Connection; }\n\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class Connection {\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n // TODO(issue/24571): remove '!'.\n request !: Request;\n response: any; // TODO: generic of <Response>;\n}\n\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class XSRFStrategy { abstract configureRequest(req: Request): void; }\n\n/**\n * Interface for options to construct a RequestOptions, based on\n * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface RequestOptionsArgs {\n url?: string|null;\n method?: string|RequestMethod|null;\n /** @deprecated from 4.0.0. Use params instead. */\n search?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n params?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n headers?: Headers|null;\n body?: any;\n withCredentials?: boolean|null;\n responseType?: ResponseContentType|null;\n}\n\n/**\n * Required structure when constructing new Request();\n */\nexport interface RequestArgs extends RequestOptionsArgs { url: string|null; }\n\n/**\n * Interface for options to construct a Response, based on\n * [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface ResponseOptionsArgs {\n body?: string|Object|FormData|ArrayBuffer|Blob|null;\n status?: number|null;\n statusText?: string|null;\n headers?: Headers|null;\n type?: ResponseType|null;\n url?: string|null;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RequestMethod} from './enums';\n\nexport function normalizeMethodName(method: string | RequestMethod): RequestMethod {\n if (typeof method !== 'string') return method;\n\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n\nexport const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport function getResponseURL(xhr: any): string|null {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\nexport function stringToArrayBuffer8(input: String): ArrayBuffer {\n const view = new Uint8Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n\nexport function stringToArrayBuffer(input: String): ArrayBuffer {\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nfunction paramParser(rawParams: string = ''): Map<string, string[]> {\n const map = new Map<string, string[]>();\n if (rawParams.length > 0) {\n const params: string[] = rawParams.split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] =\n eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\nexport class QueryEncoder {\n encodeKey(key: string): string { return standardEncoding(key); }\n\n encodeValue(value: string): string { return standardEncoding(value); }\n}\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class URLSearchParams {\n paramsMap: Map<string, string[]>;\n constructor(\n public rawParams: string = '', private queryEncoder: QueryEncoder = new QueryEncoder()) {\n this.paramsMap = paramParser(rawParams);\n }\n\n clone(): URLSearchParams {\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n\n has(param: string): boolean { return this.paramsMap.has(param); }\n\n get(param: string): string|null {\n const storedParam = this.paramsMap.get(param);\n\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n\n getAll(param: string): string[] { return this.paramsMap.get(param) || []; }\n\n set(param: string, val: string) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n setAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n\n append(param: string, val: string): void {\n if (val === void 0 || val === null) return;\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n appendAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n replaceAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n toString(): string {\n const paramsList: string[] = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(\n v => paramsList.push(\n this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n\n delete (param: string): void { this.paramsMap.delete(param); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {stringToArrayBuffer} from './http_utils';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\nexport abstract class Body {\n /**\n * @internal\n */\n protected _body: any;\n\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n json(): any {\n if (typeof this._body === 'string') {\n return JSON.parse(<string>this._body);\n }\n\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n\n return this._body;\n }\n\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body as ArrayBuffer));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body as ArrayBuffer));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n\n if (this._body == null) {\n return '';\n }\n\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n\n return this._body.toString();\n }\n\n /**\n * Return the body as an ArrayBuffer\n */\n arrayBuffer(): ArrayBuffer {\n if (this._body instanceof ArrayBuffer) {\n return <ArrayBuffer>this._body;\n }\n\n return stringToArrayBuffer(this.text());\n }\n\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n blob(): Blob {\n if (this._body instanceof Blob) {\n return <Blob>this._body;\n }\n\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {ResponseOptions} from './base_response_options';\nimport {Body} from './body';\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\n\n\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Response extends Body {\n /**\n * One of \"basic\", \"cors\", \"default\", \"error\", or \"opaque\".\n *\n * Defaults to \"default\".\n */\n type: ResponseType;\n /**\n * True if the response's status is within 200-299\n */\n ok: boolean;\n /**\n * URL of response.\n *\n * Defaults to empty string.\n */\n url: string;\n /**\n * Status code returned by server.\n *\n * Defaults to 200.\n */\n status: number;\n /**\n * Text representing the corresponding reason phrase to the `status`, as defined in [ietf rfc 2616\n * section 6.1.1](https://tools.ietf.org/html/rfc2616#section-6.1.1)\n *\n * Defaults to \"OK\"\n */\n statusText: string|null;\n /**\n * Non-standard property\n *\n * Denotes how many of the response body's bytes have been loaded, for example if the response is\n * the result of a progress event.\n */\n // TODO(issue/24571): remove '!'.\n bytesLoaded !: number;\n /**\n * Non-standard property\n *\n * Denotes how many bytes are expected in the final response body.\n */\n // TODO(issue/24571): remove '!'.\n totalBytes !: number;\n /**\n * Headers object based on the `Headers` class in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#headers-class).\n */\n headers: Headers|null;\n\n constructor(responseOptions: ResponseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = responseOptions.status !;\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = responseOptions.type !;\n this.url = responseOptions.url !;\n }\n\n toString(): string {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nlet _nextRequestId = 0;\nexport const JSONP_HOME = '__ng_jsonp__';\nlet _jsonpConnections: {[key: string]: any}|null = null;\n\nfunction _getJsonpConnections(): {[key: string]: any} {\n const w: {[key: string]: any} = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n\n// Make sure not to evaluate this in a non-browser environment!\n@Injectable()\nexport class BrowserJsonp {\n // Construct a <script> element with the specified URL\n build(url: string): any {\n const node = document.createElement('script');\n node.src = url;\n return node;\n }\n\n nextRequestID(): string { return `__req${_nextRequestId++}`; }\n\n requestCallback(id: string): string { return `${JSONP_HOME}.${id}.finished`; }\n\n exposeConnection(id: string, connection: any) {\n const connections = _getJsonpConnections();\n connections[id] = connection;\n }\n\n removeConnection(id: string) {\n const connections = _getJsonpConnections();\n connections[id] = null;\n }\n\n // Attach the <script> element to the DOM\n send(node: any) { document.body.appendChild(<Node>(node)); }\n\n // Remove <script> element from the DOM\n cleanup(node: any) {\n if (node.parentNode) {\n node.parentNode.removeChild(<Node>(node));\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {ResponseOptions} from '../base_response_options';\nimport {ReadyState, RequestMethod, ResponseType} from '../enums';\nimport {Connection, ConnectionBackend} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\n\nimport {BrowserJsonp} from './browser_jsonp';\n\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n\n/**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class JSONPConnection implements Connection {\n // TODO(issue/24571): remove '!'.\n private _id !: string;\n // TODO(issue/24571): remove '!'.\n private _script !: Element;\n private _responseData: any;\n private _finished: boolean = false;\n\n /**\n * The {@link ReadyState} of this request.\n */\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n\n /**\n * The outgoing HTTP request.\n */\n request: Request;\n\n /**\n * An observable that completes with the response, when the request is finished.\n */\n response: Observable<Response>;\n\n /** @internal */\n constructor(\n req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {\n if (req.method !== RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n\n this.readyState = ReadyState.Loading;\n const id = this._id = _dom.nextRequestID();\n\n _dom.exposeConnection(id, this);\n\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n const callback = _dom.requestCallback(this._id);\n let url: string = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', `=${callback}&`);\n } else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + `=${callback}`;\n }\n\n const script = this._script = _dom.build(url);\n\n const onLoad = (event: Event) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n if (!this._finished) {\n let responseOptions =\n new ResponseOptions({body: JSONP_ERR_NO_CALLBACK, type: ResponseType.Error, url});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n return;\n }\n\n let responseOptions = new ResponseOptions({body: this._responseData, url});\n if (this.baseResponseOptions) {\n responseOptions = this.baseResponseOptions.merge(responseOptions);\n }\n\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n\n const onError = (error: Error) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n let responseOptions = new ResponseOptions({body: error.message, type: ResponseType.Error});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n\n _dom.send(script);\n\n return () => {\n this.readyState = ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n this._dom.cleanup(script);\n };\n });\n }\n\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n finished(data?: any) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === ReadyState.Cancelled) return;\n this._responseData = data;\n }\n}\n\n/**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class JSONPBackend extends ConnectionBackend {\n /** @internal */\n constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {\n super();\n }\n\n createConnection(request: Request): JSONPConnection {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Observable, Observer} from 'rxjs';\nimport {ResponseOptions} from '../base_response_options';\nimport {ContentType, ReadyState, RequestMethod, ResponseContentType, ResponseType} from '../enums';\nimport {Headers} from '../headers';\nimport {getResponseURL, isSuccess} from '../http_utils';\nimport {Connection, ConnectionBackend, XSRFStrategy} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\nimport {BrowserXhr} from './browser_xhr';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class XHRConnection implements Connection {\n request: Request;\n /**\n * Response {@link EventEmitter} which emits a single {@link Response} value on load event of\n * `XMLHttpRequest`.\n */\n response: Observable<Response>;\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n const _xhr: XMLHttpRequest = browserXHR.build();\n _xhr.open(RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n const onLoad = () => {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n let status: number = _xhr.status === 1223 ? 204 : _xhr.status;\n\n let body: any = null;\n\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n\n const headers: Headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n const url = getResponseURL(_xhr) || req.url;\n const statusText: string = _xhr.statusText || 'OK';\n\n let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n const response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n const onError = (err: ErrorEvent) => {\n let responseOptions = new ResponseOptions({\n body: err,\n type: ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n this.setDetectedContentType(req, _xhr);\n\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach((values, name) => _xhr.setRequestHeader(name !, values.join(',')));\n\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n\n _xhr.send(this.request.getBody());\n\n return () => {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n\n setDetectedContentType(req: any /** TODO Request */, _xhr: any /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n const blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n }\n}\n\n/**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class CookieXSRFStrategy implements XSRFStrategy {\n constructor(\n private _cookieName: string = 'XSRF-TOKEN', private _headerName: string = 'X-XSRF-TOKEN') {}\n\n configureRequest(req: Request): void {\n const xsrfToken = getDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n }\n}\n\n/**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class XHRBackend implements ConnectionBackend {\n constructor(\n private _browserXHR: BrowserXhr, private _baseResponseOptions: ResponseOptions,\n private _xsrfStrategy: XSRFStrategy) {}\n\n createConnection(request: Request): XHRConnection {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestOptionsArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class RequestOptions {\n /**\n * Http method with which to execute a {@link Request}.\n * Acceptable methods are defined in the {@link RequestMethod} enum.\n */\n method: RequestMethod|string|null;\n /**\n * {@link Headers} to be attached to a {@link Request}.\n */\n headers: Headers|null;\n /**\n * Body to be used when creating a {@link Request}.\n */\n body: any;\n /**\n * Url with which to perform a {@link Request}.\n */\n url: string|null;\n /**\n * Search parameters to be included in a {@link Request}.\n */\n params: URLSearchParams;\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get search(): URLSearchParams { return this.params; }\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set search(params: URLSearchParams) { this.params = params; }\n /**\n * Enable use credentials for a {@link Request}.\n */\n withCredentials: boolean|null;\n /*\n * Select a buffer to store the response, such as ArrayBuffer, Blob, Json (or Document)\n */\n responseType: ResponseContentType|null;\n\n // TODO(Dzmitry): remove search when this.search is removed\n constructor(opts: RequestOptionsArgs = {}) {\n const {method, headers, body, url, search, params, withCredentials, responseType} = opts;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n merge(options?: RequestOptionsArgs): RequestOptions {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n }\n\n private _mergeSearchParams(params?: string|URLSearchParams|{[key: string]: any | any[]}|\n null): URLSearchParams {\n if (!params) return this.params;\n\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n\n return this._parseParams(params);\n }\n\n private _parseParams(objParams: {[key: string]: any | any[]} = {}): URLSearchParams {\n const params = new URLSearchParams();\n Object.keys(objParams).forEach((key: string) => {\n const value: any|any[] = objParams[key];\n if (Array.isArray(value)) {\n value.forEach((item: any) => this._appendParam(key, item, params));\n } else {\n this._appendParam(key, value, params);\n }\n });\n return params;\n }\n\n private _appendParam(key: string, value: any, params: URLSearchParams): void {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n }\n}\n\n/**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseRequestOptions extends RequestOptions {\n constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Body} from './body';\nimport {ContentType, RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n// TODO(jeffbcross): properly implement body accessors\n/**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Request extends Body {\n /**\n * Http method with which to perform the request.\n */\n method: RequestMethod;\n /**\n * {@link Headers} instance\n */\n headers: Headers;\n /** Url of the remote resource */\n url: string;\n /** Type of the request body **/\n private contentType: ContentType;\n /** Enable use credentials */\n withCredentials: boolean;\n /** Buffer to store the response */\n responseType: ResponseContentType;\n constructor(requestOptions: RequestArgs) {\n super();\n // TODO: assert that url is present\n const url = requestOptions.url;\n this.url = requestOptions.url !;\n const paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n let params: string;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n } else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n let prefix = '?';\n if (this.url.indexOf('?') != -1) {\n prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n this.url = url + prefix + params;\n }\n }\n this._body = requestOptions.body;\n this.method = normalizeMethodName(requestOptions.method !);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n this.headers = new Headers(requestOptions.headers);\n this.contentType = this.detectContentType();\n this.withCredentials = requestOptions.withCredentials !;\n this.responseType = requestOptions.responseType !;\n }\n\n /**\n * Returns the content type enum based on header options.\n */\n detectContentType(): ContentType {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n }\n\n /**\n * Returns the content type of request's body based on its type.\n */\n detectContentTypeFromBody(): ContentType {\n if (this._body == null) {\n return ContentType.NONE;\n } else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n } else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n } else if (this._body instanceof Blob) {\n return ContentType.BLOB;\n } else if (this._body instanceof ArrayBuffer) {\n return ContentType.ARRAY_BUFFER;\n } else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n } else {\n return ContentType.TEXT;\n }\n }\n\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n getBody(): any {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n }\n}\n\nfunction urlEncodeParams(params: {[key: string]: any}): URLSearchParams {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(element => searchParams.append(key, element.toString()));\n } else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n}\n\nconst noop = function() {};\nconst w = typeof window == 'object' ? window : noop;\nconst FormData = (w as any /** TODO #9100 */)['FormData'] || noop;\nconst Blob = (w as any /** TODO #9100 */)['Blob'] || noop;\nexport const ArrayBuffer: ArrayBufferConstructor =\n (w as any /** TODO #9100 */)['ArrayBuffer'] || noop;\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {RequestMethod} from './enums';\nimport {ConnectionBackend, RequestArgs, RequestOptionsArgs} from './interfaces';\nimport {Request} from './static_request';\nimport {Response} from './static_response';\n\nfunction httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {\n return backend.createConnection(request).response;\n}\n\nfunction mergeOptions(\n defaultOpts: BaseRequestOptions, providedOpts: RequestOptionsArgs | undefined,\n method: RequestMethod, url: string): RequestArgs {\n const newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n })) as RequestArgs;\n }\n\n return newOptions.merge(new RequestOptions({method, url})) as RequestArgs;\n}\n\n/**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Http {\n constructor(protected _backend: ConnectionBackend, protected _defaultOptions: RequestOptions) {}\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n responseObservable = httpRequest(\n this._backend,\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url)));\n } else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n\n /**\n * Performs a request with `get` http method.\n */\n get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, url)));\n }\n\n /**\n * Performs a request with `post` http method.\n */\n post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Post,\n url)));\n }\n\n /**\n * Performs a request with `put` http method.\n */\n put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Put,\n url)));\n }\n\n /**\n * Performs a request with `delete` http method.\n */\n delete (url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Delete, url)));\n }\n\n /**\n * Performs a request with `patch` http method.\n */\n patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Patch,\n url)));\n }\n\n /**\n * Performs a request with `head` http method.\n */\n head(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));\n }\n\n /**\n * Performs a request with `options` http method.\n */\n options(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));\n }\n}\n\n\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Jsonp extends Http {\n constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n super(backend, defaultOptions);\n }\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url));\n }\n if (url instanceof Request) {\n if (url.method !== RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The http module provides services to perform http requests. To get started, see the {@link Http}\n * class.\n */\nimport {NgModule} from '@angular/core';\n\nimport {BrowserJsonp} from './backends/browser_jsonp';\nimport {BrowserXhr} from './backends/browser_xhr';\nimport {JSONPBackend} from './backends/jsonp_backend';\nimport {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nimport {Http, Jsonp} from './http';\nimport {XSRFStrategy} from './interfaces';\n\n\nexport function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n}\n\nexport function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http {\n return new Http(xhrBackend, requestOptions);\n}\n\nexport function jsonpFactory(jsonpBackend: JSONPBackend, requestOptions: RequestOptions): Jsonp {\n return new Jsonp(jsonpBackend, requestOptions);\n}\n\n\n/**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n BrowserXhr,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n XHRBackend,\n {provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},\n ],\n})\nexport class HttpModule {\n}\n\n/**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions]},\n BrowserJsonp,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n JSONPBackend,\n ],\n})\nexport class JsonpModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport const VERSION = new Version('7.2.7');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {BrowserXhr} from './backends/browser_xhr';\nexport {JSONPBackend, JSONPConnection} from './backends/jsonp_backend';\nexport {CookieXSRFStrategy, XHRBackend, XHRConnection} from './backends/xhr_backend';\nexport {BaseRequestOptions, RequestOptions} from './base_request_options';\nexport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nexport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nexport {Headers} from './headers';\nexport {Http, Jsonp} from './http';\nexport {HttpModule, JsonpModule} from './http_module';\nexport {Connection, ConnectionBackend, RequestOptionsArgs, ResponseOptionsArgs, XSRFStrategy} from './interfaces';\nexport {Request} from './static_request';\nexport {Response} from './static_response';\nexport {QueryEncoder, URLSearchParams} from './url_search_params';\nexport {VERSION} from './version';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/index';\n\n// This file only reexports content of the `src` folder. Keep it that way.\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BrowserJsonp as ɵangular_packages_http_http_e} from './src/backends/browser_jsonp';\nexport {Body as ɵangular_packages_http_http_f} from './src/body';\nexport {_createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a,httpFactory as ɵangular_packages_http_http_b,jsonpFactory as ɵangular_packages_http_http_c} from './src/http_module';\nexport {RequestArgs as ɵangular_packages_http_http_d} from './src/interfaces';"],"names":["Injectable","RequestMethod","ReadyState","ResponseType","ResponseContentType","tslib_1.__extends","Observable","getDOM","ArrayBuffer","Blob","NgModule","Version"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"http.umd.js","sources":["../../../../../../../../../../external/ngdeps/node_modules/tslib/tslib.es6.js","../../../../../packages/http/src/backends/browser_xhr.ts","../../../../../packages/http/src/enums.ts","../../../../../packages/http/src/headers.ts","../../../../../packages/http/src/base_response_options.ts","../../../../../packages/http/src/interfaces.ts","../../../../../packages/http/src/http_utils.ts","../../../../../packages/http/src/url_search_params.ts","../../../../../packages/http/src/body.ts","../../../../../packages/http/src/static_response.ts","../../../../../packages/http/src/backends/browser_jsonp.ts","../../../../../packages/http/src/backends/jsonp_backend.ts","../../../../../packages/http/src/backends/xhr_backend.ts","../../../../../packages/http/src/base_request_options.ts","../../../../../packages/http/src/static_request.ts","../../../../../packages/http/src/http.ts","../../../../../packages/http/src/http_module.ts","../../../../../packages/http/src/version.ts","../../../../../packages/http/src/index.ts","../../../../../packages/http/public_api.ts","../../../../../packages/http/index.ts","../../../../../packages/http/http.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BrowserXhr {\n constructor() {}\n build(): any { return <any>(new XMLHttpRequest()); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Supported http methods.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum RequestMethod {\n Get,\n Post,\n Put,\n Delete,\n Options,\n Head,\n Patch\n}\n\n/**\n * All possible states in which a connection can be, based on\n * [States](http://www.w3.org/TR/XMLHttpRequest/#states) from the `XMLHttpRequest` spec, but with an\n * additional \"CANCELLED\" state.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ReadyState {\n Unsent,\n Open,\n HeadersReceived,\n Loading,\n Done,\n Cancelled\n}\n\n/**\n * Acceptable response types to be associated with a {@link Response}, based on\n * [ResponseType](https://fetch.spec.whatwg.org/#responsetype) from the Fetch spec.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseType {\n Basic,\n Cors,\n Default,\n Error,\n Opaque\n}\n\n/**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\nexport enum ContentType {\n NONE,\n JSON,\n FORM,\n FORM_DATA,\n TEXT,\n BLOB,\n ARRAY_BUFFER\n}\n\n/**\n * Define which buffer to use to store the response\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseContentType {\n Text,\n Json,\n ArrayBuffer,\n Blob\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Headers {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n // TODO(vicb): any -> string|string[]\n constructor(headers?: Headers|{[name: string]: any}|null) {\n if (!headers) {\n return;\n }\n\n if (headers instanceof Headers) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n static fromResponseHeaderString(headersString: string): Headers {\n const headers = new Headers();\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete (name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string|undefined, headers: Map<string, string[]>) => void):\n void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string|null {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string|string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): {[name: string]: any} {\n const serialized: {[name: string]: string[]} = {};\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[this._normalizedNames.get(name) !] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[]|null {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n\n /**\n * This method is not implemented.\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {ResponseOptionsArgs} from './interfaces';\n\n\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class ResponseOptions {\n // TODO: FormData | Blob\n /**\n * String, Object, ArrayBuffer or Blob representing the body of the {@link Response}.\n */\n body: string|Object|ArrayBuffer|Blob|null;\n /**\n * Http {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html status code}\n * associated with the response.\n */\n status: number|null;\n /**\n * Response {@link Headers headers}\n */\n headers: Headers|null;\n /**\n * @internal\n */\n statusText: string|null;\n /**\n * @internal\n */\n type: ResponseType|null;\n url: string|null;\n constructor(opts: ResponseOptionsArgs = {}) {\n const {body, status, headers, statusText, type, url} = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n merge(options?: ResponseOptionsArgs): ResponseOptions {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n\n/**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers()});\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {Request} from './static_request';\nimport {URLSearchParams} from './url_search_params';\n\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class ConnectionBackend { abstract createConnection(request: any): Connection; }\n\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class Connection {\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n // TODO(issue/24571): remove '!'.\n request !: Request;\n response: any; // TODO: generic of <Response>;\n}\n\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class XSRFStrategy { abstract configureRequest(req: Request): void; }\n\n/**\n * Interface for options to construct a RequestOptions, based on\n * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface RequestOptionsArgs {\n url?: string|null;\n method?: string|RequestMethod|null;\n /** @deprecated from 4.0.0. Use params instead. */\n search?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n params?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n headers?: Headers|null;\n body?: any;\n withCredentials?: boolean|null;\n responseType?: ResponseContentType|null;\n}\n\n/**\n * Required structure when constructing new Request();\n */\nexport interface RequestArgs extends RequestOptionsArgs { url: string|null; }\n\n/**\n * Interface for options to construct a Response, based on\n * [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface ResponseOptionsArgs {\n body?: string|Object|FormData|ArrayBuffer|Blob|null;\n status?: number|null;\n statusText?: string|null;\n headers?: Headers|null;\n type?: ResponseType|null;\n url?: string|null;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RequestMethod} from './enums';\n\nexport function normalizeMethodName(method: string | RequestMethod): RequestMethod {\n if (typeof method !== 'string') return method;\n\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n\nexport const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport function getResponseURL(xhr: any): string|null {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\nexport function stringToArrayBuffer8(input: String): ArrayBuffer {\n const view = new Uint8Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n\nexport function stringToArrayBuffer(input: String): ArrayBuffer {\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nfunction paramParser(rawParams: string = ''): Map<string, string[]> {\n const map = new Map<string, string[]>();\n if (rawParams.length > 0) {\n const params: string[] = rawParams.split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] =\n eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\nexport class QueryEncoder {\n encodeKey(key: string): string { return standardEncoding(key); }\n\n encodeValue(value: string): string { return standardEncoding(value); }\n}\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class URLSearchParams {\n paramsMap: Map<string, string[]>;\n constructor(\n public rawParams: string = '', private queryEncoder: QueryEncoder = new QueryEncoder()) {\n this.paramsMap = paramParser(rawParams);\n }\n\n clone(): URLSearchParams {\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n\n has(param: string): boolean { return this.paramsMap.has(param); }\n\n get(param: string): string|null {\n const storedParam = this.paramsMap.get(param);\n\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n\n getAll(param: string): string[] { return this.paramsMap.get(param) || []; }\n\n set(param: string, val: string) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n setAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n\n append(param: string, val: string): void {\n if (val === void 0 || val === null) return;\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n appendAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n replaceAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n toString(): string {\n const paramsList: string[] = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(\n v => paramsList.push(\n this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n\n delete (param: string): void { this.paramsMap.delete(param); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {stringToArrayBuffer} from './http_utils';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\nexport abstract class Body {\n /**\n * @internal\n */\n protected _body: any;\n\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n json(): any {\n if (typeof this._body === 'string') {\n return JSON.parse(<string>this._body);\n }\n\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n\n return this._body;\n }\n\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body as ArrayBuffer));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body as ArrayBuffer));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n\n if (this._body == null) {\n return '';\n }\n\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n\n return this._body.toString();\n }\n\n /**\n * Return the body as an ArrayBuffer\n */\n arrayBuffer(): ArrayBuffer {\n if (this._body instanceof ArrayBuffer) {\n return <ArrayBuffer>this._body;\n }\n\n return stringToArrayBuffer(this.text());\n }\n\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n blob(): Blob {\n if (this._body instanceof Blob) {\n return <Blob>this._body;\n }\n\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {ResponseOptions} from './base_response_options';\nimport {Body} from './body';\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\n\n\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Response extends Body {\n /**\n * One of \"basic\", \"cors\", \"default\", \"error\", or \"opaque\".\n *\n * Defaults to \"default\".\n */\n type: ResponseType;\n /**\n * True if the response's status is within 200-299\n */\n ok: boolean;\n /**\n * URL of response.\n *\n * Defaults to empty string.\n */\n url: string;\n /**\n * Status code returned by server.\n *\n * Defaults to 200.\n */\n status: number;\n /**\n * Text representing the corresponding reason phrase to the `status`, as defined in [ietf rfc 2616\n * section 6.1.1](https://tools.ietf.org/html/rfc2616#section-6.1.1)\n *\n * Defaults to \"OK\"\n */\n statusText: string|null;\n /**\n * Non-standard property\n *\n * Denotes how many of the response body's bytes have been loaded, for example if the response is\n * the result of a progress event.\n */\n // TODO(issue/24571): remove '!'.\n bytesLoaded !: number;\n /**\n * Non-standard property\n *\n * Denotes how many bytes are expected in the final response body.\n */\n // TODO(issue/24571): remove '!'.\n totalBytes !: number;\n /**\n * Headers object based on the `Headers` class in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#headers-class).\n */\n headers: Headers|null;\n\n constructor(responseOptions: ResponseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = responseOptions.status !;\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = responseOptions.type !;\n this.url = responseOptions.url !;\n }\n\n toString(): string {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nlet _nextRequestId = 0;\nexport const JSONP_HOME = '__ng_jsonp__';\nlet _jsonpConnections: {[key: string]: any}|null = null;\n\nfunction _getJsonpConnections(): {[key: string]: any} {\n const w: {[key: string]: any} = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n\n// Make sure not to evaluate this in a non-browser environment!\n@Injectable()\nexport class BrowserJsonp {\n // Construct a <script> element with the specified URL\n build(url: string): any {\n const node = document.createElement('script');\n node.src = url;\n return node;\n }\n\n nextRequestID(): string { return `__req${_nextRequestId++}`; }\n\n requestCallback(id: string): string { return `${JSONP_HOME}.${id}.finished`; }\n\n exposeConnection(id: string, connection: any) {\n const connections = _getJsonpConnections();\n connections[id] = connection;\n }\n\n removeConnection(id: string) {\n const connections = _getJsonpConnections();\n connections[id] = null;\n }\n\n // Attach the <script> element to the DOM\n send(node: any) { document.body.appendChild(<Node>(node)); }\n\n // Remove <script> element from the DOM\n cleanup(node: any) {\n if (node.parentNode) {\n node.parentNode.removeChild(<Node>(node));\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {ResponseOptions} from '../base_response_options';\nimport {ReadyState, RequestMethod, ResponseType} from '../enums';\nimport {Connection, ConnectionBackend} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\n\nimport {BrowserJsonp} from './browser_jsonp';\n\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n\n/**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class JSONPConnection implements Connection {\n // TODO(issue/24571): remove '!'.\n private _id !: string;\n // TODO(issue/24571): remove '!'.\n private _script !: Element;\n private _responseData: any;\n private _finished: boolean = false;\n\n /**\n * The {@link ReadyState} of this request.\n */\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n\n /**\n * The outgoing HTTP request.\n */\n request: Request;\n\n /**\n * An observable that completes with the response, when the request is finished.\n */\n response: Observable<Response>;\n\n /** @internal */\n constructor(\n req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {\n if (req.method !== RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n\n this.readyState = ReadyState.Loading;\n const id = this._id = _dom.nextRequestID();\n\n _dom.exposeConnection(id, this);\n\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n const callback = _dom.requestCallback(this._id);\n let url: string = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', `=${callback}&`);\n } else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + `=${callback}`;\n }\n\n const script = this._script = _dom.build(url);\n\n const onLoad = (event: Event) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n if (!this._finished) {\n let responseOptions =\n new ResponseOptions({body: JSONP_ERR_NO_CALLBACK, type: ResponseType.Error, url});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n return;\n }\n\n let responseOptions = new ResponseOptions({body: this._responseData, url});\n if (this.baseResponseOptions) {\n responseOptions = this.baseResponseOptions.merge(responseOptions);\n }\n\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n\n const onError = (error: Error) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n let responseOptions = new ResponseOptions({body: error.message, type: ResponseType.Error});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n\n _dom.send(script);\n\n return () => {\n this.readyState = ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n this._dom.cleanup(script);\n };\n });\n }\n\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n finished(data?: any) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === ReadyState.Cancelled) return;\n this._responseData = data;\n }\n}\n\n/**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class JSONPBackend extends ConnectionBackend {\n /** @internal */\n constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {\n super();\n }\n\n createConnection(request: Request): JSONPConnection {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Observable, Observer} from 'rxjs';\nimport {ResponseOptions} from '../base_response_options';\nimport {ContentType, ReadyState, RequestMethod, ResponseContentType, ResponseType} from '../enums';\nimport {Headers} from '../headers';\nimport {getResponseURL, isSuccess} from '../http_utils';\nimport {Connection, ConnectionBackend, XSRFStrategy} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\nimport {BrowserXhr} from './browser_xhr';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class XHRConnection implements Connection {\n request: Request;\n /**\n * Response {@link EventEmitter} which emits a single {@link Response} value on load event of\n * `XMLHttpRequest`.\n */\n response: Observable<Response>;\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n const _xhr: XMLHttpRequest = browserXHR.build();\n _xhr.open(RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n const onLoad = () => {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n let status: number = _xhr.status === 1223 ? 204 : _xhr.status;\n\n let body: any = null;\n\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n\n const headers: Headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n const url = getResponseURL(_xhr) || req.url;\n const statusText: string = _xhr.statusText || 'OK';\n\n let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n const response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n const onError = (err: ErrorEvent) => {\n let responseOptions = new ResponseOptions({\n body: err,\n type: ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n this.setDetectedContentType(req, _xhr);\n\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach((values, name) => _xhr.setRequestHeader(name !, values.join(',')));\n\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n\n _xhr.send(this.request.getBody());\n\n return () => {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n\n setDetectedContentType(req: any /** TODO Request */, _xhr: any /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n const blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n }\n}\n\n/**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class CookieXSRFStrategy implements XSRFStrategy {\n constructor(\n private _cookieName: string = 'XSRF-TOKEN', private _headerName: string = 'X-XSRF-TOKEN') {}\n\n configureRequest(req: Request): void {\n const xsrfToken = getDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n }\n}\n\n/**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class XHRBackend implements ConnectionBackend {\n constructor(\n private _browserXHR: BrowserXhr, private _baseResponseOptions: ResponseOptions,\n private _xsrfStrategy: XSRFStrategy) {}\n\n createConnection(request: Request): XHRConnection {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestOptionsArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class RequestOptions {\n /**\n * Http method with which to execute a {@link Request}.\n * Acceptable methods are defined in the {@link RequestMethod} enum.\n */\n method: RequestMethod|string|null;\n /**\n * {@link Headers} to be attached to a {@link Request}.\n */\n headers: Headers|null;\n /**\n * Body to be used when creating a {@link Request}.\n */\n body: any;\n /**\n * Url with which to perform a {@link Request}.\n */\n url: string|null;\n /**\n * Search parameters to be included in a {@link Request}.\n */\n params: URLSearchParams;\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get search(): URLSearchParams { return this.params; }\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set search(params: URLSearchParams) { this.params = params; }\n /**\n * Enable use credentials for a {@link Request}.\n */\n withCredentials: boolean|null;\n /*\n * Select a buffer to store the response, such as ArrayBuffer, Blob, Json (or Document)\n */\n responseType: ResponseContentType|null;\n\n // TODO(Dzmitry): remove search when this.search is removed\n constructor(opts: RequestOptionsArgs = {}) {\n const {method, headers, body, url, search, params, withCredentials, responseType} = opts;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n merge(options?: RequestOptionsArgs): RequestOptions {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n }\n\n private _mergeSearchParams(params?: string|URLSearchParams|{[key: string]: any | any[]}|\n null): URLSearchParams {\n if (!params) return this.params;\n\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n\n return this._parseParams(params);\n }\n\n private _parseParams(objParams: {[key: string]: any | any[]} = {}): URLSearchParams {\n const params = new URLSearchParams();\n Object.keys(objParams).forEach((key: string) => {\n const value: any|any[] = objParams[key];\n if (Array.isArray(value)) {\n value.forEach((item: any) => this._appendParam(key, item, params));\n } else {\n this._appendParam(key, value, params);\n }\n });\n return params;\n }\n\n private _appendParam(key: string, value: any, params: URLSearchParams): void {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n }\n}\n\n/**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseRequestOptions extends RequestOptions {\n constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Body} from './body';\nimport {ContentType, RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n// TODO(jeffbcross): properly implement body accessors\n/**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Request extends Body {\n /**\n * Http method with which to perform the request.\n */\n method: RequestMethod;\n /**\n * {@link Headers} instance\n */\n headers: Headers;\n /** Url of the remote resource */\n url: string;\n /** Type of the request body **/\n private contentType: ContentType;\n /** Enable use credentials */\n withCredentials: boolean;\n /** Buffer to store the response */\n responseType: ResponseContentType;\n constructor(requestOptions: RequestArgs) {\n super();\n // TODO: assert that url is present\n const url = requestOptions.url;\n this.url = requestOptions.url !;\n const paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n let params: string;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n } else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n let prefix = '?';\n if (this.url.indexOf('?') != -1) {\n prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n this.url = url + prefix + params;\n }\n }\n this._body = requestOptions.body;\n this.method = normalizeMethodName(requestOptions.method !);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n this.headers = new Headers(requestOptions.headers);\n this.contentType = this.detectContentType();\n this.withCredentials = requestOptions.withCredentials !;\n this.responseType = requestOptions.responseType !;\n }\n\n /**\n * Returns the content type enum based on header options.\n */\n detectContentType(): ContentType {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n }\n\n /**\n * Returns the content type of request's body based on its type.\n */\n detectContentTypeFromBody(): ContentType {\n if (this._body == null) {\n return ContentType.NONE;\n } else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n } else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n } else if (this._body instanceof Blob) {\n return ContentType.BLOB;\n } else if (this._body instanceof ArrayBuffer) {\n return ContentType.ARRAY_BUFFER;\n } else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n } else {\n return ContentType.TEXT;\n }\n }\n\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n getBody(): any {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n }\n}\n\nfunction urlEncodeParams(params: {[key: string]: any}): URLSearchParams {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(element => searchParams.append(key, element.toString()));\n } else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n}\n\nconst noop = function() {};\nconst w = typeof window == 'object' ? window : noop;\nconst FormData = (w as any /** TODO #9100 */)['FormData'] || noop;\nconst Blob = (w as any /** TODO #9100 */)['Blob'] || noop;\nexport const ArrayBuffer: ArrayBufferConstructor =\n (w as any /** TODO #9100 */)['ArrayBuffer'] || noop;\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {RequestMethod} from './enums';\nimport {ConnectionBackend, RequestArgs, RequestOptionsArgs} from './interfaces';\nimport {Request} from './static_request';\nimport {Response} from './static_response';\n\nfunction httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {\n return backend.createConnection(request).response;\n}\n\nfunction mergeOptions(\n defaultOpts: BaseRequestOptions, providedOpts: RequestOptionsArgs | undefined,\n method: RequestMethod, url: string): RequestArgs {\n const newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n })) as RequestArgs;\n }\n\n return newOptions.merge(new RequestOptions({method, url})) as RequestArgs;\n}\n\n/**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Http {\n constructor(protected _backend: ConnectionBackend, protected _defaultOptions: RequestOptions) {}\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n responseObservable = httpRequest(\n this._backend,\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url)));\n } else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n\n /**\n * Performs a request with `get` http method.\n */\n get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, url)));\n }\n\n /**\n * Performs a request with `post` http method.\n */\n post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Post,\n url)));\n }\n\n /**\n * Performs a request with `put` http method.\n */\n put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Put,\n url)));\n }\n\n /**\n * Performs a request with `delete` http method.\n */\n delete (url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Delete, url)));\n }\n\n /**\n * Performs a request with `patch` http method.\n */\n patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Patch,\n url)));\n }\n\n /**\n * Performs a request with `head` http method.\n */\n head(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));\n }\n\n /**\n * Performs a request with `options` http method.\n */\n options(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));\n }\n}\n\n\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Jsonp extends Http {\n constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n super(backend, defaultOptions);\n }\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url));\n }\n if (url instanceof Request) {\n if (url.method !== RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The http module provides services to perform http requests. To get started, see the {@link Http}\n * class.\n */\nimport {NgModule} from '@angular/core';\n\nimport {BrowserJsonp} from './backends/browser_jsonp';\nimport {BrowserXhr} from './backends/browser_xhr';\nimport {JSONPBackend} from './backends/jsonp_backend';\nimport {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nimport {Http, Jsonp} from './http';\nimport {XSRFStrategy} from './interfaces';\n\n\nexport function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n}\n\nexport function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http {\n return new Http(xhrBackend, requestOptions);\n}\n\nexport function jsonpFactory(jsonpBackend: JSONPBackend, requestOptions: RequestOptions): Jsonp {\n return new Jsonp(jsonpBackend, requestOptions);\n}\n\n\n/**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n BrowserXhr,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n XHRBackend,\n {provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},\n ],\n})\nexport class HttpModule {\n}\n\n/**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions]},\n BrowserJsonp,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n JSONPBackend,\n ],\n})\nexport class JsonpModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport const VERSION = new Version('7.2.8');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {BrowserXhr} from './backends/browser_xhr';\nexport {JSONPBackend, JSONPConnection} from './backends/jsonp_backend';\nexport {CookieXSRFStrategy, XHRBackend, XHRConnection} from './backends/xhr_backend';\nexport {BaseRequestOptions, RequestOptions} from './base_request_options';\nexport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nexport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nexport {Headers} from './headers';\nexport {Http, Jsonp} from './http';\nexport {HttpModule, JsonpModule} from './http_module';\nexport {Connection, ConnectionBackend, RequestOptionsArgs, ResponseOptionsArgs, XSRFStrategy} from './interfaces';\nexport {Request} from './static_request';\nexport {Response} from './static_response';\nexport {QueryEncoder, URLSearchParams} from './url_search_params';\nexport {VERSION} from './version';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/index';\n\n// This file only reexports content of the `src` folder. Keep it that way.\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BrowserJsonp as ɵangular_packages_http_http_e} from './src/backends/browser_jsonp';\nexport {Body as ɵangular_packages_http_http_f} from './src/body';\nexport {_createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a,httpFactory as ɵangular_packages_http_http_b,jsonpFactory as ɵangular_packages_http_http_c} from './src/http_module';\nexport {RequestArgs as ɵangular_packages_http_http_d} from './src/interfaces';"],"names":["Injectable","RequestMethod","ReadyState","ResponseType","ResponseContentType","tslib_1.__extends","Observable","getDOM","ArrayBuffer","Blob","NgModule","Version"],"mappings":"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"}
\ No newline at end of file

bundles/http.umd.min.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/
@@ -87,7 +87,7 @@
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
-function Z(){return new D}function ee(e,t){return new $(e,t)}function te(e,t){return new W(e,t)}var ne=function(){return a([t.NgModule({providers:[{provide:$,useFactory:ee,deps:[H,J]},f,{provide:J,useClass:U},{provide:m,useClass:_},H,{provide:R,useFactory:Z}]})],function e(){})}(),re=function(){return a([t.NgModule({providers:[{provide:W,useFactory:te,deps:[j,J]},N,{provide:J,useClass:U},{provide:m,useClass:_},j]})],function e(){})}(),oe=new t.Version("7.2.7");
+function Z(){return new D}function ee(e,t){return new $(e,t)}function te(e,t){return new W(e,t)}var ne=function(){return a([t.NgModule({providers:[{provide:$,useFactory:ee,deps:[H,J]},f,{provide:J,useClass:U},{provide:m,useClass:_},H,{provide:R,useFactory:Z}]})],function e(){})}(),re=function(){return a([t.NgModule({providers:[{provide:W,useFactory:te,deps:[j,J]},N,{provide:J,useClass:U},{provide:m,useClass:_},j]})],function e(){})}(),oe=new t.Version("7.2.8");
/**
* @license
* Copyright Google Inc. All Rights Reserved.

bundles/http.umd.min.js.map

@@ -1 +1 @@
-{"version":3,"sources":["packages/http/http.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ng","http","core","rxjs","platformBrowser","this","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","__read","o","n","m","Symbol","iterator","e","call","ar","next","done","push","value","error","RequestMethod","ReadyState","ResponseType","ContentType","ResponseContentType","BrowserXhr","build","XMLHttpRequest","Injectable","Headers","headers","_this","_headers","Map","_normalizedNames","forEach","values","name","append","keys","isArray","delete","fromResponseHeaderString","headersString","split","line","index","indexOf","name_1","slice","trim","set","getAll","lcName","toLowerCase","fn","get","has","from","join","mayBeSetNormalizedName","toJSON","serialized","v","apply","__spread","concat","entries","Error","ResponseOptions","opts","body","status","statusText","type","url","merge","options","BaseResponseOptions","_super","Default","ConnectionBackend","Connection","XSRFStrategy","normalizeMethodName","method","toUpperCase","Get","Post","Put","Delete","Options","Head","Patch","isSuccess","QueryEncoder","encodeKey","standardEncoding","encodeValue","encodeURIComponent","replace","URLSearchParams","rawParams","queryEncoder","paramsMap","paramParser","map","param","eqIdx","_a","val","list","clone","appendAll","storedParam","setAll","searchParams","replaceAll","toString","paramsList","k","Body","json","_body","JSON","parse","ArrayBuffer","text","encodingHint","String","fromCharCode","Uint16Array","Uint8Array","stringify","arrayBuffer","stringToArrayBuffer","input","view","strLen","charCodeAt","buffer","blob","Blob","Response","responseOptions","ok","_nextRequestId","JSONP_HOME","_jsonpConnections","_getJsonpConnections","w","window","BrowserJsonp","node","document","createElement","src","nextRequestID","requestCallback","id","exposeConnection","connection","removeConnection","send","appendChild","cleanup","parentNode","removeChild","JSONP_ERR_NO_CALLBACK","JSONP_ERR_WRONG_METHOD","JSONPConnection","req","_dom","baseResponseOptions","_finished","TypeError","request","response","Observable","responseObserver","readyState","Loading","_id","callback","lastIndexOf","substring","script","_script","onLoad","event","Cancelled","Done","responseOptions_1","_responseData","complete","onError","message","addEventListener","removeEventListener","finished","data","JSONPBackend","_browserJSONP","_baseResponseOptions","createConnection","XSSI_PREFIX","XHRConnection","browserXHR","_xhr","open","withCredentials","responseText","getAllResponseHeaders","getResponseURL","xhr","responseURL","test","getResponseHeader","err","setDetectedContentType","setRequestHeader","responseType","Json","Text","getBody","abort","contentType","NONE","FORM","TEXT","BLOB","CookieXSRFStrategy","_cookieName","_headerName","configureRequest","xsrfToken","ɵgetDOM","getCookie","XHRBackend","_browserXHR","_xsrfStrategy","RequestOptions","search","params","_mergeSearchParams","enumerable","configurable","_parseParams","objParams","item","_appendParam","BaseRequestOptions","Request","requestOptions","paramsArg","urlEncodeParams","element","prefix","detectContentType","FORM_DATA","ArrayBuffer$1","ARRAY_BUFFER","detectContentTypeFromBody","FormData","Blob$1","noop","httpRequest","backend","mergeOptions","defaultOpts","providedOpts","Http","_backend","_defaultOptions","responseObservable","post","put","patch","head","Jsonp","defaultOptions","_createDefaultCookieXSRFStrategy","httpFactory","xhrBackend","jsonpFactory","jsonpBackend","HttpModule","NgModule","providers","provide","useFactory","deps","useClass","JsonpModule","VERSION","Version","ɵangular_packages_http_http_e","ɵangular_packages_http_http_f","ɵangular_packages_http_http_a","ɵangular_packages_http_http_b","ɵangular_packages_http_http_c"],"mappings":"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","sourcesContent":["/**\n * @license Angular v7.2.7\n * (c) 2010-2019 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@angular/platform-browser')) :\n typeof define === 'function' && define.amd ? define('@angular/http', ['exports', '@angular/core', 'rxjs', '@angular/platform-browser'], factory) :\n (global = global || self, factory((global.ng = global.ng || {}, global.ng.http = {}), global.ng.core, global.rxjs, global.ng.platformBrowser));\n}(this, function (exports, core, rxjs, platformBrowser) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n }\r\n\r\n function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n }\r\n\r\n function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n }\r\n\r\n function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n }\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var BrowserXhr = /** @class */ (function () {\n function BrowserXhr() {\n }\n BrowserXhr.prototype.build = function () { return (new XMLHttpRequest()); };\n BrowserXhr = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], BrowserXhr);\n return BrowserXhr;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n (function (RequestMethod) {\n RequestMethod[RequestMethod[\"Get\"] = 0] = \"Get\";\n RequestMethod[RequestMethod[\"Post\"] = 1] = \"Post\";\n RequestMethod[RequestMethod[\"Put\"] = 2] = \"Put\";\n RequestMethod[RequestMethod[\"Delete\"] = 3] = \"Delete\";\n RequestMethod[RequestMethod[\"Options\"] = 4] = \"Options\";\n RequestMethod[RequestMethod[\"Head\"] = 5] = \"Head\";\n RequestMethod[RequestMethod[\"Patch\"] = 6] = \"Patch\";\n })(exports.RequestMethod || (exports.RequestMethod = {}));\n (function (ReadyState) {\n ReadyState[ReadyState[\"Unsent\"] = 0] = \"Unsent\";\n ReadyState[ReadyState[\"Open\"] = 1] = \"Open\";\n ReadyState[ReadyState[\"HeadersReceived\"] = 2] = \"HeadersReceived\";\n ReadyState[ReadyState[\"Loading\"] = 3] = \"Loading\";\n ReadyState[ReadyState[\"Done\"] = 4] = \"Done\";\n ReadyState[ReadyState[\"Cancelled\"] = 5] = \"Cancelled\";\n })(exports.ReadyState || (exports.ReadyState = {}));\n (function (ResponseType) {\n ResponseType[ResponseType[\"Basic\"] = 0] = \"Basic\";\n ResponseType[ResponseType[\"Cors\"] = 1] = \"Cors\";\n ResponseType[ResponseType[\"Default\"] = 2] = \"Default\";\n ResponseType[ResponseType[\"Error\"] = 3] = \"Error\";\n ResponseType[ResponseType[\"Opaque\"] = 4] = \"Opaque\";\n })(exports.ResponseType || (exports.ResponseType = {}));\n /**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\n var ContentType;\n (function (ContentType) {\n ContentType[ContentType[\"NONE\"] = 0] = \"NONE\";\n ContentType[ContentType[\"JSON\"] = 1] = \"JSON\";\n ContentType[ContentType[\"FORM\"] = 2] = \"FORM\";\n ContentType[ContentType[\"FORM_DATA\"] = 3] = \"FORM_DATA\";\n ContentType[ContentType[\"TEXT\"] = 4] = \"TEXT\";\n ContentType[ContentType[\"BLOB\"] = 5] = \"BLOB\";\n ContentType[ContentType[\"ARRAY_BUFFER\"] = 6] = \"ARRAY_BUFFER\";\n })(ContentType || (ContentType = {}));\n (function (ResponseContentType) {\n ResponseContentType[ResponseContentType[\"Text\"] = 0] = \"Text\";\n ResponseContentType[ResponseContentType[\"Json\"] = 1] = \"Json\";\n ResponseContentType[ResponseContentType[\"ArrayBuffer\"] = 2] = \"ArrayBuffer\";\n ResponseContentType[ResponseContentType[\"Blob\"] = 3] = \"Blob\";\n })(exports.ResponseContentType || (exports.ResponseContentType = {}));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Headers = /** @class */ (function () {\n // TODO(vicb): any -> string|string[]\n function Headers(headers) {\n var _this = this;\n /** @internal header names are lower case */\n this._headers = new Map();\n /** @internal map lower case names to actual names */\n this._normalizedNames = new Map();\n if (!headers) {\n return;\n }\n if (headers instanceof Headers) {\n headers.forEach(function (values, name) {\n values.forEach(function (value) { return _this.append(name, value); });\n });\n return;\n }\n Object.keys(headers).forEach(function (name) {\n var values = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n _this.delete(name);\n values.forEach(function (value) { return _this.append(name, value); });\n });\n }\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n Headers.fromResponseHeaderString = function (headersString) {\n var headers = new Headers();\n headersString.split('\\n').forEach(function (line) {\n var index = line.indexOf(':');\n if (index > 0) {\n var name_1 = line.slice(0, index);\n var value = line.slice(index + 1).trim();\n headers.set(name_1, value);\n }\n });\n return headers;\n };\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n Headers.prototype.append = function (name, value) {\n var values = this.getAll(name);\n if (values === null) {\n this.set(name, value);\n }\n else {\n values.push(value);\n }\n };\n /**\n * Deletes all header values for the given name.\n */\n Headers.prototype.delete = function (name) {\n var lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n };\n Headers.prototype.forEach = function (fn) {\n var _this = this;\n this._headers.forEach(function (values, lcName) { return fn(values, _this._normalizedNames.get(lcName), _this._headers); });\n };\n /**\n * Returns first header that matches given name.\n */\n Headers.prototype.get = function (name) {\n var values = this.getAll(name);\n if (values === null) {\n return null;\n }\n return values.length > 0 ? values[0] : null;\n };\n /**\n * Checks for existence of header by given name.\n */\n Headers.prototype.has = function (name) { return this._headers.has(name.toLowerCase()); };\n /**\n * Returns the names of the headers\n */\n Headers.prototype.keys = function () { return Array.from(this._normalizedNames.values()); };\n /**\n * Sets or overrides header value for given name.\n */\n Headers.prototype.set = function (name, value) {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n }\n else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n };\n /**\n * Returns values of all headers.\n */\n Headers.prototype.values = function () { return Array.from(this._headers.values()); };\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n Headers.prototype.toJSON = function () {\n var _this = this;\n var serialized = {};\n this._headers.forEach(function (values, name) {\n var split = [];\n values.forEach(function (v) { return split.push.apply(split, __spread(v.split(','))); });\n serialized[_this._normalizedNames.get(name)] = split;\n });\n return serialized;\n };\n /**\n * Returns list of header values for a given name.\n */\n Headers.prototype.getAll = function (name) {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n };\n /**\n * This method is not implemented.\n */\n Headers.prototype.entries = function () { throw new Error('\"entries\" method is not implemented on Headers class'); };\n Headers.prototype.mayBeSetNormalizedName = function (name) {\n var lcName = name.toLowerCase();\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n };\n return Headers;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var ResponseOptions = /** @class */ (function () {\n function ResponseOptions(opts) {\n if (opts === void 0) { opts = {}; }\n var body = opts.body, status = opts.status, headers = opts.headers, statusText = opts.statusText, type = opts.type, url = opts.url;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n ResponseOptions.prototype.merge = function (options) {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n };\n return ResponseOptions;\n }());\n /**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var BaseResponseOptions = /** @class */ (function (_super) {\n __extends(BaseResponseOptions, _super);\n function BaseResponseOptions() {\n return _super.call(this, { status: 200, statusText: 'Ok', type: exports.ResponseType.Default, headers: new Headers() }) || this;\n }\n BaseResponseOptions = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], BaseResponseOptions);\n return BaseResponseOptions;\n }(ResponseOptions));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var ConnectionBackend = /** @class */ (function () {\n function ConnectionBackend() {\n }\n return ConnectionBackend;\n }());\n /**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Connection = /** @class */ (function () {\n function Connection() {\n }\n return Connection;\n }());\n /**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var XSRFStrategy = /** @class */ (function () {\n function XSRFStrategy() {\n }\n return XSRFStrategy;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function normalizeMethodName(method) {\n if (typeof method !== 'string')\n return method;\n switch (method.toUpperCase()) {\n case 'GET':\n return exports.RequestMethod.Get;\n case 'POST':\n return exports.RequestMethod.Post;\n case 'PUT':\n return exports.RequestMethod.Put;\n case 'DELETE':\n return exports.RequestMethod.Delete;\n case 'OPTIONS':\n return exports.RequestMethod.Options;\n case 'HEAD':\n return exports.RequestMethod.Head;\n case 'PATCH':\n return exports.RequestMethod.Patch;\n }\n throw new Error(\"Invalid request method. The method \\\"\" + method + \"\\\" is not supported.\");\n }\n var isSuccess = function (status) { return (status >= 200 && status < 300); };\n function getResponseURL(xhr) {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n }\n function stringToArrayBuffer(input) {\n var view = new Uint16Array(input.length);\n for (var i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n }\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function paramParser(rawParams) {\n if (rawParams === void 0) { rawParams = ''; }\n var map = new Map();\n if (rawParams.length > 0) {\n var params = rawParams.split('&');\n params.forEach(function (param) {\n var eqIdx = param.indexOf('=');\n var _a = __read(eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)], 2), key = _a[0], val = _a[1];\n var list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n }\n /**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\n var QueryEncoder = /** @class */ (function () {\n function QueryEncoder() {\n }\n QueryEncoder.prototype.encodeKey = function (key) { return standardEncoding(key); };\n QueryEncoder.prototype.encodeValue = function (value) { return standardEncoding(value); };\n return QueryEncoder;\n }());\n function standardEncoding(v) {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n }\n /**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var URLSearchParams = /** @class */ (function () {\n function URLSearchParams(rawParams, queryEncoder) {\n if (rawParams === void 0) { rawParams = ''; }\n if (queryEncoder === void 0) { queryEncoder = new QueryEncoder(); }\n this.rawParams = rawParams;\n this.queryEncoder = queryEncoder;\n this.paramsMap = paramParser(rawParams);\n }\n URLSearchParams.prototype.clone = function () {\n var clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n };\n URLSearchParams.prototype.has = function (param) { return this.paramsMap.has(param); };\n URLSearchParams.prototype.get = function (param) {\n var storedParam = this.paramsMap.get(param);\n return Array.isArray(storedParam) ? storedParam[0] : null;\n };\n URLSearchParams.prototype.getAll = function (param) { return this.paramsMap.get(param) || []; };\n URLSearchParams.prototype.set = function (param, val) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n var list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n };\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n URLSearchParams.prototype.setAll = function (searchParams) {\n var _this = this;\n searchParams.paramsMap.forEach(function (value, param) {\n var list = _this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n _this.paramsMap.set(param, list);\n });\n };\n URLSearchParams.prototype.append = function (param, val) {\n if (val === void 0 || val === null)\n return;\n var list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n };\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n URLSearchParams.prototype.appendAll = function (searchParams) {\n var _this = this;\n searchParams.paramsMap.forEach(function (value, param) {\n var list = _this.paramsMap.get(param) || [];\n for (var i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n _this.paramsMap.set(param, list);\n });\n };\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n URLSearchParams.prototype.replaceAll = function (searchParams) {\n var _this = this;\n searchParams.paramsMap.forEach(function (value, param) {\n var list = _this.paramsMap.get(param) || [];\n list.length = 0;\n for (var i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n _this.paramsMap.set(param, list);\n });\n };\n URLSearchParams.prototype.toString = function () {\n var _this = this;\n var paramsList = [];\n this.paramsMap.forEach(function (values, k) {\n values.forEach(function (v) { return paramsList.push(_this.queryEncoder.encodeKey(k) + '=' + _this.queryEncoder.encodeValue(v)); });\n });\n return paramsList.join('&');\n };\n URLSearchParams.prototype.delete = function (param) { this.paramsMap.delete(param); };\n return URLSearchParams;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\n var Body = /** @class */ (function () {\n function Body() {\n }\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n Body.prototype.json = function () {\n if (typeof this._body === 'string') {\n return JSON.parse(this._body);\n }\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n return this._body;\n };\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n Body.prototype.text = function (encodingHint) {\n if (encodingHint === void 0) { encodingHint = 'legacy'; }\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body));\n default:\n throw new Error(\"Invalid value for encodingHint: \" + encodingHint);\n }\n }\n if (this._body == null) {\n return '';\n }\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n return this._body.toString();\n };\n /**\n * Return the body as an ArrayBuffer\n */\n Body.prototype.arrayBuffer = function () {\n if (this._body instanceof ArrayBuffer) {\n return this._body;\n }\n return stringToArrayBuffer(this.text());\n };\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n Body.prototype.blob = function () {\n if (this._body instanceof Blob) {\n return this._body;\n }\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n };\n return Body;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Response = /** @class */ (function (_super) {\n __extends(Response, _super);\n function Response(responseOptions) {\n var _this = _super.call(this) || this;\n _this._body = responseOptions.body;\n _this.status = responseOptions.status;\n _this.ok = (_this.status >= 200 && _this.status <= 299);\n _this.statusText = responseOptions.statusText;\n _this.headers = responseOptions.headers;\n _this.type = responseOptions.type;\n _this.url = responseOptions.url;\n return _this;\n }\n Response.prototype.toString = function () {\n return \"Response with status: \" + this.status + \" \" + this.statusText + \" for URL: \" + this.url;\n };\n return Response;\n }(Body));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var _nextRequestId = 0;\n var JSONP_HOME = '__ng_jsonp__';\n var _jsonpConnections = null;\n function _getJsonpConnections() {\n var w = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n }\n // Make sure not to evaluate this in a non-browser environment!\n var BrowserJsonp = /** @class */ (function () {\n function BrowserJsonp() {\n }\n // Construct a <script> element with the specified URL\n BrowserJsonp.prototype.build = function (url) {\n var node = document.createElement('script');\n node.src = url;\n return node;\n };\n BrowserJsonp.prototype.nextRequestID = function () { return \"__req\" + _nextRequestId++; };\n BrowserJsonp.prototype.requestCallback = function (id) { return JSONP_HOME + \".\" + id + \".finished\"; };\n BrowserJsonp.prototype.exposeConnection = function (id, connection) {\n var connections = _getJsonpConnections();\n connections[id] = connection;\n };\n BrowserJsonp.prototype.removeConnection = function (id) {\n var connections = _getJsonpConnections();\n connections[id] = null;\n };\n // Attach the <script> element to the DOM\n BrowserJsonp.prototype.send = function (node) { document.body.appendChild((node)); };\n // Remove <script> element from the DOM\n BrowserJsonp.prototype.cleanup = function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild((node));\n }\n };\n BrowserJsonp = __decorate([\n core.Injectable()\n ], BrowserJsonp);\n return BrowserJsonp;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n var JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n /**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var JSONPConnection = /** @class */ (function () {\n /** @internal */\n function JSONPConnection(req, _dom, baseResponseOptions) {\n var _this = this;\n this._dom = _dom;\n this.baseResponseOptions = baseResponseOptions;\n this._finished = false;\n if (req.method !== exports.RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new rxjs.Observable(function (responseObserver) {\n _this.readyState = exports.ReadyState.Loading;\n var id = _this._id = _dom.nextRequestID();\n _dom.exposeConnection(id, _this);\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n var callback = _dom.requestCallback(_this._id);\n var url = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', \"=\" + callback + \"&\");\n }\n else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + (\"=\" + callback);\n }\n var script = _this._script = _dom.build(url);\n var onLoad = function (event) {\n if (_this.readyState === exports.ReadyState.Cancelled)\n return;\n _this.readyState = exports.ReadyState.Done;\n _dom.cleanup(script);\n if (!_this._finished) {\n var responseOptions_1 = new ResponseOptions({ body: JSONP_ERR_NO_CALLBACK, type: exports.ResponseType.Error, url: url });\n if (baseResponseOptions) {\n responseOptions_1 = baseResponseOptions.merge(responseOptions_1);\n }\n responseObserver.error(new Response(responseOptions_1));\n return;\n }\n var responseOptions = new ResponseOptions({ body: _this._responseData, url: url });\n if (_this.baseResponseOptions) {\n responseOptions = _this.baseResponseOptions.merge(responseOptions);\n }\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n var onError = function (error) {\n if (_this.readyState === exports.ReadyState.Cancelled)\n return;\n _this.readyState = exports.ReadyState.Done;\n _dom.cleanup(script);\n var responseOptions = new ResponseOptions({ body: error.message, type: exports.ResponseType.Error });\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n _dom.send(script);\n return function () {\n _this.readyState = exports.ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n _this._dom.cleanup(script);\n };\n });\n }\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n JSONPConnection.prototype.finished = function (data) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === exports.ReadyState.Cancelled)\n return;\n this._responseData = data;\n };\n return JSONPConnection;\n }());\n /**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var JSONPBackend = /** @class */ (function (_super) {\n __extends(JSONPBackend, _super);\n /** @internal */\n function JSONPBackend(_browserJSONP, _baseResponseOptions) {\n var _this = _super.call(this) || this;\n _this._browserJSONP = _browserJSONP;\n _this._baseResponseOptions = _baseResponseOptions;\n return _this;\n }\n JSONPBackend.prototype.createConnection = function (request) {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n };\n JSONPBackend = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [BrowserJsonp, ResponseOptions])\n ], JSONPBackend);\n return JSONPBackend;\n }(ConnectionBackend));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n /**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var XHRConnection = /** @class */ (function () {\n function XHRConnection(req, browserXHR, baseResponseOptions) {\n var _this = this;\n this.request = req;\n this.response = new rxjs.Observable(function (responseObserver) {\n var _xhr = browserXHR.build();\n _xhr.open(exports.RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n var onLoad = function () {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n var status = _xhr.status === 1223 ? 204 : _xhr.status;\n var body = null;\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n var headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n var url = getResponseURL(_xhr) || req.url;\n var statusText = _xhr.statusText || 'OK';\n var responseOptions = new ResponseOptions({ body: body, status: status, headers: headers, statusText: statusText, url: url });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n var response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n var onError = function (err) {\n var responseOptions = new ResponseOptions({\n body: err,\n type: exports.ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n _this.setDetectedContentType(req, _xhr);\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach(function (values, name) { return _xhr.setRequestHeader(name, values.join(',')); });\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case exports.ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case exports.ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case exports.ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case exports.ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n _xhr.send(_this.request.getBody());\n return function () {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n XHRConnection.prototype.setDetectedContentType = function (req /** TODO Request */, _xhr /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n var blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n };\n return XHRConnection;\n }());\n /**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var CookieXSRFStrategy = /** @class */ (function () {\n function CookieXSRFStrategy(_cookieName, _headerName) {\n if (_cookieName === void 0) { _cookieName = 'XSRF-TOKEN'; }\n if (_headerName === void 0) { _headerName = 'X-XSRF-TOKEN'; }\n this._cookieName = _cookieName;\n this._headerName = _headerName;\n }\n CookieXSRFStrategy.prototype.configureRequest = function (req) {\n var xsrfToken = platformBrowser.ɵgetDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n };\n return CookieXSRFStrategy;\n }());\n /**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var XHRBackend = /** @class */ (function () {\n function XHRBackend(_browserXHR, _baseResponseOptions, _xsrfStrategy) {\n this._browserXHR = _browserXHR;\n this._baseResponseOptions = _baseResponseOptions;\n this._xsrfStrategy = _xsrfStrategy;\n }\n XHRBackend.prototype.createConnection = function (request) {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n };\n XHRBackend = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [BrowserXhr, ResponseOptions,\n XSRFStrategy])\n ], XHRBackend);\n return XHRBackend;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var RequestOptions = /** @class */ (function () {\n // TODO(Dzmitry): remove search when this.search is removed\n function RequestOptions(opts) {\n if (opts === void 0) { opts = {}; }\n var method = opts.method, headers = opts.headers, body = opts.body, url = opts.url, search = opts.search, params = opts.params, withCredentials = opts.withCredentials, responseType = opts.responseType;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n Object.defineProperty(RequestOptions.prototype, \"search\", {\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get: function () { return this.params; },\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set: function (params) { this.params = params; },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n RequestOptions.prototype.merge = function (options) {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n };\n RequestOptions.prototype._mergeSearchParams = function (params) {\n if (!params)\n return this.params;\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n return this._parseParams(params);\n };\n RequestOptions.prototype._parseParams = function (objParams) {\n var _this = this;\n if (objParams === void 0) { objParams = {}; }\n var params = new URLSearchParams();\n Object.keys(objParams).forEach(function (key) {\n var value = objParams[key];\n if (Array.isArray(value)) {\n value.forEach(function (item) { return _this._appendParam(key, item, params); });\n }\n else {\n _this._appendParam(key, value, params);\n }\n });\n return params;\n };\n RequestOptions.prototype._appendParam = function (key, value, params) {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n };\n return RequestOptions;\n }());\n /**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var BaseRequestOptions = /** @class */ (function (_super) {\n __extends(BaseRequestOptions, _super);\n function BaseRequestOptions() {\n return _super.call(this, { method: exports.RequestMethod.Get, headers: new Headers() }) || this;\n }\n BaseRequestOptions = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], BaseRequestOptions);\n return BaseRequestOptions;\n }(RequestOptions));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n // TODO(jeffbcross): properly implement body accessors\n /**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Request = /** @class */ (function (_super) {\n __extends(Request, _super);\n function Request(requestOptions) {\n var _this = _super.call(this) || this;\n // TODO: assert that url is present\n var url = requestOptions.url;\n _this.url = requestOptions.url;\n var paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n var params = void 0;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n }\n else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n var prefix = '?';\n if (_this.url.indexOf('?') != -1) {\n prefix = (_this.url[_this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n _this.url = url + prefix + params;\n }\n }\n _this._body = requestOptions.body;\n _this.method = normalizeMethodName(requestOptions.method);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n _this.headers = new Headers(requestOptions.headers);\n _this.contentType = _this.detectContentType();\n _this.withCredentials = requestOptions.withCredentials;\n _this.responseType = requestOptions.responseType;\n return _this;\n }\n /**\n * Returns the content type enum based on header options.\n */\n Request.prototype.detectContentType = function () {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer$1 ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n };\n /**\n * Returns the content type of request's body based on its type.\n */\n Request.prototype.detectContentTypeFromBody = function () {\n if (this._body == null) {\n return ContentType.NONE;\n }\n else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n }\n else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n }\n else if (this._body instanceof Blob$1) {\n return ContentType.BLOB;\n }\n else if (this._body instanceof ArrayBuffer$1) {\n return ContentType.ARRAY_BUFFER;\n }\n else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n }\n else {\n return ContentType.TEXT;\n }\n };\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n Request.prototype.getBody = function () {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n };\n return Request;\n }(Body));\n function urlEncodeParams(params) {\n var searchParams = new URLSearchParams();\n Object.keys(params).forEach(function (key) {\n var value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(function (element) { return searchParams.append(key, element.toString()); });\n }\n else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n }\n var noop = function () { };\n var w = typeof window == 'object' ? window : noop;\n var FormData = w /** TODO #9100 */['FormData'] || noop;\n var Blob$1 = w /** TODO #9100 */['Blob'] || noop;\n var ArrayBuffer$1 = w /** TODO #9100 */['ArrayBuffer'] || noop;\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function httpRequest(backend, request) {\n return backend.createConnection(request).response;\n }\n function mergeOptions(defaultOpts, providedOpts, method, url) {\n var newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n }));\n }\n return newOptions.merge(new RequestOptions({ method: method, url: url }));\n }\n /**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Http = /** @class */ (function () {\n function Http(_backend, _defaultOptions) {\n this._backend = _backend;\n this._defaultOptions = _defaultOptions;\n }\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n Http.prototype.request = function (url, options) {\n var responseObservable;\n if (typeof url === 'string') {\n responseObservable = httpRequest(this._backend, new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Get, url)));\n }\n else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n }\n else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n };\n /**\n * Performs a request with `get` http method.\n */\n Http.prototype.get = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Get, url)));\n };\n /**\n * Performs a request with `post` http method.\n */\n Http.prototype.post = function (url, body, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions.merge(new RequestOptions({ body: body })), options, exports.RequestMethod.Post, url)));\n };\n /**\n * Performs a request with `put` http method.\n */\n Http.prototype.put = function (url, body, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions.merge(new RequestOptions({ body: body })), options, exports.RequestMethod.Put, url)));\n };\n /**\n * Performs a request with `delete` http method.\n */\n Http.prototype.delete = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Delete, url)));\n };\n /**\n * Performs a request with `patch` http method.\n */\n Http.prototype.patch = function (url, body, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions.merge(new RequestOptions({ body: body })), options, exports.RequestMethod.Patch, url)));\n };\n /**\n * Performs a request with `head` http method.\n */\n Http.prototype.head = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Head, url)));\n };\n /**\n * Performs a request with `options` http method.\n */\n Http.prototype.options = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Options, url)));\n };\n Http = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [ConnectionBackend, RequestOptions])\n ], Http);\n return Http;\n }());\n /**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Jsonp = /** @class */ (function (_super) {\n __extends(Jsonp, _super);\n function Jsonp(backend, defaultOptions) {\n return _super.call(this, backend, defaultOptions) || this;\n }\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n Jsonp.prototype.request = function (url, options) {\n var responseObservable;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Get, url));\n }\n if (url instanceof Request) {\n if (url.method !== exports.RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n }\n else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n };\n Jsonp = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [ConnectionBackend, RequestOptions])\n ], Jsonp);\n return Jsonp;\n }(Http));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n }\n function httpFactory(xhrBackend, requestOptions) {\n return new Http(xhrBackend, requestOptions);\n }\n function jsonpFactory(jsonpBackend, requestOptions) {\n return new Jsonp(jsonpBackend, requestOptions);\n }\n /**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var HttpModule = /** @class */ (function () {\n function HttpModule() {\n }\n HttpModule = __decorate([\n core.NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n { provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions] },\n BrowserXhr,\n { provide: RequestOptions, useClass: BaseRequestOptions },\n { provide: ResponseOptions, useClass: BaseResponseOptions },\n XHRBackend,\n { provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy },\n ],\n })\n ], HttpModule);\n return HttpModule;\n }());\n /**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var JsonpModule = /** @class */ (function () {\n function JsonpModule() {\n }\n JsonpModule = __decorate([\n core.NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n { provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions] },\n BrowserJsonp,\n { provide: RequestOptions, useClass: BaseRequestOptions },\n { provide: ResponseOptions, useClass: BaseResponseOptions },\n JSONPBackend,\n ],\n })\n ], JsonpModule);\n return JsonpModule;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var VERSION = new core.Version('7.2.7');\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n // This file only reexports content of the `src` folder. Keep it that way.\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.ɵangular_packages_http_http_e = BrowserJsonp;\n exports.ɵangular_packages_http_http_f = Body;\n exports.ɵangular_packages_http_http_a = _createDefaultCookieXSRFStrategy;\n exports.ɵangular_packages_http_http_b = httpFactory;\n exports.ɵangular_packages_http_http_c = jsonpFactory;\n exports.BrowserXhr = BrowserXhr;\n exports.JSONPBackend = JSONPBackend;\n exports.JSONPConnection = JSONPConnection;\n exports.CookieXSRFStrategy = CookieXSRFStrategy;\n exports.XHRBackend = XHRBackend;\n exports.XHRConnection = XHRConnection;\n exports.BaseRequestOptions = BaseRequestOptions;\n exports.RequestOptions = RequestOptions;\n exports.BaseResponseOptions = BaseResponseOptions;\n exports.ResponseOptions = ResponseOptions;\n exports.Headers = Headers;\n exports.Http = Http;\n exports.Jsonp = Jsonp;\n exports.HttpModule = HttpModule;\n exports.JsonpModule = JsonpModule;\n exports.Connection = Connection;\n exports.ConnectionBackend = ConnectionBackend;\n exports.XSRFStrategy = XSRFStrategy;\n exports.Request = Request;\n exports.Response = Response;\n exports.QueryEncoder = QueryEncoder;\n exports.URLSearchParams = URLSearchParams;\n exports.VERSION = VERSION;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=http.umd.js.map\n"]}
\ No newline at end of file
+{"version":3,"sources":["packages/http/http.umd.js"],"names":["global","factory","exports","module","require","define","amd","self","ng","http","core","rxjs","platformBrowser","this","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","__read","o","n","m","Symbol","iterator","e","call","ar","next","done","push","value","error","RequestMethod","ReadyState","ResponseType","ContentType","ResponseContentType","BrowserXhr","build","XMLHttpRequest","Injectable","Headers","headers","_this","_headers","Map","_normalizedNames","forEach","values","name","append","keys","isArray","delete","fromResponseHeaderString","headersString","split","line","index","indexOf","name_1","slice","trim","set","getAll","lcName","toLowerCase","fn","get","has","from","join","mayBeSetNormalizedName","toJSON","serialized","v","apply","__spread","concat","entries","Error","ResponseOptions","opts","body","status","statusText","type","url","merge","options","BaseResponseOptions","_super","Default","ConnectionBackend","Connection","XSRFStrategy","normalizeMethodName","method","toUpperCase","Get","Post","Put","Delete","Options","Head","Patch","isSuccess","QueryEncoder","encodeKey","standardEncoding","encodeValue","encodeURIComponent","replace","URLSearchParams","rawParams","queryEncoder","paramsMap","paramParser","map","param","eqIdx","_a","val","list","clone","appendAll","storedParam","setAll","searchParams","replaceAll","toString","paramsList","k","Body","json","_body","JSON","parse","ArrayBuffer","text","encodingHint","String","fromCharCode","Uint16Array","Uint8Array","stringify","arrayBuffer","stringToArrayBuffer","input","view","strLen","charCodeAt","buffer","blob","Blob","Response","responseOptions","ok","_nextRequestId","JSONP_HOME","_jsonpConnections","_getJsonpConnections","w","window","BrowserJsonp","node","document","createElement","src","nextRequestID","requestCallback","id","exposeConnection","connection","removeConnection","send","appendChild","cleanup","parentNode","removeChild","JSONP_ERR_NO_CALLBACK","JSONP_ERR_WRONG_METHOD","JSONPConnection","req","_dom","baseResponseOptions","_finished","TypeError","request","response","Observable","responseObserver","readyState","Loading","_id","callback","lastIndexOf","substring","script","_script","onLoad","event","Cancelled","Done","responseOptions_1","_responseData","complete","onError","message","addEventListener","removeEventListener","finished","data","JSONPBackend","_browserJSONP","_baseResponseOptions","createConnection","XSSI_PREFIX","XHRConnection","browserXHR","_xhr","open","withCredentials","responseText","getAllResponseHeaders","getResponseURL","xhr","responseURL","test","getResponseHeader","err","setDetectedContentType","setRequestHeader","responseType","Json","Text","getBody","abort","contentType","NONE","FORM","TEXT","BLOB","CookieXSRFStrategy","_cookieName","_headerName","configureRequest","xsrfToken","ɵgetDOM","getCookie","XHRBackend","_browserXHR","_xsrfStrategy","RequestOptions","search","params","_mergeSearchParams","enumerable","configurable","_parseParams","objParams","item","_appendParam","BaseRequestOptions","Request","requestOptions","paramsArg","urlEncodeParams","element","prefix","detectContentType","FORM_DATA","ArrayBuffer$1","ARRAY_BUFFER","detectContentTypeFromBody","FormData","Blob$1","noop","httpRequest","backend","mergeOptions","defaultOpts","providedOpts","Http","_backend","_defaultOptions","responseObservable","post","put","patch","head","Jsonp","defaultOptions","_createDefaultCookieXSRFStrategy","httpFactory","xhrBackend","jsonpFactory","jsonpBackend","HttpModule","NgModule","providers","provide","useFactory","deps","useClass","JsonpModule","VERSION","Version","ɵangular_packages_http_http_e","ɵangular_packages_http_http_f","ɵangular_packages_http_http_a","ɵangular_packages_http_http_b","ɵangular_packages_http_http_c"],"mappings":"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","sourcesContent":["/**\n * @license Angular v7.2.8\n * (c) 2010-2019 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@angular/platform-browser')) :\n typeof define === 'function' && define.amd ? define('@angular/http', ['exports', '@angular/core', 'rxjs', '@angular/platform-browser'], factory) :\n (global = global || self, factory((global.ng = global.ng || {}, global.ng.http = {}), global.ng.core, global.rxjs, global.ng.platformBrowser));\n}(this, function (exports, core, rxjs, platformBrowser) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n }\r\n\r\n function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n }\r\n\r\n function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n }\r\n\r\n function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n }\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var BrowserXhr = /** @class */ (function () {\n function BrowserXhr() {\n }\n BrowserXhr.prototype.build = function () { return (new XMLHttpRequest()); };\n BrowserXhr = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], BrowserXhr);\n return BrowserXhr;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n (function (RequestMethod) {\n RequestMethod[RequestMethod[\"Get\"] = 0] = \"Get\";\n RequestMethod[RequestMethod[\"Post\"] = 1] = \"Post\";\n RequestMethod[RequestMethod[\"Put\"] = 2] = \"Put\";\n RequestMethod[RequestMethod[\"Delete\"] = 3] = \"Delete\";\n RequestMethod[RequestMethod[\"Options\"] = 4] = \"Options\";\n RequestMethod[RequestMethod[\"Head\"] = 5] = \"Head\";\n RequestMethod[RequestMethod[\"Patch\"] = 6] = \"Patch\";\n })(exports.RequestMethod || (exports.RequestMethod = {}));\n (function (ReadyState) {\n ReadyState[ReadyState[\"Unsent\"] = 0] = \"Unsent\";\n ReadyState[ReadyState[\"Open\"] = 1] = \"Open\";\n ReadyState[ReadyState[\"HeadersReceived\"] = 2] = \"HeadersReceived\";\n ReadyState[ReadyState[\"Loading\"] = 3] = \"Loading\";\n ReadyState[ReadyState[\"Done\"] = 4] = \"Done\";\n ReadyState[ReadyState[\"Cancelled\"] = 5] = \"Cancelled\";\n })(exports.ReadyState || (exports.ReadyState = {}));\n (function (ResponseType) {\n ResponseType[ResponseType[\"Basic\"] = 0] = \"Basic\";\n ResponseType[ResponseType[\"Cors\"] = 1] = \"Cors\";\n ResponseType[ResponseType[\"Default\"] = 2] = \"Default\";\n ResponseType[ResponseType[\"Error\"] = 3] = \"Error\";\n ResponseType[ResponseType[\"Opaque\"] = 4] = \"Opaque\";\n })(exports.ResponseType || (exports.ResponseType = {}));\n /**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\n var ContentType;\n (function (ContentType) {\n ContentType[ContentType[\"NONE\"] = 0] = \"NONE\";\n ContentType[ContentType[\"JSON\"] = 1] = \"JSON\";\n ContentType[ContentType[\"FORM\"] = 2] = \"FORM\";\n ContentType[ContentType[\"FORM_DATA\"] = 3] = \"FORM_DATA\";\n ContentType[ContentType[\"TEXT\"] = 4] = \"TEXT\";\n ContentType[ContentType[\"BLOB\"] = 5] = \"BLOB\";\n ContentType[ContentType[\"ARRAY_BUFFER\"] = 6] = \"ARRAY_BUFFER\";\n })(ContentType || (ContentType = {}));\n (function (ResponseContentType) {\n ResponseContentType[ResponseContentType[\"Text\"] = 0] = \"Text\";\n ResponseContentType[ResponseContentType[\"Json\"] = 1] = \"Json\";\n ResponseContentType[ResponseContentType[\"ArrayBuffer\"] = 2] = \"ArrayBuffer\";\n ResponseContentType[ResponseContentType[\"Blob\"] = 3] = \"Blob\";\n })(exports.ResponseContentType || (exports.ResponseContentType = {}));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Headers = /** @class */ (function () {\n // TODO(vicb): any -> string|string[]\n function Headers(headers) {\n var _this = this;\n /** @internal header names are lower case */\n this._headers = new Map();\n /** @internal map lower case names to actual names */\n this._normalizedNames = new Map();\n if (!headers) {\n return;\n }\n if (headers instanceof Headers) {\n headers.forEach(function (values, name) {\n values.forEach(function (value) { return _this.append(name, value); });\n });\n return;\n }\n Object.keys(headers).forEach(function (name) {\n var values = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n _this.delete(name);\n values.forEach(function (value) { return _this.append(name, value); });\n });\n }\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n Headers.fromResponseHeaderString = function (headersString) {\n var headers = new Headers();\n headersString.split('\\n').forEach(function (line) {\n var index = line.indexOf(':');\n if (index > 0) {\n var name_1 = line.slice(0, index);\n var value = line.slice(index + 1).trim();\n headers.set(name_1, value);\n }\n });\n return headers;\n };\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n Headers.prototype.append = function (name, value) {\n var values = this.getAll(name);\n if (values === null) {\n this.set(name, value);\n }\n else {\n values.push(value);\n }\n };\n /**\n * Deletes all header values for the given name.\n */\n Headers.prototype.delete = function (name) {\n var lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n };\n Headers.prototype.forEach = function (fn) {\n var _this = this;\n this._headers.forEach(function (values, lcName) { return fn(values, _this._normalizedNames.get(lcName), _this._headers); });\n };\n /**\n * Returns first header that matches given name.\n */\n Headers.prototype.get = function (name) {\n var values = this.getAll(name);\n if (values === null) {\n return null;\n }\n return values.length > 0 ? values[0] : null;\n };\n /**\n * Checks for existence of header by given name.\n */\n Headers.prototype.has = function (name) { return this._headers.has(name.toLowerCase()); };\n /**\n * Returns the names of the headers\n */\n Headers.prototype.keys = function () { return Array.from(this._normalizedNames.values()); };\n /**\n * Sets or overrides header value for given name.\n */\n Headers.prototype.set = function (name, value) {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n }\n else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n };\n /**\n * Returns values of all headers.\n */\n Headers.prototype.values = function () { return Array.from(this._headers.values()); };\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n Headers.prototype.toJSON = function () {\n var _this = this;\n var serialized = {};\n this._headers.forEach(function (values, name) {\n var split = [];\n values.forEach(function (v) { return split.push.apply(split, __spread(v.split(','))); });\n serialized[_this._normalizedNames.get(name)] = split;\n });\n return serialized;\n };\n /**\n * Returns list of header values for a given name.\n */\n Headers.prototype.getAll = function (name) {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n };\n /**\n * This method is not implemented.\n */\n Headers.prototype.entries = function () { throw new Error('\"entries\" method is not implemented on Headers class'); };\n Headers.prototype.mayBeSetNormalizedName = function (name) {\n var lcName = name.toLowerCase();\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n };\n return Headers;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var ResponseOptions = /** @class */ (function () {\n function ResponseOptions(opts) {\n if (opts === void 0) { opts = {}; }\n var body = opts.body, status = opts.status, headers = opts.headers, statusText = opts.statusText, type = opts.type, url = opts.url;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n ResponseOptions.prototype.merge = function (options) {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n };\n return ResponseOptions;\n }());\n /**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var BaseResponseOptions = /** @class */ (function (_super) {\n __extends(BaseResponseOptions, _super);\n function BaseResponseOptions() {\n return _super.call(this, { status: 200, statusText: 'Ok', type: exports.ResponseType.Default, headers: new Headers() }) || this;\n }\n BaseResponseOptions = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], BaseResponseOptions);\n return BaseResponseOptions;\n }(ResponseOptions));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var ConnectionBackend = /** @class */ (function () {\n function ConnectionBackend() {\n }\n return ConnectionBackend;\n }());\n /**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Connection = /** @class */ (function () {\n function Connection() {\n }\n return Connection;\n }());\n /**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var XSRFStrategy = /** @class */ (function () {\n function XSRFStrategy() {\n }\n return XSRFStrategy;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function normalizeMethodName(method) {\n if (typeof method !== 'string')\n return method;\n switch (method.toUpperCase()) {\n case 'GET':\n return exports.RequestMethod.Get;\n case 'POST':\n return exports.RequestMethod.Post;\n case 'PUT':\n return exports.RequestMethod.Put;\n case 'DELETE':\n return exports.RequestMethod.Delete;\n case 'OPTIONS':\n return exports.RequestMethod.Options;\n case 'HEAD':\n return exports.RequestMethod.Head;\n case 'PATCH':\n return exports.RequestMethod.Patch;\n }\n throw new Error(\"Invalid request method. The method \\\"\" + method + \"\\\" is not supported.\");\n }\n var isSuccess = function (status) { return (status >= 200 && status < 300); };\n function getResponseURL(xhr) {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n }\n function stringToArrayBuffer(input) {\n var view = new Uint16Array(input.length);\n for (var i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n }\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function paramParser(rawParams) {\n if (rawParams === void 0) { rawParams = ''; }\n var map = new Map();\n if (rawParams.length > 0) {\n var params = rawParams.split('&');\n params.forEach(function (param) {\n var eqIdx = param.indexOf('=');\n var _a = __read(eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)], 2), key = _a[0], val = _a[1];\n var list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n }\n /**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\n var QueryEncoder = /** @class */ (function () {\n function QueryEncoder() {\n }\n QueryEncoder.prototype.encodeKey = function (key) { return standardEncoding(key); };\n QueryEncoder.prototype.encodeValue = function (value) { return standardEncoding(value); };\n return QueryEncoder;\n }());\n function standardEncoding(v) {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n }\n /**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var URLSearchParams = /** @class */ (function () {\n function URLSearchParams(rawParams, queryEncoder) {\n if (rawParams === void 0) { rawParams = ''; }\n if (queryEncoder === void 0) { queryEncoder = new QueryEncoder(); }\n this.rawParams = rawParams;\n this.queryEncoder = queryEncoder;\n this.paramsMap = paramParser(rawParams);\n }\n URLSearchParams.prototype.clone = function () {\n var clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n };\n URLSearchParams.prototype.has = function (param) { return this.paramsMap.has(param); };\n URLSearchParams.prototype.get = function (param) {\n var storedParam = this.paramsMap.get(param);\n return Array.isArray(storedParam) ? storedParam[0] : null;\n };\n URLSearchParams.prototype.getAll = function (param) { return this.paramsMap.get(param) || []; };\n URLSearchParams.prototype.set = function (param, val) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n var list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n };\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n URLSearchParams.prototype.setAll = function (searchParams) {\n var _this = this;\n searchParams.paramsMap.forEach(function (value, param) {\n var list = _this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n _this.paramsMap.set(param, list);\n });\n };\n URLSearchParams.prototype.append = function (param, val) {\n if (val === void 0 || val === null)\n return;\n var list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n };\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n URLSearchParams.prototype.appendAll = function (searchParams) {\n var _this = this;\n searchParams.paramsMap.forEach(function (value, param) {\n var list = _this.paramsMap.get(param) || [];\n for (var i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n _this.paramsMap.set(param, list);\n });\n };\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n URLSearchParams.prototype.replaceAll = function (searchParams) {\n var _this = this;\n searchParams.paramsMap.forEach(function (value, param) {\n var list = _this.paramsMap.get(param) || [];\n list.length = 0;\n for (var i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n _this.paramsMap.set(param, list);\n });\n };\n URLSearchParams.prototype.toString = function () {\n var _this = this;\n var paramsList = [];\n this.paramsMap.forEach(function (values, k) {\n values.forEach(function (v) { return paramsList.push(_this.queryEncoder.encodeKey(k) + '=' + _this.queryEncoder.encodeValue(v)); });\n });\n return paramsList.join('&');\n };\n URLSearchParams.prototype.delete = function (param) { this.paramsMap.delete(param); };\n return URLSearchParams;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\n var Body = /** @class */ (function () {\n function Body() {\n }\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n Body.prototype.json = function () {\n if (typeof this._body === 'string') {\n return JSON.parse(this._body);\n }\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n return this._body;\n };\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n Body.prototype.text = function (encodingHint) {\n if (encodingHint === void 0) { encodingHint = 'legacy'; }\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body));\n default:\n throw new Error(\"Invalid value for encodingHint: \" + encodingHint);\n }\n }\n if (this._body == null) {\n return '';\n }\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n return this._body.toString();\n };\n /**\n * Return the body as an ArrayBuffer\n */\n Body.prototype.arrayBuffer = function () {\n if (this._body instanceof ArrayBuffer) {\n return this._body;\n }\n return stringToArrayBuffer(this.text());\n };\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n Body.prototype.blob = function () {\n if (this._body instanceof Blob) {\n return this._body;\n }\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n };\n return Body;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Response = /** @class */ (function (_super) {\n __extends(Response, _super);\n function Response(responseOptions) {\n var _this = _super.call(this) || this;\n _this._body = responseOptions.body;\n _this.status = responseOptions.status;\n _this.ok = (_this.status >= 200 && _this.status <= 299);\n _this.statusText = responseOptions.statusText;\n _this.headers = responseOptions.headers;\n _this.type = responseOptions.type;\n _this.url = responseOptions.url;\n return _this;\n }\n Response.prototype.toString = function () {\n return \"Response with status: \" + this.status + \" \" + this.statusText + \" for URL: \" + this.url;\n };\n return Response;\n }(Body));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var _nextRequestId = 0;\n var JSONP_HOME = '__ng_jsonp__';\n var _jsonpConnections = null;\n function _getJsonpConnections() {\n var w = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n }\n // Make sure not to evaluate this in a non-browser environment!\n var BrowserJsonp = /** @class */ (function () {\n function BrowserJsonp() {\n }\n // Construct a <script> element with the specified URL\n BrowserJsonp.prototype.build = function (url) {\n var node = document.createElement('script');\n node.src = url;\n return node;\n };\n BrowserJsonp.prototype.nextRequestID = function () { return \"__req\" + _nextRequestId++; };\n BrowserJsonp.prototype.requestCallback = function (id) { return JSONP_HOME + \".\" + id + \".finished\"; };\n BrowserJsonp.prototype.exposeConnection = function (id, connection) {\n var connections = _getJsonpConnections();\n connections[id] = connection;\n };\n BrowserJsonp.prototype.removeConnection = function (id) {\n var connections = _getJsonpConnections();\n connections[id] = null;\n };\n // Attach the <script> element to the DOM\n BrowserJsonp.prototype.send = function (node) { document.body.appendChild((node)); };\n // Remove <script> element from the DOM\n BrowserJsonp.prototype.cleanup = function (node) {\n if (node.parentNode) {\n node.parentNode.removeChild((node));\n }\n };\n BrowserJsonp = __decorate([\n core.Injectable()\n ], BrowserJsonp);\n return BrowserJsonp;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n var JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n /**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var JSONPConnection = /** @class */ (function () {\n /** @internal */\n function JSONPConnection(req, _dom, baseResponseOptions) {\n var _this = this;\n this._dom = _dom;\n this.baseResponseOptions = baseResponseOptions;\n this._finished = false;\n if (req.method !== exports.RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new rxjs.Observable(function (responseObserver) {\n _this.readyState = exports.ReadyState.Loading;\n var id = _this._id = _dom.nextRequestID();\n _dom.exposeConnection(id, _this);\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n var callback = _dom.requestCallback(_this._id);\n var url = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', \"=\" + callback + \"&\");\n }\n else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + (\"=\" + callback);\n }\n var script = _this._script = _dom.build(url);\n var onLoad = function (event) {\n if (_this.readyState === exports.ReadyState.Cancelled)\n return;\n _this.readyState = exports.ReadyState.Done;\n _dom.cleanup(script);\n if (!_this._finished) {\n var responseOptions_1 = new ResponseOptions({ body: JSONP_ERR_NO_CALLBACK, type: exports.ResponseType.Error, url: url });\n if (baseResponseOptions) {\n responseOptions_1 = baseResponseOptions.merge(responseOptions_1);\n }\n responseObserver.error(new Response(responseOptions_1));\n return;\n }\n var responseOptions = new ResponseOptions({ body: _this._responseData, url: url });\n if (_this.baseResponseOptions) {\n responseOptions = _this.baseResponseOptions.merge(responseOptions);\n }\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n var onError = function (error) {\n if (_this.readyState === exports.ReadyState.Cancelled)\n return;\n _this.readyState = exports.ReadyState.Done;\n _dom.cleanup(script);\n var responseOptions = new ResponseOptions({ body: error.message, type: exports.ResponseType.Error });\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n _dom.send(script);\n return function () {\n _this.readyState = exports.ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n _this._dom.cleanup(script);\n };\n });\n }\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n JSONPConnection.prototype.finished = function (data) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === exports.ReadyState.Cancelled)\n return;\n this._responseData = data;\n };\n return JSONPConnection;\n }());\n /**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var JSONPBackend = /** @class */ (function (_super) {\n __extends(JSONPBackend, _super);\n /** @internal */\n function JSONPBackend(_browserJSONP, _baseResponseOptions) {\n var _this = _super.call(this) || this;\n _this._browserJSONP = _browserJSONP;\n _this._baseResponseOptions = _baseResponseOptions;\n return _this;\n }\n JSONPBackend.prototype.createConnection = function (request) {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n };\n JSONPBackend = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [BrowserJsonp, ResponseOptions])\n ], JSONPBackend);\n return JSONPBackend;\n }(ConnectionBackend));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n var XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n /**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var XHRConnection = /** @class */ (function () {\n function XHRConnection(req, browserXHR, baseResponseOptions) {\n var _this = this;\n this.request = req;\n this.response = new rxjs.Observable(function (responseObserver) {\n var _xhr = browserXHR.build();\n _xhr.open(exports.RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n var onLoad = function () {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n var status = _xhr.status === 1223 ? 204 : _xhr.status;\n var body = null;\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n var headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n var url = getResponseURL(_xhr) || req.url;\n var statusText = _xhr.statusText || 'OK';\n var responseOptions = new ResponseOptions({ body: body, status: status, headers: headers, statusText: statusText, url: url });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n var response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n var onError = function (err) {\n var responseOptions = new ResponseOptions({\n body: err,\n type: exports.ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n _this.setDetectedContentType(req, _xhr);\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach(function (values, name) { return _xhr.setRequestHeader(name, values.join(',')); });\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case exports.ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case exports.ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case exports.ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case exports.ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n _xhr.send(_this.request.getBody());\n return function () {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n XHRConnection.prototype.setDetectedContentType = function (req /** TODO Request */, _xhr /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n var blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n };\n return XHRConnection;\n }());\n /**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var CookieXSRFStrategy = /** @class */ (function () {\n function CookieXSRFStrategy(_cookieName, _headerName) {\n if (_cookieName === void 0) { _cookieName = 'XSRF-TOKEN'; }\n if (_headerName === void 0) { _headerName = 'X-XSRF-TOKEN'; }\n this._cookieName = _cookieName;\n this._headerName = _headerName;\n }\n CookieXSRFStrategy.prototype.configureRequest = function (req) {\n var xsrfToken = platformBrowser.ɵgetDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n };\n return CookieXSRFStrategy;\n }());\n /**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var XHRBackend = /** @class */ (function () {\n function XHRBackend(_browserXHR, _baseResponseOptions, _xsrfStrategy) {\n this._browserXHR = _browserXHR;\n this._baseResponseOptions = _baseResponseOptions;\n this._xsrfStrategy = _xsrfStrategy;\n }\n XHRBackend.prototype.createConnection = function (request) {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n };\n XHRBackend = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [BrowserXhr, ResponseOptions,\n XSRFStrategy])\n ], XHRBackend);\n return XHRBackend;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var RequestOptions = /** @class */ (function () {\n // TODO(Dzmitry): remove search when this.search is removed\n function RequestOptions(opts) {\n if (opts === void 0) { opts = {}; }\n var method = opts.method, headers = opts.headers, body = opts.body, url = opts.url, search = opts.search, params = opts.params, withCredentials = opts.withCredentials, responseType = opts.responseType;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n Object.defineProperty(RequestOptions.prototype, \"search\", {\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get: function () { return this.params; },\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set: function (params) { this.params = params; },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n RequestOptions.prototype.merge = function (options) {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n };\n RequestOptions.prototype._mergeSearchParams = function (params) {\n if (!params)\n return this.params;\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n return this._parseParams(params);\n };\n RequestOptions.prototype._parseParams = function (objParams) {\n var _this = this;\n if (objParams === void 0) { objParams = {}; }\n var params = new URLSearchParams();\n Object.keys(objParams).forEach(function (key) {\n var value = objParams[key];\n if (Array.isArray(value)) {\n value.forEach(function (item) { return _this._appendParam(key, item, params); });\n }\n else {\n _this._appendParam(key, value, params);\n }\n });\n return params;\n };\n RequestOptions.prototype._appendParam = function (key, value, params) {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n };\n return RequestOptions;\n }());\n /**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var BaseRequestOptions = /** @class */ (function (_super) {\n __extends(BaseRequestOptions, _super);\n function BaseRequestOptions() {\n return _super.call(this, { method: exports.RequestMethod.Get, headers: new Headers() }) || this;\n }\n BaseRequestOptions = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [])\n ], BaseRequestOptions);\n return BaseRequestOptions;\n }(RequestOptions));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n // TODO(jeffbcross): properly implement body accessors\n /**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Request = /** @class */ (function (_super) {\n __extends(Request, _super);\n function Request(requestOptions) {\n var _this = _super.call(this) || this;\n // TODO: assert that url is present\n var url = requestOptions.url;\n _this.url = requestOptions.url;\n var paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n var params = void 0;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n }\n else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n var prefix = '?';\n if (_this.url.indexOf('?') != -1) {\n prefix = (_this.url[_this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n _this.url = url + prefix + params;\n }\n }\n _this._body = requestOptions.body;\n _this.method = normalizeMethodName(requestOptions.method);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n _this.headers = new Headers(requestOptions.headers);\n _this.contentType = _this.detectContentType();\n _this.withCredentials = requestOptions.withCredentials;\n _this.responseType = requestOptions.responseType;\n return _this;\n }\n /**\n * Returns the content type enum based on header options.\n */\n Request.prototype.detectContentType = function () {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer$1 ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n };\n /**\n * Returns the content type of request's body based on its type.\n */\n Request.prototype.detectContentTypeFromBody = function () {\n if (this._body == null) {\n return ContentType.NONE;\n }\n else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n }\n else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n }\n else if (this._body instanceof Blob$1) {\n return ContentType.BLOB;\n }\n else if (this._body instanceof ArrayBuffer$1) {\n return ContentType.ARRAY_BUFFER;\n }\n else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n }\n else {\n return ContentType.TEXT;\n }\n };\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n Request.prototype.getBody = function () {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n };\n return Request;\n }(Body));\n function urlEncodeParams(params) {\n var searchParams = new URLSearchParams();\n Object.keys(params).forEach(function (key) {\n var value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(function (element) { return searchParams.append(key, element.toString()); });\n }\n else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n }\n var noop = function () { };\n var w = typeof window == 'object' ? window : noop;\n var FormData = w /** TODO #9100 */['FormData'] || noop;\n var Blob$1 = w /** TODO #9100 */['Blob'] || noop;\n var ArrayBuffer$1 = w /** TODO #9100 */['ArrayBuffer'] || noop;\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function httpRequest(backend, request) {\n return backend.createConnection(request).response;\n }\n function mergeOptions(defaultOpts, providedOpts, method, url) {\n var newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n }));\n }\n return newOptions.merge(new RequestOptions({ method: method, url: url }));\n }\n /**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Http = /** @class */ (function () {\n function Http(_backend, _defaultOptions) {\n this._backend = _backend;\n this._defaultOptions = _defaultOptions;\n }\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n Http.prototype.request = function (url, options) {\n var responseObservable;\n if (typeof url === 'string') {\n responseObservable = httpRequest(this._backend, new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Get, url)));\n }\n else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n }\n else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n };\n /**\n * Performs a request with `get` http method.\n */\n Http.prototype.get = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Get, url)));\n };\n /**\n * Performs a request with `post` http method.\n */\n Http.prototype.post = function (url, body, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions.merge(new RequestOptions({ body: body })), options, exports.RequestMethod.Post, url)));\n };\n /**\n * Performs a request with `put` http method.\n */\n Http.prototype.put = function (url, body, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions.merge(new RequestOptions({ body: body })), options, exports.RequestMethod.Put, url)));\n };\n /**\n * Performs a request with `delete` http method.\n */\n Http.prototype.delete = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Delete, url)));\n };\n /**\n * Performs a request with `patch` http method.\n */\n Http.prototype.patch = function (url, body, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions.merge(new RequestOptions({ body: body })), options, exports.RequestMethod.Patch, url)));\n };\n /**\n * Performs a request with `head` http method.\n */\n Http.prototype.head = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Head, url)));\n };\n /**\n * Performs a request with `options` http method.\n */\n Http.prototype.options = function (url, options) {\n return this.request(new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Options, url)));\n };\n Http = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [ConnectionBackend, RequestOptions])\n ], Http);\n return Http;\n }());\n /**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var Jsonp = /** @class */ (function (_super) {\n __extends(Jsonp, _super);\n function Jsonp(backend, defaultOptions) {\n return _super.call(this, backend, defaultOptions) || this;\n }\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n Jsonp.prototype.request = function (url, options) {\n var responseObservable;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, exports.RequestMethod.Get, url));\n }\n if (url instanceof Request) {\n if (url.method !== exports.RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n }\n else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n };\n Jsonp = __decorate([\n core.Injectable(),\n __metadata(\"design:paramtypes\", [ConnectionBackend, RequestOptions])\n ], Jsonp);\n return Jsonp;\n }(Http));\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n }\n function httpFactory(xhrBackend, requestOptions) {\n return new Http(xhrBackend, requestOptions);\n }\n function jsonpFactory(jsonpBackend, requestOptions) {\n return new Jsonp(jsonpBackend, requestOptions);\n }\n /**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var HttpModule = /** @class */ (function () {\n function HttpModule() {\n }\n HttpModule = __decorate([\n core.NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n { provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions] },\n BrowserXhr,\n { provide: RequestOptions, useClass: BaseRequestOptions },\n { provide: ResponseOptions, useClass: BaseResponseOptions },\n XHRBackend,\n { provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy },\n ],\n })\n ], HttpModule);\n return HttpModule;\n }());\n /**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var JsonpModule = /** @class */ (function () {\n function JsonpModule() {\n }\n JsonpModule = __decorate([\n core.NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n { provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions] },\n BrowserJsonp,\n { provide: RequestOptions, useClass: BaseRequestOptions },\n { provide: ResponseOptions, useClass: BaseResponseOptions },\n JSONPBackend,\n ],\n })\n ], JsonpModule);\n return JsonpModule;\n }());\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n /**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n var VERSION = new core.Version('7.2.8');\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n // This file only reexports content of the `src` folder. Keep it that way.\n\n /**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * Generated bundle index. Do not edit.\n */\n\n exports.ɵangular_packages_http_http_e = BrowserJsonp;\n exports.ɵangular_packages_http_http_f = Body;\n exports.ɵangular_packages_http_http_a = _createDefaultCookieXSRFStrategy;\n exports.ɵangular_packages_http_http_b = httpFactory;\n exports.ɵangular_packages_http_http_c = jsonpFactory;\n exports.BrowserXhr = BrowserXhr;\n exports.JSONPBackend = JSONPBackend;\n exports.JSONPConnection = JSONPConnection;\n exports.CookieXSRFStrategy = CookieXSRFStrategy;\n exports.XHRBackend = XHRBackend;\n exports.XHRConnection = XHRConnection;\n exports.BaseRequestOptions = BaseRequestOptions;\n exports.RequestOptions = RequestOptions;\n exports.BaseResponseOptions = BaseResponseOptions;\n exports.ResponseOptions = ResponseOptions;\n exports.Headers = Headers;\n exports.Http = Http;\n exports.Jsonp = Jsonp;\n exports.HttpModule = HttpModule;\n exports.JsonpModule = JsonpModule;\n exports.Connection = Connection;\n exports.ConnectionBackend = ConnectionBackend;\n exports.XSRFStrategy = XSRFStrategy;\n exports.Request = Request;\n exports.Response = Response;\n exports.QueryEncoder = QueryEncoder;\n exports.URLSearchParams = URLSearchParams;\n exports.VERSION = VERSION;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=http.umd.js.map\n"]}
\ No newline at end of file

esm2015/src/version.js

@@ -20,5 +20,5 @@
* \@publicApi
* @type {?}
*/
-export const VERSION = new Version('7.2.7');
+export const VERSION = new Version('7.2.8');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2h0dHAvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUt0QyxNQUFNLE9BQU8sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBtb2R1bGVcbiAqIEBkZXNjcmlwdGlvblxuICogRW50cnkgcG9pbnQgZm9yIGFsbCBwdWJsaWMgQVBJcyBvZiB0aGUgY29tbW9uIHBhY2thZ2UuXG4gKi9cblxuaW1wb3J0IHtWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qKlxuICogQGRlcHJlY2F0ZWQgc2VlIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9odHRwXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzAuMC4wLVBMQUNFSE9MREVSJyk7XG4iXX0=
\ No newline at end of file

esm5/src/version.js

@@ -15,5 +15,5 @@
* @deprecated see https://angular.io/guide/http
* @publicApi
*/
-export var VERSION = new Version('7.2.7');
+export var VERSION = new Version('7.2.8');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2h0dHAvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUVILE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21tb24gcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2h0dHBcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
\ No newline at end of file

fesm2015/http.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/
@@ -2165,7 +2165,7 @@
* \@publicApi
* @type {?}
*/
-const VERSION = new Version('7.2.7');
+const VERSION = new Version('7.2.8');
/**
* @fileoverview added by tsickle

fesm2015/http.js.map

@@ -1 +1 @@
-{"version":3,"file":"http.js","sources":["../src/backends/browser_xhr.ts","../src/enums.ts","../src/headers.ts","../src/base_response_options.ts","../src/interfaces.ts","../src/http_utils.ts","../src/url_search_params.ts","../src/body.ts","../src/static_response.ts","../src/backends/browser_jsonp.ts","../src/backends/jsonp_backend.ts","../src/backends/xhr_backend.ts","../src/base_request_options.ts","../src/static_request.ts","../src/http.ts","../src/http_module.ts","../src/version.ts","../http.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BrowserXhr {\n constructor() {}\n build(): any { return <any>(new XMLHttpRequest()); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Supported http methods.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum RequestMethod {\n Get,\n Post,\n Put,\n Delete,\n Options,\n Head,\n Patch\n}\n\n/**\n * All possible states in which a connection can be, based on\n * [States](http://www.w3.org/TR/XMLHttpRequest/#states) from the `XMLHttpRequest` spec, but with an\n * additional \"CANCELLED\" state.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ReadyState {\n Unsent,\n Open,\n HeadersReceived,\n Loading,\n Done,\n Cancelled\n}\n\n/**\n * Acceptable response types to be associated with a {@link Response}, based on\n * [ResponseType](https://fetch.spec.whatwg.org/#responsetype) from the Fetch spec.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseType {\n Basic,\n Cors,\n Default,\n Error,\n Opaque\n}\n\n/**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\nexport enum ContentType {\n NONE,\n JSON,\n FORM,\n FORM_DATA,\n TEXT,\n BLOB,\n ARRAY_BUFFER\n}\n\n/**\n * Define which buffer to use to store the response\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseContentType {\n Text,\n Json,\n ArrayBuffer,\n Blob\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Headers {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n // TODO(vicb): any -> string|string[]\n constructor(headers?: Headers|{[name: string]: any}|null) {\n if (!headers) {\n return;\n }\n\n if (headers instanceof Headers) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n static fromResponseHeaderString(headersString: string): Headers {\n const headers = new Headers();\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete (name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string|undefined, headers: Map<string, string[]>) => void):\n void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string|null {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string|string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): {[name: string]: any} {\n const serialized: {[name: string]: string[]} = {};\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[this._normalizedNames.get(name) !] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[]|null {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n\n /**\n * This method is not implemented.\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {ResponseOptionsArgs} from './interfaces';\n\n\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class ResponseOptions {\n // TODO: FormData | Blob\n /**\n * String, Object, ArrayBuffer or Blob representing the body of the {@link Response}.\n */\n body: string|Object|ArrayBuffer|Blob|null;\n /**\n * Http {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html status code}\n * associated with the response.\n */\n status: number|null;\n /**\n * Response {@link Headers headers}\n */\n headers: Headers|null;\n /**\n * @internal\n */\n statusText: string|null;\n /**\n * @internal\n */\n type: ResponseType|null;\n url: string|null;\n constructor(opts: ResponseOptionsArgs = {}) {\n const {body, status, headers, statusText, type, url} = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n merge(options?: ResponseOptionsArgs): ResponseOptions {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n\n/**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers()});\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {Request} from './static_request';\nimport {URLSearchParams} from './url_search_params';\n\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class ConnectionBackend { abstract createConnection(request: any): Connection; }\n\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class Connection {\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n // TODO(issue/24571): remove '!'.\n request !: Request;\n response: any; // TODO: generic of <Response>;\n}\n\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class XSRFStrategy { abstract configureRequest(req: Request): void; }\n\n/**\n * Interface for options to construct a RequestOptions, based on\n * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface RequestOptionsArgs {\n url?: string|null;\n method?: string|RequestMethod|null;\n /** @deprecated from 4.0.0. Use params instead. */\n search?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n params?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n headers?: Headers|null;\n body?: any;\n withCredentials?: boolean|null;\n responseType?: ResponseContentType|null;\n}\n\n/**\n * Required structure when constructing new Request();\n */\nexport interface RequestArgs extends RequestOptionsArgs { url: string|null; }\n\n/**\n * Interface for options to construct a Response, based on\n * [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface ResponseOptionsArgs {\n body?: string|Object|FormData|ArrayBuffer|Blob|null;\n status?: number|null;\n statusText?: string|null;\n headers?: Headers|null;\n type?: ResponseType|null;\n url?: string|null;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RequestMethod} from './enums';\n\nexport function normalizeMethodName(method: string | RequestMethod): RequestMethod {\n if (typeof method !== 'string') return method;\n\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n\nexport const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport function getResponseURL(xhr: any): string|null {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\nexport function stringToArrayBuffer8(input: String): ArrayBuffer {\n const view = new Uint8Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n\nexport function stringToArrayBuffer(input: String): ArrayBuffer {\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nfunction paramParser(rawParams: string = ''): Map<string, string[]> {\n const map = new Map<string, string[]>();\n if (rawParams.length > 0) {\n const params: string[] = rawParams.split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] =\n eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\nexport class QueryEncoder {\n encodeKey(key: string): string { return standardEncoding(key); }\n\n encodeValue(value: string): string { return standardEncoding(value); }\n}\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class URLSearchParams {\n paramsMap: Map<string, string[]>;\n constructor(\n public rawParams: string = '', private queryEncoder: QueryEncoder = new QueryEncoder()) {\n this.paramsMap = paramParser(rawParams);\n }\n\n clone(): URLSearchParams {\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n\n has(param: string): boolean { return this.paramsMap.has(param); }\n\n get(param: string): string|null {\n const storedParam = this.paramsMap.get(param);\n\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n\n getAll(param: string): string[] { return this.paramsMap.get(param) || []; }\n\n set(param: string, val: string) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n setAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n\n append(param: string, val: string): void {\n if (val === void 0 || val === null) return;\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n appendAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n replaceAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n toString(): string {\n const paramsList: string[] = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(\n v => paramsList.push(\n this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n\n delete (param: string): void { this.paramsMap.delete(param); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {stringToArrayBuffer} from './http_utils';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\nexport abstract class Body {\n /**\n * @internal\n */\n protected _body: any;\n\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n json(): any {\n if (typeof this._body === 'string') {\n return JSON.parse(<string>this._body);\n }\n\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n\n return this._body;\n }\n\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body as ArrayBuffer));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body as ArrayBuffer));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n\n if (this._body == null) {\n return '';\n }\n\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n\n return this._body.toString();\n }\n\n /**\n * Return the body as an ArrayBuffer\n */\n arrayBuffer(): ArrayBuffer {\n if (this._body instanceof ArrayBuffer) {\n return <ArrayBuffer>this._body;\n }\n\n return stringToArrayBuffer(this.text());\n }\n\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n blob(): Blob {\n if (this._body instanceof Blob) {\n return <Blob>this._body;\n }\n\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {ResponseOptions} from './base_response_options';\nimport {Body} from './body';\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\n\n\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Response extends Body {\n /**\n * One of \"basic\", \"cors\", \"default\", \"error\", or \"opaque\".\n *\n * Defaults to \"default\".\n */\n type: ResponseType;\n /**\n * True if the response's status is within 200-299\n */\n ok: boolean;\n /**\n * URL of response.\n *\n * Defaults to empty string.\n */\n url: string;\n /**\n * Status code returned by server.\n *\n * Defaults to 200.\n */\n status: number;\n /**\n * Text representing the corresponding reason phrase to the `status`, as defined in [ietf rfc 2616\n * section 6.1.1](https://tools.ietf.org/html/rfc2616#section-6.1.1)\n *\n * Defaults to \"OK\"\n */\n statusText: string|null;\n /**\n * Non-standard property\n *\n * Denotes how many of the response body's bytes have been loaded, for example if the response is\n * the result of a progress event.\n */\n // TODO(issue/24571): remove '!'.\n bytesLoaded !: number;\n /**\n * Non-standard property\n *\n * Denotes how many bytes are expected in the final response body.\n */\n // TODO(issue/24571): remove '!'.\n totalBytes !: number;\n /**\n * Headers object based on the `Headers` class in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#headers-class).\n */\n headers: Headers|null;\n\n constructor(responseOptions: ResponseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = responseOptions.status !;\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = responseOptions.type !;\n this.url = responseOptions.url !;\n }\n\n toString(): string {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nlet _nextRequestId = 0;\nexport const JSONP_HOME = '__ng_jsonp__';\nlet _jsonpConnections: {[key: string]: any}|null = null;\n\nfunction _getJsonpConnections(): {[key: string]: any} {\n const w: {[key: string]: any} = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n\n// Make sure not to evaluate this in a non-browser environment!\n@Injectable()\nexport class BrowserJsonp {\n // Construct a <script> element with the specified URL\n build(url: string): any {\n const node = document.createElement('script');\n node.src = url;\n return node;\n }\n\n nextRequestID(): string { return `__req${_nextRequestId++}`; }\n\n requestCallback(id: string): string { return `${JSONP_HOME}.${id}.finished`; }\n\n exposeConnection(id: string, connection: any) {\n const connections = _getJsonpConnections();\n connections[id] = connection;\n }\n\n removeConnection(id: string) {\n const connections = _getJsonpConnections();\n connections[id] = null;\n }\n\n // Attach the <script> element to the DOM\n send(node: any) { document.body.appendChild(<Node>(node)); }\n\n // Remove <script> element from the DOM\n cleanup(node: any) {\n if (node.parentNode) {\n node.parentNode.removeChild(<Node>(node));\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {ResponseOptions} from '../base_response_options';\nimport {ReadyState, RequestMethod, ResponseType} from '../enums';\nimport {Connection, ConnectionBackend} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\n\nimport {BrowserJsonp} from './browser_jsonp';\n\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n\n/**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class JSONPConnection implements Connection {\n // TODO(issue/24571): remove '!'.\n private _id !: string;\n // TODO(issue/24571): remove '!'.\n private _script !: Element;\n private _responseData: any;\n private _finished: boolean = false;\n\n /**\n * The {@link ReadyState} of this request.\n */\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n\n /**\n * The outgoing HTTP request.\n */\n request: Request;\n\n /**\n * An observable that completes with the response, when the request is finished.\n */\n response: Observable<Response>;\n\n /** @internal */\n constructor(\n req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {\n if (req.method !== RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n\n this.readyState = ReadyState.Loading;\n const id = this._id = _dom.nextRequestID();\n\n _dom.exposeConnection(id, this);\n\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n const callback = _dom.requestCallback(this._id);\n let url: string = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', `=${callback}&`);\n } else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + `=${callback}`;\n }\n\n const script = this._script = _dom.build(url);\n\n const onLoad = (event: Event) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n if (!this._finished) {\n let responseOptions =\n new ResponseOptions({body: JSONP_ERR_NO_CALLBACK, type: ResponseType.Error, url});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n return;\n }\n\n let responseOptions = new ResponseOptions({body: this._responseData, url});\n if (this.baseResponseOptions) {\n responseOptions = this.baseResponseOptions.merge(responseOptions);\n }\n\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n\n const onError = (error: Error) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n let responseOptions = new ResponseOptions({body: error.message, type: ResponseType.Error});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n\n _dom.send(script);\n\n return () => {\n this.readyState = ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n this._dom.cleanup(script);\n };\n });\n }\n\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n finished(data?: any) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === ReadyState.Cancelled) return;\n this._responseData = data;\n }\n}\n\n/**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class JSONPBackend extends ConnectionBackend {\n /** @internal */\n constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {\n super();\n }\n\n createConnection(request: Request): JSONPConnection {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Observable, Observer} from 'rxjs';\nimport {ResponseOptions} from '../base_response_options';\nimport {ContentType, ReadyState, RequestMethod, ResponseContentType, ResponseType} from '../enums';\nimport {Headers} from '../headers';\nimport {getResponseURL, isSuccess} from '../http_utils';\nimport {Connection, ConnectionBackend, XSRFStrategy} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\nimport {BrowserXhr} from './browser_xhr';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class XHRConnection implements Connection {\n request: Request;\n /**\n * Response {@link EventEmitter} which emits a single {@link Response} value on load event of\n * `XMLHttpRequest`.\n */\n response: Observable<Response>;\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n const _xhr: XMLHttpRequest = browserXHR.build();\n _xhr.open(RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n const onLoad = () => {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n let status: number = _xhr.status === 1223 ? 204 : _xhr.status;\n\n let body: any = null;\n\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n\n const headers: Headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n const url = getResponseURL(_xhr) || req.url;\n const statusText: string = _xhr.statusText || 'OK';\n\n let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n const response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n const onError = (err: ErrorEvent) => {\n let responseOptions = new ResponseOptions({\n body: err,\n type: ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n this.setDetectedContentType(req, _xhr);\n\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach((values, name) => _xhr.setRequestHeader(name !, values.join(',')));\n\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n\n _xhr.send(this.request.getBody());\n\n return () => {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n\n setDetectedContentType(req: any /** TODO Request */, _xhr: any /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n const blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n }\n}\n\n/**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class CookieXSRFStrategy implements XSRFStrategy {\n constructor(\n private _cookieName: string = 'XSRF-TOKEN', private _headerName: string = 'X-XSRF-TOKEN') {}\n\n configureRequest(req: Request): void {\n const xsrfToken = getDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n }\n}\n\n/**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class XHRBackend implements ConnectionBackend {\n constructor(\n private _browserXHR: BrowserXhr, private _baseResponseOptions: ResponseOptions,\n private _xsrfStrategy: XSRFStrategy) {}\n\n createConnection(request: Request): XHRConnection {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestOptionsArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class RequestOptions {\n /**\n * Http method with which to execute a {@link Request}.\n * Acceptable methods are defined in the {@link RequestMethod} enum.\n */\n method: RequestMethod|string|null;\n /**\n * {@link Headers} to be attached to a {@link Request}.\n */\n headers: Headers|null;\n /**\n * Body to be used when creating a {@link Request}.\n */\n body: any;\n /**\n * Url with which to perform a {@link Request}.\n */\n url: string|null;\n /**\n * Search parameters to be included in a {@link Request}.\n */\n params: URLSearchParams;\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get search(): URLSearchParams { return this.params; }\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set search(params: URLSearchParams) { this.params = params; }\n /**\n * Enable use credentials for a {@link Request}.\n */\n withCredentials: boolean|null;\n /*\n * Select a buffer to store the response, such as ArrayBuffer, Blob, Json (or Document)\n */\n responseType: ResponseContentType|null;\n\n // TODO(Dzmitry): remove search when this.search is removed\n constructor(opts: RequestOptionsArgs = {}) {\n const {method, headers, body, url, search, params, withCredentials, responseType} = opts;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n merge(options?: RequestOptionsArgs): RequestOptions {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n }\n\n private _mergeSearchParams(params?: string|URLSearchParams|{[key: string]: any | any[]}|\n null): URLSearchParams {\n if (!params) return this.params;\n\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n\n return this._parseParams(params);\n }\n\n private _parseParams(objParams: {[key: string]: any | any[]} = {}): URLSearchParams {\n const params = new URLSearchParams();\n Object.keys(objParams).forEach((key: string) => {\n const value: any|any[] = objParams[key];\n if (Array.isArray(value)) {\n value.forEach((item: any) => this._appendParam(key, item, params));\n } else {\n this._appendParam(key, value, params);\n }\n });\n return params;\n }\n\n private _appendParam(key: string, value: any, params: URLSearchParams): void {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n }\n}\n\n/**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseRequestOptions extends RequestOptions {\n constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Body} from './body';\nimport {ContentType, RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n// TODO(jeffbcross): properly implement body accessors\n/**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Request extends Body {\n /**\n * Http method with which to perform the request.\n */\n method: RequestMethod;\n /**\n * {@link Headers} instance\n */\n headers: Headers;\n /** Url of the remote resource */\n url: string;\n /** Type of the request body **/\n private contentType: ContentType;\n /** Enable use credentials */\n withCredentials: boolean;\n /** Buffer to store the response */\n responseType: ResponseContentType;\n constructor(requestOptions: RequestArgs) {\n super();\n // TODO: assert that url is present\n const url = requestOptions.url;\n this.url = requestOptions.url !;\n const paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n let params: string;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n } else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n let prefix = '?';\n if (this.url.indexOf('?') != -1) {\n prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n this.url = url + prefix + params;\n }\n }\n this._body = requestOptions.body;\n this.method = normalizeMethodName(requestOptions.method !);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n this.headers = new Headers(requestOptions.headers);\n this.contentType = this.detectContentType();\n this.withCredentials = requestOptions.withCredentials !;\n this.responseType = requestOptions.responseType !;\n }\n\n /**\n * Returns the content type enum based on header options.\n */\n detectContentType(): ContentType {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n }\n\n /**\n * Returns the content type of request's body based on its type.\n */\n detectContentTypeFromBody(): ContentType {\n if (this._body == null) {\n return ContentType.NONE;\n } else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n } else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n } else if (this._body instanceof Blob) {\n return ContentType.BLOB;\n } else if (this._body instanceof ArrayBuffer) {\n return ContentType.ARRAY_BUFFER;\n } else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n } else {\n return ContentType.TEXT;\n }\n }\n\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n getBody(): any {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n }\n}\n\nfunction urlEncodeParams(params: {[key: string]: any}): URLSearchParams {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(element => searchParams.append(key, element.toString()));\n } else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n}\n\nconst noop = function() {};\nconst w = typeof window == 'object' ? window : noop;\nconst FormData = (w as any /** TODO #9100 */)['FormData'] || noop;\nconst Blob = (w as any /** TODO #9100 */)['Blob'] || noop;\nexport const ArrayBuffer: ArrayBufferConstructor =\n (w as any /** TODO #9100 */)['ArrayBuffer'] || noop;\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {RequestMethod} from './enums';\nimport {ConnectionBackend, RequestArgs, RequestOptionsArgs} from './interfaces';\nimport {Request} from './static_request';\nimport {Response} from './static_response';\n\nfunction httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {\n return backend.createConnection(request).response;\n}\n\nfunction mergeOptions(\n defaultOpts: BaseRequestOptions, providedOpts: RequestOptionsArgs | undefined,\n method: RequestMethod, url: string): RequestArgs {\n const newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n })) as RequestArgs;\n }\n\n return newOptions.merge(new RequestOptions({method, url})) as RequestArgs;\n}\n\n/**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Http {\n constructor(protected _backend: ConnectionBackend, protected _defaultOptions: RequestOptions) {}\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n responseObservable = httpRequest(\n this._backend,\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url)));\n } else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n\n /**\n * Performs a request with `get` http method.\n */\n get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, url)));\n }\n\n /**\n * Performs a request with `post` http method.\n */\n post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Post,\n url)));\n }\n\n /**\n * Performs a request with `put` http method.\n */\n put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Put,\n url)));\n }\n\n /**\n * Performs a request with `delete` http method.\n */\n delete (url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Delete, url)));\n }\n\n /**\n * Performs a request with `patch` http method.\n */\n patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Patch,\n url)));\n }\n\n /**\n * Performs a request with `head` http method.\n */\n head(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));\n }\n\n /**\n * Performs a request with `options` http method.\n */\n options(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));\n }\n}\n\n\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Jsonp extends Http {\n constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n super(backend, defaultOptions);\n }\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url));\n }\n if (url instanceof Request) {\n if (url.method !== RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The http module provides services to perform http requests. To get started, see the {@link Http}\n * class.\n */\nimport {NgModule} from '@angular/core';\n\nimport {BrowserJsonp} from './backends/browser_jsonp';\nimport {BrowserXhr} from './backends/browser_xhr';\nimport {JSONPBackend} from './backends/jsonp_backend';\nimport {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nimport {Http, Jsonp} from './http';\nimport {XSRFStrategy} from './interfaces';\n\n\nexport function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n}\n\nexport function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http {\n return new Http(xhrBackend, requestOptions);\n}\n\nexport function jsonpFactory(jsonpBackend: JSONPBackend, requestOptions: RequestOptions): Jsonp {\n return new Jsonp(jsonpBackend, requestOptions);\n}\n\n\n/**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n BrowserXhr,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n XHRBackend,\n {provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},\n ],\n})\nexport class HttpModule {\n}\n\n/**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions]},\n BrowserJsonp,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n JSONPBackend,\n ],\n})\nexport class JsonpModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport const VERSION = new Version('7.2.7');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BrowserJsonp as ɵangular_packages_http_http_e} from './src/backends/browser_jsonp';\nexport {Body as ɵangular_packages_http_http_f} from './src/body';\nexport {_createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a,httpFactory as ɵangular_packages_http_http_b,jsonpFactory as ɵangular_packages_http_http_c} from './src/http_module';\nexport {RequestArgs as ɵangular_packages_http_http_d} from './src/interfaces';"],"names":["getDOM","ArrayBuffer","Blob"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"http.js","sources":["../src/backends/browser_xhr.ts","../src/enums.ts","../src/headers.ts","../src/base_response_options.ts","../src/interfaces.ts","../src/http_utils.ts","../src/url_search_params.ts","../src/body.ts","../src/static_response.ts","../src/backends/browser_jsonp.ts","../src/backends/jsonp_backend.ts","../src/backends/xhr_backend.ts","../src/base_request_options.ts","../src/static_request.ts","../src/http.ts","../src/http_module.ts","../src/version.ts","../http.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BrowserXhr {\n constructor() {}\n build(): any { return <any>(new XMLHttpRequest()); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Supported http methods.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum RequestMethod {\n Get,\n Post,\n Put,\n Delete,\n Options,\n Head,\n Patch\n}\n\n/**\n * All possible states in which a connection can be, based on\n * [States](http://www.w3.org/TR/XMLHttpRequest/#states) from the `XMLHttpRequest` spec, but with an\n * additional \"CANCELLED\" state.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ReadyState {\n Unsent,\n Open,\n HeadersReceived,\n Loading,\n Done,\n Cancelled\n}\n\n/**\n * Acceptable response types to be associated with a {@link Response}, based on\n * [ResponseType](https://fetch.spec.whatwg.org/#responsetype) from the Fetch spec.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseType {\n Basic,\n Cors,\n Default,\n Error,\n Opaque\n}\n\n/**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\nexport enum ContentType {\n NONE,\n JSON,\n FORM,\n FORM_DATA,\n TEXT,\n BLOB,\n ARRAY_BUFFER\n}\n\n/**\n * Define which buffer to use to store the response\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseContentType {\n Text,\n Json,\n ArrayBuffer,\n Blob\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Headers {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n // TODO(vicb): any -> string|string[]\n constructor(headers?: Headers|{[name: string]: any}|null) {\n if (!headers) {\n return;\n }\n\n if (headers instanceof Headers) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n static fromResponseHeaderString(headersString: string): Headers {\n const headers = new Headers();\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete (name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string|undefined, headers: Map<string, string[]>) => void):\n void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string|null {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string|string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): {[name: string]: any} {\n const serialized: {[name: string]: string[]} = {};\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[this._normalizedNames.get(name) !] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[]|null {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n\n /**\n * This method is not implemented.\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {ResponseOptionsArgs} from './interfaces';\n\n\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class ResponseOptions {\n // TODO: FormData | Blob\n /**\n * String, Object, ArrayBuffer or Blob representing the body of the {@link Response}.\n */\n body: string|Object|ArrayBuffer|Blob|null;\n /**\n * Http {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html status code}\n * associated with the response.\n */\n status: number|null;\n /**\n * Response {@link Headers headers}\n */\n headers: Headers|null;\n /**\n * @internal\n */\n statusText: string|null;\n /**\n * @internal\n */\n type: ResponseType|null;\n url: string|null;\n constructor(opts: ResponseOptionsArgs = {}) {\n const {body, status, headers, statusText, type, url} = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n merge(options?: ResponseOptionsArgs): ResponseOptions {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n\n/**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers()});\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {Request} from './static_request';\nimport {URLSearchParams} from './url_search_params';\n\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class ConnectionBackend { abstract createConnection(request: any): Connection; }\n\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class Connection {\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n // TODO(issue/24571): remove '!'.\n request !: Request;\n response: any; // TODO: generic of <Response>;\n}\n\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class XSRFStrategy { abstract configureRequest(req: Request): void; }\n\n/**\n * Interface for options to construct a RequestOptions, based on\n * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface RequestOptionsArgs {\n url?: string|null;\n method?: string|RequestMethod|null;\n /** @deprecated from 4.0.0. Use params instead. */\n search?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n params?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n headers?: Headers|null;\n body?: any;\n withCredentials?: boolean|null;\n responseType?: ResponseContentType|null;\n}\n\n/**\n * Required structure when constructing new Request();\n */\nexport interface RequestArgs extends RequestOptionsArgs { url: string|null; }\n\n/**\n * Interface for options to construct a Response, based on\n * [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface ResponseOptionsArgs {\n body?: string|Object|FormData|ArrayBuffer|Blob|null;\n status?: number|null;\n statusText?: string|null;\n headers?: Headers|null;\n type?: ResponseType|null;\n url?: string|null;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RequestMethod} from './enums';\n\nexport function normalizeMethodName(method: string | RequestMethod): RequestMethod {\n if (typeof method !== 'string') return method;\n\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n\nexport const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport function getResponseURL(xhr: any): string|null {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\nexport function stringToArrayBuffer8(input: String): ArrayBuffer {\n const view = new Uint8Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n\nexport function stringToArrayBuffer(input: String): ArrayBuffer {\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nfunction paramParser(rawParams: string = ''): Map<string, string[]> {\n const map = new Map<string, string[]>();\n if (rawParams.length > 0) {\n const params: string[] = rawParams.split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] =\n eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\nexport class QueryEncoder {\n encodeKey(key: string): string { return standardEncoding(key); }\n\n encodeValue(value: string): string { return standardEncoding(value); }\n}\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class URLSearchParams {\n paramsMap: Map<string, string[]>;\n constructor(\n public rawParams: string = '', private queryEncoder: QueryEncoder = new QueryEncoder()) {\n this.paramsMap = paramParser(rawParams);\n }\n\n clone(): URLSearchParams {\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n\n has(param: string): boolean { return this.paramsMap.has(param); }\n\n get(param: string): string|null {\n const storedParam = this.paramsMap.get(param);\n\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n\n getAll(param: string): string[] { return this.paramsMap.get(param) || []; }\n\n set(param: string, val: string) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n setAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n\n append(param: string, val: string): void {\n if (val === void 0 || val === null) return;\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n appendAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n replaceAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n toString(): string {\n const paramsList: string[] = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(\n v => paramsList.push(\n this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n\n delete (param: string): void { this.paramsMap.delete(param); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {stringToArrayBuffer} from './http_utils';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\nexport abstract class Body {\n /**\n * @internal\n */\n protected _body: any;\n\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n json(): any {\n if (typeof this._body === 'string') {\n return JSON.parse(<string>this._body);\n }\n\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n\n return this._body;\n }\n\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body as ArrayBuffer));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body as ArrayBuffer));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n\n if (this._body == null) {\n return '';\n }\n\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n\n return this._body.toString();\n }\n\n /**\n * Return the body as an ArrayBuffer\n */\n arrayBuffer(): ArrayBuffer {\n if (this._body instanceof ArrayBuffer) {\n return <ArrayBuffer>this._body;\n }\n\n return stringToArrayBuffer(this.text());\n }\n\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n blob(): Blob {\n if (this._body instanceof Blob) {\n return <Blob>this._body;\n }\n\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {ResponseOptions} from './base_response_options';\nimport {Body} from './body';\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\n\n\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Response extends Body {\n /**\n * One of \"basic\", \"cors\", \"default\", \"error\", or \"opaque\".\n *\n * Defaults to \"default\".\n */\n type: ResponseType;\n /**\n * True if the response's status is within 200-299\n */\n ok: boolean;\n /**\n * URL of response.\n *\n * Defaults to empty string.\n */\n url: string;\n /**\n * Status code returned by server.\n *\n * Defaults to 200.\n */\n status: number;\n /**\n * Text representing the corresponding reason phrase to the `status`, as defined in [ietf rfc 2616\n * section 6.1.1](https://tools.ietf.org/html/rfc2616#section-6.1.1)\n *\n * Defaults to \"OK\"\n */\n statusText: string|null;\n /**\n * Non-standard property\n *\n * Denotes how many of the response body's bytes have been loaded, for example if the response is\n * the result of a progress event.\n */\n // TODO(issue/24571): remove '!'.\n bytesLoaded !: number;\n /**\n * Non-standard property\n *\n * Denotes how many bytes are expected in the final response body.\n */\n // TODO(issue/24571): remove '!'.\n totalBytes !: number;\n /**\n * Headers object based on the `Headers` class in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#headers-class).\n */\n headers: Headers|null;\n\n constructor(responseOptions: ResponseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = responseOptions.status !;\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = responseOptions.type !;\n this.url = responseOptions.url !;\n }\n\n toString(): string {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nlet _nextRequestId = 0;\nexport const JSONP_HOME = '__ng_jsonp__';\nlet _jsonpConnections: {[key: string]: any}|null = null;\n\nfunction _getJsonpConnections(): {[key: string]: any} {\n const w: {[key: string]: any} = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n\n// Make sure not to evaluate this in a non-browser environment!\n@Injectable()\nexport class BrowserJsonp {\n // Construct a <script> element with the specified URL\n build(url: string): any {\n const node = document.createElement('script');\n node.src = url;\n return node;\n }\n\n nextRequestID(): string { return `__req${_nextRequestId++}`; }\n\n requestCallback(id: string): string { return `${JSONP_HOME}.${id}.finished`; }\n\n exposeConnection(id: string, connection: any) {\n const connections = _getJsonpConnections();\n connections[id] = connection;\n }\n\n removeConnection(id: string) {\n const connections = _getJsonpConnections();\n connections[id] = null;\n }\n\n // Attach the <script> element to the DOM\n send(node: any) { document.body.appendChild(<Node>(node)); }\n\n // Remove <script> element from the DOM\n cleanup(node: any) {\n if (node.parentNode) {\n node.parentNode.removeChild(<Node>(node));\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {ResponseOptions} from '../base_response_options';\nimport {ReadyState, RequestMethod, ResponseType} from '../enums';\nimport {Connection, ConnectionBackend} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\n\nimport {BrowserJsonp} from './browser_jsonp';\n\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n\n/**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class JSONPConnection implements Connection {\n // TODO(issue/24571): remove '!'.\n private _id !: string;\n // TODO(issue/24571): remove '!'.\n private _script !: Element;\n private _responseData: any;\n private _finished: boolean = false;\n\n /**\n * The {@link ReadyState} of this request.\n */\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n\n /**\n * The outgoing HTTP request.\n */\n request: Request;\n\n /**\n * An observable that completes with the response, when the request is finished.\n */\n response: Observable<Response>;\n\n /** @internal */\n constructor(\n req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {\n if (req.method !== RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n\n this.readyState = ReadyState.Loading;\n const id = this._id = _dom.nextRequestID();\n\n _dom.exposeConnection(id, this);\n\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n const callback = _dom.requestCallback(this._id);\n let url: string = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', `=${callback}&`);\n } else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + `=${callback}`;\n }\n\n const script = this._script = _dom.build(url);\n\n const onLoad = (event: Event) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n if (!this._finished) {\n let responseOptions =\n new ResponseOptions({body: JSONP_ERR_NO_CALLBACK, type: ResponseType.Error, url});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n return;\n }\n\n let responseOptions = new ResponseOptions({body: this._responseData, url});\n if (this.baseResponseOptions) {\n responseOptions = this.baseResponseOptions.merge(responseOptions);\n }\n\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n\n const onError = (error: Error) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n let responseOptions = new ResponseOptions({body: error.message, type: ResponseType.Error});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n\n _dom.send(script);\n\n return () => {\n this.readyState = ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n this._dom.cleanup(script);\n };\n });\n }\n\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n finished(data?: any) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === ReadyState.Cancelled) return;\n this._responseData = data;\n }\n}\n\n/**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class JSONPBackend extends ConnectionBackend {\n /** @internal */\n constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {\n super();\n }\n\n createConnection(request: Request): JSONPConnection {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Observable, Observer} from 'rxjs';\nimport {ResponseOptions} from '../base_response_options';\nimport {ContentType, ReadyState, RequestMethod, ResponseContentType, ResponseType} from '../enums';\nimport {Headers} from '../headers';\nimport {getResponseURL, isSuccess} from '../http_utils';\nimport {Connection, ConnectionBackend, XSRFStrategy} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\nimport {BrowserXhr} from './browser_xhr';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class XHRConnection implements Connection {\n request: Request;\n /**\n * Response {@link EventEmitter} which emits a single {@link Response} value on load event of\n * `XMLHttpRequest`.\n */\n response: Observable<Response>;\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n const _xhr: XMLHttpRequest = browserXHR.build();\n _xhr.open(RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n const onLoad = () => {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n let status: number = _xhr.status === 1223 ? 204 : _xhr.status;\n\n let body: any = null;\n\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n\n const headers: Headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n const url = getResponseURL(_xhr) || req.url;\n const statusText: string = _xhr.statusText || 'OK';\n\n let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n const response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n const onError = (err: ErrorEvent) => {\n let responseOptions = new ResponseOptions({\n body: err,\n type: ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n this.setDetectedContentType(req, _xhr);\n\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach((values, name) => _xhr.setRequestHeader(name !, values.join(',')));\n\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n\n _xhr.send(this.request.getBody());\n\n return () => {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n\n setDetectedContentType(req: any /** TODO Request */, _xhr: any /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n const blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n }\n}\n\n/**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class CookieXSRFStrategy implements XSRFStrategy {\n constructor(\n private _cookieName: string = 'XSRF-TOKEN', private _headerName: string = 'X-XSRF-TOKEN') {}\n\n configureRequest(req: Request): void {\n const xsrfToken = getDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n }\n}\n\n/**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class XHRBackend implements ConnectionBackend {\n constructor(\n private _browserXHR: BrowserXhr, private _baseResponseOptions: ResponseOptions,\n private _xsrfStrategy: XSRFStrategy) {}\n\n createConnection(request: Request): XHRConnection {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestOptionsArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class RequestOptions {\n /**\n * Http method with which to execute a {@link Request}.\n * Acceptable methods are defined in the {@link RequestMethod} enum.\n */\n method: RequestMethod|string|null;\n /**\n * {@link Headers} to be attached to a {@link Request}.\n */\n headers: Headers|null;\n /**\n * Body to be used when creating a {@link Request}.\n */\n body: any;\n /**\n * Url with which to perform a {@link Request}.\n */\n url: string|null;\n /**\n * Search parameters to be included in a {@link Request}.\n */\n params: URLSearchParams;\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get search(): URLSearchParams { return this.params; }\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set search(params: URLSearchParams) { this.params = params; }\n /**\n * Enable use credentials for a {@link Request}.\n */\n withCredentials: boolean|null;\n /*\n * Select a buffer to store the response, such as ArrayBuffer, Blob, Json (or Document)\n */\n responseType: ResponseContentType|null;\n\n // TODO(Dzmitry): remove search when this.search is removed\n constructor(opts: RequestOptionsArgs = {}) {\n const {method, headers, body, url, search, params, withCredentials, responseType} = opts;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n merge(options?: RequestOptionsArgs): RequestOptions {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n }\n\n private _mergeSearchParams(params?: string|URLSearchParams|{[key: string]: any | any[]}|\n null): URLSearchParams {\n if (!params) return this.params;\n\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n\n return this._parseParams(params);\n }\n\n private _parseParams(objParams: {[key: string]: any | any[]} = {}): URLSearchParams {\n const params = new URLSearchParams();\n Object.keys(objParams).forEach((key: string) => {\n const value: any|any[] = objParams[key];\n if (Array.isArray(value)) {\n value.forEach((item: any) => this._appendParam(key, item, params));\n } else {\n this._appendParam(key, value, params);\n }\n });\n return params;\n }\n\n private _appendParam(key: string, value: any, params: URLSearchParams): void {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n }\n}\n\n/**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseRequestOptions extends RequestOptions {\n constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Body} from './body';\nimport {ContentType, RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n// TODO(jeffbcross): properly implement body accessors\n/**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Request extends Body {\n /**\n * Http method with which to perform the request.\n */\n method: RequestMethod;\n /**\n * {@link Headers} instance\n */\n headers: Headers;\n /** Url of the remote resource */\n url: string;\n /** Type of the request body **/\n private contentType: ContentType;\n /** Enable use credentials */\n withCredentials: boolean;\n /** Buffer to store the response */\n responseType: ResponseContentType;\n constructor(requestOptions: RequestArgs) {\n super();\n // TODO: assert that url is present\n const url = requestOptions.url;\n this.url = requestOptions.url !;\n const paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n let params: string;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n } else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n let prefix = '?';\n if (this.url.indexOf('?') != -1) {\n prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n this.url = url + prefix + params;\n }\n }\n this._body = requestOptions.body;\n this.method = normalizeMethodName(requestOptions.method !);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n this.headers = new Headers(requestOptions.headers);\n this.contentType = this.detectContentType();\n this.withCredentials = requestOptions.withCredentials !;\n this.responseType = requestOptions.responseType !;\n }\n\n /**\n * Returns the content type enum based on header options.\n */\n detectContentType(): ContentType {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n }\n\n /**\n * Returns the content type of request's body based on its type.\n */\n detectContentTypeFromBody(): ContentType {\n if (this._body == null) {\n return ContentType.NONE;\n } else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n } else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n } else if (this._body instanceof Blob) {\n return ContentType.BLOB;\n } else if (this._body instanceof ArrayBuffer) {\n return ContentType.ARRAY_BUFFER;\n } else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n } else {\n return ContentType.TEXT;\n }\n }\n\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n getBody(): any {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n }\n}\n\nfunction urlEncodeParams(params: {[key: string]: any}): URLSearchParams {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(element => searchParams.append(key, element.toString()));\n } else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n}\n\nconst noop = function() {};\nconst w = typeof window == 'object' ? window : noop;\nconst FormData = (w as any /** TODO #9100 */)['FormData'] || noop;\nconst Blob = (w as any /** TODO #9100 */)['Blob'] || noop;\nexport const ArrayBuffer: ArrayBufferConstructor =\n (w as any /** TODO #9100 */)['ArrayBuffer'] || noop;\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {RequestMethod} from './enums';\nimport {ConnectionBackend, RequestArgs, RequestOptionsArgs} from './interfaces';\nimport {Request} from './static_request';\nimport {Response} from './static_response';\n\nfunction httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {\n return backend.createConnection(request).response;\n}\n\nfunction mergeOptions(\n defaultOpts: BaseRequestOptions, providedOpts: RequestOptionsArgs | undefined,\n method: RequestMethod, url: string): RequestArgs {\n const newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n })) as RequestArgs;\n }\n\n return newOptions.merge(new RequestOptions({method, url})) as RequestArgs;\n}\n\n/**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Http {\n constructor(protected _backend: ConnectionBackend, protected _defaultOptions: RequestOptions) {}\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n responseObservable = httpRequest(\n this._backend,\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url)));\n } else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n\n /**\n * Performs a request with `get` http method.\n */\n get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, url)));\n }\n\n /**\n * Performs a request with `post` http method.\n */\n post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Post,\n url)));\n }\n\n /**\n * Performs a request with `put` http method.\n */\n put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Put,\n url)));\n }\n\n /**\n * Performs a request with `delete` http method.\n */\n delete (url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Delete, url)));\n }\n\n /**\n * Performs a request with `patch` http method.\n */\n patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Patch,\n url)));\n }\n\n /**\n * Performs a request with `head` http method.\n */\n head(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));\n }\n\n /**\n * Performs a request with `options` http method.\n */\n options(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));\n }\n}\n\n\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Jsonp extends Http {\n constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n super(backend, defaultOptions);\n }\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url));\n }\n if (url instanceof Request) {\n if (url.method !== RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The http module provides services to perform http requests. To get started, see the {@link Http}\n * class.\n */\nimport {NgModule} from '@angular/core';\n\nimport {BrowserJsonp} from './backends/browser_jsonp';\nimport {BrowserXhr} from './backends/browser_xhr';\nimport {JSONPBackend} from './backends/jsonp_backend';\nimport {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nimport {Http, Jsonp} from './http';\nimport {XSRFStrategy} from './interfaces';\n\n\nexport function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n}\n\nexport function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http {\n return new Http(xhrBackend, requestOptions);\n}\n\nexport function jsonpFactory(jsonpBackend: JSONPBackend, requestOptions: RequestOptions): Jsonp {\n return new Jsonp(jsonpBackend, requestOptions);\n}\n\n\n/**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n BrowserXhr,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n XHRBackend,\n {provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},\n ],\n})\nexport class HttpModule {\n}\n\n/**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions]},\n BrowserJsonp,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n JSONPBackend,\n ],\n})\nexport class JsonpModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport const VERSION = new Version('7.2.8');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BrowserJsonp as ɵangular_packages_http_http_e} from './src/backends/browser_jsonp';\nexport {Body as ɵangular_packages_http_http_f} from './src/body';\nexport {_createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a,httpFactory as ɵangular_packages_http_http_b,jsonpFactory as ɵangular_packages_http_http_c} from './src/http_module';\nexport {RequestArgs as ɵangular_packages_http_http_d} from './src/interfaces';"],"names":["getDOM","ArrayBuffer","Blob"],"mappings":"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"}
\ No newline at end of file

fesm2015/testing.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/

fesm5/http.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/
@@ -1862,7 +1862,7 @@
* @deprecated see https://angular.io/guide/http
* @publicApi
*/
-var VERSION = new Version('7.2.7');
+var VERSION = new Version('7.2.8');
/**
* @license

fesm5/http.js.map

@@ -1 +1 @@
-{"version":3,"file":"http.js","sources":["../../../../../../packages/http/src/backends/browser_xhr.ts","../../../../../../packages/http/src/enums.ts","../../../../../../packages/http/src/headers.ts","../../../../../../packages/http/src/base_response_options.ts","../../../../../../packages/http/src/interfaces.ts","../../../../../../packages/http/src/http_utils.ts","../../../../../../packages/http/src/url_search_params.ts","../../../../../../packages/http/src/body.ts","../../../../../../packages/http/src/static_response.ts","../../../../../../packages/http/src/backends/browser_jsonp.ts","../../../../../../packages/http/src/backends/jsonp_backend.ts","../../../../../../packages/http/src/backends/xhr_backend.ts","../../../../../../packages/http/src/base_request_options.ts","../../../../../../packages/http/src/static_request.ts","../../../../../../packages/http/src/http.ts","../../../../../../packages/http/src/http_module.ts","../../../../../../packages/http/src/version.ts","../../../../../../packages/http/src/index.ts","../../../../../../packages/http/public_api.ts","../../../../../../packages/http/index.ts","../../../../../../packages/http/http.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BrowserXhr {\n constructor() {}\n build(): any { return <any>(new XMLHttpRequest()); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Supported http methods.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum RequestMethod {\n Get,\n Post,\n Put,\n Delete,\n Options,\n Head,\n Patch\n}\n\n/**\n * All possible states in which a connection can be, based on\n * [States](http://www.w3.org/TR/XMLHttpRequest/#states) from the `XMLHttpRequest` spec, but with an\n * additional \"CANCELLED\" state.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ReadyState {\n Unsent,\n Open,\n HeadersReceived,\n Loading,\n Done,\n Cancelled\n}\n\n/**\n * Acceptable response types to be associated with a {@link Response}, based on\n * [ResponseType](https://fetch.spec.whatwg.org/#responsetype) from the Fetch spec.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseType {\n Basic,\n Cors,\n Default,\n Error,\n Opaque\n}\n\n/**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\nexport enum ContentType {\n NONE,\n JSON,\n FORM,\n FORM_DATA,\n TEXT,\n BLOB,\n ARRAY_BUFFER\n}\n\n/**\n * Define which buffer to use to store the response\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseContentType {\n Text,\n Json,\n ArrayBuffer,\n Blob\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Headers {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n // TODO(vicb): any -> string|string[]\n constructor(headers?: Headers|{[name: string]: any}|null) {\n if (!headers) {\n return;\n }\n\n if (headers instanceof Headers) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n static fromResponseHeaderString(headersString: string): Headers {\n const headers = new Headers();\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete (name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string|undefined, headers: Map<string, string[]>) => void):\n void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string|null {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string|string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): {[name: string]: any} {\n const serialized: {[name: string]: string[]} = {};\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[this._normalizedNames.get(name) !] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[]|null {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n\n /**\n * This method is not implemented.\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {ResponseOptionsArgs} from './interfaces';\n\n\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class ResponseOptions {\n // TODO: FormData | Blob\n /**\n * String, Object, ArrayBuffer or Blob representing the body of the {@link Response}.\n */\n body: string|Object|ArrayBuffer|Blob|null;\n /**\n * Http {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html status code}\n * associated with the response.\n */\n status: number|null;\n /**\n * Response {@link Headers headers}\n */\n headers: Headers|null;\n /**\n * @internal\n */\n statusText: string|null;\n /**\n * @internal\n */\n type: ResponseType|null;\n url: string|null;\n constructor(opts: ResponseOptionsArgs = {}) {\n const {body, status, headers, statusText, type, url} = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n merge(options?: ResponseOptionsArgs): ResponseOptions {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n\n/**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers()});\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {Request} from './static_request';\nimport {URLSearchParams} from './url_search_params';\n\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class ConnectionBackend { abstract createConnection(request: any): Connection; }\n\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class Connection {\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n // TODO(issue/24571): remove '!'.\n request !: Request;\n response: any; // TODO: generic of <Response>;\n}\n\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class XSRFStrategy { abstract configureRequest(req: Request): void; }\n\n/**\n * Interface for options to construct a RequestOptions, based on\n * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface RequestOptionsArgs {\n url?: string|null;\n method?: string|RequestMethod|null;\n /** @deprecated from 4.0.0. Use params instead. */\n search?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n params?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n headers?: Headers|null;\n body?: any;\n withCredentials?: boolean|null;\n responseType?: ResponseContentType|null;\n}\n\n/**\n * Required structure when constructing new Request();\n */\nexport interface RequestArgs extends RequestOptionsArgs { url: string|null; }\n\n/**\n * Interface for options to construct a Response, based on\n * [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface ResponseOptionsArgs {\n body?: string|Object|FormData|ArrayBuffer|Blob|null;\n status?: number|null;\n statusText?: string|null;\n headers?: Headers|null;\n type?: ResponseType|null;\n url?: string|null;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RequestMethod} from './enums';\n\nexport function normalizeMethodName(method: string | RequestMethod): RequestMethod {\n if (typeof method !== 'string') return method;\n\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n\nexport const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport function getResponseURL(xhr: any): string|null {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\nexport function stringToArrayBuffer8(input: String): ArrayBuffer {\n const view = new Uint8Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n\nexport function stringToArrayBuffer(input: String): ArrayBuffer {\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nfunction paramParser(rawParams: string = ''): Map<string, string[]> {\n const map = new Map<string, string[]>();\n if (rawParams.length > 0) {\n const params: string[] = rawParams.split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] =\n eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\nexport class QueryEncoder {\n encodeKey(key: string): string { return standardEncoding(key); }\n\n encodeValue(value: string): string { return standardEncoding(value); }\n}\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class URLSearchParams {\n paramsMap: Map<string, string[]>;\n constructor(\n public rawParams: string = '', private queryEncoder: QueryEncoder = new QueryEncoder()) {\n this.paramsMap = paramParser(rawParams);\n }\n\n clone(): URLSearchParams {\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n\n has(param: string): boolean { return this.paramsMap.has(param); }\n\n get(param: string): string|null {\n const storedParam = this.paramsMap.get(param);\n\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n\n getAll(param: string): string[] { return this.paramsMap.get(param) || []; }\n\n set(param: string, val: string) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n setAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n\n append(param: string, val: string): void {\n if (val === void 0 || val === null) return;\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n appendAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n replaceAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n toString(): string {\n const paramsList: string[] = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(\n v => paramsList.push(\n this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n\n delete (param: string): void { this.paramsMap.delete(param); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {stringToArrayBuffer} from './http_utils';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\nexport abstract class Body {\n /**\n * @internal\n */\n protected _body: any;\n\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n json(): any {\n if (typeof this._body === 'string') {\n return JSON.parse(<string>this._body);\n }\n\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n\n return this._body;\n }\n\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body as ArrayBuffer));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body as ArrayBuffer));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n\n if (this._body == null) {\n return '';\n }\n\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n\n return this._body.toString();\n }\n\n /**\n * Return the body as an ArrayBuffer\n */\n arrayBuffer(): ArrayBuffer {\n if (this._body instanceof ArrayBuffer) {\n return <ArrayBuffer>this._body;\n }\n\n return stringToArrayBuffer(this.text());\n }\n\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n blob(): Blob {\n if (this._body instanceof Blob) {\n return <Blob>this._body;\n }\n\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {ResponseOptions} from './base_response_options';\nimport {Body} from './body';\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\n\n\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Response extends Body {\n /**\n * One of \"basic\", \"cors\", \"default\", \"error\", or \"opaque\".\n *\n * Defaults to \"default\".\n */\n type: ResponseType;\n /**\n * True if the response's status is within 200-299\n */\n ok: boolean;\n /**\n * URL of response.\n *\n * Defaults to empty string.\n */\n url: string;\n /**\n * Status code returned by server.\n *\n * Defaults to 200.\n */\n status: number;\n /**\n * Text representing the corresponding reason phrase to the `status`, as defined in [ietf rfc 2616\n * section 6.1.1](https://tools.ietf.org/html/rfc2616#section-6.1.1)\n *\n * Defaults to \"OK\"\n */\n statusText: string|null;\n /**\n * Non-standard property\n *\n * Denotes how many of the response body's bytes have been loaded, for example if the response is\n * the result of a progress event.\n */\n // TODO(issue/24571): remove '!'.\n bytesLoaded !: number;\n /**\n * Non-standard property\n *\n * Denotes how many bytes are expected in the final response body.\n */\n // TODO(issue/24571): remove '!'.\n totalBytes !: number;\n /**\n * Headers object based on the `Headers` class in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#headers-class).\n */\n headers: Headers|null;\n\n constructor(responseOptions: ResponseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = responseOptions.status !;\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = responseOptions.type !;\n this.url = responseOptions.url !;\n }\n\n toString(): string {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nlet _nextRequestId = 0;\nexport const JSONP_HOME = '__ng_jsonp__';\nlet _jsonpConnections: {[key: string]: any}|null = null;\n\nfunction _getJsonpConnections(): {[key: string]: any} {\n const w: {[key: string]: any} = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n\n// Make sure not to evaluate this in a non-browser environment!\n@Injectable()\nexport class BrowserJsonp {\n // Construct a <script> element with the specified URL\n build(url: string): any {\n const node = document.createElement('script');\n node.src = url;\n return node;\n }\n\n nextRequestID(): string { return `__req${_nextRequestId++}`; }\n\n requestCallback(id: string): string { return `${JSONP_HOME}.${id}.finished`; }\n\n exposeConnection(id: string, connection: any) {\n const connections = _getJsonpConnections();\n connections[id] = connection;\n }\n\n removeConnection(id: string) {\n const connections = _getJsonpConnections();\n connections[id] = null;\n }\n\n // Attach the <script> element to the DOM\n send(node: any) { document.body.appendChild(<Node>(node)); }\n\n // Remove <script> element from the DOM\n cleanup(node: any) {\n if (node.parentNode) {\n node.parentNode.removeChild(<Node>(node));\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {ResponseOptions} from '../base_response_options';\nimport {ReadyState, RequestMethod, ResponseType} from '../enums';\nimport {Connection, ConnectionBackend} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\n\nimport {BrowserJsonp} from './browser_jsonp';\n\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n\n/**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class JSONPConnection implements Connection {\n // TODO(issue/24571): remove '!'.\n private _id !: string;\n // TODO(issue/24571): remove '!'.\n private _script !: Element;\n private _responseData: any;\n private _finished: boolean = false;\n\n /**\n * The {@link ReadyState} of this request.\n */\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n\n /**\n * The outgoing HTTP request.\n */\n request: Request;\n\n /**\n * An observable that completes with the response, when the request is finished.\n */\n response: Observable<Response>;\n\n /** @internal */\n constructor(\n req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {\n if (req.method !== RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n\n this.readyState = ReadyState.Loading;\n const id = this._id = _dom.nextRequestID();\n\n _dom.exposeConnection(id, this);\n\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n const callback = _dom.requestCallback(this._id);\n let url: string = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', `=${callback}&`);\n } else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + `=${callback}`;\n }\n\n const script = this._script = _dom.build(url);\n\n const onLoad = (event: Event) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n if (!this._finished) {\n let responseOptions =\n new ResponseOptions({body: JSONP_ERR_NO_CALLBACK, type: ResponseType.Error, url});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n return;\n }\n\n let responseOptions = new ResponseOptions({body: this._responseData, url});\n if (this.baseResponseOptions) {\n responseOptions = this.baseResponseOptions.merge(responseOptions);\n }\n\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n\n const onError = (error: Error) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n let responseOptions = new ResponseOptions({body: error.message, type: ResponseType.Error});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n\n _dom.send(script);\n\n return () => {\n this.readyState = ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n this._dom.cleanup(script);\n };\n });\n }\n\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n finished(data?: any) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === ReadyState.Cancelled) return;\n this._responseData = data;\n }\n}\n\n/**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class JSONPBackend extends ConnectionBackend {\n /** @internal */\n constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {\n super();\n }\n\n createConnection(request: Request): JSONPConnection {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Observable, Observer} from 'rxjs';\nimport {ResponseOptions} from '../base_response_options';\nimport {ContentType, ReadyState, RequestMethod, ResponseContentType, ResponseType} from '../enums';\nimport {Headers} from '../headers';\nimport {getResponseURL, isSuccess} from '../http_utils';\nimport {Connection, ConnectionBackend, XSRFStrategy} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\nimport {BrowserXhr} from './browser_xhr';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class XHRConnection implements Connection {\n request: Request;\n /**\n * Response {@link EventEmitter} which emits a single {@link Response} value on load event of\n * `XMLHttpRequest`.\n */\n response: Observable<Response>;\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n const _xhr: XMLHttpRequest = browserXHR.build();\n _xhr.open(RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n const onLoad = () => {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n let status: number = _xhr.status === 1223 ? 204 : _xhr.status;\n\n let body: any = null;\n\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n\n const headers: Headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n const url = getResponseURL(_xhr) || req.url;\n const statusText: string = _xhr.statusText || 'OK';\n\n let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n const response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n const onError = (err: ErrorEvent) => {\n let responseOptions = new ResponseOptions({\n body: err,\n type: ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n this.setDetectedContentType(req, _xhr);\n\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach((values, name) => _xhr.setRequestHeader(name !, values.join(',')));\n\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n\n _xhr.send(this.request.getBody());\n\n return () => {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n\n setDetectedContentType(req: any /** TODO Request */, _xhr: any /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n const blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n }\n}\n\n/**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class CookieXSRFStrategy implements XSRFStrategy {\n constructor(\n private _cookieName: string = 'XSRF-TOKEN', private _headerName: string = 'X-XSRF-TOKEN') {}\n\n configureRequest(req: Request): void {\n const xsrfToken = getDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n }\n}\n\n/**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class XHRBackend implements ConnectionBackend {\n constructor(\n private _browserXHR: BrowserXhr, private _baseResponseOptions: ResponseOptions,\n private _xsrfStrategy: XSRFStrategy) {}\n\n createConnection(request: Request): XHRConnection {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestOptionsArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class RequestOptions {\n /**\n * Http method with which to execute a {@link Request}.\n * Acceptable methods are defined in the {@link RequestMethod} enum.\n */\n method: RequestMethod|string|null;\n /**\n * {@link Headers} to be attached to a {@link Request}.\n */\n headers: Headers|null;\n /**\n * Body to be used when creating a {@link Request}.\n */\n body: any;\n /**\n * Url with which to perform a {@link Request}.\n */\n url: string|null;\n /**\n * Search parameters to be included in a {@link Request}.\n */\n params: URLSearchParams;\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get search(): URLSearchParams { return this.params; }\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set search(params: URLSearchParams) { this.params = params; }\n /**\n * Enable use credentials for a {@link Request}.\n */\n withCredentials: boolean|null;\n /*\n * Select a buffer to store the response, such as ArrayBuffer, Blob, Json (or Document)\n */\n responseType: ResponseContentType|null;\n\n // TODO(Dzmitry): remove search when this.search is removed\n constructor(opts: RequestOptionsArgs = {}) {\n const {method, headers, body, url, search, params, withCredentials, responseType} = opts;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n merge(options?: RequestOptionsArgs): RequestOptions {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n }\n\n private _mergeSearchParams(params?: string|URLSearchParams|{[key: string]: any | any[]}|\n null): URLSearchParams {\n if (!params) return this.params;\n\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n\n return this._parseParams(params);\n }\n\n private _parseParams(objParams: {[key: string]: any | any[]} = {}): URLSearchParams {\n const params = new URLSearchParams();\n Object.keys(objParams).forEach((key: string) => {\n const value: any|any[] = objParams[key];\n if (Array.isArray(value)) {\n value.forEach((item: any) => this._appendParam(key, item, params));\n } else {\n this._appendParam(key, value, params);\n }\n });\n return params;\n }\n\n private _appendParam(key: string, value: any, params: URLSearchParams): void {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n }\n}\n\n/**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseRequestOptions extends RequestOptions {\n constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Body} from './body';\nimport {ContentType, RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n// TODO(jeffbcross): properly implement body accessors\n/**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Request extends Body {\n /**\n * Http method with which to perform the request.\n */\n method: RequestMethod;\n /**\n * {@link Headers} instance\n */\n headers: Headers;\n /** Url of the remote resource */\n url: string;\n /** Type of the request body **/\n private contentType: ContentType;\n /** Enable use credentials */\n withCredentials: boolean;\n /** Buffer to store the response */\n responseType: ResponseContentType;\n constructor(requestOptions: RequestArgs) {\n super();\n // TODO: assert that url is present\n const url = requestOptions.url;\n this.url = requestOptions.url !;\n const paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n let params: string;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n } else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n let prefix = '?';\n if (this.url.indexOf('?') != -1) {\n prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n this.url = url + prefix + params;\n }\n }\n this._body = requestOptions.body;\n this.method = normalizeMethodName(requestOptions.method !);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n this.headers = new Headers(requestOptions.headers);\n this.contentType = this.detectContentType();\n this.withCredentials = requestOptions.withCredentials !;\n this.responseType = requestOptions.responseType !;\n }\n\n /**\n * Returns the content type enum based on header options.\n */\n detectContentType(): ContentType {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n }\n\n /**\n * Returns the content type of request's body based on its type.\n */\n detectContentTypeFromBody(): ContentType {\n if (this._body == null) {\n return ContentType.NONE;\n } else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n } else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n } else if (this._body instanceof Blob) {\n return ContentType.BLOB;\n } else if (this._body instanceof ArrayBuffer) {\n return ContentType.ARRAY_BUFFER;\n } else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n } else {\n return ContentType.TEXT;\n }\n }\n\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n getBody(): any {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n }\n}\n\nfunction urlEncodeParams(params: {[key: string]: any}): URLSearchParams {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(element => searchParams.append(key, element.toString()));\n } else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n}\n\nconst noop = function() {};\nconst w = typeof window == 'object' ? window : noop;\nconst FormData = (w as any /** TODO #9100 */)['FormData'] || noop;\nconst Blob = (w as any /** TODO #9100 */)['Blob'] || noop;\nexport const ArrayBuffer: ArrayBufferConstructor =\n (w as any /** TODO #9100 */)['ArrayBuffer'] || noop;\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {RequestMethod} from './enums';\nimport {ConnectionBackend, RequestArgs, RequestOptionsArgs} from './interfaces';\nimport {Request} from './static_request';\nimport {Response} from './static_response';\n\nfunction httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {\n return backend.createConnection(request).response;\n}\n\nfunction mergeOptions(\n defaultOpts: BaseRequestOptions, providedOpts: RequestOptionsArgs | undefined,\n method: RequestMethod, url: string): RequestArgs {\n const newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n })) as RequestArgs;\n }\n\n return newOptions.merge(new RequestOptions({method, url})) as RequestArgs;\n}\n\n/**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Http {\n constructor(protected _backend: ConnectionBackend, protected _defaultOptions: RequestOptions) {}\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n responseObservable = httpRequest(\n this._backend,\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url)));\n } else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n\n /**\n * Performs a request with `get` http method.\n */\n get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, url)));\n }\n\n /**\n * Performs a request with `post` http method.\n */\n post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Post,\n url)));\n }\n\n /**\n * Performs a request with `put` http method.\n */\n put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Put,\n url)));\n }\n\n /**\n * Performs a request with `delete` http method.\n */\n delete (url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Delete, url)));\n }\n\n /**\n * Performs a request with `patch` http method.\n */\n patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Patch,\n url)));\n }\n\n /**\n * Performs a request with `head` http method.\n */\n head(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));\n }\n\n /**\n * Performs a request with `options` http method.\n */\n options(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));\n }\n}\n\n\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Jsonp extends Http {\n constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n super(backend, defaultOptions);\n }\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url));\n }\n if (url instanceof Request) {\n if (url.method !== RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The http module provides services to perform http requests. To get started, see the {@link Http}\n * class.\n */\nimport {NgModule} from '@angular/core';\n\nimport {BrowserJsonp} from './backends/browser_jsonp';\nimport {BrowserXhr} from './backends/browser_xhr';\nimport {JSONPBackend} from './backends/jsonp_backend';\nimport {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nimport {Http, Jsonp} from './http';\nimport {XSRFStrategy} from './interfaces';\n\n\nexport function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n}\n\nexport function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http {\n return new Http(xhrBackend, requestOptions);\n}\n\nexport function jsonpFactory(jsonpBackend: JSONPBackend, requestOptions: RequestOptions): Jsonp {\n return new Jsonp(jsonpBackend, requestOptions);\n}\n\n\n/**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n BrowserXhr,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n XHRBackend,\n {provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},\n ],\n})\nexport class HttpModule {\n}\n\n/**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions]},\n BrowserJsonp,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n JSONPBackend,\n ],\n})\nexport class JsonpModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport const VERSION = new Version('7.2.7');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {BrowserXhr} from './backends/browser_xhr';\nexport {JSONPBackend, JSONPConnection} from './backends/jsonp_backend';\nexport {CookieXSRFStrategy, XHRBackend, XHRConnection} from './backends/xhr_backend';\nexport {BaseRequestOptions, RequestOptions} from './base_request_options';\nexport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nexport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nexport {Headers} from './headers';\nexport {Http, Jsonp} from './http';\nexport {HttpModule, JsonpModule} from './http_module';\nexport {Connection, ConnectionBackend, RequestOptionsArgs, ResponseOptionsArgs, XSRFStrategy} from './interfaces';\nexport {Request} from './static_request';\nexport {Response} from './static_response';\nexport {QueryEncoder, URLSearchParams} from './url_search_params';\nexport {VERSION} from './version';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/index';\n\n// This file only reexports content of the `src` folder. Keep it that way.\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BrowserJsonp as ɵangular_packages_http_http_e} from './src/backends/browser_jsonp';\nexport {Body as ɵangular_packages_http_http_f} from './src/body';\nexport {_createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a,httpFactory as ɵangular_packages_http_http_b,jsonpFactory as ɵangular_packages_http_http_c} from './src/http_module';\nexport {RequestArgs as ɵangular_packages_http_http_d} from './src/interfaces';"],"names":["tslib_1.__extends","getDOM","ArrayBuffer","Blob"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"http.js","sources":["../../../../../../packages/http/src/backends/browser_xhr.ts","../../../../../../packages/http/src/enums.ts","../../../../../../packages/http/src/headers.ts","../../../../../../packages/http/src/base_response_options.ts","../../../../../../packages/http/src/interfaces.ts","../../../../../../packages/http/src/http_utils.ts","../../../../../../packages/http/src/url_search_params.ts","../../../../../../packages/http/src/body.ts","../../../../../../packages/http/src/static_response.ts","../../../../../../packages/http/src/backends/browser_jsonp.ts","../../../../../../packages/http/src/backends/jsonp_backend.ts","../../../../../../packages/http/src/backends/xhr_backend.ts","../../../../../../packages/http/src/base_request_options.ts","../../../../../../packages/http/src/static_request.ts","../../../../../../packages/http/src/http.ts","../../../../../../packages/http/src/http_module.ts","../../../../../../packages/http/src/version.ts","../../../../../../packages/http/src/index.ts","../../../../../../packages/http/public_api.ts","../../../../../../packages/http/index.ts","../../../../../../packages/http/http.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\n/**\n * A backend for http that uses the `XMLHttpRequest` browser API.\n *\n * Take care not to evaluate this in non-browser contexts.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BrowserXhr {\n constructor() {}\n build(): any { return <any>(new XMLHttpRequest()); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Supported http methods.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum RequestMethod {\n Get,\n Post,\n Put,\n Delete,\n Options,\n Head,\n Patch\n}\n\n/**\n * All possible states in which a connection can be, based on\n * [States](http://www.w3.org/TR/XMLHttpRequest/#states) from the `XMLHttpRequest` spec, but with an\n * additional \"CANCELLED\" state.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ReadyState {\n Unsent,\n Open,\n HeadersReceived,\n Loading,\n Done,\n Cancelled\n}\n\n/**\n * Acceptable response types to be associated with a {@link Response}, based on\n * [ResponseType](https://fetch.spec.whatwg.org/#responsetype) from the Fetch spec.\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseType {\n Basic,\n Cors,\n Default,\n Error,\n Opaque\n}\n\n/**\n * Supported content type to be automatically associated with a {@link Request}.\n * @deprecated see https://angular.io/guide/http\n */\nexport enum ContentType {\n NONE,\n JSON,\n FORM,\n FORM_DATA,\n TEXT,\n BLOB,\n ARRAY_BUFFER\n}\n\n/**\n * Define which buffer to use to store the response\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport enum ResponseContentType {\n Text,\n Json,\n ArrayBuffer,\n Blob\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Polyfill for [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers), as\n * specified in the [Fetch Spec](https://fetch.spec.whatwg.org/#headers-class).\n *\n * The only known difference between this `Headers` implementation and the spec is the\n * lack of an `entries` method.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Headers} from '@angular/http';\n *\n * var firstHeaders = new Headers();\n * firstHeaders.append('Content-Type', 'image/jpeg');\n * console.log(firstHeaders.get('Content-Type')) //'image/jpeg'\n *\n * // Create headers from Plain Old JavaScript Object\n * var secondHeaders = new Headers({\n * 'X-My-Custom-Header': 'Angular'\n * });\n * console.log(secondHeaders.get('X-My-Custom-Header')); //'Angular'\n *\n * var thirdHeaders = new Headers(secondHeaders);\n * console.log(thirdHeaders.get('X-My-Custom-Header')); //'Angular'\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Headers {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n // TODO(vicb): any -> string|string[]\n constructor(headers?: Headers|{[name: string]: any}|null) {\n if (!headers) {\n return;\n }\n\n if (headers instanceof Headers) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.append(name, value));\n });\n return;\n }\n\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = Array.isArray(headers[name]) ? headers[name] : [headers[name]];\n this.delete(name);\n values.forEach(value => this.append(name, value));\n });\n }\n\n /**\n * Returns a new Headers instance from the given DOMString of Response Headers\n */\n static fromResponseHeaderString(headersString: string): Headers {\n const headers = new Headers();\n\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete (name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string|undefined, headers: Map<string, string[]>) => void):\n void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string|null {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string|string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): {[name: string]: any} {\n const serialized: {[name: string]: string[]} = {};\n\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n serialized[this._normalizedNames.get(name) !] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[]|null {\n return this.has(name) ? this._headers.get(name.toLowerCase()) || null : null;\n }\n\n /**\n * This method is not implemented.\n */\n entries() { throw new Error('\"entries\" method is not implemented on Headers class'); }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {ResponseOptionsArgs} from './interfaces';\n\n\n/**\n * Creates a response options object to be optionally provided when instantiating a\n * {@link Response}.\n *\n * This class is based on the `ResponseInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#responseinit).\n *\n * All values are null by default. Typical defaults can be found in the\n * {@link BaseResponseOptions} class, which sub-classes `ResponseOptions`.\n *\n * This class may be used in tests to build {@link Response Responses} for\n * mock responses (see {@link MockBackend}).\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: '{\"name\":\"Jeff\"}'\n * });\n * var res = new Response(options);\n *\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class ResponseOptions {\n // TODO: FormData | Blob\n /**\n * String, Object, ArrayBuffer or Blob representing the body of the {@link Response}.\n */\n body: string|Object|ArrayBuffer|Blob|null;\n /**\n * Http {@link http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html status code}\n * associated with the response.\n */\n status: number|null;\n /**\n * Response {@link Headers headers}\n */\n headers: Headers|null;\n /**\n * @internal\n */\n statusText: string|null;\n /**\n * @internal\n */\n type: ResponseType|null;\n url: string|null;\n constructor(opts: ResponseOptionsArgs = {}) {\n const {body, status, headers, statusText, type, url} = opts;\n this.body = body != null ? body : null;\n this.status = status != null ? status : null;\n this.headers = headers != null ? headers : null;\n this.statusText = statusText != null ? statusText : null;\n this.type = type != null ? type : null;\n this.url = url != null ? url : null;\n }\n\n /**\n * Creates a copy of the `ResponseOptions` instance, using the optional input as values to\n * override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * This may be useful when sharing a base `ResponseOptions` object inside tests,\n * where certain properties may change from test to test.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {ResponseOptions, Response} from '@angular/http';\n *\n * var options = new ResponseOptions({\n * body: {name: 'Jeff'}\n * });\n * var res = new Response(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('options.url:', options.url); // null\n * console.log('res.json():', res.json()); // Object {name: \"Jeff\"}\n * console.log('res.url:', res.url); // https://google.com\n * ```\n */\n merge(options?: ResponseOptionsArgs): ResponseOptions {\n return new ResponseOptions({\n body: options && options.body != null ? options.body : this.body,\n status: options && options.status != null ? options.status : this.status,\n headers: options && options.headers != null ? options.headers : this.headers,\n statusText: options && options.statusText != null ? options.statusText : this.statusText,\n type: options && options.type != null ? options.type : this.type,\n url: options && options.url != null ? options.url : this.url,\n });\n }\n}\n\n/**\n * Subclass of {@link ResponseOptions}, with default values.\n *\n * Default values:\n * * status: 200\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link ResponseOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create {@link Response Responses}.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {provide} from '@angular/core';\n * import {bootstrap} from '@angular/platform-browser/browser';\n * import {HTTP_PROVIDERS, Headers, Http, BaseResponseOptions, ResponseOptions} from\n * '@angular/http';\n * import {App} from './myapp';\n *\n * class MyOptions extends BaseResponseOptions {\n * headers:Headers = new Headers({network: 'github'});\n * }\n *\n * bootstrap(App, [HTTP_PROVIDERS, {provide: ResponseOptions, useClass: MyOptions}]);\n * ```\n *\n * The options could also be extended when manually creating a {@link Response}\n * object.\n *\n * ### Example\n *\n * ```\n * import {BaseResponseOptions, Response} from '@angular/http';\n *\n * var options = new BaseResponseOptions();\n * var res = new Response(options.merge({\n * body: 'Angular',\n * headers: new Headers({framework: 'angular'})\n * }));\n * console.log('res.headers.get(\"framework\"):', res.headers.get('framework')); // angular\n * console.log('res.text():', res.text()); // Angular;\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseResponseOptions extends ResponseOptions {\n constructor() {\n super({status: 200, statusText: 'Ok', type: ResponseType.Default, headers: new Headers()});\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nimport {Headers} from './headers';\nimport {Request} from './static_request';\nimport {URLSearchParams} from './url_search_params';\n\n/**\n * Abstract class from which real backends are derived.\n *\n * The primary purpose of a `ConnectionBackend` is to create new connections to fulfill a given\n * {@link Request}.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class ConnectionBackend { abstract createConnection(request: any): Connection; }\n\n/**\n * Abstract class from which real connections are derived.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class Connection {\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n // TODO(issue/24571): remove '!'.\n request !: Request;\n response: any; // TODO: generic of <Response>;\n}\n\n/**\n * An XSRFStrategy configures XSRF protection (e.g. via headers) on an HTTP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport abstract class XSRFStrategy { abstract configureRequest(req: Request): void; }\n\n/**\n * Interface for options to construct a RequestOptions, based on\n * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface RequestOptionsArgs {\n url?: string|null;\n method?: string|RequestMethod|null;\n /** @deprecated from 4.0.0. Use params instead. */\n search?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n params?: string|URLSearchParams|{[key: string]: any | any[]}|null;\n headers?: Headers|null;\n body?: any;\n withCredentials?: boolean|null;\n responseType?: ResponseContentType|null;\n}\n\n/**\n * Required structure when constructing new Request();\n */\nexport interface RequestArgs extends RequestOptionsArgs { url: string|null; }\n\n/**\n * Interface for options to construct a Response, based on\n * [ResponseInit](https://fetch.spec.whatwg.org/#responseinit) from the Fetch spec.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport interface ResponseOptionsArgs {\n body?: string|Object|FormData|ArrayBuffer|Blob|null;\n status?: number|null;\n statusText?: string|null;\n headers?: Headers|null;\n type?: ResponseType|null;\n url?: string|null;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {RequestMethod} from './enums';\n\nexport function normalizeMethodName(method: string | RequestMethod): RequestMethod {\n if (typeof method !== 'string') return method;\n\n switch (method.toUpperCase()) {\n case 'GET':\n return RequestMethod.Get;\n case 'POST':\n return RequestMethod.Post;\n case 'PUT':\n return RequestMethod.Put;\n case 'DELETE':\n return RequestMethod.Delete;\n case 'OPTIONS':\n return RequestMethod.Options;\n case 'HEAD':\n return RequestMethod.Head;\n case 'PATCH':\n return RequestMethod.Patch;\n }\n throw new Error(`Invalid request method. The method \"${method}\" is not supported.`);\n}\n\nexport const isSuccess = (status: number): boolean => (status >= 200 && status < 300);\n\nexport function getResponseURL(xhr: any): string|null {\n if ('responseURL' in xhr) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\nexport function stringToArrayBuffer8(input: String): ArrayBuffer {\n const view = new Uint8Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n\n\nexport function stringToArrayBuffer(input: String): ArrayBuffer {\n const view = new Uint16Array(input.length);\n for (let i = 0, strLen = input.length; i < strLen; i++) {\n view[i] = input.charCodeAt(i);\n }\n return view.buffer;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nfunction paramParser(rawParams: string = ''): Map<string, string[]> {\n const map = new Map<string, string[]>();\n if (rawParams.length > 0) {\n const params: string[] = rawParams.split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] =\n eqIdx == -1 ? [param, ''] : [param.slice(0, eqIdx), param.slice(eqIdx + 1)];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n **/\nexport class QueryEncoder {\n encodeKey(key: string): string { return standardEncoding(key); }\n\n encodeValue(value: string): string { return standardEncoding(value); }\n}\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v)\n .replace(/%40/gi, '@')\n .replace(/%3A/gi, ':')\n .replace(/%24/gi, '$')\n .replace(/%2C/gi, ',')\n .replace(/%3B/gi, ';')\n .replace(/%2B/gi, '+')\n .replace(/%3D/gi, '=')\n .replace(/%3F/gi, '?')\n .replace(/%2F/gi, '/');\n}\n\n/**\n * Map-like representation of url search parameters, based on\n * [URLSearchParams](https://url.spec.whatwg.org/#urlsearchparams) in the url living standard,\n * with several extensions for merging URLSearchParams objects:\n * - setAll()\n * - appendAll()\n * - replaceAll()\n *\n * This class accepts an optional second parameter of ${@link QueryEncoder},\n * which is used to serialize parameters before making a request. By default,\n * `QueryEncoder` encodes keys and values of parameters using `encodeURIComponent`,\n * and then un-encodes certain characters that are allowed to be part of the query\n * according to IETF RFC 3986: https://tools.ietf.org/html/rfc3986.\n *\n * These are the characters that are not encoded: `! $ \\' ( ) * + , ; A 9 - . _ ~ ? /`\n *\n * If the set of allowed query characters is not acceptable for a particular backend,\n * `QueryEncoder` can be subclassed and provided as the 2nd argument to URLSearchParams.\n *\n * ```\n * import {URLSearchParams, QueryEncoder} from '@angular/http';\n * class MyQueryEncoder extends QueryEncoder {\n * encodeKey(k: string): string {\n * return myEncodingFunction(k);\n * }\n *\n * encodeValue(v: string): string {\n * return myEncodingFunction(v);\n * }\n * }\n *\n * let params = new URLSearchParams('', new MyQueryEncoder());\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class URLSearchParams {\n paramsMap: Map<string, string[]>;\n constructor(\n public rawParams: string = '', private queryEncoder: QueryEncoder = new QueryEncoder()) {\n this.paramsMap = paramParser(rawParams);\n }\n\n clone(): URLSearchParams {\n const clone = new URLSearchParams('', this.queryEncoder);\n clone.appendAll(this);\n return clone;\n }\n\n has(param: string): boolean { return this.paramsMap.has(param); }\n\n get(param: string): string|null {\n const storedParam = this.paramsMap.get(param);\n\n return Array.isArray(storedParam) ? storedParam[0] : null;\n }\n\n getAll(param: string): string[] { return this.paramsMap.get(param) || []; }\n\n set(param: string, val: string) {\n if (val === void 0 || val === null) {\n this.delete(param);\n return;\n }\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `set(name, values[0])`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n setAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n list.push(value[0]);\n this.paramsMap.set(param, list);\n });\n }\n\n append(param: string, val: string): void {\n if (val === void 0 || val === null) return;\n const list = this.paramsMap.get(param) || [];\n list.push(val);\n this.paramsMap.set(param, list);\n }\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `append(name, value)`\n // for each value in `values`.\n //\n // E.g: \"a=[1,2], c=[8]\" + \"a=[3,4], b=[7]\" = \"a=[1,2,3,4], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n appendAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n\n // A merge operation\n // For each name-values pair in `searchParams`, perform `delete(name)`,\n // followed by `set(name, values)`\n //\n // E.g: \"a=[1,2,3], c=[8]\" + \"a=[4,5,6], b=[7]\" = \"a=[4,5,6], c=[8], b=[7]\"\n //\n // TODO(@caitp): document this better\n replaceAll(searchParams: URLSearchParams) {\n searchParams.paramsMap.forEach((value, param) => {\n const list = this.paramsMap.get(param) || [];\n list.length = 0;\n for (let i = 0; i < value.length; ++i) {\n list.push(value[i]);\n }\n this.paramsMap.set(param, list);\n });\n }\n\n toString(): string {\n const paramsList: string[] = [];\n this.paramsMap.forEach((values, k) => {\n values.forEach(\n v => paramsList.push(\n this.queryEncoder.encodeKey(k) + '=' + this.queryEncoder.encodeValue(v)));\n });\n return paramsList.join('&');\n }\n\n delete (param: string): void { this.paramsMap.delete(param); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {stringToArrayBuffer} from './http_utils';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * HTTP request body used by both {@link Request} and {@link Response}\n * https://fetch.spec.whatwg.org/#body\n */\nexport abstract class Body {\n /**\n * @internal\n */\n protected _body: any;\n\n /**\n * Attempts to return body as parsed `JSON` object, or raises an exception.\n */\n json(): any {\n if (typeof this._body === 'string') {\n return JSON.parse(<string>this._body);\n }\n\n if (this._body instanceof ArrayBuffer) {\n return JSON.parse(this.text());\n }\n\n return this._body;\n }\n\n /**\n * Returns the body as a string, presuming `toString()` can be called on the response body.\n *\n * When decoding an `ArrayBuffer`, the optional `encodingHint` parameter determines how the\n * bytes in the buffer will be interpreted. Valid values are:\n *\n * - `legacy` - incorrectly interpret the bytes as UTF-16 (technically, UCS-2). Only characters\n * in the Basic Multilingual Plane are supported, surrogate pairs are not handled correctly.\n * In addition, the endianness of the 16-bit octet pairs in the `ArrayBuffer` is not taken\n * into consideration. This is the default behavior to avoid breaking apps, but should be\n * considered deprecated.\n *\n * - `iso-8859` - interpret the bytes as ISO-8859 (which can be used for ASCII encoded text).\n */\n text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string {\n if (this._body instanceof URLSearchParams) {\n return this._body.toString();\n }\n\n if (this._body instanceof ArrayBuffer) {\n switch (encodingHint) {\n case 'legacy':\n return String.fromCharCode.apply(null, new Uint16Array(this._body as ArrayBuffer));\n case 'iso-8859':\n return String.fromCharCode.apply(null, new Uint8Array(this._body as ArrayBuffer));\n default:\n throw new Error(`Invalid value for encodingHint: ${encodingHint}`);\n }\n }\n\n if (this._body == null) {\n return '';\n }\n\n if (typeof this._body === 'object') {\n return JSON.stringify(this._body, null, 2);\n }\n\n return this._body.toString();\n }\n\n /**\n * Return the body as an ArrayBuffer\n */\n arrayBuffer(): ArrayBuffer {\n if (this._body instanceof ArrayBuffer) {\n return <ArrayBuffer>this._body;\n }\n\n return stringToArrayBuffer(this.text());\n }\n\n /**\n * Returns the request's body as a Blob, assuming that body exists.\n */\n blob(): Blob {\n if (this._body instanceof Blob) {\n return <Blob>this._body;\n }\n\n if (this._body instanceof ArrayBuffer) {\n return new Blob([this._body]);\n }\n\n throw new Error('The request body isn\\'t either a blob or an array buffer');\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n\n\nimport {ResponseOptions} from './base_response_options';\nimport {Body} from './body';\nimport {ResponseType} from './enums';\nimport {Headers} from './headers';\n\n\n/**\n * Creates `Response` instances from provided values.\n *\n * Though this object isn't\n * usually instantiated by end-users, it is the primary object interacted with when it comes time to\n * add data to a view.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * http.request('my-friends.txt').subscribe(response => this.friends = response.text());\n * ```\n *\n * The Response's interface is inspired by the Response constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#response-class), but is considered a static value whose body\n * can be accessed many times. There are other differences in the implementation, but this is the\n * most significant.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Response extends Body {\n /**\n * One of \"basic\", \"cors\", \"default\", \"error\", or \"opaque\".\n *\n * Defaults to \"default\".\n */\n type: ResponseType;\n /**\n * True if the response's status is within 200-299\n */\n ok: boolean;\n /**\n * URL of response.\n *\n * Defaults to empty string.\n */\n url: string;\n /**\n * Status code returned by server.\n *\n * Defaults to 200.\n */\n status: number;\n /**\n * Text representing the corresponding reason phrase to the `status`, as defined in [ietf rfc 2616\n * section 6.1.1](https://tools.ietf.org/html/rfc2616#section-6.1.1)\n *\n * Defaults to \"OK\"\n */\n statusText: string|null;\n /**\n * Non-standard property\n *\n * Denotes how many of the response body's bytes have been loaded, for example if the response is\n * the result of a progress event.\n */\n // TODO(issue/24571): remove '!'.\n bytesLoaded !: number;\n /**\n * Non-standard property\n *\n * Denotes how many bytes are expected in the final response body.\n */\n // TODO(issue/24571): remove '!'.\n totalBytes !: number;\n /**\n * Headers object based on the `Headers` class in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#headers-class).\n */\n headers: Headers|null;\n\n constructor(responseOptions: ResponseOptions) {\n super();\n this._body = responseOptions.body;\n this.status = responseOptions.status !;\n this.ok = (this.status >= 200 && this.status <= 299);\n this.statusText = responseOptions.statusText;\n this.headers = responseOptions.headers;\n this.type = responseOptions.type !;\n this.url = responseOptions.url !;\n }\n\n toString(): string {\n return `Response with status: ${this.status} ${this.statusText} for URL: ${this.url}`;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nlet _nextRequestId = 0;\nexport const JSONP_HOME = '__ng_jsonp__';\nlet _jsonpConnections: {[key: string]: any}|null = null;\n\nfunction _getJsonpConnections(): {[key: string]: any} {\n const w: {[key: string]: any} = typeof window == 'object' ? window : {};\n if (_jsonpConnections === null) {\n _jsonpConnections = w[JSONP_HOME] = {};\n }\n return _jsonpConnections;\n}\n\n// Make sure not to evaluate this in a non-browser environment!\n@Injectable()\nexport class BrowserJsonp {\n // Construct a <script> element with the specified URL\n build(url: string): any {\n const node = document.createElement('script');\n node.src = url;\n return node;\n }\n\n nextRequestID(): string { return `__req${_nextRequestId++}`; }\n\n requestCallback(id: string): string { return `${JSONP_HOME}.${id}.finished`; }\n\n exposeConnection(id: string, connection: any) {\n const connections = _getJsonpConnections();\n connections[id] = connection;\n }\n\n removeConnection(id: string) {\n const connections = _getJsonpConnections();\n connections[id] = null;\n }\n\n // Attach the <script> element to the DOM\n send(node: any) { document.body.appendChild(<Node>(node)); }\n\n // Remove <script> element from the DOM\n cleanup(node: any) {\n if (node.parentNode) {\n node.parentNode.removeChild(<Node>(node));\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {ResponseOptions} from '../base_response_options';\nimport {ReadyState, RequestMethod, ResponseType} from '../enums';\nimport {Connection, ConnectionBackend} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\n\nimport {BrowserJsonp} from './browser_jsonp';\n\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use GET request method.';\n\n/**\n * Base class for an in-flight JSONP request.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class JSONPConnection implements Connection {\n // TODO(issue/24571): remove '!'.\n private _id !: string;\n // TODO(issue/24571): remove '!'.\n private _script !: Element;\n private _responseData: any;\n private _finished: boolean = false;\n\n /**\n * The {@link ReadyState} of this request.\n */\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n\n /**\n * The outgoing HTTP request.\n */\n request: Request;\n\n /**\n * An observable that completes with the response, when the request is finished.\n */\n response: Observable<Response>;\n\n /** @internal */\n constructor(\n req: Request, private _dom: BrowserJsonp, private baseResponseOptions?: ResponseOptions) {\n if (req.method !== RequestMethod.Get) {\n throw new TypeError(JSONP_ERR_WRONG_METHOD);\n }\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n\n this.readyState = ReadyState.Loading;\n const id = this._id = _dom.nextRequestID();\n\n _dom.exposeConnection(id, this);\n\n // Workaround Dart\n // url = url.replace(/=JSONP_CALLBACK(&|$)/, `generated method`);\n const callback = _dom.requestCallback(this._id);\n let url: string = req.url;\n if (url.indexOf('=JSONP_CALLBACK&') > -1) {\n url = url.replace('=JSONP_CALLBACK&', `=${callback}&`);\n } else if (url.lastIndexOf('=JSONP_CALLBACK') === url.length - '=JSONP_CALLBACK'.length) {\n url = url.substring(0, url.length - '=JSONP_CALLBACK'.length) + `=${callback}`;\n }\n\n const script = this._script = _dom.build(url);\n\n const onLoad = (event: Event) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n if (!this._finished) {\n let responseOptions =\n new ResponseOptions({body: JSONP_ERR_NO_CALLBACK, type: ResponseType.Error, url});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n return;\n }\n\n let responseOptions = new ResponseOptions({body: this._responseData, url});\n if (this.baseResponseOptions) {\n responseOptions = this.baseResponseOptions.merge(responseOptions);\n }\n\n responseObserver.next(new Response(responseOptions));\n responseObserver.complete();\n };\n\n const onError = (error: Error) => {\n if (this.readyState === ReadyState.Cancelled) return;\n this.readyState = ReadyState.Done;\n _dom.cleanup(script);\n let responseOptions = new ResponseOptions({body: error.message, type: ResponseType.Error});\n if (baseResponseOptions) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n script.addEventListener('load', onLoad);\n script.addEventListener('error', onError);\n\n _dom.send(script);\n\n return () => {\n this.readyState = ReadyState.Cancelled;\n script.removeEventListener('load', onLoad);\n script.removeEventListener('error', onError);\n this._dom.cleanup(script);\n };\n });\n }\n\n /**\n * Callback called when the JSONP request completes, to notify the application\n * of the new data.\n */\n finished(data?: any) {\n // Don't leak connections\n this._finished = true;\n this._dom.removeConnection(this._id);\n if (this.readyState === ReadyState.Cancelled) return;\n this._responseData = data;\n }\n}\n\n/**\n * A {@link ConnectionBackend} that uses the JSONP strategy of making requests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class JSONPBackend extends ConnectionBackend {\n /** @internal */\n constructor(private _browserJSONP: BrowserJsonp, private _baseResponseOptions: ResponseOptions) {\n super();\n }\n\n createConnection(request: Request): JSONPConnection {\n return new JSONPConnection(request, this._browserJSONP, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Observable, Observer} from 'rxjs';\nimport {ResponseOptions} from '../base_response_options';\nimport {ContentType, ReadyState, RequestMethod, ResponseContentType, ResponseType} from '../enums';\nimport {Headers} from '../headers';\nimport {getResponseURL, isSuccess} from '../http_utils';\nimport {Connection, ConnectionBackend, XSRFStrategy} from '../interfaces';\nimport {Request} from '../static_request';\nimport {Response} from '../static_response';\nimport {BrowserXhr} from './browser_xhr';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Creates connections using `XMLHttpRequest`. Given a fully-qualified\n * request, an `XHRConnection` will immediately create an `XMLHttpRequest` object and send the\n * request.\n *\n * This class would typically not be created or interacted with directly inside applications, though\n * the {@link MockConnection} may be interacted with in tests.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class XHRConnection implements Connection {\n request: Request;\n /**\n * Response {@link EventEmitter} which emits a single {@link Response} value on load event of\n * `XMLHttpRequest`.\n */\n response: Observable<Response>;\n // TODO(issue/24571): remove '!'.\n readyState !: ReadyState;\n constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {\n this.request = req;\n this.response = new Observable<Response>((responseObserver: Observer<Response>) => {\n const _xhr: XMLHttpRequest = browserXHR.build();\n _xhr.open(RequestMethod[req.method].toUpperCase(), req.url);\n if (req.withCredentials != null) {\n _xhr.withCredentials = req.withCredentials;\n }\n // load event handler\n const onLoad = () => {\n // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)\n let status: number = _xhr.status === 1223 ? 204 : _xhr.status;\n\n let body: any = null;\n\n // HTTP 204 means no content\n if (status !== 204) {\n // responseText is the old-school way of retrieving response (supported by IE8 & 9)\n // response/responseType properties were introduced in ResourceLoader Level2 spec\n // (supported by IE10)\n body = (typeof _xhr.response === 'undefined') ? _xhr.responseText : _xhr.response;\n\n // Implicitly strip a potential XSSI prefix.\n if (typeof body === 'string') {\n body = body.replace(XSSI_PREFIX, '');\n }\n }\n\n // fix status code when it is 0 (0 status is undocumented).\n // Occurs when accessing file resources or on Android 4.1 stock browser\n // while retrieving files from application cache.\n if (status === 0) {\n status = body ? 200 : 0;\n }\n\n const headers: Headers = Headers.fromResponseHeaderString(_xhr.getAllResponseHeaders());\n // IE 9 does not provide the way to get URL of response\n const url = getResponseURL(_xhr) || req.url;\n const statusText: string = _xhr.statusText || 'OK';\n\n let responseOptions = new ResponseOptions({body, status, headers, statusText, url});\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n const response = new Response(responseOptions);\n response.ok = isSuccess(status);\n if (response.ok) {\n responseObserver.next(response);\n // TODO(gdi2290): defer complete if array buffer until done\n responseObserver.complete();\n return;\n }\n responseObserver.error(response);\n };\n // error event handler\n const onError = (err: ErrorEvent) => {\n let responseOptions = new ResponseOptions({\n body: err,\n type: ResponseType.Error,\n status: _xhr.status,\n statusText: _xhr.statusText,\n });\n if (baseResponseOptions != null) {\n responseOptions = baseResponseOptions.merge(responseOptions);\n }\n responseObserver.error(new Response(responseOptions));\n };\n\n this.setDetectedContentType(req, _xhr);\n\n if (req.headers == null) {\n req.headers = new Headers();\n }\n if (!req.headers.has('Accept')) {\n req.headers.append('Accept', 'application/json, text/plain, */*');\n }\n req.headers.forEach((values, name) => _xhr.setRequestHeader(name !, values.join(',')));\n\n // Select the correct buffer type to store the response\n if (req.responseType != null && _xhr.responseType != null) {\n switch (req.responseType) {\n case ResponseContentType.ArrayBuffer:\n _xhr.responseType = 'arraybuffer';\n break;\n case ResponseContentType.Json:\n _xhr.responseType = 'json';\n break;\n case ResponseContentType.Text:\n _xhr.responseType = 'text';\n break;\n case ResponseContentType.Blob:\n _xhr.responseType = 'blob';\n break;\n default:\n throw new Error('The selected responseType is not supported');\n }\n }\n\n _xhr.addEventListener('load', onLoad);\n _xhr.addEventListener('error', onError);\n\n _xhr.send(this.request.getBody());\n\n return () => {\n _xhr.removeEventListener('load', onLoad);\n _xhr.removeEventListener('error', onError);\n _xhr.abort();\n };\n });\n }\n\n setDetectedContentType(req: any /** TODO Request */, _xhr: any /** XMLHttpRequest */) {\n // Skip if a custom Content-Type header is provided\n if (req.headers != null && req.headers.get('Content-Type') != null) {\n return;\n }\n\n // Set the detected content type\n switch (req.contentType) {\n case ContentType.NONE:\n break;\n case ContentType.JSON:\n _xhr.setRequestHeader('content-type', 'application/json');\n break;\n case ContentType.FORM:\n _xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n break;\n case ContentType.TEXT:\n _xhr.setRequestHeader('content-type', 'text/plain');\n break;\n case ContentType.BLOB:\n const blob = req.blob();\n if (blob.type) {\n _xhr.setRequestHeader('content-type', blob.type);\n }\n break;\n }\n }\n}\n\n/**\n * `XSRFConfiguration` sets up Cross Site Request Forgery (XSRF) protection for the application\n * using a cookie. See https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n * for more information on XSRF.\n *\n * Applications can configure custom cookie and header names by binding an instance of this class\n * with different `cookieName` and `headerName` values. See the main HTTP documentation for more\n * details.\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class CookieXSRFStrategy implements XSRFStrategy {\n constructor(\n private _cookieName: string = 'XSRF-TOKEN', private _headerName: string = 'X-XSRF-TOKEN') {}\n\n configureRequest(req: Request): void {\n const xsrfToken = getDOM().getCookie(this._cookieName);\n if (xsrfToken) {\n req.headers.set(this._headerName, xsrfToken);\n }\n }\n}\n\n/**\n * Creates {@link XHRConnection} instances.\n *\n * This class would typically not be used by end users, but could be\n * overridden if a different backend implementation should be used,\n * such as in a node backend.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * import {Http, MyNodeBackend, HTTP_PROVIDERS, BaseRequestOptions} from '@angular/http';\n * @Component({\n * viewProviders: [\n * HTTP_PROVIDERS,\n * {provide: Http, useFactory: (backend, options) => {\n * return new Http(backend, options);\n * }, deps: [MyNodeBackend, BaseRequestOptions]}]\n * })\n * class MyComponent {\n * constructor(http:Http) {\n * http.request('people.json').subscribe(res => this.people = res.json());\n * }\n * }\n * ```\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class XHRBackend implements ConnectionBackend {\n constructor(\n private _browserXHR: BrowserXhr, private _baseResponseOptions: ResponseOptions,\n private _xsrfStrategy: XSRFStrategy) {}\n\n createConnection(request: Request): XHRConnection {\n this._xsrfStrategy.configureRequest(request);\n return new XHRConnection(request, this._browserXHR, this._baseResponseOptions);\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\n\nimport {RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestOptionsArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n/**\n * Creates a request options object to be optionally provided when instantiating a\n * {@link Request}.\n *\n * This class is based on the `RequestInit` description in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#requestinit).\n *\n * All values are null by default. Typical defaults can be found in the {@link BaseRequestOptions}\n * class, which sub-classes `RequestOptions`.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * });\n * const req = new Request(options);\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class RequestOptions {\n /**\n * Http method with which to execute a {@link Request}.\n * Acceptable methods are defined in the {@link RequestMethod} enum.\n */\n method: RequestMethod|string|null;\n /**\n * {@link Headers} to be attached to a {@link Request}.\n */\n headers: Headers|null;\n /**\n * Body to be used when creating a {@link Request}.\n */\n body: any;\n /**\n * Url with which to perform a {@link Request}.\n */\n url: string|null;\n /**\n * Search parameters to be included in a {@link Request}.\n */\n params: URLSearchParams;\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n get search(): URLSearchParams { return this.params; }\n /**\n * @deprecated from 4.0.0. Use params instead.\n */\n set search(params: URLSearchParams) { this.params = params; }\n /**\n * Enable use credentials for a {@link Request}.\n */\n withCredentials: boolean|null;\n /*\n * Select a buffer to store the response, such as ArrayBuffer, Blob, Json (or Document)\n */\n responseType: ResponseContentType|null;\n\n // TODO(Dzmitry): remove search when this.search is removed\n constructor(opts: RequestOptionsArgs = {}) {\n const {method, headers, body, url, search, params, withCredentials, responseType} = opts;\n this.method = method != null ? normalizeMethodName(method) : null;\n this.headers = headers != null ? headers : null;\n this.body = body != null ? body : null;\n this.url = url != null ? url : null;\n this.params = this._mergeSearchParams(params || search);\n this.withCredentials = withCredentials != null ? withCredentials : null;\n this.responseType = responseType != null ? responseType : null;\n }\n\n /**\n * Creates a copy of the `RequestOptions` instance, using the optional input as values to override\n * existing values. This method will not change the values of the instance on which it is being\n * called.\n *\n * Note that `headers` and `search` will override existing values completely if present in\n * the `options` object. If these values should be merged, it should be done prior to calling\n * `merge` on the `RequestOptions` instance.\n *\n * ```typescript\n * import {RequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new RequestOptions({\n * method: RequestMethod.Post\n * });\n * const req = new Request(options.merge({\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n */\n merge(options?: RequestOptionsArgs): RequestOptions {\n return new RequestOptions({\n method: options && options.method != null ? options.method : this.method,\n headers: options && options.headers != null ? options.headers : new Headers(this.headers),\n body: options && options.body != null ? options.body : this.body,\n url: options && options.url != null ? options.url : this.url,\n params: options && this._mergeSearchParams(options.params || options.search),\n withCredentials: options && options.withCredentials != null ? options.withCredentials :\n this.withCredentials,\n responseType: options && options.responseType != null ? options.responseType :\n this.responseType\n });\n }\n\n private _mergeSearchParams(params?: string|URLSearchParams|{[key: string]: any | any[]}|\n null): URLSearchParams {\n if (!params) return this.params;\n\n if (params instanceof URLSearchParams) {\n return params.clone();\n }\n\n if (typeof params === 'string') {\n return new URLSearchParams(params);\n }\n\n return this._parseParams(params);\n }\n\n private _parseParams(objParams: {[key: string]: any | any[]} = {}): URLSearchParams {\n const params = new URLSearchParams();\n Object.keys(objParams).forEach((key: string) => {\n const value: any|any[] = objParams[key];\n if (Array.isArray(value)) {\n value.forEach((item: any) => this._appendParam(key, item, params));\n } else {\n this._appendParam(key, value, params);\n }\n });\n return params;\n }\n\n private _appendParam(key: string, value: any, params: URLSearchParams): void {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n params.append(key, value);\n }\n}\n\n/**\n * Subclass of {@link RequestOptions}, with default values.\n *\n * Default values:\n * * method: {@link RequestMethod RequestMethod.Get}\n * * headers: empty {@link Headers} object\n *\n * This class could be extended and bound to the {@link RequestOptions} class\n * when configuring an {@link Injector}, in order to override the default options\n * used by {@link Http} to create and send {@link Request Requests}.\n *\n * ```typescript\n * import {BaseRequestOptions, RequestOptions} from '@angular/http';\n *\n * class MyOptions extends BaseRequestOptions {\n * search: string = 'coreTeam=true';\n * }\n *\n * {provide: RequestOptions, useClass: MyOptions};\n * ```\n *\n * The options could also be extended when manually creating a {@link Request}\n * object.\n *\n * ```\n * import {BaseRequestOptions, Request, RequestMethod} from '@angular/http';\n *\n * const options = new BaseRequestOptions();\n * const req = new Request(options.merge({\n * method: RequestMethod.Post,\n * url: 'https://google.com'\n * }));\n * console.log('req.method:', RequestMethod[req.method]); // Post\n * console.log('options.url:', options.url); // null\n * console.log('req.url:', req.url); // https://google.com\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class BaseRequestOptions extends RequestOptions {\n constructor() { super({method: RequestMethod.Get, headers: new Headers()}); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Body} from './body';\nimport {ContentType, RequestMethod, ResponseContentType} from './enums';\nimport {Headers} from './headers';\nimport {normalizeMethodName} from './http_utils';\nimport {RequestArgs} from './interfaces';\nimport {URLSearchParams} from './url_search_params';\n\n\n// TODO(jeffbcross): properly implement body accessors\n/**\n * Creates `Request` instances from provided values.\n *\n * The Request's interface is inspired by the Request constructor defined in the [Fetch\n * Spec](https://fetch.spec.whatwg.org/#request-class),\n * but is considered a static value whose body can be accessed many times. There are other\n * differences in the implementation, but this is the most significant.\n *\n * `Request` instances are typically created by higher-level classes, like {@link Http} and\n * {@link Jsonp}, but it may occasionally be useful to explicitly create `Request` instances.\n * One such example is when creating services that wrap higher-level services, like {@link Http},\n * where it may be useful to generate a `Request` with arbitrary headers and search params.\n *\n * ```typescript\n * import {Injectable, Injector} from '@angular/core';\n * import {HTTP_PROVIDERS, Http, Request, RequestMethod} from '@angular/http';\n *\n * @Injectable()\n * class AutoAuthenticator {\n * constructor(public http:Http) {}\n * request(url:string) {\n * return this.http.request(new Request({\n * method: RequestMethod.Get,\n * url: url,\n * search: 'password=123'\n * }));\n * }\n * }\n *\n * var injector = Injector.resolveAndCreate([HTTP_PROVIDERS, AutoAuthenticator]);\n * var authenticator = injector.get(AutoAuthenticator);\n * authenticator.request('people.json').subscribe(res => {\n * //URL should have included '?password=123'\n * console.log('people', res.json());\n * });\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport class Request extends Body {\n /**\n * Http method with which to perform the request.\n */\n method: RequestMethod;\n /**\n * {@link Headers} instance\n */\n headers: Headers;\n /** Url of the remote resource */\n url: string;\n /** Type of the request body **/\n private contentType: ContentType;\n /** Enable use credentials */\n withCredentials: boolean;\n /** Buffer to store the response */\n responseType: ResponseContentType;\n constructor(requestOptions: RequestArgs) {\n super();\n // TODO: assert that url is present\n const url = requestOptions.url;\n this.url = requestOptions.url !;\n const paramsArg = requestOptions.params || requestOptions.search;\n if (paramsArg) {\n let params: string;\n if (typeof paramsArg === 'object' && !(paramsArg instanceof URLSearchParams)) {\n params = urlEncodeParams(paramsArg).toString();\n } else {\n params = paramsArg.toString();\n }\n if (params.length > 0) {\n let prefix = '?';\n if (this.url.indexOf('?') != -1) {\n prefix = (this.url[this.url.length - 1] == '&') ? '' : '&';\n }\n // TODO: just delete search-query-looking string in url?\n this.url = url + prefix + params;\n }\n }\n this._body = requestOptions.body;\n this.method = normalizeMethodName(requestOptions.method !);\n // TODO(jeffbcross): implement behavior\n // Defaults to 'omit', consistent with browser\n this.headers = new Headers(requestOptions.headers);\n this.contentType = this.detectContentType();\n this.withCredentials = requestOptions.withCredentials !;\n this.responseType = requestOptions.responseType !;\n }\n\n /**\n * Returns the content type enum based on header options.\n */\n detectContentType(): ContentType {\n switch (this.headers.get('content-type')) {\n case 'application/json':\n return ContentType.JSON;\n case 'application/x-www-form-urlencoded':\n return ContentType.FORM;\n case 'multipart/form-data':\n return ContentType.FORM_DATA;\n case 'text/plain':\n case 'text/html':\n return ContentType.TEXT;\n case 'application/octet-stream':\n return this._body instanceof ArrayBuffer ? ContentType.ARRAY_BUFFER : ContentType.BLOB;\n default:\n return this.detectContentTypeFromBody();\n }\n }\n\n /**\n * Returns the content type of request's body based on its type.\n */\n detectContentTypeFromBody(): ContentType {\n if (this._body == null) {\n return ContentType.NONE;\n } else if (this._body instanceof URLSearchParams) {\n return ContentType.FORM;\n } else if (this._body instanceof FormData) {\n return ContentType.FORM_DATA;\n } else if (this._body instanceof Blob) {\n return ContentType.BLOB;\n } else if (this._body instanceof ArrayBuffer) {\n return ContentType.ARRAY_BUFFER;\n } else if (this._body && typeof this._body === 'object') {\n return ContentType.JSON;\n } else {\n return ContentType.TEXT;\n }\n }\n\n /**\n * Returns the request's body according to its type. If body is undefined, return\n * null.\n */\n getBody(): any {\n switch (this.contentType) {\n case ContentType.JSON:\n return this.text();\n case ContentType.FORM:\n return this.text();\n case ContentType.FORM_DATA:\n return this._body;\n case ContentType.TEXT:\n return this.text();\n case ContentType.BLOB:\n return this.blob();\n case ContentType.ARRAY_BUFFER:\n return this.arrayBuffer();\n default:\n return null;\n }\n }\n}\n\nfunction urlEncodeParams(params: {[key: string]: any}): URLSearchParams {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value && Array.isArray(value)) {\n value.forEach(element => searchParams.append(key, element.toString()));\n } else {\n searchParams.append(key, value.toString());\n }\n });\n return searchParams;\n}\n\nconst noop = function() {};\nconst w = typeof window == 'object' ? window : noop;\nconst FormData = (w as any /** TODO #9100 */)['FormData'] || noop;\nconst Blob = (w as any /** TODO #9100 */)['Blob'] || noop;\nexport const ArrayBuffer: ArrayBufferConstructor =\n (w as any /** TODO #9100 */)['ArrayBuffer'] || noop;\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {RequestMethod} from './enums';\nimport {ConnectionBackend, RequestArgs, RequestOptionsArgs} from './interfaces';\nimport {Request} from './static_request';\nimport {Response} from './static_response';\n\nfunction httpRequest(backend: ConnectionBackend, request: Request): Observable<Response> {\n return backend.createConnection(request).response;\n}\n\nfunction mergeOptions(\n defaultOpts: BaseRequestOptions, providedOpts: RequestOptionsArgs | undefined,\n method: RequestMethod, url: string): RequestArgs {\n const newOptions = defaultOpts;\n if (providedOpts) {\n // Hack so Dart can used named parameters\n return newOptions.merge(new RequestOptions({\n method: providedOpts.method || method,\n url: providedOpts.url || url,\n search: providedOpts.search,\n params: providedOpts.params,\n headers: providedOpts.headers,\n body: providedOpts.body,\n withCredentials: providedOpts.withCredentials,\n responseType: providedOpts.responseType\n })) as RequestArgs;\n }\n\n return newOptions.merge(new RequestOptions({method, url})) as RequestArgs;\n}\n\n/**\n * Performs http requests using `XMLHttpRequest` as the default backend.\n *\n * `Http` is available as an injectable class, with methods to perform http requests. Calling\n * `request` returns an `Observable` which will emit a single {@link Response} when a\n * response is received.\n *\n * @usageNotes\n * ### Example\n *\n * ```typescript\n * import {Http, HTTP_PROVIDERS} from '@angular/http';\n * import {map} from 'rxjs/operators';\n *\n * @Component({\n * selector: 'http-app',\n * viewProviders: [HTTP_PROVIDERS],\n * templateUrl: 'people.html'\n * })\n * class PeopleComponent {\n * constructor(http: Http) {\n * http.get('people.json')\n * // Call map on the response observable to get the parsed people object\n * .pipe(map(res => res.json()))\n * // Subscribe to the observable to get the parsed people object and attach it to the\n * // component\n * .subscribe(people => this.people = people);\n * }\n * }\n * ```\n *\n *\n * ### Example\n *\n * ```\n * http.get('people.json').subscribe((res:Response) => this.people = res.json());\n * ```\n *\n * The default construct used to perform requests, `XMLHttpRequest`, is abstracted as a \"Backend\" (\n * {@link XHRBackend} in this case), which could be mocked with dependency injection by replacing\n * the {@link XHRBackend} provider, as in the following example:\n *\n * ### Example\n *\n * ```typescript\n * import {BaseRequestOptions, Http} from '@angular/http';\n * import {MockBackend} from '@angular/http/testing';\n * var injector = Injector.resolveAndCreate([\n * BaseRequestOptions,\n * MockBackend,\n * {provide: Http, useFactory:\n * function(backend, defaultOptions) {\n * return new Http(backend, defaultOptions);\n * },\n * deps: [MockBackend, BaseRequestOptions]}\n * ]);\n * var http = injector.get(Http);\n * http.get('request-from-mock-backend.json').subscribe((res:Response) => doSomething(res));\n * ```\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Http {\n constructor(protected _backend: ConnectionBackend, protected _defaultOptions: RequestOptions) {}\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n responseObservable = httpRequest(\n this._backend,\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url)));\n } else if (url instanceof Request) {\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n\n /**\n * Performs a request with `get` http method.\n */\n get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, url)));\n }\n\n /**\n * Performs a request with `post` http method.\n */\n post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Post,\n url)));\n }\n\n /**\n * Performs a request with `put` http method.\n */\n put(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Put,\n url)));\n }\n\n /**\n * Performs a request with `delete` http method.\n */\n delete (url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Delete, url)));\n }\n\n /**\n * Performs a request with `patch` http method.\n */\n patch(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(new Request(mergeOptions(\n this._defaultOptions.merge(new RequestOptions({body: body})), options, RequestMethod.Patch,\n url)));\n }\n\n /**\n * Performs a request with `head` http method.\n */\n head(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Head, url)));\n }\n\n /**\n * Performs a request with `options` http method.\n */\n options(url: string, options?: RequestOptionsArgs): Observable<Response> {\n return this.request(\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Options, url)));\n }\n}\n\n\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@Injectable()\nexport class Jsonp extends Http {\n constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n super(backend, defaultOptions);\n }\n\n /**\n * Performs any type of http request. First argument is required, and can either be a url or\n * a {@link Request} instance. If the first argument is a url, an optional {@link RequestOptions}\n * object can be provided as the 2nd argument. The options object will be merged with the values\n * of {@link BaseRequestOptions} before performing the request.\n *\n * @security Regular XHR is the safest alternative to JSONP for most applications, and is\n * supported by all current browsers. Because JSONP creates a `<script>` element with\n * contents retrieved from a remote source, attacker-controlled data introduced by an untrusted\n * source could expose your application to XSS risks. Data exposed by JSONP may also be\n * readable by malicious third-party websites. In addition, JSONP introduces potential risk for\n * future security issues (e.g. content sniffing). For more detail, see the\n * [Security Guide](http://g.co/ng/security).\n */\n request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {\n let responseObservable: any;\n if (typeof url === 'string') {\n url =\n new Request(mergeOptions(this._defaultOptions, options, RequestMethod.Get, <string>url));\n }\n if (url instanceof Request) {\n if (url.method !== RequestMethod.Get) {\n throw new Error('JSONP requests must use GET request method.');\n }\n responseObservable = httpRequest(this._backend, url);\n } else {\n throw new Error('First argument must be a url string or Request instance.');\n }\n return responseObservable;\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * The http module provides services to perform http requests. To get started, see the {@link Http}\n * class.\n */\nimport {NgModule} from '@angular/core';\n\nimport {BrowserJsonp} from './backends/browser_jsonp';\nimport {BrowserXhr} from './backends/browser_xhr';\nimport {JSONPBackend} from './backends/jsonp_backend';\nimport {CookieXSRFStrategy, XHRBackend} from './backends/xhr_backend';\nimport {BaseRequestOptions, RequestOptions} from './base_request_options';\nimport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nimport {Http, Jsonp} from './http';\nimport {XSRFStrategy} from './interfaces';\n\n\nexport function _createDefaultCookieXSRFStrategy() {\n return new CookieXSRFStrategy();\n}\n\nexport function httpFactory(xhrBackend: XHRBackend, requestOptions: RequestOptions): Http {\n return new Http(xhrBackend, requestOptions);\n}\n\nexport function jsonpFactory(jsonpBackend: JSONPBackend, requestOptions: RequestOptions): Jsonp {\n return new Jsonp(jsonpBackend, requestOptions);\n}\n\n\n/**\n * The module that includes http's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n BrowserXhr,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n XHRBackend,\n {provide: XSRFStrategy, useFactory: _createDefaultCookieXSRFStrategy},\n ],\n})\nexport class HttpModule {\n}\n\n/**\n * The module that includes jsonp's providers\n *\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\n@NgModule({\n providers: [\n // TODO(pascal): use factory type annotations once supported in DI\n // issue: https://github.com/angular/angular/issues/3183\n {provide: Jsonp, useFactory: jsonpFactory, deps: [JSONPBackend, RequestOptions]},\n BrowserJsonp,\n {provide: RequestOptions, useClass: BaseRequestOptions},\n {provide: ResponseOptions, useClass: BaseResponseOptions},\n JSONPBackend,\n ],\n})\nexport class JsonpModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @deprecated see https://angular.io/guide/http\n * @publicApi\n */\nexport const VERSION = new Version('7.2.8');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {BrowserXhr} from './backends/browser_xhr';\nexport {JSONPBackend, JSONPConnection} from './backends/jsonp_backend';\nexport {CookieXSRFStrategy, XHRBackend, XHRConnection} from './backends/xhr_backend';\nexport {BaseRequestOptions, RequestOptions} from './base_request_options';\nexport {BaseResponseOptions, ResponseOptions} from './base_response_options';\nexport {ReadyState, RequestMethod, ResponseContentType, ResponseType} from './enums';\nexport {Headers} from './headers';\nexport {Http, Jsonp} from './http';\nexport {HttpModule, JsonpModule} from './http_module';\nexport {Connection, ConnectionBackend, RequestOptionsArgs, ResponseOptionsArgs, XSRFStrategy} from './interfaces';\nexport {Request} from './static_request';\nexport {Response} from './static_response';\nexport {QueryEncoder, URLSearchParams} from './url_search_params';\nexport {VERSION} from './version';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/index';\n\n// This file only reexports content of the `src` folder. Keep it that way.\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BrowserJsonp as ɵangular_packages_http_http_e} from './src/backends/browser_jsonp';\nexport {Body as ɵangular_packages_http_http_f} from './src/body';\nexport {_createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a,httpFactory as ɵangular_packages_http_http_b,jsonpFactory as ɵangular_packages_http_http_c} from './src/http_module';\nexport {RequestArgs as ɵangular_packages_http_http_d} from './src/interfaces';"],"names":["tslib_1.__extends","getDOM","ArrayBuffer","Blob"],"mappings":"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"}
\ No newline at end of file

fesm5/testing.js

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/

http.metadata.json

@@ -1 +1 @@
-{"__symbolic":"module","version":4,"metadata":{"ɵangular_packages_http_http_a":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"CookieXSRFStrategy"}}},"ɵangular_packages_http_http_b":{"__symbolic":"function","parameters":["xhrBackend","requestOptions"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Http"},"arguments":[{"__symbolic":"reference","name":"xhrBackend"},{"__symbolic":"reference","name":"requestOptions"}]}},"ɵangular_packages_http_http_c":{"__symbolic":"function","parameters":["jsonpBackend","requestOptions"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Jsonp"},"arguments":[{"__symbolic":"reference","name":"jsonpBackend"},{"__symbolic":"reference","name":"requestOptions"}]}},"ɵangular_packages_http_http_d":{"__symbolic":"interface"},"BrowserXhr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"build":[{"__symbolic":"method"}]}},"JSONPBackend":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ConnectionBackend"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":145,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵangular_packages_http_http_e"},{"__symbolic":"reference","name":"ResponseOptions"}]}],"createConnection":[{"__symbolic":"method"}]}},"JSONPConnection":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Request"},{"__symbolic":"reference","name":"ɵangular_packages_http_http_e"},{"__symbolic":"reference","name":"ResponseOptions"}]}],"finished":[{"__symbolic":"method"}]}},"CookieXSRFStrategy":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}],"configureRequest":[{"__symbolic":"method"}]}},"XHRBackend":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":234,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BrowserXhr"},{"__symbolic":"reference","name":"ResponseOptions"},{"__symbolic":"reference","name":"XSRFStrategy"}]}],"createConnection":[{"__symbolic":"method"}]}},"XHRConnection":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Request"},{"__symbolic":"reference","name":"BrowserXhr"},{"__symbolic":"reference","name":"ResponseOptions"}]}],"setDetectedContentType":[{"__symbolic":"method"}]}},"BaseRequestOptions":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"RequestOptions"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":206,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"RequestOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"RequestOptionsArgs"}]}],"merge":[{"__symbolic":"method"}],"_mergeSearchParams":[{"__symbolic":"method"}],"_parseParams":[{"__symbolic":"method"}],"_appendParam":[{"__symbolic":"method"}]}},"BaseResponseOptions":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ResponseOptions"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":165,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"ResponseOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ResponseOptionsArgs"}]}],"merge":[{"__symbolic":"method"}]}},"ReadyState":{"Unsent":0,"Open":1,"HeadersReceived":2,"Loading":3,"Done":4,"Cancelled":5},"RequestMethod":{"Get":0,"Post":1,"Put":2,"Delete":3,"Options":4,"Head":5,"Patch":6},"ResponseContentType":{"Text":0,"Json":1,"ArrayBuffer":2,"Blob":3},"ResponseType":{"Basic":0,"Cors":1,"Default":2,"Error":3,"Opaque":4},"Headers":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":45,"character":32,"module":"./src/headers"}]}],"append":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"has":[{"__symbolic":"method"}],"keys":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"values":[{"__symbolic":"method"}],"toJSON":[{"__symbolic":"method"}],"getAll":[{"__symbolic":"method"}],"entries":[{"__symbolic":"method"}],"mayBeSetNormalizedName":[{"__symbolic":"method"}]}},"Http":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":105,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ConnectionBackend"},{"__symbolic":"reference","name":"RequestOptions"}]}],"request":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"patch":[{"__symbolic":"method"}],"head":[{"__symbolic":"method"}],"options":[{"__symbolic":"method"}]}},"Jsonp":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Http"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":194,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ConnectionBackend"},{"__symbolic":"reference","name":"RequestOptions"}]}],"request":[{"__symbolic":"method"}]}},"HttpModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":45,"character":1},"arguments":[{"providers":[{"provide":{"__symbolic":"reference","name":"Http"},"useFactory":{"__symbolic":"reference","name":"ɵangular_packages_http_http_b"},"deps":[{"__symbolic":"reference","name":"XHRBackend"},{"__symbolic":"reference","name":"RequestOptions"}]},{"__symbolic":"reference","name":"BrowserXhr"},{"provide":{"__symbolic":"reference","name":"RequestOptions"},"useClass":{"__symbolic":"reference","name":"BaseRequestOptions"}},{"provide":{"__symbolic":"reference","name":"ResponseOptions"},"useClass":{"__symbolic":"reference","name":"BaseResponseOptions"}},{"__symbolic":"reference","name":"XHRBackend"},{"provide":{"__symbolic":"reference","name":"XSRFStrategy"},"useFactory":{"__symbolic":"reference","name":"ɵangular_packages_http_http_a"}}]}]}],"members":{}},"JsonpModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":66,"character":1},"arguments":[{"providers":[{"provide":{"__symbolic":"reference","name":"Jsonp"},"useFactory":{"__symbolic":"reference","name":"ɵangular_packages_http_http_c"},"deps":[{"__symbolic":"reference","name":"JSONPBackend"},{"__symbolic":"reference","name":"RequestOptions"}]},{"__symbolic":"reference","name":"ɵangular_packages_http_http_e"},{"provide":{"__symbolic":"reference","name":"RequestOptions"},"useClass":{"__symbolic":"reference","name":"BaseRequestOptions"}},{"provide":{"__symbolic":"reference","name":"ResponseOptions"},"useClass":{"__symbolic":"reference","name":"BaseResponseOptions"}},{"__symbolic":"reference","name":"JSONPBackend"}]}]}],"members":{}},"Connection":{"__symbolic":"class","members":{}},"ConnectionBackend":{"__symbolic":"class","members":{"createConnection":[{"__symbolic":"method"}]}},"RequestOptionsArgs":{"__symbolic":"interface"},"ResponseOptionsArgs":{"__symbolic":"interface"},"XSRFStrategy":{"__symbolic":"class","members":{"configureRequest":[{"__symbolic":"method"}]}},"Request":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵangular_packages_http_http_f"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵangular_packages_http_http_d"}]}],"detectContentType":[{"__symbolic":"method"}],"detectContentTypeFromBody":[{"__symbolic":"method"}],"getBody":[{"__symbolic":"method"}]}},"Response":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵangular_packages_http_http_f"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ResponseOptions"}]}],"toString":[{"__symbolic":"method"}]}},"QueryEncoder":{"__symbolic":"class","members":{"encodeKey":[{"__symbolic":"method"}],"encodeValue":[{"__symbolic":"method"}]}},"URLSearchParams":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"QueryEncoder"}]}],"clone":[{"__symbolic":"method"}],"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"getAll":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"setAll":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendAll":[{"__symbolic":"method"}],"replaceAll":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}]}},"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":19,"character":27},"arguments":["7.2.7"]},"ɵangular_packages_http_http_e":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"build":[{"__symbolic":"method"}],"nextRequestID":[{"__symbolic":"method"}],"requestCallback":[{"__symbolic":"method"}],"exposeConnection":[{"__symbolic":"method"}],"removeConnection":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"cleanup":[{"__symbolic":"method"}]}},"ɵangular_packages_http_http_f":{"__symbolic":"class","members":{"json":[{"__symbolic":"method"}],"text":[{"__symbolic":"method"}],"arrayBuffer":[{"__symbolic":"method"}],"blob":[{"__symbolic":"method"}]}}},"origins":{"ɵangular_packages_http_http_a":"./src/http_module","ɵangular_packages_http_http_b":"./src/http_module","ɵangular_packages_http_http_c":"./src/http_module","ɵangular_packages_http_http_d":"./src/interfaces","BrowserXhr":"./src/backends/browser_xhr","JSONPBackend":"./src/backends/jsonp_backend","JSONPConnection":"./src/backends/jsonp_backend","CookieXSRFStrategy":"./src/backends/xhr_backend","XHRBackend":"./src/backends/xhr_backend","XHRConnection":"./src/backends/xhr_backend","BaseRequestOptions":"./src/base_request_options","RequestOptions":"./src/base_request_options","BaseResponseOptions":"./src/base_response_options","ResponseOptions":"./src/base_response_options","ReadyState":"./src/enums","RequestMethod":"./src/enums","ResponseContentType":"./src/enums","ResponseType":"./src/enums","Headers":"./src/headers","Http":"./src/http","Jsonp":"./src/http","HttpModule":"./src/http_module","JsonpModule":"./src/http_module","Connection":"./src/interfaces","ConnectionBackend":"./src/interfaces","RequestOptionsArgs":"./src/interfaces","ResponseOptionsArgs":"./src/interfaces","XSRFStrategy":"./src/interfaces","Request":"./src/static_request","Response":"./src/static_response","QueryEncoder":"./src/url_search_params","URLSearchParams":"./src/url_search_params","VERSION":"./src/version","ɵangular_packages_http_http_e":"./src/backends/browser_jsonp","ɵangular_packages_http_http_f":"./src/body"},"importAs":"@angular/http"}
\ No newline at end of file
+{"__symbolic":"module","version":4,"metadata":{"ɵangular_packages_http_http_a":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"CookieXSRFStrategy"}}},"ɵangular_packages_http_http_b":{"__symbolic":"function","parameters":["xhrBackend","requestOptions"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Http"},"arguments":[{"__symbolic":"reference","name":"xhrBackend"},{"__symbolic":"reference","name":"requestOptions"}]}},"ɵangular_packages_http_http_c":{"__symbolic":"function","parameters":["jsonpBackend","requestOptions"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Jsonp"},"arguments":[{"__symbolic":"reference","name":"jsonpBackend"},{"__symbolic":"reference","name":"requestOptions"}]}},"ɵangular_packages_http_http_d":{"__symbolic":"interface"},"BrowserXhr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"build":[{"__symbolic":"method"}]}},"JSONPBackend":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ConnectionBackend"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":145,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵangular_packages_http_http_e"},{"__symbolic":"reference","name":"ResponseOptions"}]}],"createConnection":[{"__symbolic":"method"}]}},"JSONPConnection":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Request"},{"__symbolic":"reference","name":"ɵangular_packages_http_http_e"},{"__symbolic":"reference","name":"ResponseOptions"}]}],"finished":[{"__symbolic":"method"}]}},"CookieXSRFStrategy":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}],"configureRequest":[{"__symbolic":"method"}]}},"XHRBackend":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":234,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BrowserXhr"},{"__symbolic":"reference","name":"ResponseOptions"},{"__symbolic":"reference","name":"XSRFStrategy"}]}],"createConnection":[{"__symbolic":"method"}]}},"XHRConnection":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Request"},{"__symbolic":"reference","name":"BrowserXhr"},{"__symbolic":"reference","name":"ResponseOptions"}]}],"setDetectedContentType":[{"__symbolic":"method"}]}},"BaseRequestOptions":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"RequestOptions"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":206,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"RequestOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"RequestOptionsArgs"}]}],"merge":[{"__symbolic":"method"}],"_mergeSearchParams":[{"__symbolic":"method"}],"_parseParams":[{"__symbolic":"method"}],"_appendParam":[{"__symbolic":"method"}]}},"BaseResponseOptions":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ResponseOptions"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":165,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"ResponseOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ResponseOptionsArgs"}]}],"merge":[{"__symbolic":"method"}]}},"ReadyState":{"Unsent":0,"Open":1,"HeadersReceived":2,"Loading":3,"Done":4,"Cancelled":5},"RequestMethod":{"Get":0,"Post":1,"Put":2,"Delete":3,"Options":4,"Head":5,"Patch":6},"ResponseContentType":{"Text":0,"Json":1,"ArrayBuffer":2,"Blob":3},"ResponseType":{"Basic":0,"Cors":1,"Default":2,"Error":3,"Opaque":4},"Headers":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Expression form not supported","line":45,"character":32,"module":"./src/headers"}]}],"append":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"has":[{"__symbolic":"method"}],"keys":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"values":[{"__symbolic":"method"}],"toJSON":[{"__symbolic":"method"}],"getAll":[{"__symbolic":"method"}],"entries":[{"__symbolic":"method"}],"mayBeSetNormalizedName":[{"__symbolic":"method"}]}},"Http":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":105,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ConnectionBackend"},{"__symbolic":"reference","name":"RequestOptions"}]}],"request":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"post":[{"__symbolic":"method"}],"put":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"patch":[{"__symbolic":"method"}],"head":[{"__symbolic":"method"}],"options":[{"__symbolic":"method"}]}},"Jsonp":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"Http"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":194,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ConnectionBackend"},{"__symbolic":"reference","name":"RequestOptions"}]}],"request":[{"__symbolic":"method"}]}},"HttpModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":45,"character":1},"arguments":[{"providers":[{"provide":{"__symbolic":"reference","name":"Http"},"useFactory":{"__symbolic":"reference","name":"ɵangular_packages_http_http_b"},"deps":[{"__symbolic":"reference","name":"XHRBackend"},{"__symbolic":"reference","name":"RequestOptions"}]},{"__symbolic":"reference","name":"BrowserXhr"},{"provide":{"__symbolic":"reference","name":"RequestOptions"},"useClass":{"__symbolic":"reference","name":"BaseRequestOptions"}},{"provide":{"__symbolic":"reference","name":"ResponseOptions"},"useClass":{"__symbolic":"reference","name":"BaseResponseOptions"}},{"__symbolic":"reference","name":"XHRBackend"},{"provide":{"__symbolic":"reference","name":"XSRFStrategy"},"useFactory":{"__symbolic":"reference","name":"ɵangular_packages_http_http_a"}}]}]}],"members":{}},"JsonpModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":66,"character":1},"arguments":[{"providers":[{"provide":{"__symbolic":"reference","name":"Jsonp"},"useFactory":{"__symbolic":"reference","name":"ɵangular_packages_http_http_c"},"deps":[{"__symbolic":"reference","name":"JSONPBackend"},{"__symbolic":"reference","name":"RequestOptions"}]},{"__symbolic":"reference","name":"ɵangular_packages_http_http_e"},{"provide":{"__symbolic":"reference","name":"RequestOptions"},"useClass":{"__symbolic":"reference","name":"BaseRequestOptions"}},{"provide":{"__symbolic":"reference","name":"ResponseOptions"},"useClass":{"__symbolic":"reference","name":"BaseResponseOptions"}},{"__symbolic":"reference","name":"JSONPBackend"}]}]}],"members":{}},"Connection":{"__symbolic":"class","members":{}},"ConnectionBackend":{"__symbolic":"class","members":{"createConnection":[{"__symbolic":"method"}]}},"RequestOptionsArgs":{"__symbolic":"interface"},"ResponseOptionsArgs":{"__symbolic":"interface"},"XSRFStrategy":{"__symbolic":"class","members":{"configureRequest":[{"__symbolic":"method"}]}},"Request":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵangular_packages_http_http_f"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵangular_packages_http_http_d"}]}],"detectContentType":[{"__symbolic":"method"}],"detectContentTypeFromBody":[{"__symbolic":"method"}],"getBody":[{"__symbolic":"method"}]}},"Response":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵangular_packages_http_http_f"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ResponseOptions"}]}],"toString":[{"__symbolic":"method"}]}},"QueryEncoder":{"__symbolic":"class","members":{"encodeKey":[{"__symbolic":"method"}],"encodeValue":[{"__symbolic":"method"}]}},"URLSearchParams":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"QueryEncoder"}]}],"clone":[{"__symbolic":"method"}],"has":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"getAll":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"setAll":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendAll":[{"__symbolic":"method"}],"replaceAll":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}]}},"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":19,"character":27},"arguments":["7.2.8"]},"ɵangular_packages_http_http_e":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"build":[{"__symbolic":"method"}],"nextRequestID":[{"__symbolic":"method"}],"requestCallback":[{"__symbolic":"method"}],"exposeConnection":[{"__symbolic":"method"}],"removeConnection":[{"__symbolic":"method"}],"send":[{"__symbolic":"method"}],"cleanup":[{"__symbolic":"method"}]}},"ɵangular_packages_http_http_f":{"__symbolic":"class","members":{"json":[{"__symbolic":"method"}],"text":[{"__symbolic":"method"}],"arrayBuffer":[{"__symbolic":"method"}],"blob":[{"__symbolic":"method"}]}}},"origins":{"ɵangular_packages_http_http_a":"./src/http_module","ɵangular_packages_http_http_b":"./src/http_module","ɵangular_packages_http_http_c":"./src/http_module","ɵangular_packages_http_http_d":"./src/interfaces","BrowserXhr":"./src/backends/browser_xhr","JSONPBackend":"./src/backends/jsonp_backend","JSONPConnection":"./src/backends/jsonp_backend","CookieXSRFStrategy":"./src/backends/xhr_backend","XHRBackend":"./src/backends/xhr_backend","XHRConnection":"./src/backends/xhr_backend","BaseRequestOptions":"./src/base_request_options","RequestOptions":"./src/base_request_options","BaseResponseOptions":"./src/base_response_options","ResponseOptions":"./src/base_response_options","ReadyState":"./src/enums","RequestMethod":"./src/enums","ResponseContentType":"./src/enums","ResponseType":"./src/enums","Headers":"./src/headers","Http":"./src/http","Jsonp":"./src/http","HttpModule":"./src/http_module","JsonpModule":"./src/http_module","Connection":"./src/interfaces","ConnectionBackend":"./src/interfaces","RequestOptionsArgs":"./src/interfaces","ResponseOptionsArgs":"./src/interfaces","XSRFStrategy":"./src/interfaces","Request":"./src/static_request","Response":"./src/static_response","QueryEncoder":"./src/url_search_params","URLSearchParams":"./src/url_search_params","VERSION":"./src/version","ɵangular_packages_http_http_e":"./src/backends/browser_jsonp","ɵangular_packages_http_http_f":"./src/body"},"importAs":"@angular/http"}
\ No newline at end of file

package.json

@@ -1,6 +1,6 @@
{
"name": "@angular/http",
- "version": "7.2.7",
+ "version": "7.2.8",
"description": "Angular - the http service",
"main": "./bundles/http.umd.js",
"module": "./fesm5/http.js",
@@ -17,8 +17,8 @@
},
"peerDependencies": {
"rxjs": "^6.0.0",
- "@angular/core": "7.2.7",
- "@angular/platform-browser": "7.2.7"
+ "@angular/core": "7.2.8",
+ "@angular/platform-browser": "7.2.8"
},
"repository": {
"type": "git",

testing.d.ts

@@ -1,5 +1,5 @@
/**
- * @license Angular v7.2.7
+ * @license Angular v7.2.8
* (c) 2010-2019 Google LLC. https://angular.io/
* License: MIT
*/