Commit Graph

113 Commits

Author SHA1 Message Date
Timothy Gu 8c7c179fef
Add some more internal API docs 2018-02-03 11:19:32 -08:00
Moritz 19b115f9dc Add error event hander for the body stream even if the body isn't accessed (#379)
Fixes #378
2018-01-27 11:20:05 -08:00
David Frank 3345b652e4
fix a small oversight in request class
lowercase method name does not trigger type error properly (#362)
2017-11-19 12:44:02 +08:00
Timothy Gu cf5975cb5c Support TypeScript import (#332)
Fixes #307.
2017-09-24 13:06:41 +08:00
Timothy Gu 60cf26c2f3
Use require() for Node.js core modules
Fixes: #318
2017-07-27 00:15:32 +08:00
Jared Kantrowitz 432cd8a31e remove `encoding` as a dependency, throw detailed Error if not installed (#302)
* remove `encoding` as a dependency, throw descriptive Error if textConverted() is used without it in env

* remove rollup ext dep resolution since we don't need it

* switch to programmer error, rm unneeded test conditions, bump timeout for slow CI

* more kill `encoding` dep PR changes

keep blank "dependencies" prop in package.json so rollup's external config func doesn't seize
add ext dep checks back to the rollup config
no implicit var
clarify test comment

* [squash] alter travis cfg to test with and without `encoding`, various

fix devDeps
separate `encoding` tests to their own block

* [squash] fixing nits

* [squash] ci: full matrix of form-data versions and encoding existence

and nits
2017-07-02 12:32:48 -04:00
Jared Kantrowitz 76e8ad8b24 refactor deprecated `new Buffer` with Buffer.from and Buffer.alloc (#299)
* refactor deprecated `new Buffer` with Buffer.from and Buffer.alloc

* don't need new ArrayBuffer instance when already an ArrayBuffer
2017-06-19 20:41:05 -04:00
jared kantrowitz 6b990d0631 use synchronous try/catch to fix codecov missing lines 2017-06-19 20:31:15 -04:00
jared kantrowitz 1804041726 wrap JSON.parse's SynaxError with FetchError 2017-06-19 20:31:15 -04:00
Jared Kantrowitz 553d50e804 Accept URLSearchParams as body (#297)
Fixes: #296
2017-06-12 13:29:50 +08:00
David Frank 770388db1b only enable Z_SYNC_FLUSH for gzip response 2017-05-15 19:45:04 +08:00
Kat Marchán e5ff203ef4 Revert "Allow passing agent option as an object (#236)" (#263)
This reverts commit ec29e3d264.

This patch prevents any agent being passed in which is not explicitly
an instance of `http.Agent`. This makes `node-fetch` no longer
compatible with https://npm.im/proxy-agent, which is one example of a
library that does not directly inherit from `http.Agent` directly.

Sorry for the revert -- I don't have an alternative patch because I
don't believe this is something node-fetch should be doing
automatically, because of how much of a limitation this could impose.

The original PR stated that this was to prevent requiring http/https,
and the effect would effectively be to force creation of an Agent on
every call. Note that this is already the behavior specified for
http.Agent when http.request received `false`. (See the bottom of the
[section on http.Agent in the Node
docs](https://nodejs.org/dist/latest-v7.x/docs/api/http.html#http_class_http_agent).

Cheers, and with apologies to @ahmadnassri for reverting their PR.
2017-04-08 18:33:46 -07:00
Ahmad Nassri ec29e3d264 Allow passing agent option as an object (#236) 2017-04-03 02:54:31 -07:00
Kat Marchán 09f2e30557 headers.get: add space to join (#257)
The behavior was changed in whatwg/fetch#504.
2017-04-02 08:43:46 -07:00
Gajus Kuizinas 4804a40c17 Add a special case for constructing Headers with Headers (#253)
Fixes: #251.
2017-03-20 09:22:49 -07:00
Grzegorz Graczyk a1e76b97e1 More lenient gzip decompression (#239)
Ref: https://github.com/nodejs/node/issues/8701#issuecomment-268224481
Ref: https://github.com/request/request/issues/2482
Ref: https://github.com/request/request/pull/2492
Fixes: http://www.mantovanispa.it
Fixes: #139
2017-02-27 10:02:45 -08:00
Timothy Gu 397eab7757 compress: use spec nomenclature 2017-02-26 21:27:27 -08:00
Tino Vyatkin f0d0675d00 Remove unneeded is-stream and buffer-to-arraybuffer (#241) 2017-02-26 18:29:57 -08:00
Timothy Gu 25e43a8f3e Export FetchError and update ERROR-HANDLING.md 2017-02-26 16:46:34 -08:00
Timothy Gu 55e573b741 Back to 100% coverage 2017-02-26 15:30:43 -08:00
Timothy Gu 9e140039ac Factor out Body mixin 2017-02-26 14:42:09 -08:00
Timothy Gu f08b120771 Do not inherit from body
Per spec, make Body a proper mixin
2017-02-26 14:29:40 -08:00
Tino Vyatkin edb28a6c50 Drop Node.js v0.12 support (#240) 2017-02-26 13:17:47 -08:00
Timothy Gu 11a9481405 request: overwrite Content-Length if possible
Also reorganize header normalization
2017-01-29 10:06:54 -08:00
Timothy Gu ac8ddaccb8 Improve Headers constructor argument processing 2017-01-29 08:58:16 -08:00
Timothy Gu e9db869523 Remove FOLLOW_SPEC option; make it the default behavior (#225)
* Remove !FOLLOW_SPEC mode

* Update UPGRADE-GUIDE

* Add CHANGELOG entry
2017-01-23 07:54:28 -08:00
Timothy Gu 502b604208 Fix Headers iterable initializer handling 2017-01-14 21:22:23 -08:00
Timothy Gu 151de2bdfb Use ES2015 export syntax (#212)
* Implement Rollup's external module check

* Use ES2015 export syntax

More friendly to ES2015 environments.
2017-01-14 20:50:10 -08:00
Timothy Gu 7970491000 Use template literals in Request
Closes #217.
2016-12-14 15:45:00 -08:00
Nathan Rajlich fa22529128 proper stack first line for FetchError instances (#215)
The `.stack` property gets cached in the `captureStackTrace()` call, so
whatever is set as the `name` and `message` at that time will be used
for the first line of the stack trace.

Before this patch, FetchError's stack would just say "Error" as the
first line. Now they correctly display the "${name}: ${message}" of the
error instances.

Test case included.

Signed-off-by: Timothy Gu <timothygu99@gmail.com>
2016-12-14 15:41:35 -08:00
Timothy Gu 0f7e6c15d3 Back to 100% 2016-12-05 21:20:00 -08:00
Timothy Gu 90d3bc4436 Set content-length for buffer bodies 2016-12-05 20:30:00 -08:00
Timothy Gu a604069860 More exact content-type and content-length
Set content-type of requests with body being objects to text/plain
2016-12-05 20:27:08 -08:00
Timothy Gu 552c1a601d Bring coverage up to 100% 2016-12-05 18:46:02 -08:00
Timothy Gu e7a13a5314 Add support for blobs 2016-12-05 15:06:22 -08:00
Timothy Gu cc4ace1778 Make body default to null in Request
Fixes #208.
2016-12-04 13:16:03 -08:00
Timothy Gu 3d676235a8 Throw when a GET/HEAD Request is created with body
As mandated by the spec
2016-12-04 13:15:03 -08:00
Timothy Gu 70f61e0c7d Split http.request options generation 2016-11-26 15:10:23 -08:00
Timothy Gu 0285828fb8 Split Content-Type extraction to Request and Body
It is done in this way in the spec.
2016-11-26 15:10:23 -08:00
Timothy Gu d3071fa46a Revert "Return empty .json() object on 204. Fix #165. (#166)" (#201)
This reverts commit 95b58936b8.

Fixes #165.
2016-11-26 09:07:12 -08:00
Timothy Gu 7f0e50260e Add a polyfill for Node.js v0.12's broken %IteratorPrototype% 2016-11-23 15:26:35 -08:00
Timothy Gu 25ff99677d Improve Headers' iteration support
Class strings, spec-compliant forEach, etc.
2016-11-23 15:06:30 -08:00
Timothy Gu 4ae42ea5ee Fix class names for prototypes
Per Web IDL specification.
2016-11-23 14:36:21 -08:00
Timothy Gu 908bcaac4c Work around istanbul's bug
See istanbuljs/istanbul-lib-instrument#30.
2016-11-23 11:39:18 -08:00
Timothy Gu 31bc2835dd Start using Rollup
Smaller distributed tarball.
2016-11-23 11:18:02 -08:00
Timothy Gu 4a9a3246f6 Remove dependency on Node.js' util module
Closes #194.
2016-11-04 21:52:18 -07:00
Timothy Gu 76cb57cace Support WHATWG URL objects
Fixes #175.
2016-10-15 10:19:52 -07:00
Timothy Gu 53e1055845 Use Object.create(null) for Headers' internal map
Suggested by @jimmywarting.
2016-10-15 10:03:10 -07:00
Timothy Gu 1b951701ec Remove logic to skip if not HTML in textConverted
As this function is now separated from the general purpose text(), we
should be more specific in our purpose.
2016-10-15 09:41:52 -07:00
Timothy Gu d3b4161d7c Add a new res.textConverted() and always use UTF-8 for res.text()
Also uses iconv-lite directly instead of using the "encoding" package.

Fixes #184.
2016-10-15 09:41:52 -07:00
Timothy Gu f829b71ddb Use babel-runtime's Iterator implementation 2016-10-15 08:21:51 -07:00
Timothy Gu 2a7ef63bc4 Add FOLLOW_SPEC mode 2016-10-15 08:21:51 -07:00
Timothy Gu 2cafdcb5e4 Validate headers 2016-10-15 08:21:51 -07:00
Timothy Gu fba873d3fe Make sure to coerce header values to string 2016-10-15 08:21:51 -07:00
Timothy Gu ba226399d4 Construct Headers object in a spec-compliant fashion 2016-10-15 08:21:51 -07:00
Timothy Gu 82c1e78184 Allow constructing Headers with an Array 2016-10-15 08:21:51 -07:00
Timothy Gu c3a121a360 Add support for Body#arrayBuffer 2016-10-12 17:29:33 -07:00
Timothy Gu 64e239b092 Improve Body spec compliance when body is null 2016-10-12 17:29:33 -07:00
Timothy Gu 9d3cc52601 Body: store fewer things in the class
Incorporates some changes from #140, by Gabriel Wicke
<gwicke@wikimedia.org>.
2016-10-12 17:29:33 -07:00
Timothy Gu a0be6aa34a Simplify Request constructor
Also make Request more standard compliant:

> The `url` attribute's getter must return request's url, **serialized.**
2016-10-12 17:29:33 -07:00
Timothy Gu 838071247d Convert all files to ES2015 (#182)
Elements of this commit come from #140 by @gwicke.
2016-10-10 11:50:04 -07:00
Timothy Gu 993d4cdea1 Convert Headers to ES2015 and implement Iterable interface (#180)
Closes #127, #174.
2016-10-08 20:51:01 -07:00
Timothy Gu 7c26fa9479 Add Babel infrastructure
No actual code has been changed yet.
2016-10-04 02:59:46 -07:00