Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Got 12 improvements #1667

Merged
merged 187 commits into from Apr 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
ee911ed
:D
szmarczak Mar 14, 2021
49a1696
fix import
szmarczak Mar 14, 2021
cabfad9
fixes
szmarczak Mar 14, 2021
365acee
do not proxy options
szmarczak Mar 14, 2021
20d0017
Implement merging
szmarczak Mar 15, 2021
fd64e27
Fix merging
szmarczak Mar 15, 2021
06e7fc2
fix linting
szmarczak Mar 15, 2021
a846fe3
linting
szmarczak Mar 15, 2021
c0776bc
fix retry types
szmarczak Mar 15, 2021
06ad449
nitpicks
szmarczak Mar 16, 2021
c003f92
small cleanup
szmarczak Mar 16, 2021
79d70bc
add getRequestFunction to options
szmarczak Mar 16, 2021
f3e83a6
We're using TS 4 now
szmarczak Mar 16, 2021
058d4b2
Use get-stream package
szmarczak Mar 16, 2021
428c683
refactor promise utilities
szmarczak Mar 16, 2021
56ba778
bug fixes
szmarczak Mar 16, 2021
af8faf3
Promisify setTimeout for better stack traces
szmarczak Mar 17, 2021
99feab8
dnsLookupIpVersion is now a number
szmarczak Mar 17, 2021
ebac9fd
save work
szmarczak Mar 17, 2021
11df47e
bug fixes
szmarczak Mar 17, 2021
4d2f23e
remove moot code
szmarczak Mar 17, 2021
d5101ca
Call onCancel only once per promise
szmarczak Mar 17, 2021
ea674e5
reuse request options
szmarczak Mar 17, 2021
ce6bed1
fix promise afterresponse hook
szmarczak Mar 17, 2021
9b4ff8b
working promisegit add .! :DDDD
szmarczak Mar 17, 2021
3dad44a
wanted: newline
szmarczak Mar 17, 2021
7bac171
...
szmarczak Mar 20, 2021
d56aaed
Two instances of Options can now be merged! Yay!
szmarczak Mar 20, 2021
f97636d
Support url option
szmarczak Mar 20, 2021
a74864a
benchmark got
szmarczak Mar 20, 2021
16ebff5
Ignore flamegraph
szmarczak Mar 20, 2021
d7f2afd
Rename `lookup` to `dnsLookup`
szmarczak Mar 20, 2021
7e167cb
Use `private` keyword instead of symbols
szmarczak Mar 20, 2021
6d54775
meh
szmarczak Mar 20, 2021
caaac62
Make `requestUrl` and `redirectUrls` instances of URL
szmarczak Mar 20, 2021
8d5510f
Remove moot code
szmarczak Mar 20, 2021
e3372ea
Clean up code a bit
szmarczak Mar 20, 2021
73d6ebd
update todo
szmarczak Mar 20, 2021
ec82037
Fix some retry logic
szmarczak Mar 21, 2021
78ab062
Clean up some piece of code
szmarczak Mar 21, 2021
96ef147
Fix linting
szmarczak Mar 21, 2021
c1bc9f1
Fix a bug
szmarczak Mar 21, 2021
c3ca847
Normalize beforeRetry hook
szmarczak Mar 21, 2021
55b8914
Add an assertion
szmarczak Mar 23, 2021
094a0c5
Remove _isAboutToError getter
szmarczak Mar 23, 2021
b55ca95
Fixes
szmarczak Mar 23, 2021
3fbd2e9
Fix cache
szmarczak Mar 23, 2021
1cc7a1e
Fix hook types
szmarczak Mar 23, 2021
8a22af9
Remove options argument from beforeRedirect hooks
szmarczak Mar 23, 2021
8ab25e5
Remove moot arguments from retry and redirect events
szmarczak Mar 23, 2021
61b1fdf
Fixes
szmarczak Mar 23, 2021
abb8bc2
Fixes
szmarczak Mar 23, 2021
8fe4df0
Update retry option checks
szmarczak Mar 23, 2021
97dc18c
Fixes
szmarczak Mar 23, 2021
b1ed041
Fix linting
szmarczak Mar 23, 2021
46d0956
fix
szmarczak Mar 23, 2021
cf9c19c
fix linting
szmarczak Mar 23, 2021
96ebbce
Improve speed of canceling promise
szmarczak Mar 23, 2021
37b701d
Do not exceed maximum stack size
szmarczak Mar 23, 2021
9e35032
fixes
szmarczak Mar 23, 2021
6927bd3
save work
szmarczak Mar 23, 2021
89d8884
fixes
szmarczak Mar 23, 2021
c114a4e
nitpicks
szmarczak Mar 23, 2021
0e0a336
Call request.destroy() on promise resolve
szmarczak Mar 26, 2021
8a86db5
nitpicks
szmarczak Mar 26, 2021
a0c5906
Make error.options enumerable
szmarczak Mar 26, 2021
fe02a4a
nitpicks
szmarczak Mar 26, 2021
416abb5
Reuse descriptor in order to increase performance
szmarczak Mar 27, 2021
7f30204
Add request.reusedSocket
szmarczak Mar 27, 2021
14dff7b
Improve handlers (part 1)
szmarczak Mar 28, 2021
e9b55df
Improve handlers (Part 2)
szmarczak Mar 28, 2021
69ac8f9
Make it build
szmarczak Mar 28, 2021
b210da2
Make it run (I think)
szmarczak Mar 28, 2021
bbed261
Add another export
szmarczak Mar 28, 2021
1fd8ef6
Make it actually run
szmarczak Mar 28, 2021
39eb30a
Restore benchmarks, small bug fixes
szmarczak Mar 28, 2021
192540b
Make benchmarks run
szmarczak Mar 28, 2021
729c5ef
Fix agent normalization
szmarczak Mar 28, 2021
f7517c9
Update benchmarks
szmarczak Mar 28, 2021
3271a16
Update benchmarks
szmarczak Mar 28, 2021
863b42d
update benchmarks
szmarczak Mar 28, 2021
511f688
Got interface improvements
szmarczak Mar 28, 2021
ad90801
Fix options.body throwing on set
szmarczak Mar 28, 2021
9fdc554
Fixes
szmarczak Mar 28, 2021
b657279
Fix linting
szmarczak Mar 28, 2021
81cd9c9
Add exports
szmarczak Mar 28, 2021
0473db9
Fix exports
szmarczak Mar 28, 2021
2df0582
Fix moot export
szmarczak Mar 28, 2021
4c912c8
Do not export methodsWithoutBody
szmarczak Mar 28, 2021
1e95380
Handler are amazing!
szmarczak Mar 28, 2021
7c79fc2
Bug fixes
szmarczak Apr 2, 2021
9e95126
Fix mutableDefaults
szmarczak Apr 2, 2021
aba4322
Fixes
szmarczak Apr 2, 2021
a6503eb
Parse Link header <3
szmarczak Apr 2, 2021
d6b5e0f
Small fix
szmarczak Apr 2, 2021
3a66e25
Fix linting
szmarczak Apr 2, 2021
381ca78
Update BeforeRedirectHook & test/hooks.ts
szmarczak Apr 3, 2021
d304f04
Fix test/agent.ts
szmarczak Apr 3, 2021
0813f21
Fix test/arguments.ts
szmarczak Apr 3, 2021
d1faf2f
Fix test/cache.ts
szmarczak Apr 3, 2021
a425366
Fix test/cancel.ts
szmarczak Apr 3, 2021
afe35e1
Fix test/create.ts
szmarczak Apr 3, 2021
b0ddb8a
Fix test/error.ts
szmarczak Apr 3, 2021
e8926b3
Fix test/headers.ts
szmarczak Apr 3, 2021
6feddcb
Fix test/helpers.ts
szmarczak Apr 3, 2021
e010f29
Fix test/http.ts
szmarczak Apr 3, 2021
9882b79
Fox test/https.ts
szmarczak Apr 3, 2021
884c21e
Fix test/merge-instances.ts
szmarczak Apr 3, 2021
12270ae
Fix test/normalize-arguments.ts
szmarczak Apr 3, 2021
c44703b
Add missing import
szmarczak Apr 3, 2021
39c3fe2
Fix test/redirects.ts
szmarczak Apr 3, 2021
65ffb26
Fix test/response-parse.ts
szmarczak Apr 3, 2021
aa831ea
Fix test/retry.ts
szmarczak Apr 3, 2021
8c17af6
Fix test/stream.ts
szmarczak Apr 3, 2021
31c1e5e
Fix test/tiemout.ts
szmarczak Apr 3, 2021
fe2f60b
Fix test/unix-socket.ts
szmarczak Apr 3, 2021
c4a0d67
Partially fix test/pagination.ts
szmarczak Apr 3, 2021
91eacda
Fix linting
szmarczak Apr 3, 2021
367b7e0
Build tests
szmarczak Apr 3, 2021
2d6380f
Partially fix test/pagination.ts
szmarczak Apr 4, 2021
64e3c51
Finally fix test/pagination.ts
szmarczak Apr 4, 2021
15736b0
Fixes
szmarczak Apr 4, 2021
42fea57
Fix test hooks
szmarczak Apr 4, 2021
fe840a6
Fix got.extend
szmarczak Apr 4, 2021
92bb5e8
Add a comment
szmarczak Apr 4, 2021
9d1b6c6
Fix
szmarczak Apr 4, 2021
bf2e057
Fix merging url option
szmarczak Apr 4, 2021
e6fc61f
Default agents to undefined
szmarczak Apr 4, 2021
bab784e
Fix url normalizing & fix init hooks
szmarczak Apr 4, 2021
70811e6
Add second parameter to init hooks
szmarczak Apr 4, 2021
c57eb3e
Default url in Request to an empty string
szmarczak Apr 4, 2021
132ee96
Remove only from a test
szmarczak Apr 4, 2021
10571bc
Fix broken redirects
szmarczak Apr 5, 2021
38bccbb
Fix retries
szmarczak Apr 5, 2021
3be64ea
Fixes
szmarczak Apr 5, 2021
b869834
Fix dnsCache not being used
szmarczak Apr 5, 2021
7f55b94
Fix cache
szmarczak Apr 5, 2021
df86dfe
Fix sending body on cached request
szmarczak Apr 5, 2021
90a3079
Fix got.stream option merging
szmarczak Apr 5, 2021
3bf0e8b
Make test/cache.ts pass
szmarczak Apr 5, 2021
288388e
Specify missing default timeouts
szmarczak Apr 5, 2021
ba8f5ba
Make test/cancel.ts pass
szmarczak Apr 5, 2021
c050b46
Make test/unix-sockets.ts pass
szmarczak Apr 5, 2021
5cbb050
Make test/timeout.ts pass
szmarczak Apr 5, 2021
7805dd6
Fix a regression
szmarczak Apr 5, 2021
3f65a19
Make test/stream.ts pass
szmarczak Apr 5, 2021
4894fe3
Make test/response-parse.ts pass
szmarczak Apr 5, 2021
78458df
Make test/redirects.ts pass
szmarczak Apr 5, 2021
a2d2bda
Make test/promise.ts pass
szmarczak Apr 5, 2021
1f50522
Make test/post.ts pass
szmarczak Apr 5, 2021
96797eb
Make test/merge-instances.ts pass
szmarczak Apr 5, 2021
90cc513
Make test/http.ts pass
szmarczak Apr 5, 2021
9e9b0da
Remove unused util function
szmarczak Apr 5, 2021
6c2f7c7
Make test/https.ts pass
szmarczak Apr 5, 2021
2220351
Fix linting
szmarczak Apr 5, 2021
8394e3a
Make test/error.ts almost pass
szmarczak Apr 5, 2021
cf040c5
Fix linting
szmarczak Apr 5, 2021
c4591b0
Fix a regression
szmarczak Apr 7, 2021
1e3c686
Always set result.cancel fn
szmarczak Apr 7, 2021
bc9d275
Fix a retry.ts test
szmarczak Apr 7, 2021
a282a74
Fix a retry.ts test
szmarczak Apr 7, 2021
7114995
Make test/retry.ts pass
szmarczak Apr 7, 2021
6ce3391
Forgot to clone pagination options...
szmarczak Apr 7, 2021
4fc921d
Make test/pagination.ts pass
szmarczak Apr 7, 2021
5c9c76a
Make test/error.ts pass
szmarczak Apr 7, 2021
31de513
Make test/hooks.ts pass
szmarczak Apr 7, 2021
23aabe1
Cleanup options.ts
szmarczak Apr 9, 2021
3b5b636
Cleanup index.ts
szmarczak Apr 9, 2021
871416c
Move timed-out.ts out of utils
szmarczak Apr 9, 2021
0f295ff
Make test/create.ts pass
szmarczak Apr 9, 2021
a3213fe
Fix two tests
szmarczak Apr 9, 2021
445f326
Fix a test
szmarczak Apr 9, 2021
3d8a823
Fix some tests
szmarczak Apr 9, 2021
6f28df7
Remove moot test
szmarczak Apr 9, 2021
0700878
Remove demo.js
szmarczak Apr 9, 2021
f7aa7cf
Fix linting
szmarczak Apr 9, 2021
1658d23
Nitpick
szmarczak Apr 9, 2021
9db9312
Fix some tests
szmarczak Apr 9, 2021
62b1361
Make test/arguments.ts pass
szmarczak Apr 9, 2021
f72a32b
Fix some tests
szmarczak Apr 9, 2021
fee744b
Fix a regression
szmarczak Apr 9, 2021
1934d70
response.message is broken, do not use it
szmarczak Apr 9, 2021
6da3caa
Add a test
szmarczak Apr 9, 2021
6354514
Test maxretryafetr
szmarczak Apr 9, 2021
a09ac7c
Test link header
szmarczak Apr 9, 2021
33cfba1
Fixes
szmarczak Apr 9, 2021
b236bb6
Update types.ts
sindresorhus Apr 11, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,3 +3,4 @@ yarn.lock
coverage
.nyc_output
dist
*.0x
72 changes: 53 additions & 19 deletions benchmark/index.ts
Expand Up @@ -5,31 +5,31 @@ import * as Benchmark from 'benchmark';
import fetch from 'node-fetch';
import * as request from 'request';
import got from '../source/index';
import Request, {kIsNormalizedAlready} from '../source/core/index';

const {normalizeArguments} = Request;
import Request from '../source/core/index';
import Options, {OptionsInit} from '../source/core/options';

// Configuration
const httpsAgent = new https.Agent({
keepAlive: true,
rejectUnauthorized: false
});

const url = new URL('https://127.0.0.1:8080');
const url = new URL('https://127.0.0.1:8081');
const urlString = url.toString();

const gotOptions = {
const gotOptions: OptionsInit & {isStream?: true} = {
agent: {
https: httpsAgent
},
https: {
httpsOptions: {
rejectUnauthorized: false
},
retry: 0
retry: {
limit: 0
}
};

const normalizedGotOptions = normalizeArguments(url, gotOptions);
normalizedGotOptions[kIsNormalizedAlready] = true;
const normalizedGotOptions = new Options(url, gotOptions);

const requestOptions = {
strictSSL: false,
Expand Down Expand Up @@ -80,6 +80,7 @@ suite.add('got - promise', {
defer: true,
fn: async (deferred: {resolve: () => void}) => {
const stream = new Request(url, gotOptions);
void stream.flush();
stream.resume().once('end', () => {
deferred.resolve();
});
Expand All @@ -88,6 +89,7 @@ suite.add('got - promise', {
defer: true,
fn: async (deferred: {resolve: () => void}) => {
const stream = new Request(undefined as any, normalizedGotOptions);
void stream.flush();
stream.resume().once('end', () => {
deferred.resolve();
});
Expand Down Expand Up @@ -169,7 +171,8 @@ const internalBenchmark = (): void => {
const internalSuite = new Benchmark.Suite();
internalSuite.add('got - normalize options', {
fn: () => {
normalizeArguments(url, gotOptions);
// eslint-disable-next-line no-new
new Options(url, gotOptions);
}
}).on('cycle', (event: Benchmark.Event) => {
console.log(String(event.target));
Expand All @@ -179,17 +182,48 @@ const internalBenchmark = (): void => {
};

// Results (i7-7700k, CPU governor: performance):

// e9359d3fa0cb40324f2b84364408b3f9f7ff2cee (Rewrite Got #1051) - unknown Node.js version
// got - promise x 3,092 ops/sec ±5.25% (73 runs sampled)
// got - stream x 4,313 ops/sec ±5.61% (72 runs sampled)
// got - promise core x 6,756 ops/sec ±5.32% (80 runs sampled)
// got - stream core x 6,863 ops/sec ±4.68% (76 runs sampled)
// got - stream core - normalized options x 7,960 ops/sec ±3.83% (81 runs sampled)

// b927e2d028ecc023bf7eff2702ffb5c72016a85a (Fix bugs, increase coverage, update benchmark results) - unknown Node.js version
// got - promise x 3,204 ops/sec ±5.27% (73 runs sampled)
// got - stream x 5,045 ops/sec ±3.85% (77 runs sampled)
// got - promise core x 6,499 ops/sec ±3.67% (77 runs sampled)
// got - stream core x 7,047 ops/sec ±2.32% (83 runs sampled)
// got - stream core - normalized options x 7,313 ops/sec ±2.79% (85 runs sampled)

// 7e8898e9095e7da52e4ff342606cfd1dc5186f54 (Merge PromisableRequest into Request) - unknown Node.js version
// got - promise x 3,003 ops/sec ±6.26% (70 runs sampled)
// got - stream x 3,538 ops/sec ±5.86% (67 runs sampled)
// got - core x 5,828 ops/sec ±3.11% (79 runs sampled)
// got - core - normalized options x 7,596 ops/sec ±1.60% (85 runs sampled)
// request - callback x 6,530 ops/sec ±6.84% (72 runs sampled)
// request - stream x 7,348 ops/sec ±3.62% (78 runs sampled)
// node-fetch - promise x 6,284 ops/sec ±5.50% (76 runs sampled)
// node-fetch - stream x 7,746 ops/sec ±3.32% (80 runs sampled)
// axios - promise x 6,301 ops/sec ±6.24% (77 runs sampled)
// axios - stream x 8,605 ops/sec ±2.73% (87 runs sampled)
// https - stream x 10,477 ops/sec ±3.64% (80 runs sampled)
// Fastest is https - stream

// got - normalize options x 90,974 ops/sec ±0.57% (93 runs sampled)
// [main] - Node.js v15.10.0
// got - promise x 3,201 ops/sec ±5.24% (67 runs sampled)
// got - stream x 3,633 ops/sec ±4.06% (74 runs sampled)
// got - core x 4,382 ops/sec ±3.26% (77 runs sampled)
// got - core - normalized options x 5,470 ops/sec ±3.70% (78 runs sampled)

// v12 - Node.js v15.10.0
// got - promise x 3,492 ops/sec ±5.13% (71 runs sampled)
// got - stream x 4,772 ops/sec ±1.52% (84 runs sampled)
// got - core x 4,990 ops/sec ±1.14% (83 runs sampled)
// got - core - normalized options x 5,386 ops/sec ±0.52% (87 runs sampled)

// got - normalize options x 117,810 ops/sec ±0.36% (97 runs sampled)

// ================================================================================

// request - callback x 6,448 ops/sec ±5.76% (67 runs sampled)
// request - stream x 7,115 ops/sec ±2.85% (83 runs sampled)
// node-fetch - promise x 6,236 ops/sec ±5.56% (75 runs sampled)
// node-fetch - stream x 7,225 ops/sec ±2.10% (81 runs sampled)
// axios - promise x 5,620 ops/sec ±3.13% (78 runs sampled)
// axios - stream x 7,244 ops/sec ±3.31% (80 runs sampled)
// https - stream x 8,588 ops/sec ±5.50% (61 runs sampled)
// Fastest is https - stream
7 changes: 4 additions & 3 deletions package.json
Expand Up @@ -50,7 +50,8 @@
"cacheable-lookup": "^6.0.0",
"cacheable-request": "^7.0.1",
"decompress-response": "^6.0.0",
"http2-wrapper": "^2.0.0",
"get-stream": "^6.0.0",
"http2-wrapper": "^2.0.1",
"lowercase-keys": "^2.0.0",
"p-cancelable": "^2.0.0",
"responselike": "^2.0.0"
Expand Down Expand Up @@ -78,7 +79,6 @@
"delay": "^5.0.0",
"express": "^4.17.1",
"form-data": "^4.0.0",
"get-stream": "^6.0.0",
"nock": "^13.0.7",
"node-fetch": "^2.6.1",
"np": "^7.4.0",
Expand Down Expand Up @@ -137,7 +137,8 @@
"import/no-anonymous-default-export": "off",
"@typescript-eslint/no-implicit-any-catch": "off",
"unicorn/import-index": "off",
"import/no-useless-path-segments": "off"
"import/no-useless-path-segments": "off",
"import/no-named-as-default": "off"
}
},
"runkitExampleFilename": "./documentation/examples/runkit-example.js"
Expand Down
31 changes: 0 additions & 31 deletions source/as-promise/create-rejection.ts

This file was deleted.