proxy_chain_rb 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +16 -16
- data/README.md +14 -5
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/.yarn-integrity +23 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/README.md +1 -1
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/browser/bluebird.core.js +254 -121
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/browser/bluebird.core.min.js +3 -3
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/browser/bluebird.js +284 -129
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/browser/bluebird.min.js +4 -4
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/async.js +3 -48
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/debuggability.js +145 -27
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/join.js +4 -7
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/map.js +10 -3
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/promise.js +58 -28
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/promise_array.js +1 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/reduce.js +16 -5
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/settle.js +4 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/release/util.js +39 -7
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/package.json +39 -63
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/commander/CHANGELOG.md +11 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/commander/index.js +1 -1
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/commander/package.json +20 -52
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/debug/package.json +21 -60
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/ms/package.json +19 -51
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/portastic/node_modules/bluebird/package.json +41 -66
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/portastic/package.json +23 -51
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/CHANGELOG.md +18 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/README.md +8 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/anonymize_proxy.js +5 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/handler_base.js +86 -53
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/handler_forward.js +23 -5
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/handler_tunnel_chain.js +3 -7
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/handler_tunnel_direct.js +1 -1
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/index.js +3 -5
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/server.js +3 -1
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/tcp_tunnel.js +245 -115
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/tcp_tunnel_tools.js +138 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/node_modules/.bin/portastic +1 -0
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/package.json +41 -68
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/underscore/package.json +27 -58
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/package.json +1 -1
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/server.js +4 -2
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/yarn.lock +53 -0
- data/lib/proxy_chain_rb/server.rb +8 -6
- data/lib/proxy_chain_rb/version.rb +1 -1
- data/proxy_chain_rb.gemspec +3 -3
- metadata +16 -14
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/proxy-chain/build/handler_tunnel_tcp_chain.js +0 -271
- data/lib/proxy_chain_rb/node_js/proxy-chain-server/package-lock.json +0 -63
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55b6d5dde00b20efaefe250ac9e11d121f276c43e8e44e848124f82cef1beded
|
4
|
+
data.tar.gz: af0252ba1d5d19fae9c1102b0333839b72ce93846d56bbbdb0ddaca9f74ed9e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dadabb4980e437ecb5269b8ee37d44403bd0c2bec217051239e3d4db217a8ccb3b948d02b99e81eb573afaac9fc471fb35c76716dbce2218171c8cb7677b294
|
7
|
+
data.tar.gz: f7c899427644d5ecd1e41b1cbc22de8e93f45df0ede536595f9e25c5ad297d07f4db42bdcac260623590cf76278a440ec44ccc7aa631cf6090ff8a88df35b112
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
proxy_chain_rb (0.1.
|
4
|
+
proxy_chain_rb (0.1.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -12,30 +12,30 @@ GEM
|
|
12
12
|
pry (0.12.2)
|
13
13
|
coderay (~> 1.1.0)
|
14
14
|
method_source (~> 0.9.0)
|
15
|
-
rake (
|
16
|
-
rspec (3.
|
17
|
-
rspec-core (~> 3.
|
18
|
-
rspec-expectations (~> 3.
|
19
|
-
rspec-mocks (~> 3.
|
20
|
-
rspec-core (3.
|
21
|
-
rspec-support (~> 3.
|
22
|
-
rspec-expectations (3.
|
15
|
+
rake (13.0.0)
|
16
|
+
rspec (3.9.0)
|
17
|
+
rspec-core (~> 3.9.0)
|
18
|
+
rspec-expectations (~> 3.9.0)
|
19
|
+
rspec-mocks (~> 3.9.0)
|
20
|
+
rspec-core (3.9.0)
|
21
|
+
rspec-support (~> 3.9.0)
|
22
|
+
rspec-expectations (3.9.0)
|
23
23
|
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
-
rspec-support (~> 3.
|
25
|
-
rspec-mocks (3.
|
24
|
+
rspec-support (~> 3.9.0)
|
25
|
+
rspec-mocks (3.9.0)
|
26
26
|
diff-lcs (>= 1.2.0, < 2.0)
|
27
|
-
rspec-support (~> 3.
|
28
|
-
rspec-support (3.
|
27
|
+
rspec-support (~> 3.9.0)
|
28
|
+
rspec-support (3.9.0)
|
29
29
|
|
30
30
|
PLATFORMS
|
31
31
|
ruby
|
32
32
|
|
33
33
|
DEPENDENCIES
|
34
|
-
bundler (
|
34
|
+
bundler (>= 1.17.2)
|
35
35
|
proxy_chain_rb!
|
36
36
|
pry (~> 0.12.2)
|
37
|
-
rake (
|
38
|
-
rspec (
|
37
|
+
rake (>= 12.3.2)
|
38
|
+
rspec (>= 3.0)
|
39
39
|
|
40
40
|
BUNDLED WITH
|
41
41
|
1.17.2
|
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# ProxyChainRb
|
2
2
|
|
3
|
-
|
3
|
+
ProxyChainRb is a Ruby wrapper around the Node.JS library [proxy-chain](https://github.com/apifytech/proxy-chain).
|
4
4
|
|
5
|
-
|
5
|
+
It enables you to tunnel proxies that require authentication via non-authenticated proxies bound to localhost (making it possible to use authenticated proxies in e.g. Chrome and Firefox via Selenium).
|
6
|
+
|
7
|
+
This gem was created for scenarios where [proxifier](https://github.com/samuelkadolph/ruby-proxifier) wouldn't work. NordVPN proxies for example work with ProxyChainRb but somehow can't be used together with proxifier.
|
6
8
|
|
7
9
|
## Installation
|
8
10
|
|
@@ -22,7 +24,14 @@ Or install it yourself as:
|
|
22
24
|
|
23
25
|
## Usage
|
24
26
|
|
25
|
-
|
27
|
+
```ruby
|
28
|
+
real_proxy = "http://username:password@host:port"
|
29
|
+
server = ProxyChainRb::Server.new
|
30
|
+
generated_proxy = server.start(real_proxy)
|
31
|
+
# use generated_proxy as the proxy when opening new connections in your code
|
32
|
+
# when you're done:
|
33
|
+
server.stop
|
34
|
+
```
|
26
35
|
|
27
36
|
## Development
|
28
37
|
|
@@ -32,7 +41,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
41
|
|
33
42
|
## Contributing
|
34
43
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
44
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/SebastianJ/proxy_chain_rb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
45
|
|
37
46
|
## License
|
38
47
|
|
@@ -40,4 +49,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
40
49
|
|
41
50
|
## Code of Conduct
|
42
51
|
|
43
|
-
Everyone interacting in the ProxyChainRb project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
52
|
+
Everyone interacting in the ProxyChainRb project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/SebastianJ/proxy_chain_rb/blob/master/CODE_OF_CONDUCT.md).
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{
|
2
|
+
"systemParams": "darwin-x64-72",
|
3
|
+
"modulesFolders": [
|
4
|
+
"node_modules"
|
5
|
+
],
|
6
|
+
"flags": [],
|
7
|
+
"linkedModules": [],
|
8
|
+
"topLevelPatterns": [
|
9
|
+
"proxy-chain@^0.3.2"
|
10
|
+
],
|
11
|
+
"lockfileEntries": {
|
12
|
+
"bluebird@^2.9.34": "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1",
|
13
|
+
"bluebird@^3.5.1": "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.0.tgz#56a6a886e03f6ae577cffedeb524f8f2450293cf",
|
14
|
+
"commander@^2.8.1": "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33",
|
15
|
+
"debug@^2.2.0": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f",
|
16
|
+
"ms@2.0.0": "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8",
|
17
|
+
"portastic@^1.0.1": "https://registry.yarnpkg.com/portastic/-/portastic-1.0.1.tgz#1c9805d43fae8f6a40cf0dbc7794091a2e9d0d2a",
|
18
|
+
"proxy-chain@^0.3.2": "https://registry.yarnpkg.com/proxy-chain/-/proxy-chain-0.3.2.tgz#974524e3a8e7e9b12d81a9b53bb169caa5a990f5",
|
19
|
+
"underscore@^1.9.1": "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
|
20
|
+
},
|
21
|
+
"files": [],
|
22
|
+
"artifacts": {}
|
23
|
+
}
|
@@ -35,7 +35,7 @@ Thanks to BrowserStack for providing us with a free account which lets us suppor
|
|
35
35
|
|
36
36
|
The MIT License (MIT)
|
37
37
|
|
38
|
-
Copyright (c) 2013-
|
38
|
+
Copyright (c) 2013-2019 Petka Antonov
|
39
39
|
|
40
40
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
41
41
|
of this software and associated documentation files (the "Software"), to deal
|
data/lib/proxy_chain_rb/node_js/proxy-chain-server/node_modules/bluebird/js/browser/bluebird.core.js
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
*
|
24
24
|
*/
|
25
25
|
/**
|
26
|
-
* bluebird build version 3.
|
26
|
+
* bluebird build version 3.7.0
|
27
27
|
* Features enabled: core
|
28
28
|
* Features disabled: race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each
|
29
29
|
*/
|
@@ -33,7 +33,6 @@ var firstLineError;
|
|
33
33
|
try {throw new Error(); } catch (e) {firstLineError = e;}
|
34
34
|
var schedule = _dereq_("./schedule");
|
35
35
|
var Queue = _dereq_("./queue");
|
36
|
-
var util = _dereq_("./util");
|
37
36
|
|
38
37
|
function Async() {
|
39
38
|
this._customScheduler = false;
|
@@ -41,7 +40,6 @@ function Async() {
|
|
41
40
|
this._lateQueue = new Queue(16);
|
42
41
|
this._normalQueue = new Queue(16);
|
43
42
|
this._haveDrainedQueues = false;
|
44
|
-
this._trampolineEnabled = true;
|
45
43
|
var self = this;
|
46
44
|
this.drainQueues = function () {
|
47
45
|
self._drainQueues();
|
@@ -60,16 +58,6 @@ Async.prototype.hasCustomScheduler = function() {
|
|
60
58
|
return this._customScheduler;
|
61
59
|
};
|
62
60
|
|
63
|
-
Async.prototype.enableTrampoline = function() {
|
64
|
-
this._trampolineEnabled = true;
|
65
|
-
};
|
66
|
-
|
67
|
-
Async.prototype.disableTrampolineIfNecessary = function() {
|
68
|
-
if (util.hasDevTools) {
|
69
|
-
this._trampolineEnabled = false;
|
70
|
-
}
|
71
|
-
};
|
72
|
-
|
73
61
|
Async.prototype.haveItemsQueued = function () {
|
74
62
|
return this._isTickUsed || this._haveDrainedQueues;
|
75
63
|
};
|
@@ -118,43 +106,10 @@ function AsyncSettlePromises(promise) {
|
|
118
106
|
this._queueTick();
|
119
107
|
}
|
120
108
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
Async.prototype.settlePromises = AsyncSettlePromises;
|
125
|
-
} else {
|
126
|
-
Async.prototype.invokeLater = function (fn, receiver, arg) {
|
127
|
-
if (this._trampolineEnabled) {
|
128
|
-
AsyncInvokeLater.call(this, fn, receiver, arg);
|
129
|
-
} else {
|
130
|
-
this._schedule(function() {
|
131
|
-
setTimeout(function() {
|
132
|
-
fn.call(receiver, arg);
|
133
|
-
}, 100);
|
134
|
-
});
|
135
|
-
}
|
136
|
-
};
|
109
|
+
Async.prototype.invokeLater = AsyncInvokeLater;
|
110
|
+
Async.prototype.invoke = AsyncInvoke;
|
111
|
+
Async.prototype.settlePromises = AsyncSettlePromises;
|
137
112
|
|
138
|
-
Async.prototype.invoke = function (fn, receiver, arg) {
|
139
|
-
if (this._trampolineEnabled) {
|
140
|
-
AsyncInvoke.call(this, fn, receiver, arg);
|
141
|
-
} else {
|
142
|
-
this._schedule(function() {
|
143
|
-
fn.call(receiver, arg);
|
144
|
-
});
|
145
|
-
}
|
146
|
-
};
|
147
|
-
|
148
|
-
Async.prototype.settlePromises = function(promise) {
|
149
|
-
if (this._trampolineEnabled) {
|
150
|
-
AsyncSettlePromises.call(this, promise);
|
151
|
-
} else {
|
152
|
-
this._schedule(function() {
|
153
|
-
promise._settlePromises();
|
154
|
-
});
|
155
|
-
}
|
156
|
-
};
|
157
|
-
}
|
158
113
|
|
159
114
|
function _drainQueue(queue) {
|
160
115
|
while (queue.length() > 0) {
|
@@ -194,7 +149,7 @@ Async.prototype._reset = function () {
|
|
194
149
|
module.exports = Async;
|
195
150
|
module.exports.firstLineError = firstLineError;
|
196
151
|
|
197
|
-
},{"./queue":17,"./schedule":18
|
152
|
+
},{"./queue":17,"./schedule":18}],2:[function(_dereq_,module,exports){
|
198
153
|
"use strict";
|
199
154
|
module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {
|
200
155
|
var calledBind = false;
|
@@ -524,8 +479,8 @@ return Context;
|
|
524
479
|
|
525
480
|
},{}],7:[function(_dereq_,module,exports){
|
526
481
|
"use strict";
|
527
|
-
module.exports = function(Promise, Context
|
528
|
-
|
482
|
+
module.exports = function(Promise, Context,
|
483
|
+
enableAsyncHooks, disableAsyncHooks) {
|
529
484
|
var async = Promise._async;
|
530
485
|
var Warning = _dereq_("./errors").Warning;
|
531
486
|
var util = _dereq_("./util");
|
@@ -555,6 +510,77 @@ var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 &&
|
|
555
510
|
var wForgottenReturn = util.env("BLUEBIRD_W_FORGOTTEN_RETURN") != 0 &&
|
556
511
|
(warnings || !!util.env("BLUEBIRD_W_FORGOTTEN_RETURN"));
|
557
512
|
|
513
|
+
var deferUnhandledRejectionCheck;
|
514
|
+
(function() {
|
515
|
+
var promises = [];
|
516
|
+
|
517
|
+
function unhandledRejectionCheck() {
|
518
|
+
for (var i = 0; i < promises.length; ++i) {
|
519
|
+
promises[i]._notifyUnhandledRejection();
|
520
|
+
}
|
521
|
+
unhandledRejectionClear();
|
522
|
+
}
|
523
|
+
|
524
|
+
function unhandledRejectionClear() {
|
525
|
+
promises.length = 0;
|
526
|
+
}
|
527
|
+
|
528
|
+
if (util.isNode) {
|
529
|
+
deferUnhandledRejectionCheck = (function() {
|
530
|
+
var timers = _dereq_("timers");
|
531
|
+
var timerSetTimeout = timers.setTimeout;
|
532
|
+
var timer = timerSetTimeout(unhandledRejectionCheck, 1);
|
533
|
+
timer.unref();
|
534
|
+
|
535
|
+
return function(promise) {
|
536
|
+
promises.push(promise);
|
537
|
+
if (typeof timer.refresh === "function") {
|
538
|
+
timer.refresh();
|
539
|
+
} else {
|
540
|
+
timerSetTimeout(unhandledRejectionCheck, 1).unref();
|
541
|
+
}
|
542
|
+
};
|
543
|
+
})();
|
544
|
+
} else if (typeof document === "object" && document.createElement) {
|
545
|
+
deferUnhandledRejectionCheck = (function() {
|
546
|
+
var iframeSetTimeout;
|
547
|
+
|
548
|
+
function checkIframe() {
|
549
|
+
if (document.body) {
|
550
|
+
var iframe = document.createElement("iframe");
|
551
|
+
document.body.appendChild(iframe);
|
552
|
+
if (iframe.contentWindow &&
|
553
|
+
iframe.contentWindow.setTimeout) {
|
554
|
+
iframeSetTimeout = iframe.contentWindow.setTimeout;
|
555
|
+
}
|
556
|
+
document.body.removeChild(iframe);
|
557
|
+
}
|
558
|
+
}
|
559
|
+
checkIframe();
|
560
|
+
return function(promise) {
|
561
|
+
promises.push(promise);
|
562
|
+
if (iframeSetTimeout) {
|
563
|
+
iframeSetTimeout(unhandledRejectionCheck, 1);
|
564
|
+
} else {
|
565
|
+
checkIframe();
|
566
|
+
}
|
567
|
+
};
|
568
|
+
})();
|
569
|
+
} else {
|
570
|
+
deferUnhandledRejectionCheck = function(promise) {
|
571
|
+
promises.push(promise);
|
572
|
+
setTimeout(unhandledRejectionCheck, 1);
|
573
|
+
};
|
574
|
+
}
|
575
|
+
|
576
|
+
es5.defineProperty(Promise, "_unhandledRejectionCheck", {
|
577
|
+
value: unhandledRejectionCheck
|
578
|
+
});
|
579
|
+
es5.defineProperty(Promise, "_unhandledRejectionClear", {
|
580
|
+
value: unhandledRejectionClear
|
581
|
+
});
|
582
|
+
})();
|
583
|
+
|
558
584
|
Promise.prototype.suppressUnhandledRejections = function() {
|
559
585
|
var target = this._target();
|
560
586
|
target._bitField = ((target._bitField & (~1048576)) |
|
@@ -564,10 +590,7 @@ Promise.prototype.suppressUnhandledRejections = function() {
|
|
564
590
|
Promise.prototype._ensurePossibleRejectionHandled = function () {
|
565
591
|
if ((this._bitField & 524288) !== 0) return;
|
566
592
|
this._setRejectionIsUnhandled();
|
567
|
-
|
568
|
-
setTimeout(function() {
|
569
|
-
self._notifyUnhandledRejection();
|
570
|
-
}, 1);
|
593
|
+
deferUnhandledRejectionCheck(this);
|
571
594
|
};
|
572
595
|
|
573
596
|
Promise.prototype._notifyUnhandledRejectionIsHandled = function () {
|
@@ -625,19 +648,13 @@ Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) {
|
|
625
648
|
};
|
626
649
|
|
627
650
|
Promise.onPossiblyUnhandledRejection = function (fn) {
|
628
|
-
var
|
629
|
-
possiblyUnhandledRejection =
|
630
|
-
typeof fn === "function" ? (domain === null ?
|
631
|
-
fn : util.domainBind(domain, fn))
|
632
|
-
: undefined;
|
651
|
+
var context = Promise._getContext();
|
652
|
+
possiblyUnhandledRejection = util.contextBind(context, fn);
|
633
653
|
};
|
634
654
|
|
635
655
|
Promise.onUnhandledRejectionHandled = function (fn) {
|
636
|
-
var
|
637
|
-
unhandledRejectionHandled =
|
638
|
-
typeof fn === "function" ? (domain === null ?
|
639
|
-
fn : util.domainBind(domain, fn))
|
640
|
-
: undefined;
|
656
|
+
var context = Promise._getContext();
|
657
|
+
unhandledRejectionHandled = util.contextBind(context, fn);
|
641
658
|
};
|
642
659
|
|
643
660
|
var disableLongStackTraces = function() {};
|
@@ -658,14 +675,12 @@ Promise.longStackTraces = function () {
|
|
658
675
|
Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;
|
659
676
|
Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;
|
660
677
|
Context.deactivateLongStackTraces();
|
661
|
-
async.enableTrampoline();
|
662
678
|
config.longStackTraces = false;
|
663
679
|
};
|
664
680
|
Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;
|
665
681
|
Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;
|
666
682
|
Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;
|
667
683
|
Context.activateLongStackTraces();
|
668
|
-
async.disableTrampolineIfNecessary();
|
669
684
|
}
|
670
685
|
};
|
671
686
|
|
@@ -673,43 +688,85 @@ Promise.hasLongStackTraces = function () {
|
|
673
688
|
return config.longStackTraces && longStackTracesIsSupported();
|
674
689
|
};
|
675
690
|
|
691
|
+
|
692
|
+
var legacyHandlers = {
|
693
|
+
unhandledrejection: {
|
694
|
+
before: function() {
|
695
|
+
var ret = util.global.onunhandledrejection;
|
696
|
+
util.global.onunhandledrejection = null;
|
697
|
+
return ret;
|
698
|
+
},
|
699
|
+
after: function(fn) {
|
700
|
+
util.global.onunhandledrejection = fn;
|
701
|
+
}
|
702
|
+
},
|
703
|
+
rejectionhandled: {
|
704
|
+
before: function() {
|
705
|
+
var ret = util.global.onrejectionhandled;
|
706
|
+
util.global.onrejectionhandled = null;
|
707
|
+
return ret;
|
708
|
+
},
|
709
|
+
after: function(fn) {
|
710
|
+
util.global.onrejectionhandled = fn;
|
711
|
+
}
|
712
|
+
}
|
713
|
+
};
|
714
|
+
|
676
715
|
var fireDomEvent = (function() {
|
716
|
+
var dispatch = function(legacy, e) {
|
717
|
+
if (legacy) {
|
718
|
+
var fn;
|
719
|
+
try {
|
720
|
+
fn = legacy.before();
|
721
|
+
return !util.global.dispatchEvent(e);
|
722
|
+
} finally {
|
723
|
+
legacy.after(fn);
|
724
|
+
}
|
725
|
+
} else {
|
726
|
+
return !util.global.dispatchEvent(e);
|
727
|
+
}
|
728
|
+
};
|
677
729
|
try {
|
678
730
|
if (typeof CustomEvent === "function") {
|
679
731
|
var event = new CustomEvent("CustomEvent");
|
680
732
|
util.global.dispatchEvent(event);
|
681
733
|
return function(name, event) {
|
734
|
+
name = name.toLowerCase();
|
682
735
|
var eventData = {
|
683
736
|
detail: event,
|
684
737
|
cancelable: true
|
685
738
|
};
|
739
|
+
var domEvent = new CustomEvent(name, eventData);
|
686
740
|
es5.defineProperty(
|
687
|
-
|
688
|
-
es5.defineProperty(
|
689
|
-
|
690
|
-
|
741
|
+
domEvent, "promise", {value: event.promise});
|
742
|
+
es5.defineProperty(
|
743
|
+
domEvent, "reason", {value: event.reason});
|
744
|
+
|
745
|
+
return dispatch(legacyHandlers[name], domEvent);
|
691
746
|
};
|
692
747
|
} else if (typeof Event === "function") {
|
693
748
|
var event = new Event("CustomEvent");
|
694
749
|
util.global.dispatchEvent(event);
|
695
750
|
return function(name, event) {
|
696
|
-
|
751
|
+
name = name.toLowerCase();
|
752
|
+
var domEvent = new Event(name, {
|
697
753
|
cancelable: true
|
698
754
|
});
|
699
755
|
domEvent.detail = event;
|
700
756
|
es5.defineProperty(domEvent, "promise", {value: event.promise});
|
701
757
|
es5.defineProperty(domEvent, "reason", {value: event.reason});
|
702
|
-
return
|
758
|
+
return dispatch(legacyHandlers[name], domEvent);
|
703
759
|
};
|
704
760
|
} else {
|
705
761
|
var event = document.createEvent("CustomEvent");
|
706
762
|
event.initCustomEvent("testingtheevent", false, true, {});
|
707
763
|
util.global.dispatchEvent(event);
|
708
764
|
return function(name, event) {
|
765
|
+
name = name.toLowerCase();
|
709
766
|
var domEvent = document.createEvent("CustomEvent");
|
710
|
-
domEvent.initCustomEvent(name
|
767
|
+
domEvent.initCustomEvent(name, false, true,
|
711
768
|
event);
|
712
|
-
return
|
769
|
+
return dispatch(legacyHandlers[name], domEvent);
|
713
770
|
};
|
714
771
|
}
|
715
772
|
} catch (e) {}
|
@@ -827,6 +884,18 @@ Promise.config = function(opts) {
|
|
827
884
|
Promise.prototype._fireEvent = defaultFireEvent;
|
828
885
|
}
|
829
886
|
}
|
887
|
+
if ("asyncHooks" in opts && util.nodeSupportsAsyncResource) {
|
888
|
+
var prev = config.asyncHooks;
|
889
|
+
var cur = !!opts.asyncHooks;
|
890
|
+
if (prev !== cur) {
|
891
|
+
config.asyncHooks = cur;
|
892
|
+
if (cur) {
|
893
|
+
enableAsyncHooks();
|
894
|
+
} else {
|
895
|
+
disableAsyncHooks();
|
896
|
+
}
|
897
|
+
}
|
898
|
+
}
|
830
899
|
return Promise;
|
831
900
|
};
|
832
901
|
|
@@ -1424,12 +1493,16 @@ var config = {
|
|
1424
1493
|
warnings: warnings,
|
1425
1494
|
longStackTraces: false,
|
1426
1495
|
cancellation: false,
|
1427
|
-
monitoring: false
|
1496
|
+
monitoring: false,
|
1497
|
+
asyncHooks: false
|
1428
1498
|
};
|
1429
1499
|
|
1430
1500
|
if (longStackTraces) Promise.longStackTraces();
|
1431
1501
|
|
1432
1502
|
return {
|
1503
|
+
asyncHooks: function() {
|
1504
|
+
return config.asyncHooks;
|
1505
|
+
},
|
1433
1506
|
longStackTraces: function() {
|
1434
1507
|
return config.longStackTraces;
|
1435
1508
|
},
|
@@ -1458,7 +1531,7 @@ return {
|
|
1458
1531
|
};
|
1459
1532
|
};
|
1460
1533
|
|
1461
|
-
},{"./errors":9,"./es5":10,"./util":21}],8:[function(_dereq_,module,exports){
|
1534
|
+
},{"./errors":9,"./es5":10,"./util":21,"timers":undefined}],8:[function(_dereq_,module,exports){
|
1462
1535
|
"use strict";
|
1463
1536
|
module.exports = function(Promise) {
|
1464
1537
|
function returner() {
|
@@ -1857,8 +1930,7 @@ return PassThroughHandlerContext;
|
|
1857
1930
|
},{"./catch_filter":5,"./util":21}],12:[function(_dereq_,module,exports){
|
1858
1931
|
"use strict";
|
1859
1932
|
module.exports =
|
1860
|
-
function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async
|
1861
|
-
getDomain) {
|
1933
|
+
function(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async) {
|
1862
1934
|
var util = _dereq_("./util");
|
1863
1935
|
var canEvaluate = util.canEvaluate;
|
1864
1936
|
var tryCatch = util.tryCatch;
|
@@ -2004,10 +2076,8 @@ Promise.join = function () {
|
|
2004
2076
|
|
2005
2077
|
if (!ret._isFateSealed()) {
|
2006
2078
|
if (holder.asyncNeeded) {
|
2007
|
-
var
|
2008
|
-
|
2009
|
-
holder.fn = util.domainBind(domain, holder.fn);
|
2010
|
-
}
|
2079
|
+
var context = Promise._getContext();
|
2080
|
+
holder.fn = util.contextBind(context, holder.fn);
|
2011
2081
|
}
|
2012
2082
|
ret._setAsyncGuaranteed();
|
2013
2083
|
ret._setOnCancel(holder);
|
@@ -2149,20 +2219,42 @@ var apiRejection = function(msg) {
|
|
2149
2219
|
function Proxyable() {}
|
2150
2220
|
var UNDEFINED_BINDING = {};
|
2151
2221
|
var util = _dereq_("./util");
|
2222
|
+
util.setReflectHandler(reflectHandler);
|
2152
2223
|
|
2153
|
-
var getDomain
|
2154
|
-
|
2155
|
-
|
2156
|
-
var ret = process.domain;
|
2157
|
-
if (ret === undefined) ret = null;
|
2158
|
-
return ret;
|
2159
|
-
};
|
2160
|
-
} else {
|
2161
|
-
getDomain = function() {
|
2224
|
+
var getDomain = function() {
|
2225
|
+
var domain = process.domain;
|
2226
|
+
if (domain === undefined) {
|
2162
2227
|
return null;
|
2228
|
+
}
|
2229
|
+
return domain;
|
2230
|
+
};
|
2231
|
+
var getContextDefault = function() {
|
2232
|
+
return null;
|
2233
|
+
};
|
2234
|
+
var getContextDomain = function() {
|
2235
|
+
return {
|
2236
|
+
domain: getDomain(),
|
2237
|
+
async: null
|
2163
2238
|
};
|
2164
|
-
}
|
2165
|
-
util.
|
2239
|
+
};
|
2240
|
+
var AsyncResource = util.isNode && util.nodeSupportsAsyncResource ?
|
2241
|
+
_dereq_("async_hooks").AsyncResource : null;
|
2242
|
+
var getContextAsyncHooks = function() {
|
2243
|
+
return {
|
2244
|
+
domain: getDomain(),
|
2245
|
+
async: new AsyncResource("Bluebird::Promise")
|
2246
|
+
};
|
2247
|
+
};
|
2248
|
+
var getContext = util.isNode ? getContextDomain : getContextDefault;
|
2249
|
+
util.notEnumerableProp(Promise, "_getContext", getContext);
|
2250
|
+
var enableAsyncHooks = function() {
|
2251
|
+
getContext = getContextAsyncHooks;
|
2252
|
+
util.notEnumerableProp(Promise, "_getContext", getContextAsyncHooks);
|
2253
|
+
};
|
2254
|
+
var disableAsyncHooks = function() {
|
2255
|
+
getContext = getContextDomain;
|
2256
|
+
util.notEnumerableProp(Promise, "_getContext", getContextDomain);
|
2257
|
+
};
|
2166
2258
|
|
2167
2259
|
var es5 = _dereq_("./es5");
|
2168
2260
|
var Async = _dereq_("./async");
|
@@ -2186,7 +2278,9 @@ var PromiseArray =
|
|
2186
2278
|
var Context = _dereq_("./context")(Promise);
|
2187
2279
|
/*jshint unused:false*/
|
2188
2280
|
var createContext = Context.create;
|
2189
|
-
|
2281
|
+
|
2282
|
+
var debug = _dereq_("./debuggability")(Promise, Context,
|
2283
|
+
enableAsyncHooks, disableAsyncHooks);
|
2190
2284
|
var CapturedTrace = debug.CapturedTrace;
|
2191
2285
|
var PassThroughHandlerContext =
|
2192
2286
|
_dereq_("./finally")(Promise, tryConvertToPromise, NEXT_FILTER);
|
@@ -2383,7 +2477,7 @@ Promise.prototype._then = function (
|
|
2383
2477
|
this._fireEvent("promiseChained", this, promise);
|
2384
2478
|
}
|
2385
2479
|
|
2386
|
-
var
|
2480
|
+
var context = getContext();
|
2387
2481
|
if (!((bitField & 50397184) === 0)) {
|
2388
2482
|
var handler, value, settler = target._settlePromiseCtx;
|
2389
2483
|
if (((bitField & 33554432) !== 0)) {
|
@@ -2401,15 +2495,14 @@ Promise.prototype._then = function (
|
|
2401
2495
|
}
|
2402
2496
|
|
2403
2497
|
async.invoke(settler, target, {
|
2404
|
-
handler:
|
2405
|
-
: (typeof handler === "function" &&
|
2406
|
-
util.domainBind(domain, handler)),
|
2498
|
+
handler: util.contextBind(context, handler),
|
2407
2499
|
promise: promise,
|
2408
2500
|
receiver: receiver,
|
2409
2501
|
value: value
|
2410
2502
|
});
|
2411
2503
|
} else {
|
2412
|
-
target._addCallbacks(didFulfill, didReject, promise,
|
2504
|
+
target._addCallbacks(didFulfill, didReject, promise,
|
2505
|
+
receiver, context);
|
2413
2506
|
}
|
2414
2507
|
|
2415
2508
|
return promise;
|
@@ -2470,7 +2563,15 @@ Promise.prototype._setWillBeCancelled = function() {
|
|
2470
2563
|
|
2471
2564
|
Promise.prototype._setAsyncGuaranteed = function() {
|
2472
2565
|
if (async.hasCustomScheduler()) return;
|
2473
|
-
|
2566
|
+
var bitField = this._bitField;
|
2567
|
+
this._bitField = bitField |
|
2568
|
+
(((bitField & 536870912) >> 2) ^
|
2569
|
+
134217728);
|
2570
|
+
};
|
2571
|
+
|
2572
|
+
Promise.prototype._setNoAsyncGuarantee = function() {
|
2573
|
+
this._bitField = (this._bitField | 536870912) &
|
2574
|
+
(~134217728);
|
2474
2575
|
};
|
2475
2576
|
|
2476
2577
|
Promise.prototype._receiverAt = function (index) {
|
@@ -2525,7 +2626,7 @@ Promise.prototype._addCallbacks = function (
|
|
2525
2626
|
reject,
|
2526
2627
|
promise,
|
2527
2628
|
receiver,
|
2528
|
-
|
2629
|
+
context
|
2529
2630
|
) {
|
2530
2631
|
var index = this._length();
|
2531
2632
|
|
@@ -2538,12 +2639,10 @@ Promise.prototype._addCallbacks = function (
|
|
2538
2639
|
this._promise0 = promise;
|
2539
2640
|
this._receiver0 = receiver;
|
2540
2641
|
if (typeof fulfill === "function") {
|
2541
|
-
this._fulfillmentHandler0 =
|
2542
|
-
domain === null ? fulfill : util.domainBind(domain, fulfill);
|
2642
|
+
this._fulfillmentHandler0 = util.contextBind(context, fulfill);
|
2543
2643
|
}
|
2544
2644
|
if (typeof reject === "function") {
|
2545
|
-
this._rejectionHandler0 =
|
2546
|
-
domain === null ? reject : util.domainBind(domain, reject);
|
2645
|
+
this._rejectionHandler0 = util.contextBind(context, reject);
|
2547
2646
|
}
|
2548
2647
|
} else {
|
2549
2648
|
var base = index * 4 - 4;
|
@@ -2551,11 +2650,11 @@ Promise.prototype._addCallbacks = function (
|
|
2551
2650
|
this[base + 3] = receiver;
|
2552
2651
|
if (typeof fulfill === "function") {
|
2553
2652
|
this[base + 0] =
|
2554
|
-
|
2653
|
+
util.contextBind(context, fulfill);
|
2555
2654
|
}
|
2556
2655
|
if (typeof reject === "function") {
|
2557
2656
|
this[base + 1] =
|
2558
|
-
|
2657
|
+
util.contextBind(context, reject);
|
2559
2658
|
}
|
2560
2659
|
}
|
2561
2660
|
this._setLength(index + 1);
|
@@ -2575,6 +2674,7 @@ Promise.prototype._resolveCallback = function(value, shouldBind) {
|
|
2575
2674
|
|
2576
2675
|
if (shouldBind) this._propagateFrom(maybePromise, 2);
|
2577
2676
|
|
2677
|
+
|
2578
2678
|
var promise = maybePromise._target();
|
2579
2679
|
|
2580
2680
|
if (promise === this) {
|
@@ -2591,7 +2691,7 @@ Promise.prototype._resolveCallback = function(value, shouldBind) {
|
|
2591
2691
|
}
|
2592
2692
|
this._setFollowing();
|
2593
2693
|
this._setLength(0);
|
2594
|
-
this._setFollowee(
|
2694
|
+
this._setFollowee(maybePromise);
|
2595
2695
|
} else if (((bitField & 33554432) !== 0)) {
|
2596
2696
|
this._fulfill(promise._value());
|
2597
2697
|
} else if (((bitField & 16777216) !== 0)) {
|
@@ -2882,9 +2982,9 @@ _dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug);
|
|
2882
2982
|
_dereq_("./direct_resolve")(Promise);
|
2883
2983
|
_dereq_("./synchronous_inspection")(Promise);
|
2884
2984
|
_dereq_("./join")(
|
2885
|
-
Promise, PromiseArray, tryConvertToPromise, INTERNAL, async
|
2985
|
+
Promise, PromiseArray, tryConvertToPromise, INTERNAL, async);
|
2886
2986
|
Promise.Promise = Promise;
|
2887
|
-
Promise.version = "3.
|
2987
|
+
Promise.version = "3.7.0";
|
2888
2988
|
|
2889
2989
|
util.toFastProperties(Promise);
|
2890
2990
|
util.toFastProperties(Promise.prototype);
|
@@ -2910,7 +3010,7 @@ Promise.version = "3.5.5";
|
|
2910
3010
|
|
2911
3011
|
};
|
2912
3012
|
|
2913
|
-
},{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21}],16:[function(_dereq_,module,exports){
|
3013
|
+
},{"./async":1,"./bind":2,"./cancel":4,"./catch_filter":5,"./context":6,"./debuggability":7,"./direct_resolve":8,"./errors":9,"./es5":10,"./finally":11,"./join":12,"./method":13,"./nodeback":14,"./promise_array":16,"./synchronous_inspection":19,"./thenables":20,"./util":21,"async_hooks":undefined}],16:[function(_dereq_,module,exports){
|
2914
3014
|
"use strict";
|
2915
3015
|
module.exports = function(Promise, INTERNAL, tryConvertToPromise,
|
2916
3016
|
apiRejection, Proxyable) {
|
@@ -2929,6 +3029,7 @@ function PromiseArray(values) {
|
|
2929
3029
|
var promise = this._promise = new Promise(INTERNAL);
|
2930
3030
|
if (values instanceof Promise) {
|
2931
3031
|
promise._propagateFrom(values, 3);
|
3032
|
+
values.suppressUnhandledRejections();
|
2932
3033
|
}
|
2933
3034
|
promise._setOnCancel(this);
|
2934
3035
|
this._values = values;
|
@@ -3758,18 +3859,42 @@ function getNativePromise() {
|
|
3758
3859
|
if (typeof Promise === "function") {
|
3759
3860
|
try {
|
3760
3861
|
var promise = new Promise(function(){});
|
3761
|
-
if (
|
3862
|
+
if (classString(promise) === "[object Promise]") {
|
3762
3863
|
return Promise;
|
3763
3864
|
}
|
3764
3865
|
} catch (e) {}
|
3765
3866
|
}
|
3766
3867
|
}
|
3767
3868
|
|
3768
|
-
|
3769
|
-
|
3869
|
+
var reflectHandler;
|
3870
|
+
function contextBind(ctx, cb) {
|
3871
|
+
if (ctx === null ||
|
3872
|
+
typeof cb !== "function" ||
|
3873
|
+
cb === reflectHandler) {
|
3874
|
+
return cb;
|
3875
|
+
}
|
3876
|
+
|
3877
|
+
if (ctx.domain !== null) {
|
3878
|
+
cb = ctx.domain.bind(cb);
|
3879
|
+
}
|
3880
|
+
|
3881
|
+
var async = ctx.async;
|
3882
|
+
if (async !== null) {
|
3883
|
+
var old = cb;
|
3884
|
+
cb = function() {
|
3885
|
+
var args = (new Array(2)).concat([].slice.call(arguments));;
|
3886
|
+
args[0] = old;
|
3887
|
+
args[1] = this;
|
3888
|
+
return async.runInAsyncScope.apply(async, args);
|
3889
|
+
};
|
3890
|
+
}
|
3891
|
+
return cb;
|
3770
3892
|
}
|
3771
3893
|
|
3772
3894
|
var ret = {
|
3895
|
+
setReflectHandler: function(fn) {
|
3896
|
+
reflectHandler = fn;
|
3897
|
+
},
|
3773
3898
|
isClass: isClass,
|
3774
3899
|
isIdentifier: isIdentifier,
|
3775
3900
|
inheritedDataKeys: inheritedDataKeys,
|
@@ -3796,29 +3921,37 @@ var ret = {
|
|
3796
3921
|
markAsOriginatingFromRejection: markAsOriginatingFromRejection,
|
3797
3922
|
classString: classString,
|
3798
3923
|
copyDescriptors: copyDescriptors,
|
3799
|
-
hasDevTools: typeof chrome !== "undefined" && chrome &&
|
3800
|
-
typeof chrome.loadTimes === "function",
|
3801
3924
|
isNode: isNode,
|
3802
3925
|
hasEnvVariables: hasEnvVariables,
|
3803
3926
|
env: env,
|
3804
3927
|
global: globalObject,
|
3805
3928
|
getNativePromise: getNativePromise,
|
3806
|
-
|
3929
|
+
contextBind: contextBind
|
3807
3930
|
};
|
3808
3931
|
ret.isRecentNode = ret.isNode && (function() {
|
3809
3932
|
var version;
|
3810
|
-
if (process.versions && process.versions.node) {
|
3933
|
+
if (process.versions && process.versions.node) {
|
3811
3934
|
version = process.versions.node.split(".").map(Number);
|
3812
3935
|
} else if (process.version) {
|
3813
3936
|
version = process.version.split(".").map(Number);
|
3814
3937
|
}
|
3815
3938
|
return (version[0] === 0 && version[1] > 10) || (version[0] > 0);
|
3816
3939
|
})();
|
3940
|
+
ret.nodeSupportsAsyncResource = ret.isNode && (function() {
|
3941
|
+
var supportsAsync = false;
|
3942
|
+
try {
|
3943
|
+
var res = _dereq_("async_hooks").AsyncResource;
|
3944
|
+
supportsAsync = typeof res.prototype.runInAsyncScope === "function";
|
3945
|
+
} catch (e) {
|
3946
|
+
supportsAsync = false;
|
3947
|
+
}
|
3948
|
+
return supportsAsync;
|
3949
|
+
})();
|
3817
3950
|
|
3818
3951
|
if (ret.isNode) ret.toFastProperties(process);
|
3819
3952
|
|
3820
3953
|
try {throw new Error(); } catch (e) {ret.lastLineError = e;}
|
3821
3954
|
module.exports = ret;
|
3822
3955
|
|
3823
|
-
},{"./es5":10}]},{},[3])(3)
|
3956
|
+
},{"./es5":10,"async_hooks":undefined}]},{},[3])(3)
|
3824
3957
|
}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }
|