mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
benchmark,doc,lib: capitalize more comments
PR-URL: https://github.com/nodejs/node/pull/26849 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
This commit is contained in:
parent
fd992e6e36
commit
b08a867d60
@ -16,7 +16,7 @@ function CLI(usage, settings) {
|
||||
if (!(this instanceof CLI)) return new CLI(usage, settings);
|
||||
|
||||
if (process.argv.length < 3) {
|
||||
this.abort(usage); // abort will exit the process
|
||||
this.abort(usage); // Abort will exit the process
|
||||
}
|
||||
|
||||
this.usage = usage;
|
||||
|
@ -202,7 +202,7 @@ Benchmark.prototype.end = function(operations) {
|
||||
if (elapsed[0] === 0 && elapsed[1] === 0) {
|
||||
if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED)
|
||||
throw new Error('insufficient clock precision for short benchmark');
|
||||
// avoid dividing by zero
|
||||
// Avoid dividing by zero
|
||||
elapsed[1] = 1;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// throughput benchmark
|
||||
// Throughput benchmark
|
||||
// creates a single hasher, then pushes a bunch of data through it
|
||||
'use strict';
|
||||
const common = require('../common.js');
|
||||
|
@ -1,4 +1,4 @@
|
||||
// throughput benchmark
|
||||
// Throughput benchmark
|
||||
// creates a single hasher, then pushes a bunch of data through it
|
||||
'use strict';
|
||||
const common = require('../common.js');
|
||||
|
@ -9,7 +9,7 @@ const storedUnicode = Object.create(null);
|
||||
|
||||
const useDomains = process.env.NODE_USE_DOMAINS;
|
||||
|
||||
// set up one global domain.
|
||||
// Set up one global domain.
|
||||
if (useDomains) {
|
||||
var domain = require('domain');
|
||||
const gdom = domain.create();
|
||||
|
@ -5,7 +5,7 @@ const PORT = common.PORT;
|
||||
const cluster = require('cluster');
|
||||
if (cluster.isMaster) {
|
||||
var bench = common.createBenchmark(main, {
|
||||
// unicode confuses ab on os x.
|
||||
// Unicode confuses ab on os x.
|
||||
type: ['bytes', 'buffer'],
|
||||
len: [4, 1024, 102400],
|
||||
c: [50, 500]
|
||||
|
@ -3,7 +3,7 @@ const common = require('../common.js');
|
||||
const http = require('http');
|
||||
|
||||
const bench = common.createBenchmark(main, {
|
||||
// unicode confuses ab on os x.
|
||||
// Unicode confuses ab on os x.
|
||||
c: [50, 500],
|
||||
n: [0, 5, 20]
|
||||
});
|
||||
|
@ -2,7 +2,7 @@
|
||||
const common = require('../common.js');
|
||||
|
||||
const bench = common.createBenchmark(main, {
|
||||
// unicode confuses ab on os x.
|
||||
// Unicode confuses ab on os x.
|
||||
type: ['bytes', 'buffer'],
|
||||
len: [4, 1024, 102400],
|
||||
chunks: [1, 4],
|
||||
|
@ -33,7 +33,7 @@ function main({ dur, len, type }) {
|
||||
|
||||
const writer = new Writer();
|
||||
|
||||
// the actual benchmark.
|
||||
// The actual benchmark.
|
||||
const server = net.createServer((socket) => {
|
||||
socket.pipe(writer);
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ function main({ dur, len, type }) {
|
||||
const reader = new Reader();
|
||||
const writer = new Writer();
|
||||
|
||||
// the actual benchmark.
|
||||
// The actual benchmark.
|
||||
const server = net.createServer((socket) => {
|
||||
socket.pipe(writer);
|
||||
});
|
||||
|
@ -34,7 +34,7 @@ function main({ dur, len, type }) {
|
||||
const reader = new Reader();
|
||||
const writer = new Writer();
|
||||
|
||||
// the actual benchmark.
|
||||
// The actual benchmark.
|
||||
const server = net.createServer((socket) => {
|
||||
socket.pipe(socket);
|
||||
});
|
||||
|
@ -33,7 +33,7 @@ function main({ dur, len, type }) {
|
||||
const reader = new Reader();
|
||||
const writer = new Writer();
|
||||
|
||||
// the actual benchmark.
|
||||
// The actual benchmark.
|
||||
const server = net.createServer((socket) => {
|
||||
reader.pipe(socket);
|
||||
});
|
||||
|
@ -38,7 +38,7 @@ function main({ dur, len, type }) {
|
||||
const reader = new Reader();
|
||||
const writer = new Writer();
|
||||
|
||||
// the actual benchmark.
|
||||
// The actual benchmark.
|
||||
const fakeSocket = new JSStreamWrap(new PassThrough());
|
||||
bench.start();
|
||||
reader.pipe(fakeSocket);
|
||||
|
@ -13,7 +13,7 @@ const bench = common.createBenchmark(main, {
|
||||
|
||||
function useLegacy(data) {
|
||||
const len = data.length;
|
||||
var result = url.parse(data[0]); // avoid dead code elimination
|
||||
var result = url.parse(data[0]); // Avoid dead code elimination
|
||||
bench.start();
|
||||
for (var i = 0; i < len; ++i) {
|
||||
result = url.parse(data[i]);
|
||||
@ -24,7 +24,7 @@ function useLegacy(data) {
|
||||
|
||||
function useWHATWGWithBase(data) {
|
||||
const len = data.length;
|
||||
var result = new URL(data[0][0], data[0][1]); // avoid dead code elimination
|
||||
var result = new URL(data[0][0], data[0][1]); // Avoid dead code elimination
|
||||
bench.start();
|
||||
for (var i = 0; i < len; ++i) {
|
||||
const item = data[i];
|
||||
@ -36,7 +36,7 @@ function useWHATWGWithBase(data) {
|
||||
|
||||
function useWHATWGWithoutBase(data) {
|
||||
const len = data.length;
|
||||
var result = new URL(data[0]); // avoid dead code elimination
|
||||
var result = new URL(data[0]); // Avoid dead code elimination
|
||||
bench.start();
|
||||
for (var i = 0; i < len; ++i) {
|
||||
result = new URL(data[i]);
|
||||
|
@ -3,7 +3,7 @@ const common = require('../common.js');
|
||||
const URLSearchParams = require('url').URLSearchParams;
|
||||
|
||||
const inputs = {
|
||||
wpt: 'wpt', // to work around tests
|
||||
wpt: 'wpt', // To work around tests
|
||||
empty: '',
|
||||
sorted: 'a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z',
|
||||
almostsorted: 'a&b&c&d&e&f&g&i&h&j&k&l&m&n&o&p&q&r&s&t&u&w&v&x&y&z',
|
||||
|
@ -315,7 +315,7 @@ if (cluster.isMaster) {
|
||||
} else if (cluster.isWorker) {
|
||||
const net = require('net');
|
||||
const server = net.createServer((socket) => {
|
||||
// connections never end
|
||||
// Connections never end
|
||||
});
|
||||
|
||||
server.listen(8000);
|
||||
|
@ -114,12 +114,12 @@ error output. If `stderr` is not provided, `stdout` is used for `stderr`.
|
||||
```js
|
||||
const output = fs.createWriteStream('./stdout.log');
|
||||
const errorOutput = fs.createWriteStream('./stderr.log');
|
||||
// custom simple logger
|
||||
// Custom simple logger
|
||||
const logger = new Console({ stdout: output, stderr: errorOutput });
|
||||
// use it like console
|
||||
const count = 5;
|
||||
logger.log('count: %d', count);
|
||||
// in stdout.log: count 5
|
||||
// In stdout.log: count 5
|
||||
```
|
||||
|
||||
The global `console` is a special `Console` whose output is sent to
|
||||
|
@ -135,7 +135,7 @@ if (cluster.isMaster) {
|
||||
// But don't keep the process open just for that!
|
||||
killtimer.unref();
|
||||
|
||||
// stop taking new requests.
|
||||
// Stop taking new requests.
|
||||
server.close();
|
||||
|
||||
// Let the master know we're dead. This will trigger a
|
||||
@ -316,14 +316,13 @@ const d = domain.create();
|
||||
|
||||
function readSomeFile(filename, cb) {
|
||||
fs.readFile(filename, 'utf8', d.bind((er, data) => {
|
||||
// If this throws, it will also be passed to the domain
|
||||
// If this throws, it will also be passed to the domain.
|
||||
return cb(er, data ? JSON.parse(data) : null);
|
||||
}));
|
||||
}
|
||||
|
||||
d.on('error', (er) => {
|
||||
// an error occurred somewhere.
|
||||
// if we throw it now, it will crash the program
|
||||
// An error occurred somewhere. If we throw it now, it will crash the program
|
||||
// with the normal line number and stack message.
|
||||
});
|
||||
```
|
||||
@ -377,7 +376,7 @@ function readSomeFile(filename, cb) {
|
||||
// callback since it is assumed to be the 'Error' argument
|
||||
// and thus intercepted by the domain.
|
||||
|
||||
// if this throws, it will also be passed to the domain
|
||||
// If this throws, it will also be passed to the domain
|
||||
// so the error-handling logic can be moved to the 'error'
|
||||
// event on the domain instead of being repeated throughout
|
||||
// the program.
|
||||
@ -386,8 +385,7 @@ function readSomeFile(filename, cb) {
|
||||
}
|
||||
|
||||
d.on('error', (er) => {
|
||||
// an error occurred somewhere.
|
||||
// if we throw it now, it will crash the program
|
||||
// An error occurred somewhere. If we throw it now, it will crash the program
|
||||
// with the normal line number and stack message.
|
||||
});
|
||||
```
|
||||
|
@ -407,7 +407,7 @@ program.
|
||||
try {
|
||||
require('vm').runInThisContext('binary ! isNotOk');
|
||||
} catch (err) {
|
||||
// err will be a SyntaxError
|
||||
// 'err' will be a SyntaxError.
|
||||
}
|
||||
```
|
||||
|
||||
@ -422,7 +422,7 @@ string would be considered a `TypeError`.
|
||||
|
||||
```js
|
||||
require('url').parse(() => { });
|
||||
// throws TypeError, since it expected a string
|
||||
// Throws TypeError, since it expected a string.
|
||||
```
|
||||
|
||||
Node.js will generate and throw `TypeError` instances *immediately* as a form
|
||||
|
@ -648,7 +648,7 @@ emitter.on('log', () => console.log('log persistently'));
|
||||
// Will return a new Array with a single function bound by `.on()` above
|
||||
const newListeners = emitter.rawListeners('log');
|
||||
|
||||
// logs "log persistently" twice
|
||||
// Logs "log persistently" twice
|
||||
newListeners[0]();
|
||||
emitter.emit('log');
|
||||
```
|
||||
|
@ -358,7 +358,7 @@ const proxy = http.createServer((req, res) => {
|
||||
res.end('okay');
|
||||
});
|
||||
proxy.on('connect', (req, cltSocket, head) => {
|
||||
// connect to an origin server
|
||||
// Connect to an origin server
|
||||
const srvUrl = url.parse(`http://${req.url}`);
|
||||
const srvSocket = net.connect(srvUrl.port, srvUrl.hostname, () => {
|
||||
cltSocket.write('HTTP/1.1 200 Connection Established\r\n' +
|
||||
@ -370,7 +370,7 @@ proxy.on('connect', (req, cltSocket, head) => {
|
||||
});
|
||||
});
|
||||
|
||||
// now that proxy is running
|
||||
// Now that proxy is running
|
||||
proxy.listen(1337, '127.0.0.1', () => {
|
||||
|
||||
// Make a request to a tunneling proxy
|
||||
@ -504,7 +504,7 @@ srv.on('upgrade', (req, socket, head) => {
|
||||
socket.pipe(socket); // echo back
|
||||
});
|
||||
|
||||
// now that server is running
|
||||
// Now that server is running
|
||||
srv.listen(1337, '127.0.0.1', () => {
|
||||
|
||||
// make a request
|
||||
@ -626,11 +626,11 @@ request.setHeader('content-type', 'text/html');
|
||||
request.setHeader('Content-Length', Buffer.byteLength(body));
|
||||
request.setHeader('Cookie', ['type=ninja', 'language=javascript']);
|
||||
const contentType = request.getHeader('Content-Type');
|
||||
// contentType is 'text/html'
|
||||
// 'contentType' is 'text/html'
|
||||
const contentLength = request.getHeader('Content-Length');
|
||||
// contentLength is of type number
|
||||
// 'contentLength' is of type number
|
||||
const cookie = request.getHeader('Cookie');
|
||||
// cookie is of type string[]
|
||||
// 'cookie' is of type string[]
|
||||
```
|
||||
|
||||
### request.maxHeadersCount
|
||||
@ -745,7 +745,7 @@ req.once('response', (res) => {
|
||||
const ip = req.socket.localAddress;
|
||||
const port = req.socket.localPort;
|
||||
console.log(`Your IP address is ${ip} and your source port is ${port}.`);
|
||||
// consume response object
|
||||
// Consume response object
|
||||
});
|
||||
```
|
||||
|
||||
@ -2065,7 +2065,7 @@ req.on('error', (e) => {
|
||||
console.error(`problem with request: ${e.message}`);
|
||||
});
|
||||
|
||||
// write data to request body
|
||||
// Write data to request body
|
||||
req.write(postData);
|
||||
req.end();
|
||||
```
|
||||
|
@ -2437,7 +2437,7 @@ const client = http2.connect('http://localhost');
|
||||
|
||||
client.on('stream', (pushedStream, requestHeaders) => {
|
||||
pushedStream.on('push', (responseHeaders) => {
|
||||
// process response headers
|
||||
// Process response headers
|
||||
});
|
||||
pushedStream.on('data', (chunk) => { /* handle pushed data */ });
|
||||
});
|
||||
|
@ -295,8 +295,8 @@ process.on('unhandledRejection', (reason, p) => {
|
||||
});
|
||||
|
||||
somePromise.then((res) => {
|
||||
return reportToUser(JSON.pasre(res)); // note the typo (`pasre`)
|
||||
}); // no `.catch()` or `.then()`
|
||||
return reportToUser(JSON.pasre(res)); // Note the typo (`pasre`)
|
||||
}); // No `.catch()` or `.then()`
|
||||
```
|
||||
|
||||
The following will also trigger the `'unhandledRejection'` event to be
|
||||
|
@ -126,7 +126,7 @@ querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' });
|
||||
// Returns 'foo=bar&baz=qux&baz=quux&corge='
|
||||
|
||||
querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':');
|
||||
// returns 'foo:bar;baz:qux'
|
||||
// Returns 'foo:bar;baz:qux'
|
||||
```
|
||||
|
||||
By default, characters requiring percent-encoding within the query string will
|
||||
|
@ -683,7 +683,7 @@ pass.unpipe(writable);
|
||||
// readableFlowing is now false
|
||||
|
||||
pass.on('data', (chunk) => { console.log(chunk.toString()); });
|
||||
pass.write('ok'); // will not emit 'data'
|
||||
pass.write('ok'); // Will not emit 'data'
|
||||
pass.resume(); // Must be called to make stream emit 'data'
|
||||
```
|
||||
|
||||
@ -1206,7 +1206,7 @@ function parseHeader(stream, callback) {
|
||||
while (null !== (chunk = stream.read())) {
|
||||
const str = decoder.write(chunk);
|
||||
if (str.match(/\n\n/)) {
|
||||
// found the header boundary
|
||||
// Found the header boundary
|
||||
const split = str.split(/\n\n/);
|
||||
header += split.shift();
|
||||
const remaining = split.join('\n\n');
|
||||
@ -1219,7 +1219,7 @@ function parseHeader(stream, callback) {
|
||||
// Now the body of the message can be read from the stream.
|
||||
callback(null, header, stream);
|
||||
} else {
|
||||
// still reading the header.
|
||||
// Still reading the header.
|
||||
header += str;
|
||||
}
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ setImmediatePromise('foobar').then((value) => {
|
||||
// This is executed after all I/O callbacks.
|
||||
});
|
||||
|
||||
// or with async function
|
||||
// Or with async function
|
||||
async function timerExample() {
|
||||
console.log('Before I/O callbacks');
|
||||
await setImmediatePromise();
|
||||
|
@ -758,7 +758,7 @@ option properties directly is also supported.
|
||||
const util = require('util');
|
||||
const arr = Array(101).fill(0);
|
||||
|
||||
console.log(arr); // logs the truncated array
|
||||
console.log(arr); // Logs the truncated array
|
||||
util.inspect.defaultOptions.maxArrayLength = null;
|
||||
console.log(arr); // logs the full array
|
||||
```
|
||||
|
@ -69,7 +69,7 @@ See [Memory Usage Tuning][] for more information on the speed/memory/compression
|
||||
tradeoffs involved in `zlib` usage.
|
||||
|
||||
```js
|
||||
// client request example
|
||||
// Client request example
|
||||
const zlib = require('zlib');
|
||||
const http = require('http');
|
||||
const fs = require('fs');
|
||||
|
@ -239,10 +239,10 @@ function writeHead(statusCode, reason, obj) {
|
||||
if (k === undefined && this._header) {
|
||||
throw new ERR_HTTP_HEADERS_SENT('render');
|
||||
}
|
||||
// only progressive api is used
|
||||
// Only progressive api is used
|
||||
headers = this[outHeadersKey];
|
||||
} else {
|
||||
// only writeHead() called
|
||||
// Only writeHead() called
|
||||
headers = obj;
|
||||
}
|
||||
|
||||
@ -440,7 +440,7 @@ function socketOnTimeout() {
|
||||
|
||||
function socketOnClose(socket, state) {
|
||||
debug('server socket close');
|
||||
// mark this parser as reusable
|
||||
// Mark this parser as reusable
|
||||
if (socket.parser) {
|
||||
freeParser(socket.parser, null, socket);
|
||||
}
|
||||
@ -455,7 +455,7 @@ function abortIncoming(incoming) {
|
||||
req.emit('aborted');
|
||||
req.emit('close');
|
||||
}
|
||||
// abort socket._httpMessage ?
|
||||
// Abort socket._httpMessage ?
|
||||
}
|
||||
|
||||
function socketOnEnd(server, socket, parser, state) {
|
||||
|
@ -96,13 +96,13 @@ Object.defineProperty(Duplex.prototype, 'writableLength', {
|
||||
}
|
||||
});
|
||||
|
||||
// the no-half-open enforcer
|
||||
// The no-half-open enforcer
|
||||
function onend() {
|
||||
// If the writable side ended, then we're ok.
|
||||
if (this._writableState.ended)
|
||||
return;
|
||||
|
||||
// no more data can be written.
|
||||
// No more data can be written.
|
||||
// But allow more writes to happen in this tick.
|
||||
process.nextTick(onEndNT, this);
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ function ReadableState(options, stream, isDuplex) {
|
||||
// Should .destroy() be called after 'end' (and potentially 'finish')
|
||||
this.autoDestroy = !!options.autoDestroy;
|
||||
|
||||
// has it been destroyed
|
||||
// Has it been destroyed
|
||||
this.destroyed = false;
|
||||
|
||||
// Crypto is kind of old and crusty. Historically, its default string
|
||||
@ -295,7 +295,7 @@ function addChunk(stream, state, chunk, addToFront) {
|
||||
state.awaitDrain = 0;
|
||||
stream.emit('data', chunk);
|
||||
} else {
|
||||
// update the buffer info.
|
||||
// Update the buffer info.
|
||||
state.length += state.objectMode ? 1 : chunk.length;
|
||||
if (addToFront)
|
||||
state.buffer.unshift(chunk);
|
||||
@ -323,7 +323,7 @@ Readable.prototype.isPaused = function() {
|
||||
return this._readableState.flowing === false;
|
||||
};
|
||||
|
||||
// backwards compatibility.
|
||||
// Backwards compatibility.
|
||||
Readable.prototype.setEncoding = function(enc) {
|
||||
if (!StringDecoder)
|
||||
StringDecoder = require('string_decoder').StringDecoder;
|
||||
@ -459,7 +459,7 @@ Readable.prototype.read = function(n) {
|
||||
// If the length is currently zero, then we *need* a readable event.
|
||||
if (state.length === 0)
|
||||
state.needReadable = true;
|
||||
// call internal read method
|
||||
// Call internal read method
|
||||
this._read(state.highWaterMark);
|
||||
state.sync = false;
|
||||
// If _read pushed data synchronously, then `reading` will be false,
|
||||
@ -818,7 +818,7 @@ Readable.prototype.unpipe = function(dest) {
|
||||
return this;
|
||||
}
|
||||
|
||||
// try to find the right one.
|
||||
// Try to find the right one.
|
||||
var index = state.pipes.indexOf(dest);
|
||||
if (index === -1)
|
||||
return this;
|
||||
@ -1006,8 +1006,7 @@ Readable.prototype.wrap = function(stream) {
|
||||
}
|
||||
});
|
||||
|
||||
// proxy all the other methods.
|
||||
// important when wrapping filters and duplexes.
|
||||
// Proxy all the other methods. Important when wrapping filters and duplexes.
|
||||
for (var i in stream) {
|
||||
if (this[i] === undefined && typeof stream[i] === 'function') {
|
||||
this[i] = function methodWrap(method) {
|
||||
|
@ -80,14 +80,14 @@ function WritableState(options, stream, isDuplex) {
|
||||
|
||||
// drain event flag.
|
||||
this.needDrain = false;
|
||||
// at the start of calling end()
|
||||
// At the start of calling end()
|
||||
this.ending = false;
|
||||
// When end() has been called, and returned
|
||||
this.ended = false;
|
||||
// when 'finish' is emitted
|
||||
// When 'finish' is emitted
|
||||
this.finished = false;
|
||||
|
||||
// has it been destroyed
|
||||
// Has it been destroyed
|
||||
this.destroyed = false;
|
||||
|
||||
// Should we decode strings into buffers before passing to _write?
|
||||
@ -152,7 +152,7 @@ function WritableState(options, stream, isDuplex) {
|
||||
// Should .destroy() be called after 'finish' (and potentially 'end')
|
||||
this.autoDestroy = !!options.autoDestroy;
|
||||
|
||||
// count buffered requests
|
||||
// Count buffered requests
|
||||
this.bufferedRequestCount = 0;
|
||||
|
||||
// Allocate the first CorkedRequest, there is always
|
||||
@ -681,7 +681,7 @@ function onCorkedFinish(corkReq, state, err) {
|
||||
entry = entry.next;
|
||||
}
|
||||
|
||||
// reuse the free corkReq.
|
||||
// Reuse the free corkReq.
|
||||
state.corkedRequestsFree.next = corkReq;
|
||||
}
|
||||
|
||||
|
@ -356,7 +356,7 @@ function fromArrayLike(obj) {
|
||||
}
|
||||
|
||||
function fromArrayBuffer(obj, byteOffset, length) {
|
||||
// convert byteOffset to integer
|
||||
// Convert byteOffset to integer
|
||||
if (byteOffset === undefined) {
|
||||
byteOffset = 0;
|
||||
} else {
|
||||
|
@ -262,7 +262,7 @@ Socket.prototype.bind = function(port_, address_ /* , callback */) {
|
||||
address = '::';
|
||||
}
|
||||
|
||||
// resolve address first
|
||||
// Resolve address first
|
||||
state.handle.lookup(address, (err, ip) => {
|
||||
if (err) {
|
||||
state.bindState = BIND_STATE_UNBOUND;
|
||||
|
@ -68,7 +68,7 @@ const asyncHook = createHook({
|
||||
},
|
||||
before(asyncId) {
|
||||
const current = pairing.get(asyncId);
|
||||
if (current !== undefined) { // enter domain for this cb
|
||||
if (current !== undefined) { // Enter domain for this cb
|
||||
// We will get the domain through current.get(), because the resource
|
||||
// object's .domain property makes sure it is not garbage collected.
|
||||
current.get().enter();
|
||||
@ -76,7 +76,7 @@ const asyncHook = createHook({
|
||||
},
|
||||
after(asyncId) {
|
||||
const current = pairing.get(asyncId);
|
||||
if (current !== undefined) { // exit domain for this cb
|
||||
if (current !== undefined) { // Exit domain for this cb
|
||||
current.get().exit();
|
||||
}
|
||||
},
|
||||
|
12
lib/fs.js
12
lib/fs.js
@ -121,7 +121,7 @@ function handleErrorFromBinding(ctx) {
|
||||
Error.captureStackTrace(err, handleErrorFromBinding);
|
||||
throw err;
|
||||
}
|
||||
if (ctx.error !== undefined) { // errors created in C++ land.
|
||||
if (ctx.error !== undefined) { // Errors created in C++ land.
|
||||
// TODO(joyeecheung): currently, ctx.error are encoding errors
|
||||
// usually caused by memory problems. We need to figure out proper error
|
||||
// code(s) for this.
|
||||
@ -289,7 +289,7 @@ function readFile(path, options, callback) {
|
||||
if (!ReadFileContext)
|
||||
ReadFileContext = require('internal/fs/read_file_context');
|
||||
const context = new ReadFileContext(callback, options.encoding);
|
||||
context.isUserFd = isFd(path); // file descriptor ownership
|
||||
context.isUserFd = isFd(path); // File descriptor ownership
|
||||
|
||||
const req = new FSReqCallback();
|
||||
req.context = context;
|
||||
@ -349,14 +349,14 @@ function tryReadSync(fd, isUserFd, buffer, pos, len) {
|
||||
|
||||
function readFileSync(path, options) {
|
||||
options = getOptions(options, { flag: 'r' });
|
||||
const isUserFd = isFd(path); // file descriptor ownership
|
||||
const isUserFd = isFd(path); // File descriptor ownership
|
||||
const fd = isUserFd ? path : fs.openSync(path, options.flag, 0o666);
|
||||
|
||||
const stats = tryStatSync(fd, isUserFd);
|
||||
const size = isFileType(stats, S_IFREG) ? stats[8] : 0;
|
||||
let pos = 0;
|
||||
let buffer; // single buffer with file data
|
||||
let buffers; // list for when size is unknown
|
||||
let buffer; // Single buffer with file data
|
||||
let buffers; // List for when size is unknown
|
||||
|
||||
if (size === 0) {
|
||||
buffers = [];
|
||||
@ -1242,7 +1242,7 @@ function writeFileSync(path, data, options) {
|
||||
options = getOptions(options, { encoding: 'utf8', mode: 0o666, flag: 'w' });
|
||||
const flag = options.flag || 'w';
|
||||
|
||||
const isUserFd = isFd(path); // file descriptor ownership
|
||||
const isUserFd = isFd(path); // File descriptor ownership
|
||||
const fd = isUserFd ? path : fs.openSync(path, flag, options.mode);
|
||||
|
||||
if (!isArrayBufferView(data)) {
|
||||
|
@ -565,7 +565,7 @@ function setupChannel(target, channel) {
|
||||
// Object where socket lists will live
|
||||
channel.sockets = { got: {}, send: {} };
|
||||
|
||||
// handlers will go through this
|
||||
// Handlers will go through this
|
||||
target.on('internalMessage', function(message, handle) {
|
||||
// Once acknowledged - continue sending handles.
|
||||
if (message.cmd === 'NODE_HANDLE_ACK' ||
|
||||
|
@ -14,7 +14,7 @@
|
||||
// limitations under the License.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
// based upon:
|
||||
// Based upon:
|
||||
// https://github.com/google/caja/blob/master/src/com/google/caja/ses/startSES.js
|
||||
// https://github.com/google/caja/blob/master/src/com/google/caja/ses/repairES5.js
|
||||
// https://github.com/tc39/proposal-frozen-realms/blob/91ac390e3451da92b5c27e354b39e52b7636a437/shim/src/deep-freeze.js
|
||||
@ -176,11 +176,11 @@ module.exports = function() {
|
||||
// NB: handle for any new cases in future
|
||||
}
|
||||
if (frozenSet.has(val) || freezingSet.has(val)) {
|
||||
// todo use uncurried form
|
||||
// TODO: Use uncurried form
|
||||
// Ignore if already frozen or freezing
|
||||
return;
|
||||
}
|
||||
freezingSet.add(val); // todo use uncurried form
|
||||
freezingSet.add(val); // TODO: Use uncurried form
|
||||
}
|
||||
|
||||
function doFreeze(obj) {
|
||||
@ -201,8 +201,8 @@ module.exports = function() {
|
||||
const descs = getOwnPropertyDescriptors(obj);
|
||||
enqueue(proto);
|
||||
ownKeys(descs).forEach((name) => {
|
||||
// todo uncurried form
|
||||
// todo: getOwnPropertyDescriptors is guaranteed to return well-formed
|
||||
// TODO: Uncurried form
|
||||
// TODO: getOwnPropertyDescriptors is guaranteed to return well-formed
|
||||
// descriptors, but they still inherit from Object.prototype. If
|
||||
// someone has poisoned Object.prototype to add 'value' or 'get'
|
||||
// properties, then a simple 'if ("value" in desc)' or 'desc.value'
|
||||
@ -222,12 +222,12 @@ module.exports = function() {
|
||||
|
||||
function dequeue() {
|
||||
// New values added before forEach() has finished will be visited.
|
||||
freezingSet.forEach(doFreeze); // todo curried forEach
|
||||
freezingSet.forEach(doFreeze); // TODO: Curried forEach
|
||||
}
|
||||
|
||||
function commit() {
|
||||
// todo curried forEach
|
||||
// we capture the real WeakSet.prototype.add above, in case someone
|
||||
// TODO: Curried forEach
|
||||
// We capture the real WeakSet.prototype.add above, in case someone
|
||||
// changes it. The two-argument form of forEach passes the second
|
||||
// argument as the 'this' binding, so we add to the correct set.
|
||||
freezingSet.forEach(frozenSet.add, frozenSet);
|
||||
|
@ -121,7 +121,7 @@ ReadStream.prototype.open = function() {
|
||||
this.fd = fd;
|
||||
this.emit('open', fd);
|
||||
this.emit('ready');
|
||||
// start the flow of data.
|
||||
// Start the flow of data.
|
||||
this.read();
|
||||
});
|
||||
};
|
||||
@ -137,7 +137,7 @@ ReadStream.prototype._read = function(n) {
|
||||
return;
|
||||
|
||||
if (!pool || pool.length - pool.used < kMinPoolSpace) {
|
||||
// discard the old pool.
|
||||
// Discard the old pool.
|
||||
allocNewPool(this.readableHighWaterMark);
|
||||
}
|
||||
|
||||
|
@ -711,7 +711,7 @@ Module.prototype.load = function(filename) {
|
||||
const module = ESMLoader.moduleMap.get(url);
|
||||
// Create module entry at load time to snapshot exports correctly
|
||||
const exports = this.exports;
|
||||
if (module !== undefined) { // called from cjs translator
|
||||
if (module !== undefined) { // Called from cjs translator
|
||||
module.reflect.onReady((reflect) => {
|
||||
reflect.exports.default.set(exports);
|
||||
});
|
||||
@ -885,7 +885,7 @@ if (experimentalModules) {
|
||||
};
|
||||
}
|
||||
|
||||
// bootstrap main module.
|
||||
// Bootstrap main module.
|
||||
Module.runMain = function() {
|
||||
// Load the main module--the command line argument.
|
||||
if (experimentalModules) {
|
||||
|
@ -86,7 +86,7 @@ translators.set('cjs', async (url, isMain) => {
|
||||
// through normal resolution
|
||||
translators.set('builtin', async (url) => {
|
||||
debug(`Translating BuiltinModule ${url}`);
|
||||
// slice 'node:' scheme
|
||||
// Slice 'node:' scheme
|
||||
const id = url.slice(5);
|
||||
const module = NativeModule.map.get(id);
|
||||
if (!module) {
|
||||
|
@ -167,7 +167,7 @@ function wrapProcessMethods(binding) {
|
||||
throw new ERR_INVALID_ARG_TYPE('pid', 'number', pid);
|
||||
}
|
||||
|
||||
// preserve null signal
|
||||
// Preserve null signal
|
||||
if (sig === (sig | 0)) {
|
||||
// XXX(joyeecheung): we have to use process._kill here because
|
||||
// it's monkey-patched by tests.
|
||||
@ -268,12 +268,12 @@ function buildAllowedFlags() {
|
||||
}
|
||||
|
||||
delete() {
|
||||
// noop, `Set` API compatible
|
||||
// No-op, `Set` API compatible
|
||||
return false;
|
||||
}
|
||||
|
||||
clear() {
|
||||
// noop
|
||||
// No-op
|
||||
}
|
||||
|
||||
has(key) {
|
||||
|
@ -186,7 +186,7 @@ function* emitKeys(stream) {
|
||||
}
|
||||
|
||||
if (escaped && (ch === 'O' || ch === '[')) {
|
||||
// ansi escape sequence
|
||||
// ANSI escape sequence
|
||||
let code = ch;
|
||||
let modifier = 0;
|
||||
|
||||
@ -407,7 +407,7 @@ function* emitKeys(stream) {
|
||||
key.name = String.fromCharCode(ch.charCodeAt(0) + 'a'.charCodeAt(0) - 1);
|
||||
key.ctrl = true;
|
||||
} else if (/^[0-9A-Za-z]$/.test(ch)) {
|
||||
// letter, number, shift+letter
|
||||
// Letter, number, shift+letter
|
||||
key.name = ch.toLowerCase();
|
||||
key.shift = /^[A-Z]$/.test(ch);
|
||||
key.meta = escaped;
|
||||
|
@ -18,9 +18,7 @@ function readAndResolve(iter) {
|
||||
const resolve = iter[kLastResolve];
|
||||
if (resolve !== null) {
|
||||
const data = iter[kStream].read();
|
||||
// we defer if data is null
|
||||
// we can be expecting either 'end' or
|
||||
// 'error'
|
||||
// We defer if data is null. We can be expecting either 'end' or 'error'.
|
||||
if (data !== null) {
|
||||
iter[kLastPromise] = null;
|
||||
iter[kLastResolve] = null;
|
||||
@ -32,7 +30,7 @@ function readAndResolve(iter) {
|
||||
|
||||
function onReadable(iter) {
|
||||
// We wait for the next tick, because it might
|
||||
// emit an error with process.nextTick
|
||||
// emit an error with `process.nextTick()`.
|
||||
process.nextTick(readAndResolve, iter);
|
||||
}
|
||||
|
||||
@ -59,7 +57,7 @@ const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({
|
||||
|
||||
next() {
|
||||
// If we have detected an error in the meanwhile
|
||||
// reject straight away
|
||||
// reject straight away.
|
||||
const error = this[kError];
|
||||
if (error !== null) {
|
||||
return Promise.reject(error);
|
||||
@ -110,9 +108,9 @@ const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({
|
||||
},
|
||||
|
||||
return() {
|
||||
// destroy(err, cb) is a private API
|
||||
// we can guarantee we have that here, because we control the
|
||||
// Readable class this is attached to
|
||||
// destroy(err, cb) is a private API.
|
||||
// We can guarantee we have that here, because we control the
|
||||
// Readable class this is attached to.
|
||||
return new Promise((resolve, reject) => {
|
||||
this[kStream].destroy(null, (err) => {
|
||||
if (err) {
|
||||
@ -135,9 +133,8 @@ const createReadableStreamAsyncIterator = (stream) => {
|
||||
value: stream._readableState.endEmitted,
|
||||
writable: true
|
||||
},
|
||||
// The function passed to new Promise
|
||||
// is cached so we avoid allocating a new
|
||||
// closure at every run
|
||||
// The function passed to new Promise is cached so we avoid allocating a new
|
||||
// closure at every run.
|
||||
[kHandlePromise]: {
|
||||
value: (resolve, reject) => {
|
||||
const data = iterator[kStream].read();
|
||||
@ -159,8 +156,8 @@ const createReadableStreamAsyncIterator = (stream) => {
|
||||
finished(stream, (err) => {
|
||||
if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
|
||||
const reject = iterator[kLastReject];
|
||||
// Reject if we are waiting for data in the Promise
|
||||
// returned by next() and store the error
|
||||
// Reject if we are waiting for data in the Promise returned by next() and
|
||||
// store the error.
|
||||
if (reject !== null) {
|
||||
iterator[kLastPromise] = null;
|
||||
iterator[kLastResolve] = null;
|
||||
|
@ -154,7 +154,7 @@ function initAsyncResource(resource, type) {
|
||||
// Timer constructor function.
|
||||
// The entire prototype is defined in lib/timers.js
|
||||
function Timeout(callback, after, args, isRepeat) {
|
||||
after *= 1; // coalesce to number or NaN
|
||||
after *= 1; // Coalesce to number or NaN
|
||||
if (!(after >= 1 && after <= TIMEOUT_MAX)) {
|
||||
if (after > TIMEOUT_MAX) {
|
||||
process.emitWarning(`${after} does not fit into` +
|
||||
|
@ -60,7 +60,7 @@ function createHook() {
|
||||
|
||||
trace(kEndEvent, kTraceEventCategory, type, asyncId);
|
||||
|
||||
// cleanup asyncId to type map
|
||||
// Cleanup asyncId to type map
|
||||
typeMemory.delete(asyncId);
|
||||
}
|
||||
});
|
||||
|
@ -136,7 +136,7 @@ class URLSearchParams {
|
||||
throw new ERR_ARG_NOT_ITERABLE('Query pairs');
|
||||
}
|
||||
|
||||
// sequence<sequence<USVString>>
|
||||
// Sequence<sequence<USVString>>
|
||||
// Note: per spec we have to first exhaust the lists then process them
|
||||
const pairs = [];
|
||||
for (const pair of init) {
|
||||
@ -159,7 +159,7 @@ class URLSearchParams {
|
||||
this[searchParams].push(pair[0], pair[1]);
|
||||
}
|
||||
} else {
|
||||
// record<USVString, USVString>
|
||||
// Record<USVString, USVString>
|
||||
// Need to use reflection APIs for full spec compliance.
|
||||
this[searchParams] = [];
|
||||
const keys = Reflect.ownKeys(init);
|
||||
@ -230,7 +230,7 @@ function onParseComplete(flags, protocol, username, password,
|
||||
ctx.query = query;
|
||||
ctx.fragment = fragment;
|
||||
ctx.host = host;
|
||||
if (!this[searchParams]) { // invoked from URL constructor
|
||||
if (!this[searchParams]) { // Invoked from URL constructor
|
||||
this[searchParams] = new URLSearchParams();
|
||||
this[searchParams][context] = this;
|
||||
}
|
||||
@ -455,7 +455,7 @@ Object.defineProperties(URL.prototype, {
|
||||
try {
|
||||
return (new URL(ctx.path[0])).origin;
|
||||
} catch {
|
||||
// fall through... do nothing
|
||||
// Fall through... do nothing
|
||||
}
|
||||
}
|
||||
return kOpaqueOrigin;
|
||||
|
@ -1261,7 +1261,7 @@ function emitErrorNT(self, err) {
|
||||
|
||||
|
||||
function emitListeningNT(self) {
|
||||
// ensure handle hasn't closed
|
||||
// Ensure handle hasn't closed
|
||||
if (self._handle)
|
||||
self.emit('listening');
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ function Interface(input, output, completer, terminal) {
|
||||
let prompt = '> ';
|
||||
|
||||
if (input && input.input) {
|
||||
// an options object was given
|
||||
// An options object was given
|
||||
output = input.output;
|
||||
completer = input.completer;
|
||||
terminal = input.terminal;
|
||||
@ -222,7 +222,7 @@ function Interface(input, output, completer, terminal) {
|
||||
|
||||
emitKeypressEvents(input, this);
|
||||
|
||||
// input usually refers to stdin
|
||||
// `input` usually refers to stdin
|
||||
input.on('keypress', onkeypress);
|
||||
input.on('end', ontermend);
|
||||
|
||||
@ -496,7 +496,7 @@ Interface.prototype._tabComplete = function(lastKeypressWasTab) {
|
||||
}
|
||||
|
||||
const completions = rv[0];
|
||||
const completeOn = rv[1]; // the text that was completed
|
||||
const completeOn = rv[1]; // The text that was completed
|
||||
if (completions && completions.length) {
|
||||
// Apply/show completions.
|
||||
if (lastKeypressWasTab) {
|
||||
@ -688,7 +688,7 @@ Interface.prototype._historyNext = function() {
|
||||
if (this.historyIndex > 0) {
|
||||
this.historyIndex--;
|
||||
this.line = this.history[this.historyIndex];
|
||||
this.cursor = this.line.length; // set cursor to end of line.
|
||||
this.cursor = this.line.length; // Set cursor to end of line.
|
||||
this._refreshLine();
|
||||
|
||||
} else if (this.historyIndex === 0) {
|
||||
@ -704,7 +704,7 @@ Interface.prototype._historyPrev = function() {
|
||||
if (this.historyIndex + 1 < this.history.length) {
|
||||
this.historyIndex++;
|
||||
this.line = this.history[this.historyIndex];
|
||||
this.cursor = this.line.length; // set cursor to end of line.
|
||||
this.cursor = this.line.length; // Set cursor to end of line.
|
||||
|
||||
this._refreshLine();
|
||||
}
|
||||
@ -814,7 +814,7 @@ function _ttyWriteDumb(s, key) {
|
||||
}
|
||||
|
||||
switch (key.name) {
|
||||
case 'return': // carriage return, i.e. \r
|
||||
case 'return': // Carriage return, i.e. \r
|
||||
this._sawReturnAt = Date.now();
|
||||
this._line();
|
||||
break;
|
||||
@ -837,7 +837,7 @@ function _ttyWriteDumb(s, key) {
|
||||
}
|
||||
}
|
||||
|
||||
// handle a write from the tty
|
||||
// Handle a write from the tty
|
||||
Interface.prototype._ttyWrite = function(s, key) {
|
||||
const previousKey = this._previousKey;
|
||||
key = key || {};
|
||||
@ -893,11 +893,11 @@ Interface.prototype._ttyWrite = function(s, key) {
|
||||
this._deleteLineRight();
|
||||
break;
|
||||
|
||||
case 'a': // go to the start of the line
|
||||
case 'a': // Go to the start of the line
|
||||
this._moveCursor(-Infinity);
|
||||
break;
|
||||
|
||||
case 'e': // go to the end of the line
|
||||
case 'e': // Go to the end of the line
|
||||
this._moveCursor(+Infinity);
|
||||
break;
|
||||
|
||||
@ -905,11 +905,11 @@ Interface.prototype._ttyWrite = function(s, key) {
|
||||
this._moveCursor(-charLengthLeft(this.line, this.cursor));
|
||||
break;
|
||||
|
||||
case 'f': // forward one character
|
||||
case 'f': // Forward one character
|
||||
this._moveCursor(+charLengthAt(this.line, this.cursor));
|
||||
break;
|
||||
|
||||
case 'l': // clear the whole screen
|
||||
case 'l': // Clear the whole screen
|
||||
cursorTo(this.output, 0, 0);
|
||||
clearScreenDown(this.output);
|
||||
this._refreshLine();
|
||||
@ -919,7 +919,7 @@ Interface.prototype._ttyWrite = function(s, key) {
|
||||
this._historyNext();
|
||||
break;
|
||||
|
||||
case 'p': // previous history item
|
||||
case 'p': // Previous history item
|
||||
this._historyPrev();
|
||||
break;
|
||||
|
||||
@ -997,7 +997,7 @@ Interface.prototype._ttyWrite = function(s, key) {
|
||||
this._sawReturnAt = 0;
|
||||
|
||||
switch (key.name) {
|
||||
case 'return': // carriage return, i.e. \r
|
||||
case 'return': // Carriage return, i.e. \r
|
||||
this._sawReturnAt = Date.now();
|
||||
this._line();
|
||||
break;
|
||||
|
12
lib/repl.js
12
lib/repl.js
@ -1016,12 +1016,12 @@ function complete(line, callback) {
|
||||
if (kill.isFunction)
|
||||
tmp[kill.line] = '';
|
||||
}
|
||||
var flat = new ArrayStream(); // make a new "input" stream
|
||||
var magic = new REPLServer('', flat); // make a nested REPL
|
||||
var flat = new ArrayStream(); // Make a new "input" stream.
|
||||
var magic = new REPLServer('', flat); // Make a nested REPL.
|
||||
replMap.set(magic, replMap.get(this));
|
||||
flat.run(tmp); // eval the flattened code
|
||||
// all this is only profitable if the nested REPL
|
||||
// does not have a bufferedCommand
|
||||
flat.run(tmp); // `eval` the flattened code.
|
||||
// All this is only profitable if the nested REPL does not have a
|
||||
// bufferedCommand.
|
||||
if (!magic[kBufferedCommandSymbol]) {
|
||||
magic._domain.on('error', (err) => { throw err; });
|
||||
return magic.complete(line, callback);
|
||||
@ -1188,7 +1188,7 @@ function complete(line, callback) {
|
||||
// https://github.com/nodejs/node/issues/2119
|
||||
}
|
||||
}
|
||||
// works for non-objects
|
||||
// Works for non-objects
|
||||
try {
|
||||
var sentinel = 5;
|
||||
var p;
|
||||
|
11
lib/url.js
11
lib/url.js
@ -258,7 +258,7 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
|
||||
rest = rest.slice(proto.length);
|
||||
}
|
||||
|
||||
// figure out if it's got a host
|
||||
// Figure out if it's got a host
|
||||
// user@server is *always* interpreted as a hostname, and url
|
||||
// resolution will treat //foo/bar as host=foo,path=bar because that's
|
||||
// how the browser resolves relative URLs.
|
||||
@ -448,7 +448,7 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
|
||||
this.pathname = '/';
|
||||
}
|
||||
|
||||
// to support http.request
|
||||
// To support http.request
|
||||
if (this.pathname || this.search) {
|
||||
const p = this.pathname || '';
|
||||
const s = this.search || '';
|
||||
@ -746,7 +746,7 @@ Url.prototype.resolveObject = function resolveObject(relative) {
|
||||
result.auth = relative.auth;
|
||||
result.hostname = relative.hostname || relative.host;
|
||||
result.port = relative.port;
|
||||
// to support http.request
|
||||
// To support http.request
|
||||
if (result.pathname || result.search) {
|
||||
var p = result.pathname || '';
|
||||
var s = result.search || '';
|
||||
@ -819,7 +819,7 @@ Url.prototype.resolveObject = function resolveObject(relative) {
|
||||
result.search = relative.search;
|
||||
result.query = relative.query;
|
||||
} else if (relative.search !== null && relative.search !== undefined) {
|
||||
// just pull out the search.
|
||||
// Just pull out the search.
|
||||
// like href='?foo'.
|
||||
// Put this after the other two cases because it simplifies the booleans
|
||||
if (noLeadingSlashes) {
|
||||
@ -846,8 +846,7 @@ Url.prototype.resolveObject = function resolveObject(relative) {
|
||||
}
|
||||
|
||||
if (!srcPath.length) {
|
||||
// no path at all. easy.
|
||||
// we've already handled the other stuff above.
|
||||
// No path at all. All other things were already handled above.
|
||||
result.pathname = null;
|
||||
// To support http.request
|
||||
if (result.search) {
|
||||
|
@ -555,7 +555,7 @@ function processCallback() {
|
||||
self.push(null);
|
||||
}
|
||||
|
||||
// finished with the chunk.
|
||||
// Finished with the chunk.
|
||||
this.buffer = null;
|
||||
this.cb();
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ const server = https.createServer(serverOptions, (req, res) => {
|
||||
host: common.localhostIPv4,
|
||||
port: server.address().port,
|
||||
path: '/test',
|
||||
clientCertEngine: engine, // engine will provide key+cert
|
||||
clientCertEngine: engine, // `engine` will provide key+cert
|
||||
rejectUnauthorized: false, // Prevent failing on self-signed certificates
|
||||
headers: {}
|
||||
};
|
||||
|
@ -12,7 +12,7 @@ const initHooks = require('./init-hooks');
|
||||
const util = require('util');
|
||||
|
||||
const sleep = util.promisify(setTimeout);
|
||||
// either 'inited' or 'resolved'
|
||||
// Either 'inited' or 'resolved'
|
||||
const promisesInitState = new Map();
|
||||
// Either 'before' or 'after' AND asyncId must be present in the other map
|
||||
const promisesExecutionState = new Map();
|
||||
|
@ -13,7 +13,7 @@ const { exec } = require('child_process');
|
||||
const hooks = initHooks();
|
||||
|
||||
hooks.enable();
|
||||
const interval = setInterval(() => {}, 9999); // keep event loop open
|
||||
const interval = setInterval(() => {}, 9999); // Keep event loop open
|
||||
process.on('SIGUSR2', common.mustCall(onsigusr2, 2));
|
||||
|
||||
let count = 0;
|
||||
@ -35,7 +35,7 @@ function onsigusr2() {
|
||||
}
|
||||
|
||||
function onsigusr2Again() {
|
||||
clearInterval(interval); // let the event loop close
|
||||
clearInterval(interval); // Let the event loop close
|
||||
}
|
||||
|
||||
process.on('exit', onexit);
|
||||
|
@ -10,16 +10,16 @@ const hooks = initHooks();
|
||||
hooks.enable();
|
||||
|
||||
function onchange() { }
|
||||
// install first file watcher
|
||||
// Install first file watcher
|
||||
fs.watchFile(__filename, onchange);
|
||||
|
||||
// install second file watcher
|
||||
// Install second file watcher
|
||||
fs.watchFile(commonPath, onchange);
|
||||
|
||||
// remove first file watcher
|
||||
// Remove first file watcher
|
||||
fs.unwatchFile(__filename);
|
||||
|
||||
// remove second file watcher
|
||||
// Remove second file watcher
|
||||
fs.unwatchFile(commonPath);
|
||||
|
||||
process.on('exit', onexit);
|
||||
|
@ -9,7 +9,7 @@ const { checkInvocations } = require('./hook-checks');
|
||||
const hooks = initHooks();
|
||||
hooks.enable();
|
||||
|
||||
// install first immediate
|
||||
// Install first immediate
|
||||
setImmediate(common.mustCall(onimmediate));
|
||||
|
||||
const as = hooks.activitiesOfTypes('Immediate');
|
||||
@ -29,7 +29,7 @@ function onimmediate() {
|
||||
checkInvocations(imd1, { init: 1, before: 1 },
|
||||
'imd1: when first set immediate triggered');
|
||||
|
||||
// install second immediate
|
||||
// Install second immediate
|
||||
setImmediate(common.mustCall(onimmediateTwo));
|
||||
as = hooks.activitiesOfTypes('Immediate');
|
||||
assert.strictEqual(as.length, 2);
|
||||
|
@ -22,7 +22,7 @@ const hooks = initHooks();
|
||||
hooks.enable();
|
||||
|
||||
function onchange() {}
|
||||
// install first file watcher
|
||||
// Install first file watcher
|
||||
const w1 = fs.watchFile(file1, { interval: 10 }, onchange);
|
||||
|
||||
let as = hooks.activitiesOfTypes('STATWATCHER');
|
||||
@ -35,7 +35,7 @@ assert.strictEqual(statwatcher1.triggerAsyncId, 1);
|
||||
checkInvocations(statwatcher1, { init: 1 },
|
||||
'watcher1: when started to watch file');
|
||||
|
||||
// install second file watcher
|
||||
// Install second file watcher
|
||||
const w2 = fs.watchFile(file2, { interval: 10 }, onchange);
|
||||
as = hooks.activitiesOfTypes('STATWATCHER');
|
||||
assert.strictEqual(as.length, 2);
|
||||
|
@ -10,7 +10,7 @@ const TIMEOUT = common.platformTimeout(100);
|
||||
const hooks = initHooks();
|
||||
hooks.enable();
|
||||
|
||||
// install first timeout
|
||||
// Install first timeout
|
||||
setTimeout(common.mustCall(ontimeout), TIMEOUT);
|
||||
const as = hooks.activitiesOfTypes('Timeout');
|
||||
assert.strictEqual(as.length, 1);
|
||||
|
@ -3,7 +3,7 @@
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// general hook test setup
|
||||
// General hook test setup
|
||||
const tick = require('../common/tick');
|
||||
const initHooks = require('./init-hooks');
|
||||
const { checkInvocations } = require('./hook-checks');
|
||||
|
@ -3,7 +3,7 @@
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// general hook test setup
|
||||
// General hook test setup
|
||||
const tick = require('../common/tick');
|
||||
const initHooks = require('./init-hooks');
|
||||
const { checkInvocations } = require('./hook-checks');
|
||||
|
@ -795,7 +795,7 @@ module.exports = {
|
||||
if (opensslCli !== null) return opensslCli;
|
||||
|
||||
if (process.config.variables.node_shared_openssl) {
|
||||
// use external command
|
||||
// Use external command
|
||||
opensslCli = 'openssl';
|
||||
} else {
|
||||
// Use command built from sources included in Node.js repository
|
||||
|
@ -52,6 +52,6 @@ function doTest(flags, done) {
|
||||
|
||||
// First test the commonjs module loader
|
||||
doTest([], () => {
|
||||
// now test the new loader
|
||||
// Now test the new loader
|
||||
doTest(['--experimental-modules'], () => {});
|
||||
});
|
||||
|
@ -18,12 +18,12 @@ class ExtendedClass extends BaseClass {
|
||||
const baseObject = new BaseClass();
|
||||
const extendedObject = new ExtendedClass();
|
||||
|
||||
// test napi_strict_equals
|
||||
// Test napi_strict_equals
|
||||
assert.ok(test_general.testStrictEquals(val1, val1));
|
||||
assert.strictEqual(test_general.testStrictEquals(val1, val2), false);
|
||||
assert.ok(test_general.testStrictEquals(val2, val3));
|
||||
|
||||
// test napi_get_prototype
|
||||
// Test napi_get_prototype
|
||||
assert.strictEqual(test_general.testGetPrototype(baseObject),
|
||||
Object.getPrototypeOf(baseObject));
|
||||
assert.strictEqual(test_general.testGetPrototype(extendedObject),
|
||||
|
@ -4,7 +4,7 @@ const assert = require('assert');
|
||||
const test_number = require(`./build/${common.buildType}/test_number`);
|
||||
|
||||
|
||||
// testing api calls for number
|
||||
// Testing api calls for number
|
||||
function testNumber(num) {
|
||||
assert.strictEqual(num, test_number.Test(num));
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
const common = require('../../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// testing api calls for string
|
||||
// Testing api calls for string
|
||||
const test_string = require(`./build/${common.buildType}/test_string`);
|
||||
|
||||
const empty = '';
|
||||
|
@ -2,7 +2,7 @@
|
||||
const common = require('../../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// testing api calls for symbol
|
||||
// Testing api calls for symbol
|
||||
const test_symbol = require(`./build/${common.buildType}/test_symbol`);
|
||||
|
||||
const sym = test_symbol.New('test');
|
||||
|
@ -2,7 +2,7 @@
|
||||
const common = require('../../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// testing api calls for symbol
|
||||
// Testing api calls for symbol
|
||||
const test_symbol = require(`./build/${common.buildType}/test_symbol`);
|
||||
|
||||
const fooSym = test_symbol.New('foo');
|
||||
|
@ -2,7 +2,7 @@
|
||||
const common = require('../../common');
|
||||
const assert = require('assert');
|
||||
|
||||
// testing api calls for symbol
|
||||
// Testing api calls for symbol
|
||||
const test_symbol = require(`./build/${common.buildType}/test_symbol`);
|
||||
|
||||
assert.notStrictEqual(test_symbol.New(), test_symbol.New());
|
||||
|
@ -24,5 +24,5 @@ const ctx = vm.createContext(sandbox);
|
||||
const nativeKeys = vm.runInNewContext('Reflect.ownKeys(this);');
|
||||
const ownKeys = vm.runInContext('Reflect.ownKeys(this);', ctx);
|
||||
const restKeys = ownKeys.filter((key) => !nativeKeys.includes(key));
|
||||
// this should not fail
|
||||
// This should not fail
|
||||
assert.deepStrictEqual(Array.from(restKeys), ['a', 'b', sym1, sym2]);
|
||||
|
@ -24,5 +24,5 @@ const ctx = vm.createContext(sandbox);
|
||||
const nativeNames = vm.runInNewContext('Object.getOwnPropertyNames(this);');
|
||||
const ownNames = vm.runInContext('Object.getOwnPropertyNames(this);', ctx);
|
||||
const restNames = ownNames.filter((name) => !nativeNames.includes(name));
|
||||
// this should not fail
|
||||
// This should not fail
|
||||
assert.deepStrictEqual(Array.from(restNames), ['a', 'b']);
|
||||
|
@ -24,5 +24,5 @@ const ctx = vm.createContext(sandbox);
|
||||
const nativeSym = vm.runInNewContext('Object.getOwnPropertySymbols(this);');
|
||||
const ownSym = vm.runInContext('Object.getOwnPropertySymbols(this);', ctx);
|
||||
const restSym = ownSym.filter((sym) => !nativeSym.includes(sym));
|
||||
// this should not fail
|
||||
// This should not fail
|
||||
assert.deepStrictEqual(Array.from(restSym), [sym1, sym2]);
|
||||
|
@ -22,6 +22,6 @@
|
||||
'use strict';
|
||||
require('../common');
|
||||
|
||||
// custom error throwing
|
||||
// Custom error throwing
|
||||
// eslint-disable-next-line no-throw-literal
|
||||
throw ({ name: 'MyCustomError', message: 'This is a custom message' });
|
||||
|
@ -22,6 +22,6 @@
|
||||
'use strict';
|
||||
require('../common');
|
||||
|
||||
// custom error throwing
|
||||
// Custom error throwing
|
||||
// eslint-disable-next-line no-throw-literal
|
||||
throw ({ foo: 'bar' });
|
||||
|
@ -356,7 +356,7 @@ assertNotDeepOrStrict(
|
||||
new Map([['1', 5], [0, 5], ['0', 5]])
|
||||
);
|
||||
|
||||
// undefined value in Map
|
||||
// Undefined value in Map
|
||||
assertDeepAndStrictEqual(
|
||||
new Map([[1, undefined]]),
|
||||
new Map([[1, undefined]])
|
||||
|
@ -537,7 +537,7 @@ assert.strictEqual(Buffer.from('A', 'base64').length, 0);
|
||||
|
||||
|
||||
{
|
||||
// test an invalid slice end.
|
||||
// Test an invalid slice end.
|
||||
const b = Buffer.from([1, 2, 3, 4, 5]);
|
||||
const b2 = b.toString('hex', 1, 10000);
|
||||
const b3 = b.toString('hex', 1, 5);
|
||||
@ -737,7 +737,7 @@ assert.strictEqual(x.inspect(), '<Buffer 81 a3 66 6f 6f a3 62 61 72>');
|
||||
}
|
||||
|
||||
{
|
||||
// test for buffer overrun
|
||||
// Test for buffer overrun
|
||||
const buf = Buffer.from([0, 0, 0, 0, 0]); // length: 5
|
||||
const sub = buf.slice(0, 4); // length: 4
|
||||
assert.strictEqual(sub.write('12345', 'latin1'), 4);
|
||||
@ -747,7 +747,7 @@ assert.strictEqual(x.inspect(), '<Buffer 81 a3 66 6f 6f a3 62 61 72>');
|
||||
}
|
||||
|
||||
{
|
||||
// test alloc with fill option
|
||||
// Test alloc with fill option
|
||||
const buf = Buffer.alloc(5, '800A', 'hex');
|
||||
assert.strictEqual(buf[0], 128);
|
||||
assert.strictEqual(buf[1], 10);
|
||||
|
@ -48,7 +48,7 @@ assert.strictEqual(a.compare(b, 0, 7, 4, 6), -1);
|
||||
// zero length target
|
||||
assert.strictEqual(a.compare(b, 0, null), 1);
|
||||
|
||||
// coerces to targetEnd == 5
|
||||
// Coerces to targetEnd == 5
|
||||
assert.strictEqual(a.compare(b, 0, { valueOf: () => 5 }), -1);
|
||||
|
||||
// zero length target
|
||||
|
@ -128,7 +128,7 @@ common.expectsError(
|
||||
}
|
||||
}
|
||||
|
||||
// throw with negative sourceEnd
|
||||
// Throw with negative sourceEnd
|
||||
common.expectsError(
|
||||
() => b.copy(c, 0, -1), errorProperty);
|
||||
|
||||
|
@ -88,7 +88,7 @@ assert.strictEqual(
|
||||
true
|
||||
);
|
||||
|
||||
// test base64 encoding
|
||||
// Test base64 encoding
|
||||
assert.strictEqual(
|
||||
Buffer.from(b.toString('base64'), 'base64')
|
||||
.includes('ZA==', 0, 'base64'),
|
||||
@ -112,7 +112,7 @@ assert.strictEqual(
|
||||
true
|
||||
);
|
||||
|
||||
// test latin1 encoding
|
||||
// Test latin1 encoding
|
||||
assert.strictEqual(
|
||||
Buffer.from(b.toString('latin1'), 'latin1')
|
||||
.includes('d', 0, 'latin1'),
|
||||
@ -124,7 +124,7 @@ assert.strictEqual(
|
||||
true
|
||||
);
|
||||
|
||||
// test binary encoding
|
||||
// Test binary encoding
|
||||
assert.strictEqual(
|
||||
Buffer.from(b.toString('binary'), 'binary')
|
||||
.includes('d', 0, 'binary'),
|
||||
|
@ -96,7 +96,7 @@ assert.strictEqual(
|
||||
3
|
||||
);
|
||||
|
||||
// test base64 encoding
|
||||
// Test base64 encoding
|
||||
assert.strictEqual(
|
||||
Buffer.from(b.toString('base64'), 'base64')
|
||||
.indexOf('ZA==', 0, 'base64'),
|
||||
@ -120,7 +120,7 @@ assert.strictEqual(
|
||||
3
|
||||
);
|
||||
|
||||
// test latin1 encoding
|
||||
// Test latin1 encoding
|
||||
assert.strictEqual(
|
||||
Buffer.from(b.toString('latin1'), 'latin1')
|
||||
.indexOf('d', 0, 'latin1'),
|
||||
@ -147,7 +147,7 @@ assert.strictEqual(
|
||||
0
|
||||
);
|
||||
|
||||
// test binary encoding
|
||||
// Test binary encoding
|
||||
assert.strictEqual(
|
||||
Buffer.from(b.toString('binary'), 'binary')
|
||||
.indexOf('d', 0, 'binary'),
|
||||
|
@ -6,7 +6,7 @@ const buffer = Buffer.from([1, 2, 3, 4, 5]);
|
||||
let arr;
|
||||
let b;
|
||||
|
||||
// buffers should be iterable
|
||||
// Buffers should be iterable
|
||||
|
||||
arr = [];
|
||||
|
||||
|
@ -7,7 +7,7 @@ const SlowBuffer = buffer.SlowBuffer;
|
||||
|
||||
const ones = [1, 1, 1, 1];
|
||||
|
||||
// should create a Buffer
|
||||
// Should create a Buffer
|
||||
let sb = SlowBuffer(4);
|
||||
assert(sb instanceof Buffer);
|
||||
assert.strictEqual(sb.length, 4);
|
||||
@ -19,7 +19,7 @@ for (const [key, value] of sb.entries()) {
|
||||
// underlying ArrayBuffer should have the same length
|
||||
assert.strictEqual(sb.buffer.byteLength, 4);
|
||||
|
||||
// should work without new
|
||||
// Should work without new
|
||||
sb = SlowBuffer(4);
|
||||
assert(sb instanceof Buffer);
|
||||
assert.strictEqual(sb.length, 4);
|
||||
@ -28,7 +28,7 @@ for (const [key, value] of sb.entries()) {
|
||||
assert.deepStrictEqual(value, ones[key]);
|
||||
}
|
||||
|
||||
// should work with edge cases
|
||||
// Should work with edge cases
|
||||
assert.strictEqual(SlowBuffer(0).length, 0);
|
||||
try {
|
||||
assert.strictEqual(
|
||||
|
@ -73,7 +73,7 @@ function typeName(value) {
|
||||
});
|
||||
}
|
||||
|
||||
// test that we can call spawn
|
||||
// Test that we can call spawn
|
||||
const child = new ChildProcess();
|
||||
child.spawn({
|
||||
file: process.execPath,
|
||||
|
@ -80,7 +80,7 @@ if (process.argv[2] === 'child') {
|
||||
// The process should also self terminate without using signals
|
||||
child.on('exit', common.mustCall());
|
||||
|
||||
// when child is listening
|
||||
// When child is listening
|
||||
child.on('message', function(obj) {
|
||||
if (obj && obj.msg === 'ready') {
|
||||
|
||||
@ -90,7 +90,7 @@ if (process.argv[2] === 'child') {
|
||||
socket.on('data', function(data) {
|
||||
data = data.toString();
|
||||
|
||||
// ready to be disconnected
|
||||
// Ready to be disconnected
|
||||
if (data === 'ready') {
|
||||
child.disconnect();
|
||||
assert.throws(
|
||||
@ -101,7 +101,7 @@ if (process.argv[2] === 'child') {
|
||||
return;
|
||||
}
|
||||
|
||||
// disconnect is emitted
|
||||
// 'disconnect' is emitted
|
||||
childFlag = (data === 'true');
|
||||
});
|
||||
|
||||
|
@ -32,9 +32,9 @@ function test(fn, code) {
|
||||
}
|
||||
|
||||
if (common.isWindows) {
|
||||
test(child_process.exec, 1); // exit code of cmd.exe
|
||||
test(child_process.exec, 1); // Exit code of cmd.exe
|
||||
} else {
|
||||
test(child_process.exec, 127); // exit code of /bin/sh
|
||||
test(child_process.exec, 127); // Exit code of /bin/sh
|
||||
}
|
||||
|
||||
test(child_process.execFile, 'ENOENT');
|
||||
|
@ -124,7 +124,7 @@ if (process.argv[2] === 'child') {
|
||||
}
|
||||
|
||||
} else if (msg.what === 'connection') {
|
||||
// child got connection
|
||||
// Child got connection
|
||||
connections.done();
|
||||
} else if (msg.what === 'close') {
|
||||
child.removeListener('message', messageHandlers);
|
||||
|
@ -48,7 +48,7 @@ if (process.argv[2] === 'child') {
|
||||
console.error(`[${id}] socket.end ${m}`);
|
||||
});
|
||||
|
||||
// store the unfinished socket
|
||||
// Store the unfinished socket
|
||||
if (m === 'write') {
|
||||
needEnd.push(socket);
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ const spawnSync = require('child_process').spawnSync;
|
||||
const msgOut = 'this is stdout';
|
||||
const msgErr = 'this is stderr';
|
||||
|
||||
// this is actually not os.EOL?
|
||||
// This is actually not os.EOL?
|
||||
const msgOutBuf = Buffer.from(`${msgOut}\n`);
|
||||
const msgErrBuf = Buffer.from(`${msgErr}\n`);
|
||||
|
||||
|
@ -51,6 +51,6 @@ function grandparent() {
|
||||
}
|
||||
|
||||
function parent() {
|
||||
// should not immediately exit.
|
||||
// Should not immediately exit.
|
||||
spawn('cat', [], { stdio: 'inherit' });
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ if (!id) {
|
||||
}));
|
||||
}, 2));
|
||||
} else {
|
||||
assert(0); // bad command line argument
|
||||
assert(0); // Bad command line argument
|
||||
}
|
||||
|
||||
function startWorker() {
|
||||
|
@ -37,7 +37,7 @@ if (cluster.isWorker) {
|
||||
const servers = 2;
|
||||
const serverPorts = new Set();
|
||||
|
||||
// test a single TCP server
|
||||
// Test a single TCP server
|
||||
const testConnection = (port, cb) => {
|
||||
const socket = net.connect(port, '127.0.0.1', () => {
|
||||
// buffer result
|
||||
|
@ -66,7 +66,7 @@ if (cluster.isMaster && process.argv.length !== 3) {
|
||||
server.on('error', function(err) {
|
||||
// Message to child process tells it to exit
|
||||
cp.send('end');
|
||||
// propagate error to parent
|
||||
// Propagate error to parent
|
||||
process.send(err);
|
||||
});
|
||||
}));
|
||||
|
@ -26,7 +26,7 @@ const cluster = require('cluster');
|
||||
|
||||
if (cluster.isWorker) {
|
||||
|
||||
// keep the worker alive
|
||||
// Keep the worker alive
|
||||
const http = require('http');
|
||||
http.Server().listen(0, '127.0.0.1');
|
||||
|
||||
@ -39,7 +39,7 @@ if (cluster.isWorker) {
|
||||
pid: worker.process.pid
|
||||
});
|
||||
|
||||
// terminate the cluster process
|
||||
// Terminate the cluster process
|
||||
worker.once('listening', common.mustCall(() => {
|
||||
setTimeout(() => {
|
||||
process.exit(0);
|
||||
@ -67,7 +67,7 @@ if (cluster.isWorker) {
|
||||
// Make sure that the master died on purpose
|
||||
assert.strictEqual(code, 0);
|
||||
|
||||
// check worker process status
|
||||
// Check worker process status
|
||||
const pollWorker = () => {
|
||||
alive = common.isAlive(pid);
|
||||
if (alive) {
|
||||
|
@ -116,7 +116,7 @@ if (cluster.isWorker) {
|
||||
};
|
||||
}
|
||||
|
||||
// some helper functions ...
|
||||
// Some helper functions ...
|
||||
|
||||
function checkResults(expected_results, results) {
|
||||
for (const k in expected_results) {
|
||||
|
@ -103,7 +103,7 @@ if (cluster.isWorker) {
|
||||
});
|
||||
}
|
||||
|
||||
// some helper functions ...
|
||||
// Some helper functions ...
|
||||
|
||||
function checkResults(expected_results, results) {
|
||||
for (const k in expected_results) {
|
||||
|
@ -134,7 +134,7 @@ console.dir(custom_inspect, { showHidden: false });
|
||||
console.dir({ foo: { bar: { baz: true } } }, { depth: 0 });
|
||||
console.dir({ foo: { bar: { baz: true } } }, { depth: 1 });
|
||||
|
||||
// test console.dirxml()
|
||||
// Test console.dirxml()
|
||||
console.dirxml(custom_inspect, custom_inspect);
|
||||
console.dirxml(
|
||||
{ foo: { bar: { baz: true } } },
|
||||
@ -142,7 +142,7 @@ console.dirxml(
|
||||
{ foo: { bar: { quux: true } } }
|
||||
);
|
||||
|
||||
// test console.trace()
|
||||
// Test console.trace()
|
||||
console.trace('This is a %j %d', { formatted: 'trace' }, 10, 'foo');
|
||||
|
||||
// Test console.time() and console.timeEnd() output
|
||||
|
@ -36,7 +36,7 @@ function testCipher1(key) {
|
||||
|
||||
assert.strictEqual(txt, plaintext);
|
||||
|
||||
// streaming cipher interface
|
||||
// Streaming cipher interface
|
||||
// NB: In real life, it's not guaranteed that you can get all of it
|
||||
// in a single read() like this. But in this case, we know it's
|
||||
// quite small, so there's no harm.
|
||||
|
@ -23,7 +23,7 @@ function testCipher1(key, iv) {
|
||||
assert.strictEqual(txt, plaintext,
|
||||
`encryption/decryption with key ${key} and iv ${iv}`);
|
||||
|
||||
// streaming cipher interface
|
||||
// Streaming cipher interface
|
||||
// NB: In real life, it's not guaranteed that you can get all of it
|
||||
// in a single read() like this. But in this case, we know it's
|
||||
// quite small, so there's no harm.
|
||||
|
@ -230,7 +230,7 @@ if (availableCurves.has('prime256v1') && availableCurves.has('secp256k1')) {
|
||||
assert(firstByte === 2 || firstByte === 3);
|
||||
firstByte = ecdh1.getPublicKey('buffer', 'hybrid')[0];
|
||||
assert(firstByte === 6 || firstByte === 7);
|
||||
// format value should be string
|
||||
// Format value should be string
|
||||
|
||||
common.expectsError(
|
||||
() => ecdh1.getPublicKey('buffer', 10),
|
||||
|
@ -606,7 +606,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher);
|
||||
});
|
||||
}
|
||||
|
||||
// cipher of invalid type.
|
||||
// Cipher of invalid type.
|
||||
for (const cipher of [0, true, {}]) {
|
||||
common.expectsError(() => generateKeyPairSync('rsa', {
|
||||
modulusLength: 4096,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user