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

Release proposal: v3.2.0 #2511

Closed
wants to merge 74 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
0bb099f
build: expand ~ in install prefix early
bnoordhuis Aug 5, 2015
e76822f
doc: multiple documentation updates cherry picked from v0.12
jasnell Jun 24, 2015
cf9ba81
test: address timing issues in simple http tests
gireeshpunathil Mar 18, 2015
1738c96
net: ensure Socket reported address is current
rmg Jul 2, 2015
0ee4df9
test: make listen-fd-cluster/server more robust
sam-github Jun 10, 2015
e83a41a
tls: introduce internal `onticketkeycallback`
indutny Aug 8, 2015
94b765f
tls: fix check for reused session
indutny Aug 8, 2015
7606bdb
util: display constructor when inspecting objects
monsanto Jun 10, 2015
07a88b0
build: update manifest to include Windows 10
LPGhatguy Aug 9, 2015
7118b8a
path: remove dead code in favor of unit tests
nwoltman Jul 31, 2015
cc46d3b
test: clarify dropMembership() call
Trott Jun 26, 2015
ccf12df
src: add total_available_size to v8 statistics
r-52 Aug 11, 2015
e51f90d
test: option to run a subset of tests
joaocgreis Jul 27, 2015
071640a
build: Intl: bump ICU4C from 54 to 55
srl295 Aug 3, 2015
1f12e03
build: intl: converge from joyent/node
srl295 Aug 13, 2015
bff9bcd
src: plug memory leaks
bnoordhuis Aug 7, 2015
5586cec
src: move internal functions out of node_buffer.h
bnoordhuis Aug 13, 2015
fd63e1c
src: introduce internal Buffer::Copy() function
bnoordhuis Aug 13, 2015
455ec57
src: rename Buffer::Use() to Buffer::New()
bnoordhuis Aug 13, 2015
3645dc6
build: work around VS2015 issue in ICU <56
srl295 Jul 31, 2015
d1307b2
src: don't use fopen() in require() fast path
bnoordhuis Aug 13, 2015
844d3f0
path: use '===' instead of '==' for comparison
Aug 15, 2015
a3160c0
test: correct spelling of 'childProcess'
muddletoes Nov 12, 2014
b196c1d
src: fix memory leak in DLOpen
skomski Aug 14, 2015
f45487c
crypto: fix memory leak in SetDHParam
skomski Aug 14, 2015
a760a87
crypto: fix memory leak in SafeX509ExtPrint
skomski Aug 14, 2015
6a16368
crypto: fix memory leak in PublicKeyCipher::Cipher
skomski Aug 14, 2015
ba6eb8a
crypto: fix memory leak in ECDH::SetPrivateKey
skomski Aug 14, 2015
605f6ee
crypto: fix memory leak in PBKDF2Request
skomski Aug 14, 2015
fb0f5d7
tools: run the tick processor without building v8
Jul 1, 2015
cbb75c4
tls: fix throughput issues after incorrect merge
indutny Aug 14, 2015
7fe6dd8
crypto: check for OpenSSL errors when signing
pmq20 Aug 18, 2015
34f2cfa
src: better error message on failed Buffer malloc
skomski Aug 17, 2015
850c794
test: refactor test-fs-watchfile.js
Trott Aug 15, 2015
6483bc2
doc: clarify options for fs.watchFile()
Trott Aug 18, 2015
46cdb2f
test: lint addon tests
bnoordhuis Aug 18, 2015
194eeb8
test: drop Isolate::GetCurrent() from addon tests
bnoordhuis Aug 18, 2015
2ff183d
Update FIPS instructions in README.md
mhdawson Jul 30, 2015
53596fd
2015-08-18 io.js v3.1.0 Release
Fishrock123 Aug 18, 2015
8576324
Working on v3.1.1
Fishrock123 Aug 18, 2015
3e6a6fc
events: deprecate static listenerCount function
thefourtheye Aug 11, 2015
11d1b8f
test: improve test-net-pingpong
brendanashworth Aug 18, 2015
b60e690
test: improve test-net-server-pause-on-connect
brendanashworth Aug 18, 2015
3545e23
test: reduce timeouts in test-net-keepalive
brendanashworth Aug 18, 2015
2d3f09b
stream_base: various improvements
indutny Aug 11, 2015
7f02443
repl: dont throw ENOENT on NODE_REPL_HISTORY_FILE
toddself Aug 19, 2015
3579f3a
test: disallow unreachable code
targos Aug 20, 2015
e714b56
test: remove unreachable code
targos Aug 2, 2015
3f821b9
doc: fix spelling mistake in node.js comment
YafahEdelman Aug 15, 2015
d9b70f9
tls: handle empty cert in checkServerIndentity
Aug 10, 2015
77075ec
crypto: fix mem {de}allocation in ExportChallenge
skomski Aug 12, 2015
f5cf24a
doc: add TSC meeting minutes 2015-07-22
rvagg Aug 19, 2015
56a2ae9
src: improve startup time
evanlucas Aug 21, 2015
c1ce423
string_bytes: fix unaligned write in UCS2
indutny Aug 20, 2015
1cd794f
buffer: reapply 07c0667
indutny Aug 21, 2015
5d74869
repl: filter integer keys from repl tab complete list
jasnell Aug 17, 2015
87a9ef0
doc: add audio recording links to TSC meeting minutes
rvagg Aug 20, 2015
14f2aee
doc: fix links to original gh issues for TSC meetings
rvagg Aug 20, 2015
7130b4c
doc: fix links to original converged repo
rvagg Aug 20, 2015
51ef910
doc: add TSC meeting minutes 2015-06-03
rvagg Aug 20, 2015
aaefde7
doc: add TSC meeting minutes 2015-08-19
rvagg Aug 20, 2015
2c7b925
doc: add TSC meeting minutes 2015-07-29
rvagg Aug 19, 2015
cd0c362
doc: update AUTHORS list
rvagg Aug 6, 2015
64a8f30
tools: fix anchors in generated documents
thefourtheye Aug 22, 2015
023386c
fs: replace bad_args macro with concrete error msg
romankl Aug 22, 2015
5df06fd
test: add spaces after keywords
brendanashworth Aug 18, 2015
b76b919
tools: enable space-after-keywords in eslint
brendanashworth Aug 18, 2015
7f23a83
doc: update AUTHORS list
rvagg Aug 23, 2015
c9867fe
doc: document response.finished in http.markdown
liveinjs Dec 10, 2013
5fef5c6
tls: add --tls-cipher-list command line switch
jasnell Aug 17, 2015
4f8e34c
tools: add license boilerplate to check-imports.sh
jasnell Aug 15, 2015
09437e0
doc: fix comments in tls_wrap.cc and _http_client.js
JungMinu Aug 22, 2015
536c3d0
test: use reserved IP in test-net-connect-timeout
Trott Jul 28, 2015
23d525e
2015-08-24 io.js v3.2.0 Release
rvagg Aug 23, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ rules:
eol-last: 2
## no trailing spaces
no-trailing-spaces: 2
# require space after keywords, eg 'for (..)'
space-after-keywords: 2

# Strict Mode
# list: https://github.com/eslint/eslint/tree/master/docs/rules#strict-mode
Expand Down
4 changes: 3 additions & 1 deletion .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ Maciej Małecki <[email protected]> <[email protected]>
Malte-Thorben Bruns <[email protected]>
Malte-Thorben Bruns <[email protected]>
Mathias Pettersson <[email protected]>
Matthew Lye <[email protected]>
Michael Bernstein <[email protected]>
Michael Wilber <[email protected]>
Micheil Smith <[email protected]> <[email protected]>
Expand Down Expand Up @@ -112,7 +113,8 @@ Siddharth Mahendraker <[email protected]> <[email protected]>
Simon Willison <[email protected]>
Stanislav Opichal <[email protected]>
Stefan Bühler <[email protected]>
Steven R. Loomis <[email protected]>
Steven R. Loomis <[email protected]> <[email protected]>
Todd Kennedy <[email protected]> <[email protected]>
TJ Holowaychuk <[email protected]>
TJ Holowaychuk <[email protected]> <[email protected]>
Tadashi SAWADA <[email protected]>
Expand Down
15 changes: 14 additions & 1 deletion AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,7 @@ dead-horse <[email protected]>
Luis Reis <[email protected]>
Jackson Tian <[email protected]>
sudodoki <[email protected]>
Steven Loomis <[email protected]>
haoxin <[email protected]>
Artur Cistov <[email protected]>
MK Safi <[email protected]>
Expand Down Expand Up @@ -688,7 +689,7 @@ Roman Reiss <[email protected]>
Glen Keane <[email protected]>
Xiaowei Li <[email protected]>
toastynerd <[email protected]>
Todd Kennedy <[email protected]>
Todd Kennedy <[email protected]>
Icer Liang <[email protected]>
Stephen Belanger <[email protected]>
Jeremiah Senkpiel <[email protected]>
Expand Down Expand Up @@ -773,5 +774,17 @@ Pierre Inglebert <[email protected]>
Ivan Yan <[email protected]>
Sangmin Yoon <[email protected]>
Mark Plomer <[email protected]>
Phillip Johnsen <[email protected]>
Matteo Collina <[email protected]>
jomo <[email protected]>
Gireesh Punathil <[email protected]>
Lucien Greathouse <[email protected]>
Chad Johnston <[email protected]>
Sam Stites <[email protected]>
Matthew Lye <[email protected]>
Matt Loring <[email protected]>
P.S.V.R <[email protected]>
Jacob Edelman <[email protected]>
Mike Atkins <[email protected]>

# Generated by tools/update-authors.sh
122 changes: 122 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

385 changes: 385 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

26 changes: 21 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ NODE ?= ./iojs$(EXEEXT)
NODE_EXE = iojs$(EXEEXT)
NODE_G_EXE = iojs_g$(EXEEXT)

# Flags for packaging.
BUILD_DOWNLOAD_FLAGS ?= --download=all
BUILD_INTL_FLAGS ?= --with-intl=small-icu
BUILD_RELEASE_FLAGS ?= $(BUILD_DOWNLOAD_FLAGS) $(BUILD_INTL_FLAGS)

# Default to verbose builds.
# To do quiet/pretty builds, run `make V=` to set V to an empty string,
# or set the V environment variable to an empty string.
Expand Down Expand Up @@ -302,7 +307,7 @@ $(PKG): release-only
--dest-cpu=x64 \
--tag=$(TAG) \
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS)
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR)
SIGN="$(CODESIGN_CERT)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
cat tools/osx-pkg.pmdoc/index.xml.tmpl \
Expand Down Expand Up @@ -363,7 +368,7 @@ $(TARBALL)-headers: config.gypi release-only
--dest-cpu=$(DESTCPU) \
--tag=$(TAG) \
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS)
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
find $(TARNAME)/ -type l | xargs rm # annoying on windows
tar -cf $(TARNAME)-headers.tar $(TARNAME)
Expand Down Expand Up @@ -393,7 +398,7 @@ $(BINARYTAR): release-only
--dest-cpu=$(DESTCPU) \
--tag=$(TAG) \
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS)
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
cp README.md $(BINARYNAME)
cp LICENSE $(BINARYNAME)
Expand Down Expand Up @@ -478,8 +483,19 @@ CPPLINT_EXCLUDE += src/node_win32_perfctr_provider.cc
CPPLINT_EXCLUDE += src/queue.h
CPPLINT_EXCLUDE += src/tree.h
CPPLINT_EXCLUDE += src/v8abbr.h

CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard src/*.cc src/*.h src/*.c tools/icu/*.h tools/icu/*.cc deps/debugger-agent/include/* deps/debugger-agent/src/*))
CPPLINT_EXCLUDE += $(wildcard test/addons/doc-*/*.cc test/addons/doc-*/*.h)

CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard \
deps/debugger-agent/include/* \
deps/debugger-agent/src/* \
src/*.c \
src/*.cc \
src/*.h \
test/addons/*/*.cc \
test/addons/*/*.h \
tools/icu/*.cc \
tools/icu/*.h \
))

cpplint:
@$(PYTHON) tools/cpplint.py $(CPPLINT_FILES)
Expand Down
50 changes: 38 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,20 +269,46 @@ NOTE: Windows is not yet supported
It is possible to build io.js with
[OpenSSL FIPS module](https://www.openssl.org/docs/fips/fipsnotes.html).

**Note** that building in this way does **not** allow you to
claim that the runtime is FIPS 140-2 validated. Instead you
can indicate that the runtime uses a validated module. See
the [security policy]
(http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf)
page 60 for more details. In addition, the validation for
the underlying module is only valid if it is deployed in
accordance with its [security policy]
(http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf).
If you need FIPS validated cryptography it is recommended that you
read both the [security policy]
(http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf)
and [user guide] (https://openssl.org/docs/fips/UserGuide-2.0.pdf).

Instructions:

1. Download and verify `openssl-fips-x.x.x.tar.gz` from
https://www.openssl.org/source/
2. Extract source to `openssl-fips` folder
3. ``cd openssl-fips && ./config fipscanisterbuild --prefix=`pwd`/out``
(NOTE: On OS X, you may want to run
``./Configure darwin64-x86_64-cc --prefix=`pwd`/out`` if you are going to
build x64-mode io.js)
4. `make -j && make install`
5. Get into io.js checkout folder
6. `./configure --openssl-fips=/path/to/openssl-fips/out`
7. Build io.js with `make -j`
8. Verify with `node -p "process.versions.openssl"` (`1.0.2a-fips`)
1. Obtain a copy of openssl-fips-x.x.x.tar.gz.
To comply with the security policy you must ensure the path
through which you get the file complies with the requirements
for a "secure intallation" as described in section 6.6 in
the [user guide] (https://openssl.org/docs/fips/UserGuide-2.0.pdf).
For evaluation/experimentation you can simply download and verify
`openssl-fips-x.x.x.tar.gz` from https://www.openssl.org/source/
2. Extract source to `openssl-fips` folder and `cd openssl-fips`
3. `./config`
4. `make`
5. `make install`
(NOTE: to comply with the security policy you must use the exact
commands in steps 3-5 without any additional options as per
Appendix A in the [security policy]
(http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf).
The only exception is that `./config no-asm` can be
used in place of `./config` )
6. Get into io.js checkout folder
7. `./configure --openssl-fips=/path/to/openssl-fips/installdir`
For example on ubuntu 12 the installation directory was
/usr/local/ssl/fips-2.0
8. Build io.js with `make -j`
9. Verify with `node -p "process.versions.openssl"` (`1.0.2a-fips`)


## Resources for Newcomers

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@ function main(conf) {
var n = conf.n | 0;

var ee = new EventEmitter();
var listenerCount = EventEmitter.listenerCount;

for (var k = 0; k < 10; k += 1)
ee.on('dummy', function() {});

bench.start();
for (var i = 0; i < n; i += 1) {
var r = listenerCount(ee, 'dummy');
var r = ee.listenerCount('dummy');
}
bench.end(n);
}
24 changes: 17 additions & 7 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,9 @@ parser.add_option('--enable-static',

(options, args) = parser.parse_args()

# Expand ~ in the install prefix now, it gets written to multiple files.
options.prefix = os.path.expanduser(options.prefix or '')

# set up auto-download list
auto_downloads = nodedownload.parse(options.download_list)

Expand Down Expand Up @@ -611,7 +614,7 @@ def configure_mips(o):
def configure_node(o):
if options.dest_os == 'android':
o['variables']['OS'] = 'android'
o['variables']['node_prefix'] = os.path.expanduser(options.prefix or '')
o['variables']['node_prefix'] = options.prefix
o['variables']['node_install_npm'] = b(not options.without_npm)
o['default_configuration'] = 'Debug' if options.debug else 'Release'

Expand Down Expand Up @@ -778,24 +781,31 @@ def write(filename, data):

do_not_edit = '# Do not edit. Generated by the configure script.\n'

def glob_to_var(dir_base, dir_sub):
def glob_to_var(dir_base, dir_sub, patch_dir):
list = []
dir_all = os.path.join(dir_base, dir_sub)
files = os.walk(dir_all)
for ent in files:
(path, dirs, files) = ent
for file in files:
if file.endswith('.cpp') or file.endswith('.c') or file.endswith('.h'):
list.append('%s/%s' % (dir_sub, file))
# srcfile uses "slash" as dir separator as its output is consumed by gyp
srcfile = '%s/%s' % (dir_sub, file)
if patch_dir:
patchfile = '%s/%s/%s' % (dir_base, patch_dir, file)
if os.path.isfile(patchfile):
srcfile = '%s/%s' % (patch_dir, file)
print 'Using version-specific floating patch %s' % patchfile
list.append(srcfile)
break
return list

def configure_intl(o):
icus = [
{
'url': 'http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.zip',
# from https://ssl.icu-project.org/files/icu4c/54.1/icu4c-src-54_1.md5:
'md5': '6b89d60e2f0e140898ae4d7f72323bca',
'url': 'http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-src.zip',
# from https://ssl.icu-project.org/files/icu4c/55.1/icu4c-src-55_1.md5:
'md5': '4cddf1e1d47622fdd9de2cd7bb5001fd',
},
]
def icu_download(path):
Expand Down Expand Up @@ -1008,7 +1018,7 @@ def configure_intl(o):
for i in icu_src:
var = 'icu_src_%s' % i
path = '../../deps/icu/source/%s' % icu_src[i]
icu_config['variables'][var] = glob_to_var('tools/icu', path)
icu_config['variables'][var] = glob_to_var('tools/icu', path, 'patches/%s/source/%s' % (icu_ver_major, icu_src[i]) )
# write updated icu_config.gypi with a bunch of paths
write(icu_config_name, do_not_edit +
pprint.pformat(icu_config, indent=2) + '\n')
Expand Down
6 changes: 5 additions & 1 deletion doc/api/buffer.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Creating a typed array from a `Buffer` works with the following caveats:

2. The buffer's memory is interpreted as an array, not a byte array. That is,
`new Uint32Array(new Buffer([1,2,3,4]))` creates a 4-element `Uint32Array`
with elements `[1,2,3,4]`, not an `Uint32Array` with a single element
with elements `[1,2,3,4]`, not a `Uint32Array` with a single element
`[0x1020304]` or `[0x4030201]`.

NOTE: Node.js v0.8 simply retained a reference to the buffer in `array.buffer`
Expand All @@ -67,6 +67,10 @@ Allocates a new buffer of `size` bytes. `size` must be less than
2,147,483,648 bytes (2 GB) on 64 bits architectures,
otherwise a `RangeError` is thrown.

Unlike `ArrayBuffers`, the underlying memory for buffers is not initialized. So
the contents of a newly created `Buffer` is unknown. Use `buf.fill(0)`to
initialize a buffer to zeroes.

### new Buffer(array)

* `array` Array
Expand Down
2 changes: 1 addition & 1 deletion doc/api/child_process.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ Here is an example of sending a server:
child.send('server', server);
});

And the child would the receive the server object as:
And the child would then receive the server object as:

process.on('message', function(m, server) {
if (m === 'server') {
Expand Down
4 changes: 2 additions & 2 deletions doc/api/cluster.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ values are `"rr"` and `"none"`.
## cluster.settings

* {Object}
* `execArgv` {Array} list of string arguments passed to the io.js executable.
* `execArgv` {Array} list of string arguments passed to the io.js executable.
(Default=`process.execArgv`)
* `exec` {String} file path to worker file. (Default=`process.argv[1]`)
* `args` {Array} string arguments passed to worker.
Expand Down Expand Up @@ -613,7 +613,7 @@ It is not emitted in the worker.

### Event: 'disconnect'

Similar to the `cluster.on('disconnect')` event, but specfic to this worker.
Similar to the `cluster.on('disconnect')` event, but specific to this worker.

cluster.fork().on('disconnect', function() {
// Worker has disconnected
Expand Down
4 changes: 2 additions & 2 deletions doc/api/dns.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ All properties are optional. An example usage of options is shown below.
```

The callback has arguments `(err, address, family)`. `address` is a string
representation of a IP v4 or v6 address. `family` is either the integer 4 or 6
representation of an IP v4 or v6 address. `family` is either the integer 4 or 6
and denotes the family of `address` (not necessarily the value initially passed
to `lookup`).

Expand Down Expand Up @@ -163,7 +163,7 @@ attribute (e.g. `[{'priority': 10, 'exchange': 'mx.example.com'},...]`).
## dns.resolveTxt(hostname, callback)

The same as `dns.resolve()`, but only for text queries (`TXT` records).
`addresses` is an 2-d array of the text records available for `hostname` (e.g.,
`addresses` is a 2-d array of the text records available for `hostname` (e.g.,
`[ ['v=spf1 ip4:0.0.0.0 ', '~all' ] ]`). Each sub-array contains TXT chunks of
one record. Depending on the use case, the could be either joined together or
treated separately.
Expand Down
9 changes: 8 additions & 1 deletion doc/api/events.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ Note that `emitter.setMaxListeners(n)` still has precedence over

### emitter.listeners(event)

Returns an array of listeners for the specified event.
Returns a copy of the array of listeners for the specified event.

server.on('connection', function (stream) {
console.log('someone connected!');
Expand All @@ -137,10 +137,17 @@ Execute each of the listeners in order with the supplied arguments.
Returns `true` if event had listeners, `false` otherwise.


### emitter.listenerCount(type)

* `type` {Value} The type of event

Returns the number of listeners listening to the `type` of event.

### Class Method: EventEmitter.listenerCount(emitter, event)

Return the number of listeners for a given event.

_Note: This is deprecated. Use `emitter.listenerCount` instead._

### Event: 'newListener'

Expand Down
Loading