diff --git a/.editorconfig b/.editorconfig index fd58ff70..81587b6d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,5 +16,4 @@ indent_size = 2 trim_trailing_whitespace = false [package.json] -indent_style = space -indent_size = 2 \ No newline at end of file +indent_size = 2 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..7ea4595f --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,8 @@ +# This is a comment. +# Each line is a file pattern followed by one or more owners. + +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# @global-owner1 and @global-owner2 will be requested for +# review when someone opens a pull request. +* @nodejs/github-bot diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..774051b2 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + - package-ecosystem: npm + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..62223d6e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,7 @@ +name: Test + +on: [push, pull_request] + +jobs: + tests: + uses: pkgjs/action/.github/workflows/node-test.yaml@v0 diff --git a/.gitignore b/.gitignore index e1a1e2f8..8be30955 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ npm-debug.log .DS_Store .env .vscode +.nyc_output +.tap +coverage diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9ecbf0be..00000000 --- a/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -sudo: false -language: node_js -node_js: - - 6 diff --git a/LICENSE.md b/LICENSE.md index 7002f97c..cae82d6e 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ The MIT License (MIT) ===================== -Copyright (c) 2016 Node.js Github Bot contributors +Copyright (c) 2016-2018 Node.js Github Bot contributors -------------------------------------------------- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated diff --git a/README.md b/README.md index c6606f05..5ee4b2b8 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # Node.js GitHub Bot -The Node.js Foundation's uses this bot to help manage [the repositories of the GitHub organization](https://github.com/nodejs). -It executes [scripts](https://github.com/nodejs/github-bot/tree/master/scripts) in response to events that are -pushed to it via GitHub webhooks. All [repositories](https://github.com/nodejs) that use this bot have the same webhook url & -secret configured (there is only 1 bot instance). Org-wide webhooks are not allow. +The Node.js Foundation members use this bot to help manage [the repositories of the GitHub organization](https://github.com/nodejs). + +It executes [scripts](https://github.com/nodejs/github-bot/tree/master/scripts) in response to events that are +pushed to it via GitHub webhooks. All [repositories](https://github.com/nodejs) that use this bot have the same webhook url & secret configured (there is only 1 bot instance). Org-wide webhooks are not allowed. ## Contributing @@ -13,40 +13,51 @@ See [CONTRIBUTING.md](CONTRIBUTING.md). ### Environment Variables - **`GITHUB_TOKEN`**
- The [GitHub API token](https://github.com/blog/1509-personal-api-tokens) for your account (or bot account) that will be - used to make API calls to GitHub. The account must have proper access to perform the actions required by your script. + The [GitHub API token](https://github.com/blog/1509-personal-api-tokens) for your account (or bot account) that will be used to make API calls to GitHub. The account must have proper access to perform the actions required by your script. - **`GITHUB_WEBHOOK_SECRET`**
- The webhook secret that Githib signs the POSTed payloads with. This is created when the webhook is defined. The default - is `hush-hush`. -- **`TRAVIS_CI_TOKEN`**
- For scripts that communicate with Travis CI. Your Travis token is visible on [your profile](https://travis-ci.org/profile) - page, by clicking the "show token" link. Also See: https://blog.travis-ci.com/2013-01-28-token-token-token + The webhook secret that GitHub signs the POSTed payloads with. This is created when the webhook is defined. The default is `hush-hush`. +- **`JENKINS_WORKER_IPS`**
+ List of valid Jenkins worker IPs allowed to push PR status updates, split by comma: `192.168.1.100,192.168.1.101`. +- **`JENKINS_API_CREDENTIALS`** (optional)
+ For scripts that communicate with Jenkins on http://ci.nodejs.org. The Jenkins API token is visible on + your own profile page `https://ci.nodejs.org/user//configure`, by clicking the + "show API token" button. Also See: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients +- **`JENKINS_JOB_URL_`** (optional)
+ Only required for the trigger Jenkins build script, to know which job to trigger a build for when + repository collaborator posts a comment to the bot. E.g. `JENKINS_JOB_URL_NODE=https://ci.nodejs.org/job/node-test-pull-request` +- **`JENKINS_BUILD_TOKEN_`** (optional)
+ Only required for the trigger Jenkins build script. The authentication token configured for a particular + Jenkins job, for remote scripts to trigger builds remotely. Found on the job configuration page in + `Build Triggers -> Trigger builds remotely (e.g., from scripts)`. - **`LOGIN_CREDENTIALS`**
Username and password used to protected the log files exposed in /logs. Expected format: `username:password`. - **`KEEP_LOGS`**
- Number of days to keep rotated log files in `./logs`, defaults to `10` if not set. - + Number of days to keep rotated log files, defaults to `10` if not set. +- **`LOGS_DIR`**
+ Directory where logs should be written and exposed by the `/logs` endpoint. ### Developing Locally -The bot will try to load a `.env` file at the root of the project if it exists to set environment varaibles. You will need -to create one similar to this: +The bot will try to load a `.env` file at the root of the project if it exists to set environment varaibles. You will need to create one similar to this: ``` GITHUB_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -TRAVIS_CI_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -SSE_RELAY=https://hook-relay.herokuapp.com +SSE_RELAY=https://hook-relay.example.com ``` **Note the additional `SSE_RELAY` variable:** -When developing locally, it is difficult to setup a GitHub webhook -pointing to the computer you are developing on. An easy workaround is to set the `SSE_RELAY` to the url of -[a SSE relay server](https://github.com/williamkapke/hook-relay) that will send the GitHub events via -[Server Sent Events](http://www.html5rocks.com/en/tutorials/eventsource/basics/) instead. - -You can use the [TestOrgPleaseIgnore](https://github.com/TestOrgPleaseIgnore) GitHub Organization, to test -your changes. Actions performed on the repos there will be sent to -[the SSE Relay](https://github.com/williamkapke/hook-relay). +When developing locally, it is difficult to setup a GitHub webhook +pointing to the computer you are developing on. An easy workaround is to set the `SSE_RELAY` to the url of +[a SSE relay server](https://github.com/williamkapke/hook-relay) that will send the GitHub events via +[Server Sent Events](http://www.html5rocks.com/en/tutorials/eventsource/basics/) instead. Another option +is to use [ngrok](https://ngrok.com/). + +You can use the [TestOrgPleaseIgnore](https://github.com/TestOrgPleaseIgnore) GitHub Organization, to test +your changes. Actions performed on the repos there will be sent to +[the SSE Relay](https://github.com/williamkapke/hook-relay). If you use your own Organization/Repository, +remember to set the webhook Secret to the same value as `GITHUB_WEBHOOK_SECRET` (default `hush-hush`), and +to change the content type to `application/json` (default on the GitHub interface is +`application/x-www-form-urlencoded`, which will not work with the bot). The `GITHUB_WEBHOOK_SECRET` environment variable is not required when using the relay. @@ -55,7 +66,7 @@ The `GITHUB_WEBHOOK_SECRET` environment variable is not required when using the $ npm start ``` -When developing a script, it is likely that you will only want to run the script(s) that you are working on. You may +When developing a script, it is likely that you will only want to run the script(s) that you are working on. You may pass an additional [glob](https://www.npmjs.com/package/glob) argument to specify which scripts to run. ```bash diff --git a/app.js b/app.js index 3522f933..9ac062f1 100644 --- a/app.js +++ b/app.js @@ -1,34 +1,40 @@ 'use strict' -require('dotenv').load({ silent: true }) +import express from 'express' +import bodyParser from 'body-parser' +import bunyanMiddleware from 'bunyan-middleware' +import AsyncEventEmitter from 'events-async' -const path = require('path') -const glob = require('glob') -const express = require('express') -const bodyParser = require('body-parser') -const bunyanMiddleware = require('bunyan-middleware') - -const logger = require('./lib/logger') -const authMiddleware = require('./lib/auth-middleware') +import logger from './lib/logger.js' +import authMiddleware from './lib/auth-middleware.js' +import githubEvents from './lib/github-events.js' +import jenkinsEvents from './lib/jenkins-events.js' const captureRaw = (req, res, buffer) => { req.raw = buffer } -const app = express() +export const app = express() +export const events = new AsyncEventEmitter() -const scriptsToLoad = process.env.SCRIPTS || './scripts/**/*.js' +const logsDir = process.env.LOGS_DIR || '' app.use(bodyParser.json({ verify: captureRaw })) -app.use('/logs', authMiddleware, express.static(path.join(__dirname, 'logs'))) -// bunyanMiddleware gives us request id's and unique loggers per incoming request, -// for satefy reasons we don't want to include the webhook GitHub secret in logs -app.use(bunyanMiddleware({ logger, obscureHeaders: ['x-hub-signature'] })) -require('./lib/github-events')(app) +if (logsDir) { + app.use('/logs', authMiddleware, express.static(logsDir)) +} -// load all the files in the scripts folder -glob.sync(scriptsToLoad).forEach((file) => { - logger.info('Loading:', file) - require(file)(app) +// bunyanMiddleware gives us request id's and unique loggers per incoming request, +// for safety reasons we don't want to include the webhook GitHub secret in logs +app.use(bunyanMiddleware({ + logger, + level: 'trace', + obscureHeaders: ['x-hub-signature'] +})) + +githubEvents(app, events) +jenkinsEvents(app, events) + +app.use(function logUnhandledErrors (err, req, res, next) { + logger.error(err, 'Unhandled error while responding to incoming HTTP request') + res.status(500).end() }) - -module.exports = app diff --git a/lib/auth-middleware.js b/lib/auth-middleware.js index 80e70480..81d7b550 100644 --- a/lib/auth-middleware.js +++ b/lib/auth-middleware.js @@ -1,5 +1,3 @@ -'use strict' - /** * Routes using this middleware gets HTTP basic authentication. * There's only support for *one* username and password combination, @@ -7,18 +5,16 @@ * in the follow format: "username:password" */ -const auth = require('basic-auth') - -const pkg = require('../package') +import auth from 'basic-auth' -const [ username, password ] = (process.env.LOGIN_CREDENTIALS || '').split(':') +const [username, password] = (process.env.LOGIN_CREDENTIALS || '').split(':') -module.exports = function authMiddleware (req, res, next) { +export default function authMiddleware (req, res, next) { const user = auth(req) - if (user === undefined || user['name'] !== username || user['pass'] !== password) { + if (user === undefined || user.name !== username || user.pass !== password) { res.statusCode = 401 - res.setHeader('WWW-Authenticate', `Basic realm="${pkg.name}"`) + res.setHeader('WWW-Authenticate', 'Basic realm="nodejs-github-bot"') res.end('Unauthorized') } else { next() diff --git a/lib/github-client.js b/lib/github-client.js index 76f39443..05ca43fc 100644 --- a/lib/github-client.js +++ b/lib/github-client.js @@ -1,20 +1,11 @@ -'use strict' +import { Octokit } from '@octokit/rest' -const GitHub = require('github') - -const githubClient = new GitHub({ - version: '3.0.0', - protocol: 'https', - host: 'api.github.com', - timeout: 5 * 1000, - headers: { - 'user-agent': 'Node.js GitHub Bot v1.0-beta' +const githubClient = new Octokit({ + auth: process.env.GITHUB_TOKEN || 'invalid-placeholder-token', + userAgent: 'Node.js GitHub Bot v1.0-beta', + request: { + timeout: 5 * 1000 } }) -githubClient.authenticate({ - type: 'oauth', - token: process.env.GITHUB_TOKEN || 'invalid-placeholder-token' -}) - -module.exports = githubClient +export default githubClient diff --git a/lib/github-comment.js b/lib/github-comment.js new file mode 100644 index 00000000..e038c543 --- /dev/null +++ b/lib/github-comment.js @@ -0,0 +1,17 @@ +/* eslint-disable camelcase */ + +import githubClient from './github-client.js' + +export async function createPrComment ({ owner, repo, issue_number, logger }, body) { + try { + await githubClient.issues.createComment({ + owner, + repo, + issue_number, + body + }) + } catch (err) { + logger.error(err, 'Error while creating comment on GitHub') + throw err + } +} diff --git a/lib/github-events.js b/lib/github-events.js index 79920a4d..6b6d46fa 100644 --- a/lib/github-events.js +++ b/lib/github-events.js @@ -1,9 +1,11 @@ -const debug = require('debug')('github-events') +import debugLib from 'debug' -const githubSecret = require('./github-secret') +import * as githubSecret from './github-secret.js' -module.exports = (app) => { - app.post('/hooks/github', (req, res) => { +const debug = debugLib('github-events') + +export default (app, events) => { + app.post('/hooks/github', async (req, res) => { const event = req.headers['x-github-event'] if (!event) { res.writeHead(400, 'Event Header Missing') @@ -19,14 +21,28 @@ module.exports = (app) => { const data = req.body data.action = data.action ? event + '.' + data.action : event - res.end() + try { + await app.emitGhEvent(data, req.log) + res.status(200) + } catch (err) { + req.log.error(err, 'Error while emitting GitHub event') + res.status(500) + } - app.emitGhEvent(data, req.log) + res.end() }) app.emitGhEvent = function emitGhEvent (data, logger) { const repo = data.repository.name const org = data.repository.owner.login || data.organization.login + + // Normalize how to fetch the PR / issue number for simpler retrieval in the + // rest of the bot's code. For PRs the number is present in data.number, + // but for webhook events raised for comments it's present in data.issue.number + if (!data.number && data.issue) { + data.number = data.issue.number + } + const pr = data.number // create unique logger which is easily traceable throughout the entire app @@ -37,6 +53,6 @@ module.exports = (app) => { data.logger.info('Emitting GitHub event') debug(data) - app.emit(data.action, data, org, repo, data.sender.login) + return events.emit(data.action, data, org, repo, data.sender.login) } } diff --git a/lib/github-secret.js b/lib/github-secret.js index 4be3efb5..1aecacc1 100644 --- a/lib/github-secret.js +++ b/lib/github-secret.js @@ -1,13 +1,13 @@ -const crypto = require('crypto') +import crypto from 'node:crypto' const secret = process.env.GITHUB_WEBHOOK_SECRET || 'hush-hush' function sign (data) { - const buffer = new Buffer(data, 'utf8') + const buffer = Buffer.from(data, 'utf8') return 'sha1=' + crypto.createHmac('sha1', secret).update(buffer).digest('hex') } -exports.isValid = function isValid (req) { +export function isValid (req) { const signature = req.headers['x-hub-signature'] return signature && signature === sign(req.raw) } diff --git a/lib/jenkins-events.js b/lib/jenkins-events.js new file mode 100644 index 00000000..7a97e551 --- /dev/null +++ b/lib/jenkins-events.js @@ -0,0 +1,84 @@ +import debugLib from 'debug' + +import * as pushJenkinsUpdate from './push-jenkins-update.js' + +const debug = debugLib('jenkins-events') +const enabledRepos = process.env.JENKINS_ENABLED_REPOS + ? process.env.JENKINS_ENABLED_REPOS.split(',') + : ['citgm', 'http-parser', 'node', 'node-auto-test'] + +const listOfKnownJenkinsIps = process.env.JENKINS_WORKER_IPS ? process.env.JENKINS_WORKER_IPS.split(',') : [] + +function isKnownJenkinsIp (req) { + const ip = req.connection.remoteAddress.split(':').pop() + + if (listOfKnownJenkinsIps.length && !listOfKnownJenkinsIps.includes(ip)) { + req.log.warn({ ip }, 'Ignoring, not allowed to push Jenkins updates') + return false + } + + return true +} + +function isRelatedToPullRequest (gitRef) { + // refs/pull/12345/head vs refs/heads/v8.x-staging/head + return gitRef.includes('/pull/') +} + +export default (app, events) => { + app.post('/:repo/jenkins/:event', async (req, res) => { + const isValid = pushJenkinsUpdate.validate(req.body) + const repo = req.params.repo + const event = req.params.event + const owner = req.body.owner || process.env.JENKINS_DEFAULT_GH_OWNER || 'nodejs' + + if (!isValid) { + return res.status(400).end('Invalid payload') + } + + if (!isRelatedToPullRequest(req.body.ref)) { + return res.status(400).end('Will only push builds related to pull requests') + } + + if (!enabledRepos.includes(repo)) { + return res.status(400).end('Invalid repository') + } + + if (!isKnownJenkinsIp(req)) { + return res.status(401).end('Invalid Jenkins IP') + } + + const data = { + ...req.body, + owner, + repo, + event + } + + try { + await app.emitJenkinsEvent(event, data, req.log) + res.status(200) + } catch (err) { + req.log.error(err, 'Error while emitting Jenkins event') + res.status(500) + } + + res.end() + }) + + app.emitJenkinsEvent = function emitJenkinsEvent (event, data, logger) { + const { identifier } = data + + // create unique logger which is easily traceable throughout the entire app + // by having e.g. "nodejs/nodejs.org/#1337" part of every subsequent log statement + data.logger = logger.child({ identifier, event }, true) + // prevent data.logger from plausibly being serialised to JSON due to circular references + Object.defineProperty(data, 'logger', { enumerable: false }) + + data.logger.info('Emitting Jenkins event') + debug(data) + + events.emit('jenkins', data) + return events.emit(`jenkins.${event}`, data) + } +} diff --git a/lib/logger.js b/lib/logger.js index b5279c42..885ef789 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -1,26 +1,31 @@ -'use strict' +import path from 'node:path' -const path = require('path') -const bunyan = require('bunyan') +import bunyan from 'bunyan' const isRunningTests = process.env.npm_lifecycle_event === 'test' -const stdoutLevel = isRunningTests ? 'FATAL' : 'INFO' +const stdoutLevel = isRunningTests ? 'FATAL' : process.env.LOG_LEVEL || 'INFO' const daysToKeepLogs = process.env.KEEP_LOGS || 10 +const logsDir = process.env.LOGS_DIR || '' +const rotatingFilePath = path.join(logsDir, 'bot.log') -module.exports = bunyan.createLogger({ +const streams = [{ + stream: process.stdout, + level: stdoutLevel +}] + +// write to file when $LOGS_DIR is set +if (logsDir) { + streams.push({ + type: 'rotating-file', + path: rotatingFilePath, + period: '1d', // daily rotation + count: daysToKeepLogs, + level: 'debug' + }) +} + +export default bunyan.createLogger({ name: 'bot', - streams: [ - { - stream: process.stdout, - level: stdoutLevel - }, - { - type: 'rotating-file', - path: path.join(__dirname, '../logs/bot.log'), - period: '1d', // daily rotation - count: daysToKeepLogs, - level: 'debug' - } - ] + streams }) diff --git a/lib/node-labels.js b/lib/node-labels.js deleted file mode 100644 index af27f7fa..00000000 --- a/lib/node-labels.js +++ /dev/null @@ -1,184 +0,0 @@ -'use strict' - -// order of entries in this map *does* matter for the resolved labels -// earlier entries override later entries -const subSystemLabelsMap = new Map([ - // properly label changes to v8 inspector integration-related files - [/^src\/inspector_/, ['c++', 'v8_inspector', 'dont-land-on-v4.x']], - // don't want to label it a c++ update when we're "only" bumping the Node.js version - [/^src\/(?!node_version\.h)/, 'c++'], - // meta is a very specific label for things that are policy and or meta-info related - [/^([A-Z]+$|CODE_OF_CONDUCT|ROADMAP|WORKING_GROUPS|GOVERNANCE|CHANGELOG|\.mail|\.git.+)/, 'meta'], - // things that edit top-level .md files are always a doc change - [/^\w+\.md$/, 'doc'], - // different variants of *Makefile and build files - [/^(tools\/)?(Makefile|BSDmakefile|create_android_makefiles)$/, 'build'], - [/^tools\/(install\.py|genv8constants\.py|getnodeversion\.py|js2c\.py|utils\.py|configure\.d\/.*)$/, 'build'], - [/^(configure|node\.gyp|common\.gypi|vcbuild\.bat)$/, 'build'], - // all other tools/ changes should be marked as such - [/^tools\//, 'tools'], - - /* Dependencies */ - // libuv needs an explicit mapping, as the ordinary /deps/ mapping below would - // end up as libuv changes labeled with "uv" (which is a non-existing label) - [/^deps\/uv\//, 'libuv'], - [/^deps\/([^/]+)/, '$1'], - - /* JS subsystems */ - // Oddities first - [/^lib\/(punycode|\w+\/freelist|sys\.js)/, ''], // TODO: ignore better? - [/^lib\/constants\.js$/, 'lib / src'], - [/^lib\/_(debug_agent|debugger)\.js$/, 'debugger'], - [/^lib(\/\w+)?\/(_)?link(ed)?list/, 'timers'], - [/^lib\/\w+\/bootstrap_node/, 'lib / src'], - [/^lib\/\w+\/v8_prof_/, 'tools'], - [/^lib\/\w+\/socket_list/, 'net'], - [/^lib\/\w+\/streams$/, 'stream'], - // All other lib/ files map directly - [/^lib\/_(\w+)_\w+\.js?$/, '$1'], // e.g. _(stream)_wrap - [/^lib(\/internal)?\/(\w+)\.js?$/, '$2'], // other .js files - [/^lib\/internal\/(\w+)$/, '$1'] // internal subfolders -]) - -const jsSubsystemList = [ - 'debugger', 'assert', 'buffer', 'child_process', 'cluster', 'console', - 'crypto', 'dgram', 'dns', 'domain', 'events', 'fs', 'http', 'https', 'module', - 'net', 'os', 'path', 'process', 'querystring', 'readline', 'repl', 'stream', - 'string_decoder', 'timers', 'tls', 'tty', 'url', 'util', 'v8', 'vm', 'zlib' -] - -const exclusiveLabelsMap = new Map([ - [/^test\//, 'test'], - // specific map for modules.md as it should be labeled 'module' not 'modules' - [/^doc\/api\/modules.md$/, ['doc', 'module']], - // automatically tag subsystem-specific API doc changes - [/^doc\/api\/(\w+)\.md$/, ['doc', '$1']], - [/^doc\//, 'doc'], - [/^benchmark\//, 'benchmark'] -]) - -function resolveLabels (filepathsChanged, baseBranch, limitLib = true) { - const exclusiveLabels = matchExclusiveSubSystem(filepathsChanged) - - if (typeof baseBranch !== 'string') { - if (typeof baseBranch === 'boolean') { - limitLib = baseBranch - } - baseBranch = '' - } - - const labels = (exclusiveLabels.length > 0) - ? exclusiveLabels - : matchAllSubSystem(filepathsChanged, limitLib) - - // Add version labels if PR is made against a version branch - const m = /^(v\d+\.(?:\d+|x))(?:-staging|$)/.exec(baseBranch) - if (m) { - labels.push(m[1]) - } - - return labels -} - -function hasAllSubsystems (arr) { - return arr.every((val) => { - return jsSubsystemList.includes(val) - }) -} - -function matchExclusiveSubSystem (filepathsChanged) { - const isExclusive = filepathsChanged.every(matchesAnExclusiveLabel) - var labels = matchSubSystemsByRegex(exclusiveLabelsMap, filepathsChanged) - // if there are multiple API doc changes, do not apply subsystem tags for now - if (isExclusive && - labels.includes('doc') && - labels.length > 2) { - const nonDocLabels = labels.filter((val) => { - return val !== 'doc' - }) - if (hasAllSubsystems(nonDocLabels)) { - labels = ['doc'] - } else { - labels = [] - } - } - return isExclusive ? labels : [] -} - -function matchAllSubSystem (filepathsChanged, limitLib) { - return matchSubSystemsByRegex( - subSystemLabelsMap, filepathsChanged, limitLib) -} - -function matchSubSystemsByRegex (rxLabelsMap, filepathsChanged, limitLib) { - const jsLabelCount = [] - // by putting matched labels into a map, we avoid duplicate labels - const labelsMap = filepathsChanged.reduce((map, filepath) => { - const mappedSubSystems = mappedSubSystemsForFile(rxLabelsMap, filepath) - - if (!mappedSubSystems) { - // short-circuit - return map - } - - for (var i = 0; i < mappedSubSystems.length; ++i) { - const mappedSubSystem = mappedSubSystems[i] - if (limitLib && hasJsSubsystemChanges(filepathsChanged, mappedSubSystem)) { - if (jsLabelCount.length >= 4) { - for (const jsLabel of jsLabelCount) { - delete map[jsLabel] - } - map['lib / src'] = true - // short-circuit - return map - } else { - jsLabelCount.push(mappedSubSystem) - } - } - - map[mappedSubSystem] = true - } - - return map - }, {}) - - return Object.keys(labelsMap) -} - -function hasJsSubsystemChanges (filepathsChanged, mappedSubSystem) { - const hasLibChanges = filepathsChanged.some((filepath) => filepath.startsWith('lib/')) - return hasLibChanges && jsSubsystemList.includes(mappedSubSystem) -} - -function mappedSubSystemsForFile (labelsMap, filepath) { - for (const [regex, label] of labelsMap) { - const matches = regex.exec(filepath) - - if (matches === null) { - continue - } - - const ret = [] - const labels = Array.isArray(label) ? label : [label] - labels.forEach((label) => { - // label names starting with $ means we want to extract a matching - // group from the regex we've just matched against - if (label.startsWith('$')) { - const wantedMatchGroup = label.substr(1) - label = matches[wantedMatchGroup] - } - if (!label) { - return - } - // use label name as is when label doesn't look like a regex matching group - ret.push(label) - }) - return ret - } -} - -function matchesAnExclusiveLabel (filepath) { - return mappedSubSystemsForFile(exclusiveLabelsMap, filepath) !== undefined -} - -exports.resolveLabels = resolveLabels diff --git a/lib/node-owners.js b/lib/node-owners.js new file mode 100644 index 00000000..ee431d07 --- /dev/null +++ b/lib/node-owners.js @@ -0,0 +1,24 @@ +import { matchPattern, parse } from 'codeowners-utils' + +export class Owners { + constructor (ownersDefinitions) { + this._ownersDefinitions = ownersDefinitions + } + + static fromFile (content) { + return new Owners(parse(content)) + } + + getOwnersForPaths (paths) { + let ownersForPaths = [] + for (const { pattern, owners } of this._ownersDefinitions) { + for (const path of paths) { + if (matchPattern(path, pattern)) { + ownersForPaths = ownersForPaths.concat(owners) + } + } + } + // Remove duplicates before returning + return ownersForPaths.filter((v, i) => ownersForPaths.indexOf(v) === i).sort() + } +} diff --git a/lib/node-repo.js b/lib/node-repo.js index 97ea8dfc..c21210e6 100644 --- a/lib/node-repo.js +++ b/lib/node-repo.js @@ -1,145 +1,191 @@ -'use strict' +/* eslint-disable camelcase */ -const LRU = require('lru-cache') +import https from 'node:https' -const githubClient = require('./github-client') -const resolveLabels = require('./node-labels').resolveLabels -const existingLabelsCache = new LRU({ max: 1, maxAge: 1000 * 60 * 60 }) +import Aigle from 'aigle' -function deferredResolveLabelsThenUpdatePr (options) { - const timeoutMillis = (options.timeoutInSec || 0) * 1000 - setTimeout(resolveLabelsThenUpdatePr, timeoutMillis, options) -} +import githubClient from './github-client.js' +import { createPrComment } from './github-comment.js' +import { Owners } from './node-owners.js' -function resolveLabelsThenUpdatePr (options) { - options.logger.debug('Fetching PR files for labelling') +const fiveSeconds = 5 * 1000 - githubClient.pullRequests.getFiles({ - owner: options.owner, - repo: options.repo, - number: options.prId - }, (err, res) => { - if (err) { - return options.logger.error(err, 'Error retrieving files from GitHub') - } - - const filepathsChanged = res.map((fileMeta) => fileMeta.filename) - const resolvedLabels = resolveLabels(filepathsChanged, options.baseBranch) +const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)) - fetchExistingLabels(options, (err, existingLabels) => { - if (err) { - return options.logger.error(err, 'Error retrieving existing repo labels') - } +export async function removeLabelFromPR (options, label) { + // no need to request github if we didn't resolve a label + if (!label) { + return + } - const labelsToAdd = stringsInCommon(existingLabels, resolvedLabels) - options.logger.debug('Resolved labels: ' + labelsToAdd) + options.logger.debug('Trying to remove label: ' + label) - updatePrWithLabels(options, labelsToAdd) + try { + await githubClient.issues.removeLabel({ + owner: options.owner, + repo: options.repo, + issue_number: options.prId, + name: label }) - }) -} - -function updatePrWithLabels (options, labels) { - // no need to request github if we didn't resolve any labels - if (!labels.length) { - return + } catch (err) { + if (err.code === 404) { + options.logger.info('Label to remove did not exist, bailing ' + label) + throw err + } + options.logger.error(err, 'Error while removing a label') + throw err } - options.logger.debug('Trying to add labels: ' + labels) + options.logger.info('Removed a label ' + label) + return label +} - githubClient.issues.addLabels({ +export function getBotPrLabels (options, cb) { + githubClient.issues.listEvents({ owner: options.owner, repo: options.repo, - number: options.prId, - body: labels - }, (err) => { - if (err) { - return options.logger.error(err, 'Error while adding labels') + page: 1, + per_page: 100, // we probably won't hit this + issue_number: options.prId + }).then(res => { + const events = res.data || [] + const ourLabels = [] + + for (const event of events) { + if (event.event === 'unlabeled') { + const index = ourLabels.indexOf(event.label.name) + if (index === -1) continue + + ourLabels.splice(index, 1) + } else if (event.event === 'labeled') { + const index = ourLabels.indexOf(event.label.name) + if (index > -1) continue + + if (event.actor.login === 'nodejs-github-bot') { + ourLabels.push(event.label.name) + } + } } - options.logger.info('Added labels: ' + labels) - }) + cb(null, ourLabels) + }, cb) } -function removeLabelFromPR (options, label) { - // no need to request github if we didn't resolve a label - if (!label) { - return - } +async function deferredResolveOwnersThenPingPr (options) { + const timeoutMillis = (options.timeoutInSec || 0) * 1000 + await sleep(timeoutMillis) + return resolveOwnersThenPingPr(options) +} - options.logger.debug('Trying to remove label: ' + label) +function getCodeOwnersUrl (owner, repo, defaultBranch) { + const base = 'raw.githubusercontent.com' + const filepath = '.github/CODEOWNERS' + return `https://${base}/${owner}/${repo}/${defaultBranch}/${filepath}` +} - githubClient.issues.removeLabel({ - owner: options.owner, - repo: options.repo, - number: options.prId, - name: label - }, (err) => { - if (err) { - if (err.code === 404) return options.logger.info('Label to remove did not exist, bailing ' + label) +async function listFiles ({ owner, repo, prId, logger }) { + try { + const response = await githubClient.pulls.listFiles({ + owner, + repo, + pull_number: prId + }) + return response.data.map(({ filename }) => filename) + } catch (err) { + logger.error(err, 'Error retrieving files from GitHub') + throw err + } +} - return options.logger.error(err, 'Error while removing a label') +async function getDefaultBranch ({ owner, repo, logger }) { + try { + const data = (await githubClient.repos.get({ owner, repo })).data || { } + + if (!data.default_branch) { + logger.error(null, 'Could not determine default branch') + throw new Error('unknown default branch') } - options.logger.info('Removed a label ' + label) + return data.default_branch + } catch (err) { + logger.error(err, 'Error retrieving repository data') + throw err + } +} + +function getCodeOwnersFile (url, { logger }) { + return new Promise((resolve, reject) => { + https.get(url, (res) => { + if (res.statusCode !== 200) { + logger.error(`Status code: ${res.statusCode}`, 'Error retrieving OWNERS') + return reject(res.statusCode) + } + let body = '' + res.on('data', (chunk) => { + body += chunk + }) + res.on('end', () => { + return resolve(body) + }) + }).on('err', (err) => { + logger.error(err, 'Error retrieving OWNERS') + return reject(err) + }) }) } -function fetchExistingLabels (options, cb) { - const cacheKey = `${options.owner}:${options.repo}` +async function resolveOwnersThenPingPr (options) { + const { owner, repo } = options + const times = options.retries || 5 + const interval = options.retryInterval || fiveSeconds + const retry = fn => Aigle.retry({ times, interval }, fn) - if (existingLabelsCache.has(cacheKey)) { - return cb(null, existingLabelsCache.get(cacheKey)) - } + options.logger.debug('Getting file paths') + const filepathsChanged = await retry(() => listFiles(options)) + options.logger = options.logger.child({ filepathsChanged }) - fetchLabelPages(options, 1, (err, existingLabels) => { - if (err) { - return cb(err) - } + options.logger.debug('Getting default branch') + const defaultBranch = await retry(() => getDefaultBranch(options)) - const existingLabelNames = existingLabels.map((label) => label.name) + const url = getCodeOwnersUrl(owner, repo, defaultBranch) + options.logger = options.logger.child({ codeownersUrl: url }) - // cache labels so we don't have to fetch these *all the time* - existingLabelsCache.set(cacheKey, existingLabelNames) - options.logger.debug('Filled existing repo labels cache: ' + existingLabelNames) + options.logger.debug('Fetching OWNERS') + const file = await retry(() => getCodeOwnersFile(url, options)) - cb(null, existingLabelNames) - }) + const owners = Owners.fromFile(file) + const selectedOwners = owners.getOwnersForPaths(filepathsChanged) + options.logger = options.logger.child({ owners: selectedOwners }) + + options.logger.debug('Codeowners file parsed') + if (selectedOwners.length > 0) { + await pingOwners(options, selectedOwners) + } } -function fetchLabelPages (options, startPageNum, cb) { - // the github client API is somewhat misleading, - // this fetches *all* repo labels not just for an issue - githubClient.issues.getLabels({ - owner: options.owner, - repo: options.repo, - page: startPageNum, - per_page: 100 - }, (err, existingLabels) => { - if (err) { - return cb(err) - } - if (!githubClient.hasNextPage(existingLabels)) { - return cb(null, existingLabels) - } - fetchLabelPages( - options, - startPageNum + 1, - (err, remainingLabels) => err ? cb(err) : cb(null, existingLabels.concat(remainingLabels)) - ) - }) +function getCommentForOwners (owners) { + return `Review requested:\n\n${owners.map(i => `- [ ] ${i}`).join('\n')}` } -function stringsInCommon (arr1, arr2) { - const loweredArr2 = arr2.map((str) => str.toLowerCase()) - // we want the original string cases in arr1, therefore we don't lowercase them - // before comparing them cause that would wrongly make "V8" -> "v8" - return arr1.filter((str) => loweredArr2.indexOf(str.toLowerCase()) !== -1) +async function pingOwners (options, owners) { + options.logger.debug('Pinging codeowners') + try { + await createPrComment({ + owner: options.owner, + repo: options.repo, + issue_number: options.prId, + logger: options.logger + }, getCommentForOwners(owners)) + } catch (err) { + options.logger.error(err, 'Error while pinging owners') + throw err + } + options.logger.debug('Owners pinged successfully') } -exports.removeLabelFromPR = removeLabelFromPR -exports.updatePrWithLabels = updatePrWithLabels -exports.resolveLabelsThenUpdatePr = deferredResolveLabelsThenUpdatePr +export { deferredResolveOwnersThenPingPr as resolveOwnersThenPingPr } // exposed for testability -exports._fetchExistingLabels = fetchExistingLabels +export const _testExports = { + pingOwners, getCodeOwnersFile, getCodeOwnersUrl, getDefaultBranch, listFiles, getCommentForOwners +} diff --git a/lib/pollTravis.js b/lib/pollTravis.js deleted file mode 100644 index 87462902..00000000 --- a/lib/pollTravis.js +++ /dev/null @@ -1,112 +0,0 @@ -'use strict' - -const Travis = require('travis-ci') - -const githubClient = require('./github-client') - -const travisClient = new Travis({ - version: '2.0.0', - access_token: process.env.TRAVIS_CI_TOKEN -}) - -exports.pollThenStatus = pollByCommitThenStatus - -/** - * Poll and match builds by the last commit SHA of the related PR. - */ -function pollByCommitThenStatus (options) { - githubClient.pullRequests.getCommits({ - owner: options.owner, - repo: options.repo, - number: options.pr - }, (err, commitMetas) => { - if (err) { - return options.logger.error(err, 'Got error when retrieving GitHub commits for PR') - } - - const lastCommitMeta = commitMetas.pop() - const lastCommit = { - sha: lastCommitMeta.sha, - date: lastCommitMeta.commit.committer.date - } - - const optsWithCommit = Object.assign({ lastCommit }, options) - - // attach last commit sha to all subsequent logs - optsWithCommit.logger = options.logger.child({ commit: lastCommit.sha }, true) - - pollTravisBuildBySha(optsWithCommit) - optsWithCommit.logger.info('Started polling Travis for build by commit') - }) -} - -function pollTravisBuildBySha (options, checkNumber = 1) { - const createGhStatus = createGhStatusFn(options) - const toMatch = { - sha: options.lastCommit.sha, - date: options.lastCommit.date, - pr: options.pr - } - - if (checkNumber > 100) { - options.logger.warn('Was not able to find matching build for PR, stopping poll now :(') - return - } - - travisClient.repos(options.owner, options.repo).builds.get((err, res) => { - if (err) { - return options.logger.error(err, 'Got error when retrieving Travis builds') - } - - const matchingCommit = res.commits.find((commit) => { - const matchesShaOrPr = commit.sha === toMatch.sha || commit.pull_request_number === toMatch.pr - const matchesCommitDate = commit.committed_at === toMatch.date - - return matchesCommitDate && matchesShaOrPr - }) - - if (!matchingCommit) { - options.logger.warn(`Travis hasn't picked up last commit yet, will do check #${checkNumber + 1} in 30 seconds`) - return setTimeout(pollTravisBuildBySha, 30 * 1000, options, checkNumber + 1) - } - - const lastBuildForCommit = res.builds.find((build) => build.commit_id === matchingCommit.id) - if (lastBuildForCommit) { - const lastState = lastBuildForCommit.state - - if (lastState === 'passed') { - return createGhStatus('success', lastBuildForCommit.id, 'all tests passed') - } else if (lastState === 'failed') { - return createGhStatus('failure', lastBuildForCommit.id, 'build failure') - } else if (~['created', 'started'].indexOf(lastState)) { - options.logger.info(`"${lastState}" build found, will do check #${checkNumber + 1} in 30 seconds`) - createGhStatus('pending', lastBuildForCommit.id, 'build in progress') - } else { - return options.logger.info(`Unknown build state: "${lastState}", stopping polling`) - } - } else { - options.logger.warn(`Was not able to find matching build by last commit, will do check #${checkNumber + 1} in 30 seconds`) - } - - setTimeout(pollTravisBuildBySha, 30 * 1000, options, checkNumber + 1) - }) -} - -function createGhStatusFn (options) { - return (state, travisId, message) => { - githubClient.repos.createStatus({ - owner: options.owner, - repo: options.repo, - sha: options.lastCommit.sha, - target_url: `https://travis-ci.org/${options.owner}/${options.repo}/builds/${travisId}`, - context: 'Travis CI via nodejs-github-bot', - state: state, - description: message - }, (err, res) => { - if (err) { - return options.logger.error(err, 'Error while updating GitHub PR status') - } - options.logger.info('Github PR status updated') - }) - } -} diff --git a/lib/push-jenkins-update.js b/lib/push-jenkins-update.js index 20ffe499..a2ec9cde 100644 --- a/lib/push-jenkins-update.js +++ b/lib/push-jenkins-update.js @@ -1,21 +1,35 @@ -'use strict' +import githubClient from './github-client.js' +import { createPrComment } from './github-comment.js' -const githubClient = require('./github-client') - -function pushStarted (options, build) { +export function pushStarted (options, build, cb) { const pr = findPrInRef(build.ref) // create unique logger which is easily traceable for every subsequent log statement - const traceFields = { pr, job: build.identifier, status: build.status } + const traceFields = { pr, job: build.identifier, gitRef: build.ref, status: build.status } const logger = options.logger.child(traceFields, true) const optsWithPr = Object.assign({ pr }, options) - findLatestCommitInPr(optsWithPr, (err, latestCommit) => { - if (err) { - return logger.error(err, 'Got error when retrieving GitHub commits for PR') + if (build.status === 'pending') { + switch (build.identifier) { + case 'node-test-pull-request': + createPrComment(Object.assign({ issue_number: pr }, options), `CI: ${build.url}`) + break + + case 'node-test-commit-v8-linux': + createPrComment(Object.assign({ issue_number: pr }, options), `V8 CI: ${build.url}`) + break + + case 'node-test-pull-request-lite-pipeline': + createPrComment(Object.assign({ issue_number: pr }, options), `Lite-CI: ${build.url}`) + break + + default: + break } + } + findLatestCommitInPr(optsWithPr).then(latestCommit => { const statusOpts = Object.assign({ sha: latestCommit.sha, url: build.url, @@ -24,24 +38,23 @@ function pushStarted (options, build) { message: build.message || 'running tests' }, options) - createGhStatus(statusOpts, logger) + createGhStatus(statusOpts, logger).then(cb).catch(cb) + }, err => { + logger.error(err, 'Got error when retrieving GitHub commits for PR') + return cb(err) }) } -function pushEnded (options, build) { +export function pushEnded (options, build, cb) { const pr = findPrInRef(build.ref) // create unique logger which is easily traceable for every subsequent log statement - const traceFields = { pr, job: build.identifier, status: build.status } + const traceFields = { pr, job: build.identifier, gitRef: build.ref, status: build.status } const logger = options.logger.child(traceFields, true) const optsWithPr = Object.assign({ pr }, options) - findLatestCommitInPr(optsWithPr, (err, latestCommit) => { - if (err) { - return logger.error(err, 'Got error when retrieving GitHub commits for PR') - } - + findLatestCommitInPr(optsWithPr).then(latestCommit => { const statusOpts = Object.assign({ sha: latestCommit.sha, url: build.url, @@ -50,57 +63,54 @@ function pushEnded (options, build) { message: build.message || 'all tests passed' }, options) - createGhStatus(statusOpts, logger) + createGhStatus(statusOpts, logger).then(cb, cb) + }, err => { + logger.error(err, 'Got error when retrieving GitHub commits for PR') + return cb(err) }) } function findPrInRef (gitRef) { // refs/pull/12345/head - return gitRef.split('/')[2] + return parseInt(gitRef.split('/')[2], 10) } -function findLatestCommitInPr (options, cb) { - githubClient.pullRequests.getCommits({ +export async function findLatestCommitInPr (options) { + const paginateOptions = githubClient.pulls.listCommits.endpoint.merge({ owner: options.owner, repo: options.repo, - number: options.pr - }, (err, commitMetas) => { - if (err) { - return cb(err) - } + pull_number: options.pr + }) + const commitMetas = await githubClient.paginate(paginateOptions) - const lastCommitMeta = commitMetas.pop() - const lastCommit = { - sha: lastCommitMeta.sha, - date: lastCommitMeta.commit.committer.date - } + const lastCommitMeta = commitMetas.pop() + const lastCommit = { + sha: lastCommitMeta.sha, + date: lastCommitMeta.commit.committer.date + } - cb(null, lastCommit) - }) + return lastCommit } -function createGhStatus (options, logger) { - githubClient.repos.createStatus({ - owner: options.owner, - repo: options.repo, - sha: options.sha, - target_url: options.url, - context: options.context, - state: options.state, - description: options.message - }, (err, res) => { - if (err) { - return logger.error(err, 'Error while updating Jenkins / GitHub PR status') - } - logger.info('Jenkins / Github PR status updated') - }) +async function createGhStatus (options, logger) { + try { + await githubClient.repos.createCommitStatus({ + owner: options.owner, + repo: options.repo, + sha: options.sha, + target_url: options.url, + context: options.context, + state: options.state, + description: options.message + }) + } catch (err) { + logger.error(err, 'Error while updating Jenkins / GitHub PR status') + throw err + } + logger.info('Jenkins / Github PR status updated') } -function validate (payload) { +export function validate (payload) { const isString = (param) => typeof (payload[param]) === 'string' return ['identifier', 'status', 'message', 'commit', 'url'].every(isString) } - -exports.validate = validate -exports.pushStarted = pushStarted -exports.pushEnded = pushEnded diff --git a/logs/.gitignore b/logs/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..71f43f24 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5074 @@ +{ + "name": "nodejs-github-bot", + "version": "1.0.0-beta1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nodejs-github-bot", + "version": "1.0.0-beta1", + "license": "MIT", + "dependencies": { + "@octokit/rest": "^22.0.0", + "aigle": "^1.14.1", + "basic-auth": "^2.0.1", + "body-parser": "^2.2.0", + "bunyan": "^1.8.1", + "bunyan-middleware": "1.0.2", + "codeowners-utils": "^1.0.2", + "debug": "^4.4.1", + "dotenv": "^17.2.0", + "events-async": "^1.2.1", + "express": "^5.1.0", + "glob": "11.0.3" + }, + "devDependencies": { + "eventsource": "^4.0.0", + "fetch-mock": "^12.5.3", + "nock": "^14.0.10", + "nodemon": "^3.1.10", + "standard": "^17.1.2", + "supertest": "^7.1.4" + }, + "engines": { + "node": ">= 20.11.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.44.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.39.5", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.5.tgz", + "integrity": "sha512-B9nHSJYtsv79uo7QdkZ/b/WoKm20IkVSmTc/WCKarmDtFwM0dRx2ouEniqwNkzCSLn3fydzKmnMzjtfdOWt3VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "6.0.0", + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/core": { + "version": "7.0.2", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.1", + "@octokit/request": "^10.0.2", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/endpoint": { + "version": "11.0.0", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/graphql": { + "version": "9.0.1", + "license": "MIT", + "dependencies": { + "@octokit/request": "^10.0.2", + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "25.1.0", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "13.0.1", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.1.0" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "6.0.0", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "16.0.0", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.1.0" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/request": { + "version": "10.0.2", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^11.0.0", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "fast-content-type-parse": "^3.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/request-error": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/rest": { + "version": "22.0.0", + "license": "MIT", + "dependencies": { + "@octokit/core": "^7.0.2", + "@octokit/plugin-paginate-rest": "^13.0.1", + "@octokit/plugin-request-log": "^6.0.0", + "@octokit/plugin-rest-endpoint-methods": "^16.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@octokit/types": { + "version": "14.1.0", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bunyan": { + "version": "1.8.8", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.13", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob-to-regexp": { + "version": "0.4.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "17.0.23", + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.54.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aigle": { + "version": "1.14.1", + "license": "MIT", + "dependencies": { + "aigle-core": "^1.0.0" + } + }, + "node_modules/aigle-core": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "devOptional": true, + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "4.0.0", + "license": "Apache-2.0" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "devOptional": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bunyan": { + "version": "1.8.15", + "engines": [ + "node >=0.10.0" + ], + "license": "MIT", + "bin": { + "bunyan": "bin/bunyan" + }, + "optionalDependencies": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "node_modules/bunyan-middleware": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "@types/bunyan": "^1.8.6", + "@types/express": "^4.0.35", + "uuid": "^8.3.2" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/codeowners-utils": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.2", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "locate-path": "^5.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "devOptional": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.0.tgz", + "integrity": "sha512-Q4sgBT60gzd0BB0lSyYD3xM4YxrXA9y4uBDof1JNYGzOXrQdQ6yX+7XIAqoFOGQFOTK1D3Hts5OllpxMDZFONQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dtrace-provider": { + "version": "0.8.8", + "hasInstallScript": true, + "license": "BSD-2-Clause", + "optional": true, + "dependencies": { + "nan": "^2.14.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/eslint": { + "version": "8.44.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-config-standard-jsx": { + "version": "11.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.36.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events-async": { + "version": "1.2.1", + "license": "ISC" + }, + "node_modules/eventsource": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/express": { + "version": "5.1.0", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.54.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-content-type-parse": { + "version": "3.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.15.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-mock": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-12.5.3.tgz", + "integrity": "sha512-SiqPv1IXvDjNjLWCvfFUltba3VeiYucxjyynoVW8Ft07GLFQRitlzjYZI/f5wZpeQFRIVZ84fmMgJfjwb/dAEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob-to-regexp": "^0.4.4", + "dequal": "^2.0.3", + "glob-to-regexp": "^0.4.1", + "regexparam": "^3.0.0" + }, + "engines": { + "node": ">=18.11.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "devOptional": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-json-file": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.3.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "devOptional": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "devOptional": true, + "license": "MIT" + }, + "node_modules/minipass": { + "version": "7.1.2", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "license": "MIT", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "node_modules/mv": { + "version": "2.1.1", + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nan": { + "version": "2.15.0", + "license": "MIT", + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ncp": { + "version": "2.0.0", + "license": "MIT", + "optional": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nock": { + "version": "14.0.10", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.10.tgz", + "integrity": "sha512-Q7HjkpyPeLa0ZVZC5qpxBt5EyLczFJ91MEewQiIi9taWuA0KB/MDJlUWtON+7dGouVdADTQsf9RA7TZk6D8VMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mswjs/interceptors": "^0.39.5", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">=18.20.0 <20 || >=20.12.1" + } + }, + "node_modules/nodemon": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.0", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/propagate": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexparam": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.4.5", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "6.0.4", + "license": "ISC", + "optional": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/router": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "license": "MIT", + "optional": true + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/standard": { + "version": "17.1.2", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "eslint": "^8.41.0", + "eslint-config-standard": "17.1.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.36.1", + "standard-engine": "^15.1.0", + "version-guard": "^1.1.1" + }, + "bin": { + "standard": "bin/cmd.cjs" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/standard-engine": { + "version": "15.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "get-stdin": "^8.0.0", + "minimist": "^1.2.6", + "pkg-conf": "^3.1.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/superagent": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz", + "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.4", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.2" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supertest": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz", + "integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^10.2.3" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/universal-user-agent": { + "version": "7.0.3", + "license": "ISC" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/version-guard": { + "version": "1.1.1", + "dev": true, + "license": "0BSD", + "engines": { + "node": ">=0.10.48" + } + }, + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 4c896af3..6d456a9f 100644 --- a/package.json +++ b/package.json @@ -2,39 +2,37 @@ "name": "nodejs-github-bot", "version": "1.0.0-beta1", "description": "Node.js GitHub Bot", + "type": "module", "scripts": { "start": "node server.js | bunyan -o short", - "test": "tap test/**/*.test.js && standard", + "test": "STATUS=0; node --test test/**/*.test.js || STATUS=$?; standard || STATUS=$?; exit $STATUS", "test:watch": "nodemon -q -x 'npm test'" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 20.11.0" }, "private": true, "license": "MIT", "dependencies": { - "basic-auth": "^1.0.4", - "body-parser": "^1.15.0", + "@octokit/rest": "^22.0.0", + "aigle": "^1.14.1", + "basic-auth": "^2.0.1", + "body-parser": "^2.2.0", "bunyan": "^1.8.1", - "bunyan-middleware": "^0.3.1", - "debug": "^2.2.0", - "dotenv": "^2.0.0", - "express": "^4.13.4", - "github": "^7.0.1", - "glob": "^7.0.3", - "lru-cache": "^4.0.1", - "travis-ci": "^2.1.0" + "bunyan-middleware": "1.0.2", + "codeowners-utils": "^1.0.2", + "debug": "^4.4.1", + "dotenv": "^17.2.0", + "events-async": "^1.2.1", + "express": "^5.1.0", + "glob": "11.0.3" }, "devDependencies": { - "eventsource": "^0.2.1", - "lolex": "^1.5.1", - "nock": "^8.0.0", - "nodemon": "^1.9.1", - "proxyquire": "^1.7.10", - "request": "^2.72.0", - "sinon": "^1.17.6", - "standard": "^6.0.7", - "supertest": "^1.2.0", - "tap": "^5.7.1" + "eventsource": "^4.0.0", + "fetch-mock": "^12.5.3", + "nock": "^14.0.10", + "nodemon": "^3.1.10", + "standard": "^17.1.2", + "supertest": "^7.1.4" } } diff --git a/scripts/attempt-backport.js b/scripts/attempt-backport.js deleted file mode 100644 index f61a4108..00000000 --- a/scripts/attempt-backport.js +++ /dev/null @@ -1,225 +0,0 @@ -'use strict' - -const child_process = require('child_process') -const debug = require('debug')('attempt-backport') -const request = require('request') -const node_repo = require('../lib/node-repo') -const updatePrWithLabels = node_repo.updatePrWithLabels -// const removeLabelFromPR = node_repo.removeLabelFromPR - -const enabledRepos = ['node'] -const nodeVersions = [ - { version: 7 }, - { version: 6, lts: true }, - { version: 4, lts: true } -] -const queue = [] -let inProgress = false - -module.exports = function (app) { - if (!global._node_repo_dir) return - - app.on('pull_request.opened', handlePrUpdate) - // Pull Request updates - app.on('pull_request.synchronize', handlePrUpdate) - - function handlePrUpdate (event, owner, repo) { - if (!~enabledRepos.indexOf(repo)) return - - if (event.pull_request.base.ref !== 'master') return - - const prId = event.number - const options = { owner, repo, prId, logger: event.logger } - - debug(`/${owner}/${repo}/pull/${prId} sync`) - for (const node of nodeVersions) { - queueAttemptBackport(options, node.version, !!node.lts) - } - - if (!inProgress) processNextBackport() - } - - // to trigger polling manually - app.get('/attempt-backport/pr/:owner/:repo/:id', (req, res) => { - const owner = req.params.owner - const repo = req.params.repo - const prId = parseInt(req.params.id, 10) - const options = { owner, repo, prId, logger: req.log } - - if (~enabledRepos.indexOf(repo)) { - for (const node of nodeVersions) { - queueAttemptBackport(options, node.version, !!node.lts) - } - } - - if (!inProgress) processNextBackport() - - res.end() - }) -} - -function processNextBackport () { - const item = queue.shift() - if (!item) return - - if (typeof item !== 'function') { - debug(`item was not a function! - queue size: ${queue.length}`) - return - } else if (inProgress) { - debug(`was still in progress! - queue size: ${queue.length}`) - return - } - item() -} - -function queueAttemptBackport (options, version, isLTS) { - queue.push(function () { - options.logger.debug(`processing a new backport to v${version}`) - attemptBackport(options, version, isLTS, processNextBackport) - }) -} - -function attemptBackport (options, version, isLTS, cb) { - // Start - gitAmAbort() - - function wrapCP (cmd, args, opts, callback) { - let exited = false - - if (arguments.length === 3) { - callback = opts - opts = {} - } - - opts.cwd = global._node_repo_dir - - const cp = child_process.spawn(cmd, args, opts) - const argsString = [cmd, ...args].join(' ') - - cp.on('error', function (err) { - debug(`child_process err: ${err}`) - if (!exited) onError() - }) - cp.on('exit', function (code) { - exited = true - if (!cb) { - debug(`error before exit, code: ${code}, on '${argsString}'`) - return - } else if (code > 0) { - debug(`exit code > 0: ${code}, on '${argsString}'`) - onError() - return - } - callback() - }) - // Useful when debugging. - - cp.stdout.on('data', (data) => { - options.logger.debug(data.toString()) - }) - cp.stderr.on('data', (data) => { - options.logger.debug(data.toString()) - }) - - return cp - } - - function onError () { - if (!cb) return - const _cb = cb - setImmediate(() => { - options.logger.debug(`backport to ${version} failed`) - if (!isLTS) updatePrWithLabels(options, [`dont-land-on-v${version}.x`]) - setImmediate(() => { - inProgress = false - _cb() - }) - }) - cb = null - } - - function gitAmAbort () { - // TODO(Fishrock123): this should probably just merge into wrapCP - let exited = false - options.logger.debug('aborting any previous backport attempt...') - - const cp = child_process.spawn('git', ['am', '--abort'], { cwd: global._node_repo_dir }) - const argsString = 'git am --abort' - - cp.on('error', function (err) { - debug(`child_process err: ${err}`) - if (!exited) onError() - }) - cp.on('exit', function (code) { - exited = true - if (!cb) { - debug(`error before exit, code: ${code}, on '${argsString}'`) - return - } - gitResetBefore() - }) - } - - function gitResetBefore () { - options.logger.debug(`resetting origin/v${version}.x-staging...`) - wrapCP('git', ['reset', `origin/v${version}.x-staging`, '--hard'], gitRemoteUpdate) - } - - function gitRemoteUpdate () { - options.logger.debug('updating git remotes...') - wrapCP('git', ['remote', 'update', '-p'], gitCheckout) - } - - function gitCheckout () { - options.logger.debug(`checking out origin/v${version}.x-staging...`) - wrapCP('git', ['checkout', `origin/v${version}.x-staging`], gitReset) - } - - function gitReset () { - options.logger.debug(`resetting origin/v${version}.x-staging...`) - wrapCP('git', ['reset', `origin/v${version}.x-staging`, '--hard'], fetchDiff) - } - - function fetchDiff () { - options.logger.debug(`fetching diff from pr ${options.prId}...`) - - const url = `https://patch-diff.githubusercontent.com/raw/${options.owner}/${options.repo}/pull/${options.prId}.patch` - - const req = request(url) - - req.on('error', function (err) { - debug(`request err: ${err}`) - return onError() - }) - req.on('response', function (response) { - if (response.statusCode !== 200) { - debug(`request non-200 status: ${response.statusCode}`) - return onError() - } - }) - - gitAttemptBackport(req) - } - - function gitAttemptBackport (req) { - options.logger.debug(`attempting a backport to v${version}...`) - const cp = wrapCP('git', ['am'], { stdio: 'pipe' }, function done () { - // Success! - if (isLTS) { - updatePrWithLabels(options, [`lts-watch-v${version}.x`]) - }// else { - // TODO(Fishrock123): Re-enable this, but do a check first - // to make sure the label was set by the bot only. - // removeLabelFromPR(options, `dont-land-on-v${version}.x`) - // } - - setImmediate(() => { - options.logger.debug(`backport to v${version} successful`) - inProgress = false - cb() - }) - }) - - req.pipe(cp.stdin) - } -} diff --git a/scripts/display-travis-status.js b/scripts/display-travis-status.js deleted file mode 100644 index 618c9a92..00000000 --- a/scripts/display-travis-status.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict' - -const debug = require('debug')('display_travis_status') -const pollTravis = require('../lib/pollTravis') -const enabledRepos = ['citgm', 'readable-stream', 'nodejs.org', 'docker-node'] - -module.exports = function (app) { - app.on('pull_request.opened', handlePrUpdate) - // Pull Request updates - app.on('pull_request.synchronize', handlePrUpdate) - - function handlePrUpdate (event, owner, repo) { - if (!~enabledRepos.indexOf(repo)) return - - const pr = event.number - const options = { owner, repo, pr, logger: event.logger } - - debug(`/${owner}/${repo}/pull/${pr} opened`) - pollTravis.pollThenStatus(options) - } - - // to trigger polling manually - app.get('/pr/:owner/:repo/:id', (req, res) => { - const owner = req.params.owner - const repo = req.params.repo - const pr = parseInt(req.params.id, 10) - const options = { owner, repo, pr, logger: req.log } - - if (~enabledRepos.indexOf(repo)) { - pollTravis.pollThenStatus(options) - } - res.end() - }) -} diff --git a/scripts/event-relay.js b/scripts/event-relay.js new file mode 100644 index 00000000..7fc73e40 --- /dev/null +++ b/scripts/event-relay.js @@ -0,0 +1,23 @@ +import githubClient from '../lib/github-client.js' + +async function handleJenkinsRelay (event) { + const { owner, repo, identifier } = event + const eventType = `jenkins.${identifier}.${event.event}` + try { + event.logger.debug(`Relaying ${eventType} to ${owner}/${repo}`) + await githubClient.repos.createDispatchEvent({ + owner, + repo, + event_type: eventType, + client_payload: event + }) + return true + } catch (err) { + event.logger.error(err, `Failed to relay ${eventType} to ${owner}/${repo}`) + return false + } +} + +export default function (_, event) { + event.on('jenkins', handleJenkinsRelay) +} diff --git a/scripts/jenkins-status.js b/scripts/jenkins-status.js new file mode 100644 index 00000000..1cb6d275 --- /dev/null +++ b/scripts/jenkins-status.js @@ -0,0 +1,34 @@ +import * as pushJenkinsUpdate from '../lib/push-jenkins-update.js' + +function handleJenkinsStart (event) { + const { repo, owner } = event + + pushJenkinsUpdate.pushStarted({ + owner, + repo, + logger: event.logger + }, event, (err) => { + if (err) { + event.logger.error(err, 'Error while handling Jenkins start event') + } + }) +} + +function handleJenkinsStop (event) { + const { repo, owner } = event + + pushJenkinsUpdate.pushEnded({ + owner, + repo, + logger: event.logger + }, event, (err) => { + if (err) { + event.logger.error(err, 'Error while handling Jenkins end event') + } + }) +} + +export default function (_, event) { + event.on('jenkins.start', handleJenkinsStart) + event.on('jenkins.end', handleJenkinsStop) +} diff --git a/scripts/node-jenkins-status.js b/scripts/node-jenkins-status.js deleted file mode 100644 index b4b9126c..00000000 --- a/scripts/node-jenkins-status.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const pushJenkinsUpdate = require('../lib/push-jenkins-update') - -module.exports = function (app) { - app.post('/node/jenkins/start', (req, res) => { - const isValid = pushJenkinsUpdate.validate(req.body) - - if (!isValid) { - return res.status(400).end('Invalid payload') - } - - pushJenkinsUpdate.pushStarted({ - owner: 'nodejs', - repo: 'node', - logger: req.log - }, req.body) - - res.status(201).end() - }) - - app.post('/node/jenkins/end', (req, res) => { - const isValid = pushJenkinsUpdate.validate(req.body) - - if (!isValid) { - return res.status(400).end('Invalid payload') - } - - pushJenkinsUpdate.pushEnded({ - owner: 'nodejs', - repo: 'node', - logger: req.log - }, req.body) - - res.status(201).end() - }) -} diff --git a/scripts/node-ping-owners.js b/scripts/node-ping-owners.js new file mode 100644 index 00000000..ac8c7d99 --- /dev/null +++ b/scripts/node-ping-owners.js @@ -0,0 +1,27 @@ +import debugLib from 'debug' + +import * as nodeRepo from '../lib/node-repo.js' + +const debug = debugLib('node_ping_owners') + +export default function (app, events) { + events.on('pull_request.opened', handlePrCreated) +} + +function handlePrCreated (event, owner, repo) { + const prId = event.number + const logger = event.logger + const baseBranch = event.pull_request.base.ref + + debug(`/${owner}/${repo}/pull/${prId} opened`) + nodeRepo.resolveOwnersThenPingPr({ + owner, + repo, + prId, + logger, + baseBranch, + timeoutInSec: 2 + }).catch(err => { + event.logger.error(err, 'owners ping failed') + }) +} diff --git a/scripts/node-subsystem-label.js b/scripts/node-subsystem-label.js deleted file mode 100644 index ba4d410f..00000000 --- a/scripts/node-subsystem-label.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' - -const debug = require('debug')('node_subsystem_label') - -const nodeRepo = require('../lib/node-repo') - -module.exports = function (app) { - app.on('pull_request.opened', handlePrCreated) - - function handlePrCreated (event, owner, repo) { - const prId = event.number - const logger = event.logger - const baseBranch = event.pull_request.base.ref - - // subsystem labelling is for node core only - if (repo !== 'node') return - - debug(`/${owner}/${repo}/pull/${prId} opened`) - // by not hard coding the owner repo to nodejs/node here, - // we can test these this script in a different repo than - // *actual* node core as long as the repo is named "node" - nodeRepo.resolveLabelsThenUpdatePr({ - owner, - repo, - prId, - logger, - baseBranch, - timeoutInSec: 2 - }) - } -} diff --git a/scripts/ping.js b/scripts/ping.js index a0dbd53d..2a1d4d6b 100644 --- a/scripts/ping.js +++ b/scripts/ping.js @@ -1,6 +1,4 @@ -'use strict' - -module.exports = function (app) { +export default function (app) { app.get('/ping', (req, res) => { res.end('pong') }) diff --git a/server.js b/server.js index 1790f35d..71b3961b 100644 --- a/server.js +++ b/server.js @@ -1,24 +1,20 @@ -'use strict' +import 'dotenv/config' -const child_process = require('child_process') +import { globSync } from 'glob' +import logger from './lib/logger.js' +import { app, events } from './app.js' -if (process.env.NODE_REPO_DIR) { - const fs = require('fs') - global._node_repo_dir = fs.realpathSync(process.env.NODE_REPO_DIR) - const out = child_process.spawnSync('git', ['status'], { cwd: global._node_repo_dir }) +const port = process.env.PORT || 3000 +const scriptsToLoad = process.env.SCRIPTS || './scripts/**/*.js' - if (out.status !== 0) { - logger.info(out.stdout) - logger.error(out.stderr) - logger.error('Bad NODE_REPO_DIR. Backport patch testing disabled.') - global._node_repo_dir = false - } +// load all the files in the scripts folder +const files = globSync(scriptsToLoad, { dotRelative: true }) +for (const file of files) { + logger.info('Loading:', file) + const { default: extend } = await import(file) + extend(app, events) } -const app = require('./app') -const logger = require('./lib/logger') - -const port = process.env.PORT || 3000 app.listen(port, () => { logger.info('Listening on port', port) }) @@ -39,3 +35,13 @@ if (process.env.SSE_RELAY) { } } } + +function logUnhandledException (err) { + logger.fatal(err, 'Unchaught exception, terminating bot process immediately') + + // leave time for error to be written to disk before exiting process + setTimeout(() => process.exit(1), 10) +} + +process.on('uncaughtException', logUnhandledException) +process.on('unhandledRejection', logUnhandledException) diff --git a/test/_fixtures/CODEOWNERS b/test/_fixtures/CODEOWNERS new file mode 100644 index 00000000..8ddf2cf0 --- /dev/null +++ b/test/_fixtures/CODEOWNERS @@ -0,0 +1,8 @@ +/file1 @nodejs/test1 +/file2 @nodejs/test2 +/file3 @nodejs/test1 @nodejs/test2 +/file4 @nodejs/test1 +/file5 @nodejs/test3 +/folder1/* @nodejs/test3 +/folder2/file1.* @nodejs/test4 @nodejs/test5 +/lib/timers.js @nodejs/team @nodejs/team2 diff --git a/test/_fixtures/get-repository.json b/test/_fixtures/get-repository.json new file mode 100644 index 00000000..1d64f028 --- /dev/null +++ b/test/_fixtures/get-repository.json @@ -0,0 +1,132 @@ +{ + "id": 108083039, + "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwODMwMzk=", + "name": "node-auto-test", + "full_name": "nodejs/node-auto-test", + "private": false, + "owner": { + "login": "nodejs", + "id": 9950313, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5NTAzMTM=", + "avatar_url": "https://avatars3.githubusercontent.com/u/9950313?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nodejs", + "html_url": "https://github.com/nodejs", + "followers_url": "https://api.github.com/users/nodejs/followers", + "following_url": "https://api.github.com/users/nodejs/following{/other_user}", + "gists_url": "https://api.github.com/users/nodejs/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nodejs/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nodejs/subscriptions", + "organizations_url": "https://api.github.com/users/nodejs/orgs", + "repos_url": "https://api.github.com/users/nodejs/repos", + "events_url": "https://api.github.com/users/nodejs/events{/privacy}", + "received_events_url": "https://api.github.com/users/nodejs/received_events", + "type": "Organization", + "site_admin": false + }, + "html_url": "https://github.com/nodejs/node-auto-test", + "description": "Node.js clone for testing automation tools", + "fork": false, + "url": "https://api.github.com/repos/nodejs/node-auto-test", + "forks_url": "https://api.github.com/repos/nodejs/node-auto-test/forks", + "keys_url": "https://api.github.com/repos/nodejs/node-auto-test/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/nodejs/node-auto-test/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/nodejs/node-auto-test/teams", + "hooks_url": "https://api.github.com/repos/nodejs/node-auto-test/hooks", + "issue_events_url": "https://api.github.com/repos/nodejs/node-auto-test/issues/events{/number}", + "events_url": "https://api.github.com/repos/nodejs/node-auto-test/events", + "assignees_url": "https://api.github.com/repos/nodejs/node-auto-test/assignees{/user}", + "branches_url": "https://api.github.com/repos/nodejs/node-auto-test/branches{/branch}", + "tags_url": "https://api.github.com/repos/nodejs/node-auto-test/tags", + "blobs_url": "https://api.github.com/repos/nodejs/node-auto-test/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/nodejs/node-auto-test/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/nodejs/node-auto-test/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/nodejs/node-auto-test/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/nodejs/node-auto-test/statuses/{sha}", + "languages_url": "https://api.github.com/repos/nodejs/node-auto-test/languages", + "stargazers_url": "https://api.github.com/repos/nodejs/node-auto-test/stargazers", + "contributors_url": "https://api.github.com/repos/nodejs/node-auto-test/contributors", + "subscribers_url": "https://api.github.com/repos/nodejs/node-auto-test/subscribers", + "subscription_url": "https://api.github.com/repos/nodejs/node-auto-test/subscription", + "commits_url": "https://api.github.com/repos/nodejs/node-auto-test/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/nodejs/node-auto-test/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/nodejs/node-auto-test/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/nodejs/node-auto-test/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/nodejs/node-auto-test/contents/{+path}", + "compare_url": "https://api.github.com/repos/nodejs/node-auto-test/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/nodejs/node-auto-test/merges", + "archive_url": "https://api.github.com/repos/nodejs/node-auto-test/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/nodejs/node-auto-test/downloads", + "issues_url": "https://api.github.com/repos/nodejs/node-auto-test/issues{/number}", + "pulls_url": "https://api.github.com/repos/nodejs/node-auto-test/pulls{/number}", + "milestones_url": "https://api.github.com/repos/nodejs/node-auto-test/milestones{/number}", + "notifications_url": "https://api.github.com/repos/nodejs/node-auto-test/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/nodejs/node-auto-test/labels{/name}", + "releases_url": "https://api.github.com/repos/nodejs/node-auto-test/releases{/id}", + "deployments_url": "https://api.github.com/repos/nodejs/node-auto-test/deployments", + "created_at": "2017-10-24T05:54:55Z", + "updated_at": "2020-07-07T23:21:44Z", + "pushed_at": "2020-07-12T14:38:35Z", + "git_url": "git://github.com/nodejs/node-auto-test.git", + "ssh_url": "git@github.com:nodejs/node-auto-test.git", + "clone_url": "https://github.com/nodejs/node-auto-test.git", + "svn_url": "https://github.com/nodejs/node-auto-test", + "homepage": "", + "size": 452674, + "stargazers_count": 7, + "watchers_count": 7, + "language": "JavaScript", + "has_issues": true, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 12, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 4, + "license": { + "key": "other", + "name": "Other", + "spdx_id": "NOASSERTION", + "url": null, + "node_id": "MDc6TGljZW5zZTA=" + }, + "forks": 12, + "open_issues": 4, + "watchers": 7, + "default_branch": "master", + "permissions": { + "admin": true, + "push": true, + "pull": true + }, + "temp_clone_token": "", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "delete_branch_on_merge": false, + "organization": { + "login": "nodejs", + "id": 9950313, + "node_id": "MDEyOk9yZ2FuaXphdGlvbjk5NTAzMTM=", + "avatar_url": "https://avatars3.githubusercontent.com/u/9950313?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nodejs", + "html_url": "https://github.com/nodejs", + "followers_url": "https://api.github.com/users/nodejs/followers", + "following_url": "https://api.github.com/users/nodejs/following{/other_user}", + "gists_url": "https://api.github.com/users/nodejs/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nodejs/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nodejs/subscriptions", + "organizations_url": "https://api.github.com/users/nodejs/orgs", + "repos_url": "https://api.github.com/users/nodejs/repos", + "events_url": "https://api.github.com/users/nodejs/events{/privacy}", + "received_events_url": "https://api.github.com/users/nodejs/received_events", + "type": "Organization", + "site_admin": false + }, + "network_count": 12, + "subscribers_count": 67 +} diff --git a/test/_fixtures/jenkins-staging-failure-payload.json b/test/_fixtures/jenkins-staging-failure-payload.json new file mode 100644 index 00000000..b434b59d --- /dev/null +++ b/test/_fixtures/jenkins-staging-failure-payload.json @@ -0,0 +1,8 @@ +{ + "identifier": "node-test-commit-aix", + "status": "failure", + "message": "tests failed", + "commit": "084ef6016994a41ffbbe9e48584abe874a197d43", + "url": "https://ci.nodejs.org/job/node-test-commit-aix/15657/", + "ref": "refs/heads/v8.x-staging" +} diff --git a/test/_fixtures/jenkins-test-pull-request-success-payload.json b/test/_fixtures/jenkins-test-pull-request-success-payload.json new file mode 100644 index 00000000..c0726ee6 --- /dev/null +++ b/test/_fixtures/jenkins-test-pull-request-success-payload.json @@ -0,0 +1,8 @@ +{ + "identifier": "node-test-pull-request", + "status": "pending", + "message": "running tests", + "commit": "8a5fec2a6bade91e544a30314d7cf21f8a200de1", + "url": "https://ci.nodejs.org/job/node-test-pull-request/21633/", + "ref": "refs/pull/12345/head" +} diff --git a/test/_fixtures/pull-request-commits-page-1.json b/test/_fixtures/pull-request-commits-page-1.json new file mode 100644 index 00000000..a774e9db --- /dev/null +++ b/test/_fixtures/pull-request-commits-page-1.json @@ -0,0 +1,2335 @@ +[ + { + "sha": "45df0ee7171cf5f9642fb755be1b24075192347c", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NDVkZjBlZTcxNzFjZjVmOTY0MmZiNzU1YmUxYjI0MDc1MTkyMzQ3Yw==", + "commit": { + "author": { + "name": "Jaideep Bajwa", + "email": "bjaideep@ca.ibm.com", + "date": "2016-11-01T06:53:37Z" + }, + "committer": { + "name": "Myles Borins", + "email": "myles.borins@gmail.com", + "date": "2016-11-11T15:48:36Z" + }, + "message": "v8: update make-v8.sh to use git\n\ngoogle build tool gclient doesn't support\nsvn anymore. Updating v8 build script to use\ngit instead.\n\nPR-URL: https://github.com/nodejs/node/pull/9393\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Ben Noordhuis \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "42de90a38ab9499bad7d34a472584b164cc4640c", + "url": "https://api.github.com/repos/nodejs/node/git/trees/42de90a38ab9499bad7d34a472584b164cc4640c" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/45df0ee7171cf5f9642fb755be1b24075192347c", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/45df0ee7171cf5f9642fb755be1b24075192347c", + "html_url": "https://github.com/nodejs/node/commit/45df0ee7171cf5f9642fb755be1b24075192347c", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/45df0ee7171cf5f9642fb755be1b24075192347c/comments", + "author": { + "login": "jbajwa", + "id": 577562, + "node_id": "MDQ6VXNlcjU3NzU2Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/577562?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jbajwa", + "html_url": "https://github.com/jbajwa", + "followers_url": "https://api.github.com/users/jbajwa/followers", + "following_url": "https://api.github.com/users/jbajwa/following{/other_user}", + "gists_url": "https://api.github.com/users/jbajwa/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jbajwa/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jbajwa/subscriptions", + "organizations_url": "https://api.github.com/users/jbajwa/orgs", + "repos_url": "https://api.github.com/users/jbajwa/repos", + "events_url": "https://api.github.com/users/jbajwa/events{/privacy}", + "received_events_url": "https://api.github.com/users/jbajwa/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "MylesBorins", + "id": 498775, + "node_id": "MDQ6VXNlcjQ5ODc3NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/498775?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MylesBorins", + "html_url": "https://github.com/MylesBorins", + "followers_url": "https://api.github.com/users/MylesBorins/followers", + "following_url": "https://api.github.com/users/MylesBorins/following{/other_user}", + "gists_url": "https://api.github.com/users/MylesBorins/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MylesBorins/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MylesBorins/subscriptions", + "organizations_url": "https://api.github.com/users/MylesBorins/orgs", + "repos_url": "https://api.github.com/users/MylesBorins/repos", + "events_url": "https://api.github.com/users/MylesBorins/events{/privacy}", + "received_events_url": "https://api.github.com/users/MylesBorins/received_events", + "type": "User", + "site_admin": true + }, + "parents": [ + { + "sha": "3daf11635dc8e0cf48110514000fd550ed79a425", + "url": "https://api.github.com/repos/nodejs/node/commits/3daf11635dc8e0cf48110514000fd550ed79a425", + "html_url": "https://github.com/nodejs/node/commit/3daf11635dc8e0cf48110514000fd550ed79a425" + } + ] + }, + { + "sha": "33bcd6fec8a615e4fe65912eaaaa2cec45d781bb", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzNiY2Q2ZmVjOGE2MTVlNGZlNjU5MTJlYWFhYTJjZWM0NWQ3ODFiYg==", + "commit": { + "author": { + "name": "Michaƫl Zasso", + "email": "targos@protonmail.com", + "date": "2016-11-02T10:28:09Z" + }, + "committer": { + "name": "Myles Borins", + "email": "myles.borins@gmail.com", + "date": "2016-11-11T15:49:21Z" + }, + "message": "deps: update V8 to 5.4.500.41\n\nPR-URL: https://github.com/nodejs/node/pull/9412\nReviewed-By: James M Snell \nReviewed-By: Michael Dawson \nReviewed-By: Colin Ihrig \nReviewed-By: Ali Ijaz Sheikh \nReviewed-By: Ben Noordhuis \nReviewed-By: Franziska Hinkelmann ", + "tree": { + "sha": "d43f807a05457541ca0918db40f77b9529893e5c", + "url": "https://api.github.com/repos/nodejs/node/git/trees/d43f807a05457541ca0918db40f77b9529893e5c" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/33bcd6fec8a615e4fe65912eaaaa2cec45d781bb", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/33bcd6fec8a615e4fe65912eaaaa2cec45d781bb", + "html_url": "https://github.com/nodejs/node/commit/33bcd6fec8a615e4fe65912eaaaa2cec45d781bb", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/33bcd6fec8a615e4fe65912eaaaa2cec45d781bb/comments", + "author": { + "login": "targos", + "id": 2352663, + "node_id": "MDQ6VXNlcjIzNTI2NjM=", + "avatar_url": "https://avatars.githubusercontent.com/u/2352663?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/targos", + "html_url": "https://github.com/targos", + "followers_url": "https://api.github.com/users/targos/followers", + "following_url": "https://api.github.com/users/targos/following{/other_user}", + "gists_url": "https://api.github.com/users/targos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/targos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/targos/subscriptions", + "organizations_url": "https://api.github.com/users/targos/orgs", + "repos_url": "https://api.github.com/users/targos/repos", + "events_url": "https://api.github.com/users/targos/events{/privacy}", + "received_events_url": "https://api.github.com/users/targos/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "MylesBorins", + "id": 498775, + "node_id": "MDQ6VXNlcjQ5ODc3NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/498775?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MylesBorins", + "html_url": "https://github.com/MylesBorins", + "followers_url": "https://api.github.com/users/MylesBorins/followers", + "following_url": "https://api.github.com/users/MylesBorins/following{/other_user}", + "gists_url": "https://api.github.com/users/MylesBorins/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MylesBorins/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MylesBorins/subscriptions", + "organizations_url": "https://api.github.com/users/MylesBorins/orgs", + "repos_url": "https://api.github.com/users/MylesBorins/repos", + "events_url": "https://api.github.com/users/MylesBorins/events{/privacy}", + "received_events_url": "https://api.github.com/users/MylesBorins/received_events", + "type": "User", + "site_admin": true + }, + "parents": [ + { + "sha": "45df0ee7171cf5f9642fb755be1b24075192347c", + "url": "https://api.github.com/repos/nodejs/node/commits/45df0ee7171cf5f9642fb755be1b24075192347c", + "html_url": "https://github.com/nodejs/node/commit/45df0ee7171cf5f9642fb755be1b24075192347c" + } + ] + }, + { + "sha": "6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NmIwMWJmYTlkNmU1ODJlYTViMDU3YWMwNDM1Y2M1NjVkM2NhNGUyOQ==", + "commit": { + "author": { + "name": "Johan Bergstrƶm", + "email": "bugs@bergstroem.nu", + "date": "2016-10-25T16:26:46Z" + }, + "committer": { + "name": "Myles Borins", + "email": "myles.borins@gmail.com", + "date": "2016-11-11T15:52:08Z" + }, + "message": "gitignore: ignore all tap files\n\nWe now have multiple tap producers; just ignore all\nfiles with the `.tap` extension.\n\nPR-URL: https://github.com/nodejs/node/pull/9262\nReviewed-By: Gibson Fahnestock \nReviewed-By: Ben Noordhuis \nReviewed-By: Myles Borins ", + "tree": { + "sha": "302c30e2e61b4f6bb5c92ab19cf35f0cbcd088c4", + "url": "https://api.github.com/repos/nodejs/node/git/trees/302c30e2e61b4f6bb5c92ab19cf35f0cbcd088c4" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29", + "html_url": "https://github.com/nodejs/node/commit/6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29/comments", + "author": { + "login": "jbergstroem", + "id": 176984, + "node_id": "MDQ6VXNlcjE3Njk4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/176984?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jbergstroem", + "html_url": "https://github.com/jbergstroem", + "followers_url": "https://api.github.com/users/jbergstroem/followers", + "following_url": "https://api.github.com/users/jbergstroem/following{/other_user}", + "gists_url": "https://api.github.com/users/jbergstroem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jbergstroem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jbergstroem/subscriptions", + "organizations_url": "https://api.github.com/users/jbergstroem/orgs", + "repos_url": "https://api.github.com/users/jbergstroem/repos", + "events_url": "https://api.github.com/users/jbergstroem/events{/privacy}", + "received_events_url": "https://api.github.com/users/jbergstroem/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "MylesBorins", + "id": 498775, + "node_id": "MDQ6VXNlcjQ5ODc3NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/498775?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MylesBorins", + "html_url": "https://github.com/MylesBorins", + "followers_url": "https://api.github.com/users/MylesBorins/followers", + "following_url": "https://api.github.com/users/MylesBorins/following{/other_user}", + "gists_url": "https://api.github.com/users/MylesBorins/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MylesBorins/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MylesBorins/subscriptions", + "organizations_url": "https://api.github.com/users/MylesBorins/orgs", + "repos_url": "https://api.github.com/users/MylesBorins/repos", + "events_url": "https://api.github.com/users/MylesBorins/events{/privacy}", + "received_events_url": "https://api.github.com/users/MylesBorins/received_events", + "type": "User", + "site_admin": true + }, + "parents": [ + { + "sha": "33bcd6fec8a615e4fe65912eaaaa2cec45d781bb", + "url": "https://api.github.com/repos/nodejs/node/commits/33bcd6fec8a615e4fe65912eaaaa2cec45d781bb", + "html_url": "https://github.com/nodejs/node/commit/33bcd6fec8a615e4fe65912eaaaa2cec45d781bb" + } + ] + }, + { + "sha": "23584e4ec5fd47e20f6a11395b5e672e203fc1ab", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MjM1ODRlNGVjNWZkNDdlMjBmNmExMTM5NWI1ZTY3MmUyMDNmYzFhYg==", + "commit": { + "author": { + "name": "Johan Bergstrƶm", + "email": "bugs@bergstroem.nu", + "date": "2016-10-25T15:23:48Z" + }, + "committer": { + "name": "Myles Borins", + "email": "myles.borins@gmail.com", + "date": "2016-11-11T15:52:12Z" + }, + "message": "gtest: output tap comments as yamlish\n\nThis makes yaml-ish parsers happy.\nNote: gtest still seems to output the expected/result slightly\ndifferent making the full traceback less informational.\n\nPR-URL: https://github.com/nodejs/node/pull/9262\nReviewed-By: Gibson Fahnestock \nReviewed-By: Ben Noordhuis \nReviewed-By: Myles Borins ", + "tree": { + "sha": "cb02fca48a95c89682b6e148e6e0e56a0dfa9fd4", + "url": "https://api.github.com/repos/nodejs/node/git/trees/cb02fca48a95c89682b6e148e6e0e56a0dfa9fd4" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/23584e4ec5fd47e20f6a11395b5e672e203fc1ab", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/23584e4ec5fd47e20f6a11395b5e672e203fc1ab", + "html_url": "https://github.com/nodejs/node/commit/23584e4ec5fd47e20f6a11395b5e672e203fc1ab", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/23584e4ec5fd47e20f6a11395b5e672e203fc1ab/comments", + "author": { + "login": "jbergstroem", + "id": 176984, + "node_id": "MDQ6VXNlcjE3Njk4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/176984?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jbergstroem", + "html_url": "https://github.com/jbergstroem", + "followers_url": "https://api.github.com/users/jbergstroem/followers", + "following_url": "https://api.github.com/users/jbergstroem/following{/other_user}", + "gists_url": "https://api.github.com/users/jbergstroem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jbergstroem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jbergstroem/subscriptions", + "organizations_url": "https://api.github.com/users/jbergstroem/orgs", + "repos_url": "https://api.github.com/users/jbergstroem/repos", + "events_url": "https://api.github.com/users/jbergstroem/events{/privacy}", + "received_events_url": "https://api.github.com/users/jbergstroem/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "MylesBorins", + "id": 498775, + "node_id": "MDQ6VXNlcjQ5ODc3NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/498775?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MylesBorins", + "html_url": "https://github.com/MylesBorins", + "followers_url": "https://api.github.com/users/MylesBorins/followers", + "following_url": "https://api.github.com/users/MylesBorins/following{/other_user}", + "gists_url": "https://api.github.com/users/MylesBorins/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MylesBorins/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MylesBorins/subscriptions", + "organizations_url": "https://api.github.com/users/MylesBorins/orgs", + "repos_url": "https://api.github.com/users/MylesBorins/repos", + "events_url": "https://api.github.com/users/MylesBorins/events{/privacy}", + "received_events_url": "https://api.github.com/users/MylesBorins/received_events", + "type": "User", + "site_admin": true + }, + "parents": [ + { + "sha": "6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29", + "url": "https://api.github.com/repos/nodejs/node/commits/6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29", + "html_url": "https://github.com/nodejs/node/commit/6b01bfa9d6e582ea5b057ac0435cc565d3ca4e29" + } + ] + }, + { + "sha": "6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NmE5NGZmYjFjZmRiNDFjMDc0NmQ2MDU1ZTJmYTNhYzJmOTk1ZjRkZQ==", + "commit": { + "author": { + "name": "Johan Bergstrƶm", + "email": "bugs@bergstroem.nu", + "date": "2016-10-12T14:34:28Z" + }, + "committer": { + "name": "Myles Borins", + "email": "myles.borins@gmail.com", + "date": "2016-11-11T15:52:17Z" + }, + "message": "test: output tap13 instead of almost-tap\n\nProduce a tap13-compatible output which makes it\nsimpler to parse. Output is still readable by\nthe jenkins tap plugin.\n\nPR-URL: https://github.com/nodejs/node/pull/9262\nReviewed-By: Gibson Fahnestock \nReviewed-By: Ben Noordhuis \nReviewed-By: Myles Borins ", + "tree": { + "sha": "3ff5006b93047e6ad08d40385a17af4bca89b664", + "url": "https://api.github.com/repos/nodejs/node/git/trees/3ff5006b93047e6ad08d40385a17af4bca89b664" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de", + "html_url": "https://github.com/nodejs/node/commit/6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de/comments", + "author": { + "login": "jbergstroem", + "id": 176984, + "node_id": "MDQ6VXNlcjE3Njk4NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/176984?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jbergstroem", + "html_url": "https://github.com/jbergstroem", + "followers_url": "https://api.github.com/users/jbergstroem/followers", + "following_url": "https://api.github.com/users/jbergstroem/following{/other_user}", + "gists_url": "https://api.github.com/users/jbergstroem/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jbergstroem/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jbergstroem/subscriptions", + "organizations_url": "https://api.github.com/users/jbergstroem/orgs", + "repos_url": "https://api.github.com/users/jbergstroem/repos", + "events_url": "https://api.github.com/users/jbergstroem/events{/privacy}", + "received_events_url": "https://api.github.com/users/jbergstroem/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "MylesBorins", + "id": 498775, + "node_id": "MDQ6VXNlcjQ5ODc3NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/498775?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/MylesBorins", + "html_url": "https://github.com/MylesBorins", + "followers_url": "https://api.github.com/users/MylesBorins/followers", + "following_url": "https://api.github.com/users/MylesBorins/following{/other_user}", + "gists_url": "https://api.github.com/users/MylesBorins/gists{/gist_id}", + "starred_url": "https://api.github.com/users/MylesBorins/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/MylesBorins/subscriptions", + "organizations_url": "https://api.github.com/users/MylesBorins/orgs", + "repos_url": "https://api.github.com/users/MylesBorins/repos", + "events_url": "https://api.github.com/users/MylesBorins/events{/privacy}", + "received_events_url": "https://api.github.com/users/MylesBorins/received_events", + "type": "User", + "site_admin": true + }, + "parents": [ + { + "sha": "23584e4ec5fd47e20f6a11395b5e672e203fc1ab", + "url": "https://api.github.com/repos/nodejs/node/commits/23584e4ec5fd47e20f6a11395b5e672e203fc1ab", + "html_url": "https://github.com/nodejs/node/commit/23584e4ec5fd47e20f6a11395b5e672e203fc1ab" + } + ] + }, + { + "sha": "f0d40e8be37af3a008e2223faefbeb5899ba95d9", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZjBkNDBlOGJlMzdhZjNhMDA4ZTIyMjNmYWVmYmViNTg5OWJhOTVkOQ==", + "commit": { + "author": { + "name": "Daniel Bevenius", + "email": "daniel.bevenius@gmail.com", + "date": "2016-11-05T14:37:36Z" + }, + "committer": { + "name": "Myles Borins", + "email": "mborins@us.ibm.com", + "date": "2016-11-15T20:53:28Z" + }, + "message": "doc: fix link to cli.md in vm.md\n\nLooks like the link to cli.md is missing in vm.md:\nhttps://nodejs.org/api/vm.html#vm_vm_runindebugcontext_code\n\nAdded the link which can be verified by using the following commands:\n$ make doc\n$ open out/doc/api/vm.html\n\nPR-URL: https://github.com/nodejs/node/pull/9481\nReviewed-By: James M Snell \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "5910ebcc51b1658331b6ec21ebff5254523de30d", + "url": "https://api.github.com/repos/nodejs/node/git/trees/5910ebcc51b1658331b6ec21ebff5254523de30d" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/f0d40e8be37af3a008e2223faefbeb5899ba95d9", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/f0d40e8be37af3a008e2223faefbeb5899ba95d9", + "html_url": "https://github.com/nodejs/node/commit/f0d40e8be37af3a008e2223faefbeb5899ba95d9", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/f0d40e8be37af3a008e2223faefbeb5899ba95d9/comments", + "author": { + "login": "danbev", + "id": 432351, + "node_id": "MDQ6VXNlcjQzMjM1MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/432351?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/danbev", + "html_url": "https://github.com/danbev", + "followers_url": "https://api.github.com/users/danbev/followers", + "following_url": "https://api.github.com/users/danbev/following{/other_user}", + "gists_url": "https://api.github.com/users/danbev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/danbev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/danbev/subscriptions", + "organizations_url": "https://api.github.com/users/danbev/orgs", + "repos_url": "https://api.github.com/users/danbev/repos", + "events_url": "https://api.github.com/users/danbev/events{/privacy}", + "received_events_url": "https://api.github.com/users/danbev/received_events", + "type": "User", + "site_admin": false + }, + "committer": null, + "parents": [ + { + "sha": "6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de", + "url": "https://api.github.com/repos/nodejs/node/commits/6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de", + "html_url": "https://github.com/nodejs/node/commit/6a94ffb1cfdb41c0746d6055e2fa3ac2f995f4de" + } + ] + }, + { + "sha": "ee65b4872de2357a239c7ccfa64aad54b8b3c796", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZWU2NWI0ODcyZGUyMzU3YTIzOWM3Y2NmYTY0YWFkNTRiOGIzYzc5Ng==", + "commit": { + "author": { + "name": "Fedor Indutny", + "email": "fedor@indutny.com", + "date": "2016-11-12T21:08:59Z" + }, + "committer": { + "name": "Myles Borins", + "email": "mborins@us.ibm.com", + "date": "2016-11-16T19:11:53Z" + }, + "message": "tls: fix leak of WriteWrap+TLSWrap combination\n\nWriting data to TLSWrap instance during handshake will result in it\nbeing queued in `write_item_queue_`. This queue won't get cleared up\nuntil the end of the handshake.\n\nTechnically, it gets cleared on `~TLSWrap` invocation, however this\nwon't ever happen because every `WriteWrap` holds a reference to the\n`TLSWrap` through JS object, meaning that they are doomed to be alive\nfor eternity.\n\nTo breach this dreadful contract a knight shall embark from the\n`close` function to kill the dragon of memory leak with his magic\nspear of `destroySSL`.\n\n`destroySSL` cleans up `write_item_queue_` and frees `SSL` structure,\nboth are good for memory usage.\n\nPR-URL: https://github.com/nodejs/node/pull/9586\nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "6b91062d8d9203e9aec6633c468c149a3d0295d4", + "url": "https://api.github.com/repos/nodejs/node/git/trees/6b91062d8d9203e9aec6633c468c149a3d0295d4" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/ee65b4872de2357a239c7ccfa64aad54b8b3c796", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/ee65b4872de2357a239c7ccfa64aad54b8b3c796", + "html_url": "https://github.com/nodejs/node/commit/ee65b4872de2357a239c7ccfa64aad54b8b3c796", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/ee65b4872de2357a239c7ccfa64aad54b8b3c796/comments", + "author": { + "login": "indutny", + "id": 238531, + "node_id": "MDQ6VXNlcjIzODUzMQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/238531?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/indutny", + "html_url": "https://github.com/indutny", + "followers_url": "https://api.github.com/users/indutny/followers", + "following_url": "https://api.github.com/users/indutny/following{/other_user}", + "gists_url": "https://api.github.com/users/indutny/gists{/gist_id}", + "starred_url": "https://api.github.com/users/indutny/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/indutny/subscriptions", + "organizations_url": "https://api.github.com/users/indutny/orgs", + "repos_url": "https://api.github.com/users/indutny/repos", + "events_url": "https://api.github.com/users/indutny/events{/privacy}", + "received_events_url": "https://api.github.com/users/indutny/received_events", + "type": "User", + "site_admin": false + }, + "committer": null, + "parents": [ + { + "sha": "f0d40e8be37af3a008e2223faefbeb5899ba95d9", + "url": "https://api.github.com/repos/nodejs/node/commits/f0d40e8be37af3a008e2223faefbeb5899ba95d9", + "html_url": "https://github.com/nodejs/node/commit/f0d40e8be37af3a008e2223faefbeb5899ba95d9" + } + ] + }, + { + "sha": "3efb43c8bab0c0a64af916265d14febba207ca49", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6M2VmYjQzYzhiYWIwYzBhNjRhZjkxNjI2NWQxNGZlYmJhMjA3Y2E0OQ==", + "commit": { + "author": { + "name": "Wayne Andrews", + "email": "andreww@uk.ibm.com", + "date": "2016-10-14T12:33:25Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:13Z" + }, + "message": "build: Add option to compile for coverage reports\n\nAdd --coverage option to configure to support\ncompiling for generation of C based coverage reports\n\nPR-URL: https://github.com/nodejs/node/pull/9463\nReviewed-By: Anna Henningsen \nReviewed-By: James M Snell \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "b00a3652dcdbf8bca349e7f266ca0679be78c85f", + "url": "https://api.github.com/repos/nodejs/node/git/trees/b00a3652dcdbf8bca349e7f266ca0679be78c85f" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/3efb43c8bab0c0a64af916265d14febba207ca49", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9hdAAoJENi59a6uhOTPmbEP/01WHeKO8WZ3EtZ5UKOfaguX\no3W1nrVr73gkT8N/uKVazLQ/k701uX4Rui5nFy9tg+mNA7IYal5xtxvuDpBe3yMO\np07JFjuNx2uWjGYnuRdBVLp9kBxmALOo3VETZiQgt8xYr0L+k3G3lwadW7PBRZ0h\nfLxTF/CvNzSGvHi15fC7XoEUwUQU75Tehraq7FkeGaEQEiBOkKnXRRQa9N7PMubd\ne9qSdKdGlRfChFp6Bn0v65B2mXRnd01ByEiYKlY6wXX8bhIR4fjOHXzoGs47a0oB\nNb3G1lmOOs+5V82Ix/hxA1G9rFEW21W4KRlBx3B15RoVrWDFWT1KgUBX/N9QfN55\n46FRd0NmrSwnM5Ei4Cmho1Y3SftcGi+pZdMXFnz/wkqxe8GAGhjQ+J67FUkZWRck\nu65ojPe8Tz9I56XO2nZ8E1s64x7HpLsW8qw7AzkBtIoqpCA0Q9z63qDL0gj0R7Sl\nwUkUVQm6VRj76H99Pd2/mxLRvFDO4pZgCcvVOHR6E2uvqIYteJc1+0s3kJh/3mhf\nilsLAEhcvUhpjq9XOnJcF5ydK6H9It7AwIpPGYCXAsvy3MmmqxviQJi9a+V6yq5M\n0mYOr2lVL0LfyhXUfmP0Dbck9FT1MHwcdpVnUlI4cyhnn26hgm5AWqCAM9R+kH3k\nnRDmuyKiHHURP8Fzr9ij\n=v5D3\n-----END PGP SIGNATURE-----", + "payload": "tree b00a3652dcdbf8bca349e7f266ca0679be78c85f\nparent ee65b4872de2357a239c7ccfa64aad54b8b3c796\nauthor Wayne Andrews 1476448405 +0100\ncommitter Anna Henningsen 1479792733 +0100\n\nbuild: Add option to compile for coverage reports\n\nAdd --coverage option to configure to support\ncompiling for generation of C based coverage reports\n\nPR-URL: https://github.com/nodejs/node/pull/9463\nReviewed-By: Anna Henningsen \nReviewed-By: James M Snell \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/3efb43c8bab0c0a64af916265d14febba207ca49", + "html_url": "https://github.com/nodejs/node/commit/3efb43c8bab0c0a64af916265d14febba207ca49", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/3efb43c8bab0c0a64af916265d14febba207ca49/comments", + "author": { + "login": "CurryKitten", + "id": 12443664, + "node_id": "MDQ6VXNlcjEyNDQzNjY0", + "avatar_url": "https://avatars.githubusercontent.com/u/12443664?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/CurryKitten", + "html_url": "https://github.com/CurryKitten", + "followers_url": "https://api.github.com/users/CurryKitten/followers", + "following_url": "https://api.github.com/users/CurryKitten/following{/other_user}", + "gists_url": "https://api.github.com/users/CurryKitten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/CurryKitten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/CurryKitten/subscriptions", + "organizations_url": "https://api.github.com/users/CurryKitten/orgs", + "repos_url": "https://api.github.com/users/CurryKitten/repos", + "events_url": "https://api.github.com/users/CurryKitten/events{/privacy}", + "received_events_url": "https://api.github.com/users/CurryKitten/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "ee65b4872de2357a239c7ccfa64aad54b8b3c796", + "url": "https://api.github.com/repos/nodejs/node/commits/ee65b4872de2357a239c7ccfa64aad54b8b3c796", + "html_url": "https://github.com/nodejs/node/commit/ee65b4872de2357a239c7ccfa64aad54b8b3c796" + } + ] + }, + { + "sha": "9491352b8645d8e667592d75283bcf5257f341ea", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OTQ5MTM1MmI4NjQ1ZDhlNjY3NTkyZDc1MjgzYmNmNTI1N2YzNDFlYQ==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-05T06:04:36Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:13Z" + }, + "message": "test: remove watchdog in test-debug-signal-cluster\n\ntest-debug-signal-cluster contains a watchdog timer that results in\nfalse positives in CI. Remove the watchdog timer and let the test runner\ndetermine that the test has timed out.\n\nPR-URL: https://github.com/nodejs/node/pull/9476\nReviewed-By: Michaƫl Zasso \nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell ", + "tree": { + "sha": "858c4139aec20ef74c1fe67054755ecde7ecd8aa", + "url": "https://api.github.com/repos/nodejs/node/git/trees/858c4139aec20ef74c1fe67054755ecde7ecd8aa" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/9491352b8645d8e667592d75283bcf5257f341ea", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9hdAAoJENi59a6uhOTPuHsP/2H9WyBMGvKhI7VteoI0HkwR\njRiFkMedorQ8pTZZ+DVRnVuswTloR0G9KSg0DlSRO8hQXB9gu8ZT8viB4iylPMV3\nWH6zIZ/SRkDjFCE4OaOkyeIYec23k8n9OwPuw851OfOVoZDU8kSyjzmNrqz1nk/m\nakb0XIA2C4dvZbjXPPxNvYhtQmy/lcDDI98MlEgJQ+dgL82VY+uMXbx6tY5kHu5/\nXgum+b03UEgcAmkb7w8OFx3KxkgauUrMt5KOiO92eKGfxb0g1zRT5M/taJrOLN5y\neSAsN/A14DWgBMjElQiymLes+/21RetKmxxwddxwJprvmCrY7rGK7UjrZMxYCgpl\nV7uNi/8MtTEVJGja2jGYKD4BvXBDHSznqQUrqB6ARc3scyHpf2VasLCXbNuGRV9D\nIqUTKVAqj5TpntfMfaASsAjT5gVYF/mEmz1Mmnzedj7i8AYYilny5vm+ytuwSzlf\nkujZ4Oc1ABRnV8oLNR7zLtPkdjvhiw76ytVHARu5UrzpcJK3G/3XNPeVhhqVP5vh\nJNRNE8ZwwXAolxWRiLOM9eencom2r+TpqoXFcuZJWJyspG2MvFK9KdICE3XOP6Jh\nhdLGE82HWV9r1qNXT+USj9ek1exhct3/HS586GbreFVvMJNd260viBF8FMYGPB00\n7QBXd0wVxuhFvCwqQes8\n=NPZ3\n-----END PGP SIGNATURE-----", + "payload": "tree 858c4139aec20ef74c1fe67054755ecde7ecd8aa\nparent 3efb43c8bab0c0a64af916265d14febba207ca49\nauthor Rich Trott 1478325876 -0700\ncommitter Anna Henningsen 1479792733 +0100\n\ntest: remove watchdog in test-debug-signal-cluster\n\ntest-debug-signal-cluster contains a watchdog timer that results in\nfalse positives in CI. Remove the watchdog timer and let the test runner\ndetermine that the test has timed out.\n\nPR-URL: https://github.com/nodejs/node/pull/9476\nReviewed-By: Michaƫl Zasso \nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/9491352b8645d8e667592d75283bcf5257f341ea", + "html_url": "https://github.com/nodejs/node/commit/9491352b8645d8e667592d75283bcf5257f341ea", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/9491352b8645d8e667592d75283bcf5257f341ea/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "3efb43c8bab0c0a64af916265d14febba207ca49", + "url": "https://api.github.com/repos/nodejs/node/commits/3efb43c8bab0c0a64af916265d14febba207ca49", + "html_url": "https://github.com/nodejs/node/commit/3efb43c8bab0c0a64af916265d14febba207ca49" + } + ] + }, + { + "sha": "841a2c41d43f61361dff3fcf028f08cc134d122d", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ODQxYTJjNDFkNDNmNjEzNjFkZmYzZmNmMDI4ZjA4Y2MxMzRkMTIyZA==", + "commit": { + "author": { + "name": "solebox", + "email": "5013box@gmail.com", + "date": "2016-10-31T23:11:18Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:14Z" + }, + "message": "zlib: name every function Ref: #8913\n\nPR-URL: https://github.com/nodejs/node/pull/9389\nReviewed-By: Roman Reiss \nReviewed-By: James M Snell \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "03f855375f49fe576f3e927706f013d000d75694", + "url": "https://api.github.com/repos/nodejs/node/git/trees/03f855375f49fe576f3e927706f013d000d75694" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/841a2c41d43f61361dff3fcf028f08cc134d122d", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9heAAoJENi59a6uhOTPALgQALuCbks2qsz3wkxla7T7YLiX\nT6R4LxXWLJefIx89NNAImKXb7HG3Fa8mmDb8Y/yjndIjowM42Ddg6X2oiGVo9j0w\nRHX9WawawCBgkF2SmAO5K1ZtDyMblo6XeofOYsluSU0w3mChfxQPmLGa7YU7rou8\n+7LZYz2w/Aeo7qbRmebZ4mHob6OTStNWmQvsu7JUrYTmN7hZuCxgGVcSMXCMMpF2\n/5RH0xIR+cTzcu3skB49jVIPwXr3pGS0IgWyXabsr58ZIru7m+fSxP47XR58zdKu\ng+8aWq29IlvVgfn/M6BbxqnwP02oGHJ5uX/nJ6NyqGAkeEaKX7XGNUonk6W12DDs\nCMcDUYAUXQExA4KHo7z/PLEfVXKx1bsmXU8cGp3YgxHN6NowHJ+XsUhlAZkm6dUP\nbr/i98ZhpU3p0eOZrBPjd/YeYGZnR7Ue7lPsmudTpX+lsdT/ktsSD1/Q8Mwych52\n/tql9J4gxKd40Rhh9XVKJ41s8fLeAcSG264OwmF38r4yQZgg2ECKDsLPk6MLxeX6\np3Zd8/4nOdEdsYJpYoR77eLqc06sXkv9fSDvJqTHyk3NsqDc24AgYT7qFrVLc1g3\nSXeHL+xGG4vm0MNCX6Q2gALZVUZiEmnNbdjJ8uxhzBQjVwkNaZA3AkzSwGVufa1G\n3z5Gg9RMAEQLUY97LCMJ\n=HtRB\n-----END PGP SIGNATURE-----", + "payload": "tree 03f855375f49fe576f3e927706f013d000d75694\nparent 9491352b8645d8e667592d75283bcf5257f341ea\nauthor solebox <5013box@gmail.com> 1477955478 +0200\ncommitter Anna Henningsen 1479792734 +0100\n\nzlib: name every function Ref: #8913\n\nPR-URL: https://github.com/nodejs/node/pull/9389\nReviewed-By: Roman Reiss \nReviewed-By: James M Snell \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/841a2c41d43f61361dff3fcf028f08cc134d122d", + "html_url": "https://github.com/nodejs/node/commit/841a2c41d43f61361dff3fcf028f08cc134d122d", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/841a2c41d43f61361dff3fcf028f08cc134d122d/comments", + "author": { + "login": "solebox", + "id": 103052, + "node_id": "MDQ6VXNlcjEwMzA1Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/103052?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solebox", + "html_url": "https://github.com/solebox", + "followers_url": "https://api.github.com/users/solebox/followers", + "following_url": "https://api.github.com/users/solebox/following{/other_user}", + "gists_url": "https://api.github.com/users/solebox/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solebox/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solebox/subscriptions", + "organizations_url": "https://api.github.com/users/solebox/orgs", + "repos_url": "https://api.github.com/users/solebox/repos", + "events_url": "https://api.github.com/users/solebox/events{/privacy}", + "received_events_url": "https://api.github.com/users/solebox/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "9491352b8645d8e667592d75283bcf5257f341ea", + "url": "https://api.github.com/repos/nodejs/node/commits/9491352b8645d8e667592d75283bcf5257f341ea", + "html_url": "https://github.com/nodejs/node/commit/9491352b8645d8e667592d75283bcf5257f341ea" + } + ] + }, + { + "sha": "adcc5b15f77ff962b607c2b10e223fe1f6d767ba", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YWRjYzViMTVmNzdmZjk2MmI2MDdjMmIxMGUyMjNmZTFmNmQ3NjdiYQ==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-09T00:32:07Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:14Z" + }, + "message": "zlib: fix linting recently-introduced lint error\n\nRemove unnecessary named function. V8 will do a better job inferring the\nname from the assignment to a property. The current formulation does not\npass linting.\n\nPR-URL: https://github.com/nodejs/node/pull/9524\nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "ed096837f872575726cec31b433e1f149c64f1da", + "url": "https://api.github.com/repos/nodejs/node/git/trees/ed096837f872575726cec31b433e1f149c64f1da" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/adcc5b15f77ff962b607c2b10e223fe1f6d767ba", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9heAAoJENi59a6uhOTPXq4P/iScnZGxQ3UovKiI6xC3SIRj\nALmeqnWkCsDjskYM/rgRyLJ56ef5LKjOi8EYrl+8qgFM85vz4eOs0u4z64LW8/rY\nYKhmPCs4OcNnjdRSjM9wJZTQZVeECQFMj4JbyMjQwxPKPMEVHJyJGCEZxgNRwRCE\n37ssvYNxZ/eDyhazyVwiKKZ9V1tmaf/8kCYAXwMB4b2UeaW4dS2A1rFV/lnTyXbZ\npgNRrTm/KBKsyN0y8iE9g5ZLhzxo5pT+YBgBuGZu6dAZgfNZVFxDsi0AxhHonrJ7\nZB7/ff++m7DC4QA9Iz9D9E4ORjeYY+f3i+kYloL5sqOXP8Jx//j8mbZlfZo9J6pH\nqfMJBTP5KqeV+YF/m64ODJ5WtgzgND8KBSxjk3zcuqYg+DMGGpmenv9jTS+ocowP\nTcc01bSWFFrYZ6SGdASVib6F1Bt8Ti85yKpW26aI+6r1pthSsCHYG7nYzWEQzbrt\nu50J5PZisafITAI5wjADgWrap/DMEGLpLLZUl5PGeIa12Fi2Wu2tEyO0OxeDAbCq\nHwh7In3EEg0YRQxnE3LpdR+JCSKaFI8Y+bPCbtT1Z4hu7VEByI78E262t/Wd2Wtf\np6O1nS+n52cdavY2W1iYy72sjQ3MKxiclFLRjyzaOc9+CHEgq/RH3Gm9QBmLWbke\nRIOI0aLPNeKPryUSyt/O\n=k3Ot\n-----END PGP SIGNATURE-----", + "payload": "tree ed096837f872575726cec31b433e1f149c64f1da\nparent 841a2c41d43f61361dff3fcf028f08cc134d122d\nauthor Rich Trott 1478651527 -0800\ncommitter Anna Henningsen 1479792734 +0100\n\nzlib: fix linting recently-introduced lint error\n\nRemove unnecessary named function. V8 will do a better job inferring the\nname from the assignment to a property. The current formulation does not\npass linting.\n\nPR-URL: https://github.com/nodejs/node/pull/9524\nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/adcc5b15f77ff962b607c2b10e223fe1f6d767ba", + "html_url": "https://github.com/nodejs/node/commit/adcc5b15f77ff962b607c2b10e223fe1f6d767ba", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/adcc5b15f77ff962b607c2b10e223fe1f6d767ba/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "841a2c41d43f61361dff3fcf028f08cc134d122d", + "url": "https://api.github.com/repos/nodejs/node/commits/841a2c41d43f61361dff3fcf028f08cc134d122d", + "html_url": "https://github.com/nodejs/node/commit/841a2c41d43f61361dff3fcf028f08cc134d122d" + } + ] + }, + { + "sha": "6f513e0b46bde53c885b404cce088548daad39d9", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NmY1MTNlMGI0NmJkZTUzYzg4NWI0MDRjY2UwODg1NDhkYWFkMzlkOQ==", + "commit": { + "author": { + "name": "Oscar Morrison", + "email": "me@oscarmorrison.com", + "date": "2016-07-27T12:39:18Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:15Z" + }, + "message": "doc: add npm link to README\n\nPR-URL: https://github.com/nodejs/node/pull/7894\nReviewed-By: Anna Henningsen \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "98789947ba00275ccd471f046728355ce28f587d", + "url": "https://api.github.com/repos/nodejs/node/git/trees/98789947ba00275ccd471f046728355ce28f587d" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/6f513e0b46bde53c885b404cce088548daad39d9", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9hfAAoJENi59a6uhOTPFXAP/3+YGFegIESGKSeJC+ZcvXtL\nLcpzGydaeblI+3vbyHYWcAQ+3w7JEqtFzhEXdVI0QCnmB5tyyThgvrz5rcPRjche\nzYXqckCNuDoQEixRgh7H1/3CCmjdqw2OqSezByUhrm//SP+QtwoR8b7/CVjvSPLv\njx+krUFmFu0O0MMg7WcYjqsd7HSQOUcm8Bst9hnVKKXVkfna51Vy+pLoEAVsuGE1\nRxttoToPghB1nOQpm/+14xbG5R4k0m4II7j10a4AnZqFLfODUzAudR5dCCoL9ELm\nsQy30+03RSbwpE7UVvv4YZyZpqNHZ3ljVvGdN1s/XHcGG3ap8vI1IyAWMkkDKgjj\n1HN1EMBn5kw9OkoV1Bm302ZGqy50bimcVy/iJdkz9T932rpThKZB4pkEXgkcJz8A\nxL6jbdiqhrUbBQGWiv6bXdGf1Fp8GeHEmM3H4CNQGbPYte+j1KNt/iN/e60/ZX5t\n5FcNDONjaMNfGl1yYUkv/NKZEzDjYqyncSxQk8IHbcOCRroh/HgASZr5wu+CvVsn\ncZacNVdMPxw06WSTv1eRzqHZeuXUSWqbEcyaLz4ae8KVO8kdJUdeALt1qCWEFxVZ\nG11CC1k54o2tCmK8BvuzM1r16ZhjPDmOQw/xmzl/vTzxkJsL6CGTyEZ5bjkABPYU\negaeb4aiwM9diaHSspIk\n=Z0Ar\n-----END PGP SIGNATURE-----", + "payload": "tree 98789947ba00275ccd471f046728355ce28f587d\nparent adcc5b15f77ff962b607c2b10e223fe1f6d767ba\nauthor Oscar Morrison 1469623158 -0400\ncommitter Anna Henningsen 1479792735 +0100\n\ndoc: add npm link to README\n\nPR-URL: https://github.com/nodejs/node/pull/7894\nReviewed-By: Anna Henningsen \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/6f513e0b46bde53c885b404cce088548daad39d9", + "html_url": "https://github.com/nodejs/node/commit/6f513e0b46bde53c885b404cce088548daad39d9", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/6f513e0b46bde53c885b404cce088548daad39d9/comments", + "author": { + "login": "oscarmorrison", + "id": 1651212, + "node_id": "MDQ6VXNlcjE2NTEyMTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/1651212?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/oscarmorrison", + "html_url": "https://github.com/oscarmorrison", + "followers_url": "https://api.github.com/users/oscarmorrison/followers", + "following_url": "https://api.github.com/users/oscarmorrison/following{/other_user}", + "gists_url": "https://api.github.com/users/oscarmorrison/gists{/gist_id}", + "starred_url": "https://api.github.com/users/oscarmorrison/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/oscarmorrison/subscriptions", + "organizations_url": "https://api.github.com/users/oscarmorrison/orgs", + "repos_url": "https://api.github.com/users/oscarmorrison/repos", + "events_url": "https://api.github.com/users/oscarmorrison/events{/privacy}", + "received_events_url": "https://api.github.com/users/oscarmorrison/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "adcc5b15f77ff962b607c2b10e223fe1f6d767ba", + "url": "https://api.github.com/repos/nodejs/node/commits/adcc5b15f77ff962b607c2b10e223fe1f6d767ba", + "html_url": "https://github.com/nodejs/node/commit/adcc5b15f77ff962b607c2b10e223fe1f6d767ba" + } + ] + }, + { + "sha": "f5442ece33d5b5291c80afcc1125e22eddedd8da", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZjU0NDJlY2UzM2Q1YjUyOTFjODBhZmNjMTEyNWUyMmVkZGVkZDhkYQ==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-06T02:08:31Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:15Z" + }, + "message": "lib,test: remove unneeded escaping of /\n\nThe `/` character does not need to be escaped when occurring inside a\ncharacter class in a regular expression. Remove such instances of\nescaping in the code base.\n\nPR-URL: https://github.com/nodejs/node/pull/9485\nReviewed-By: Prince John Wesley \nReviewed-By: Colin Ihrig \nReviewed-By: Teddy Katz \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "a24356f5ef7b6270eacbc881b81b5fcdb4643f3f", + "url": "https://api.github.com/repos/nodejs/node/git/trees/a24356f5ef7b6270eacbc881b81b5fcdb4643f3f" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/f5442ece33d5b5291c80afcc1125e22eddedd8da", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9hgAAoJENi59a6uhOTPmBMP/jphWvoYkIx2GNpeNWQ9U1BK\nOFVaUwmETAEXjBfMEelCyQRc2FtstB3cjFMp8lWEIf8hNlxknhZCy3ZFgX6N6lGU\ncGjDrciRtUeYCOAxLbsSKiaq4pupPUezyN/qAzH1UV3f+OVeGzmZkQ/auT5kxlPy\nL5itPNGWjKDpKlicVoqKzOLDWdHk2lBVHNX3z3rJ71tVq+dmYl/tLmxEkTB6Fnk3\n0YlykkN6Kdn3v7WmbDgGSv5gqmDYcqXfSsx2Rk0+gwIJXSJGc4o1mGKCX5bCO90r\njw0ImtJDruSL9gV5mL8RBIZVCGeaGbz0peDg1rYmFeGp4Ta6nvKwTyHa+XEBc9Mp\nJysOz1BC7mpI1t0kETq/4AP3rSMlmLaPzzBZ8BvQVAi10JyT+PujiXOnYS537jAe\ndFjV9AOSri8QFm4LkGXbNimklRWQQPVw3kTS/xRC6Zv4IvR7R7wKgx5QoY74max7\nSYThXIDgGrv9+xVQ1zBtEFoZJT/SNTse2aNsPoU5NR1ItTvSOMdY09W/HLWPkW0S\nOZbOM9iI7T+drfcJfpY1SGIBpTYCSsplAxmnKTl4SQ5l5FToCKUApG2UCmc+IdMz\n2K+APhqCzaWotZztUW4WPgpFnKFmedsJRGWK4rqTd73Fw1xMPaaZlHOnAIfTatue\nOmPfznEEycNcltDyKMWG\n=lubY\n-----END PGP SIGNATURE-----", + "payload": "tree a24356f5ef7b6270eacbc881b81b5fcdb4643f3f\nparent 6f513e0b46bde53c885b404cce088548daad39d9\nauthor Rich Trott 1478398111 -0700\ncommitter Anna Henningsen 1479792735 +0100\n\nlib,test: remove unneeded escaping of /\n\nThe `/` character does not need to be escaped when occurring inside a\ncharacter class in a regular expression. Remove such instances of\nescaping in the code base.\n\nPR-URL: https://github.com/nodejs/node/pull/9485\nReviewed-By: Prince John Wesley \nReviewed-By: Colin Ihrig \nReviewed-By: Teddy Katz \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/f5442ece33d5b5291c80afcc1125e22eddedd8da", + "html_url": "https://github.com/nodejs/node/commit/f5442ece33d5b5291c80afcc1125e22eddedd8da", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/f5442ece33d5b5291c80afcc1125e22eddedd8da/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "6f513e0b46bde53c885b404cce088548daad39d9", + "url": "https://api.github.com/repos/nodejs/node/commits/6f513e0b46bde53c885b404cce088548daad39d9", + "html_url": "https://github.com/nodejs/node/commit/6f513e0b46bde53c885b404cce088548daad39d9" + } + ] + }, + { + "sha": "ee7606940acfd322e64a4d07db3e8d5b00574dcf", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZWU3NjA2OTQwYWNmZDMyMmU2NGE0ZDA3ZGIzZThkNWIwMDU3NGRjZg==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-06T02:20:17Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:16Z" + }, + "message": "test: fix helper-debugger-repl.js\n\nThe test `debugger/test-debugger-repl-break-in-module` (and probably\nothers) was failing because the handshake message for debugging is no\nlonger `listening on port ` but is instead `listening on\n
:`.\n\nThis change makes the check less strict so as to hopefully future-proof\nit at least a little bit against subsequent changes.\n\nThis test failure is not caught in CI because currently debugger tests\nare not run in CI.\n\nPR-URL: https://github.com/nodejs/node/pull/9486\nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: Minwoo Jung \nReviewed-By: Prince John Wesley ", + "tree": { + "sha": "22c2bba8dbc71c57721020a1d16bc5bc3288224b", + "url": "https://api.github.com/repos/nodejs/node/git/trees/22c2bba8dbc71c57721020a1d16bc5bc3288224b" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/ee7606940acfd322e64a4d07db3e8d5b00574dcf", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9hgAAoJENi59a6uhOTPWY4P/3TUe1IC0xqeCEQgD8FAL6rA\nJ7uACzszOIbyyAFyGjzN1kfRa30ydK02CrfNef/Do6oWmyBUeFs0FBDiOhXL8GEV\nz4pP8cWA1DR4quZPSGmCds45xIBO+1xJzNLVxxsTKq3UkLiHYGPelKlREhjL1jIJ\nWJah7KIjiMW7oo6N8Y8lYsS2Uagc/+Sa69WIE68WbMsN5fWVQ2IhDaEAiVoohgTq\nRvh7mbxWaxeH447o8Y3H7UDJSfk6nae9WpAERF6UoYHB9KYSc3bzByTe7Mjv3zQ9\nU0nScrS0CgWxf0J13gHlGhYeGeNt3wioJ/ezAwgaxNsrMvLfiaVrBiHDWwUUplS0\no9nt/MR3zi0cQJ1wgRIdigURQ0cePBAvpEsYuZlZnyu4AiJawBG7J0MQF6a2fpsl\nTXwxDUNaSfM83+hjqVJflsBK8GDKihzSWigobvkOuKMZ34ZzNW6vcELBCKm/+7k+\nlNvOGqwF0MieNF9gozm020S6BIFs5wRDuAQy81vYUygXKfzRHX3dO2LJnCJsgziK\niwnyFMLptzCWlLUgpFgnDLHUxEyGEntXChd7lQP5wSz9v1uGsBTYtfoWGlvsfKnD\ne3Ypvsqd1jMIDszvJMH7o1DI/xfa12znH/+Dpt+6eELyl5PV6TS2rV/XSabY1p87\njSgX9fAT/0coNVEZ7xX+\n=Uvui\n-----END PGP SIGNATURE-----", + "payload": "tree 22c2bba8dbc71c57721020a1d16bc5bc3288224b\nparent f5442ece33d5b5291c80afcc1125e22eddedd8da\nauthor Rich Trott 1478398817 -0700\ncommitter Anna Henningsen 1479792736 +0100\n\ntest: fix helper-debugger-repl.js\n\nThe test `debugger/test-debugger-repl-break-in-module` (and probably\nothers) was failing because the handshake message for debugging is no\nlonger `listening on port ` but is instead `listening on\n
:`.\n\nThis change makes the check less strict so as to hopefully future-proof\nit at least a little bit against subsequent changes.\n\nThis test failure is not caught in CI because currently debugger tests\nare not run in CI.\n\nPR-URL: https://github.com/nodejs/node/pull/9486\nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: Minwoo Jung \nReviewed-By: Prince John Wesley \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/ee7606940acfd322e64a4d07db3e8d5b00574dcf", + "html_url": "https://github.com/nodejs/node/commit/ee7606940acfd322e64a4d07db3e8d5b00574dcf", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/ee7606940acfd322e64a4d07db3e8d5b00574dcf/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "f5442ece33d5b5291c80afcc1125e22eddedd8da", + "url": "https://api.github.com/repos/nodejs/node/commits/f5442ece33d5b5291c80afcc1125e22eddedd8da", + "html_url": "https://github.com/nodejs/node/commit/f5442ece33d5b5291c80afcc1125e22eddedd8da" + } + ] + }, + { + "sha": "2a9625656d4f8e9268890e24a8454be7c0a2bac2", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MmE5NjI1NjU2ZDRmOGU5MjY4ODkwZTI0YTg0NTRiZTdjMGEyYmFjMg==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-06T03:45:16Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:52Z" + }, + "message": "test: move timer-dependent test to sequential\n\n`test-regress-GH-897` is dependent on a timer firing within a period of\ntime. Especially on some of the FreeBSD hosts on CI, we have seen tests\nlike that fail when run in parallel. (This may have nothing to do with\nFreeBSD and may just mean that the hosts are resource-constrained.) Move\nthis test to sequential as we have done with several other\ntimer-dependent tests recently.\n\nThe test has also been refactored and documented via comments.\n\nPR-URL: https://github.com/nodejs/node/pull/9487\nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: Minwoo Jung ", + "tree": { + "sha": "5ac21434aa8433255d82627b84139453318cdc87", + "url": "https://api.github.com/repos/nodejs/node/git/trees/5ac21434aa8433255d82627b84139453318cdc87" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/2a9625656d4f8e9268890e24a8454be7c0a2bac2", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iEAAoJENi59a6uhOTPekYP/i5T7eeFS689M5WeWlOE1DMq\nmwuepoGx2ZRD5+4yzA/daCDWENpk3sJCR1n1PSJV3T+K077YwBcvryr/Yqmm2DNj\nkCUUr1bSB0QBNFXgWTLjtPAqoAvG0qiHfKrVoitxDRFevo0swSwHDCD0yVC3kpnO\n9TfF7KQ/HEh/BjsHH9QimATJ5c/OtFav2xguaoC7urxzjwwsT7NUSSQr+Tv56FWT\nSFYF+pfsXmXT5mWDEdUfBAzExgSiNt7XWcV9VZF4szSRWltviv1RFg6L3n5inZV4\nKG3V6Q7qP2Hu7XAG56BPJA8IipXYrWcoScF/lyuBmdYFAOkSsw6qWdNVFoEX7rle\nXCNTg9xhbyL2KzvxJceHJQnF73nBXRQN5fFV7a0Ng80Y7HiQqyp08mgdhVRtwsgY\n+QioTS27oBNa2RgpYb9NDouSNL/es5cri2hpcL+EFX39DisXwGiWy/pigHgn8qg+\n6CDA2TeRbF88+cuU0rLniukF1SVKSzGIuNxHEk48onpeFW+R47y7S0S3C6Ls1X85\njZxvG49wM6nGbt7bjkN3gIiObGsSryO/PbwC/UAW2m4pm8u6hkv8bfD1YcYCV0gx\nfy2MTAdOOVF0lZDP6p7Vfua/QZ9QYMNhtxT9Fjn/qpk+8lbBLWf60tQR3nQSdN16\nWOf/IIEP8xwyc3wpYqKz\n=goB6\n-----END PGP SIGNATURE-----", + "payload": "tree 5ac21434aa8433255d82627b84139453318cdc87\nparent ee7606940acfd322e64a4d07db3e8d5b00574dcf\nauthor Rich Trott 1478403916 -0700\ncommitter Anna Henningsen 1479792772 +0100\n\ntest: move timer-dependent test to sequential\n\n`test-regress-GH-897` is dependent on a timer firing within a period of\ntime. Especially on some of the FreeBSD hosts on CI, we have seen tests\nlike that fail when run in parallel. (This may have nothing to do with\nFreeBSD and may just mean that the hosts are resource-constrained.) Move\nthis test to sequential as we have done with several other\ntimer-dependent tests recently.\n\nThe test has also been refactored and documented via comments.\n\nPR-URL: https://github.com/nodejs/node/pull/9487\nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: Minwoo Jung \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/2a9625656d4f8e9268890e24a8454be7c0a2bac2", + "html_url": "https://github.com/nodejs/node/commit/2a9625656d4f8e9268890e24a8454be7c0a2bac2", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/2a9625656d4f8e9268890e24a8454be7c0a2bac2/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "ee7606940acfd322e64a4d07db3e8d5b00574dcf", + "url": "https://api.github.com/repos/nodejs/node/commits/ee7606940acfd322e64a4d07db3e8d5b00574dcf", + "html_url": "https://github.com/nodejs/node/commit/ee7606940acfd322e64a4d07db3e8d5b00574dcf" + } + ] + }, + { + "sha": "819a38df96b73102beef7b7497886f34ec11dbdf", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ODE5YTM4ZGY5NmI3MzEwMmJlZWY3Yjc0OTc4ODZmMzRlYzExZGJkZg==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-07T00:47:41Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:52Z" + }, + "message": "benchmark: split timers benchmark and refactor\n\nThe depth benchmark for timers sets a timer that sets a timer that sets\na timer that... 500K of them.\n\nSince each timer has to wait for the next tick of the event loop this\nbenchmark takes a very long time to run compared to the breadth\ntest that is already in the file. This may be more of an event loop\nbenchmark than a timer benchmark.\n\nReduce the number of iterations for the depth test as it's really just\nrunning the iterations in sequence, not in parallel. And even on an\ninfinitely fast machine, it would take over 8 minutes to run because\neach tick of the event loop would have to wait 1ms before firing the\ntimer.\n\nSplit the depth and breadth benchmarks so that their `N` values can be\nset independently.\n\nDo some minor refactoring to the benchmarks (but no ES6 additions so\nthat the benchmarks can still be run with old versions of Node.js).\n\nRefs: https://github.com/nodejs/node/issues/9493\nPR-URL: https://github.com/nodejs/node/pull/9497\nReviewed-By: Andreas Madsen \nReviewed-By: Colin Ihrig \nReviewed-By: Jeremiah Senkpiel ", + "tree": { + "sha": "3773c9bf1759a1a2f64d6b0827ed890929a5fb2a", + "url": "https://api.github.com/repos/nodejs/node/git/trees/3773c9bf1759a1a2f64d6b0827ed890929a5fb2a" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/819a38df96b73102beef7b7497886f34ec11dbdf", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iEAAoJENi59a6uhOTPEZkP/iFnt+1t9npZGMQ+E8DJ5e0s\nSEMPmp1EF0gpHoErrWECjY0PjD2iuQ7Y2lquConOZPaKLRpD2qSKOBK48kn42Pe+\ntzlgA+jEueJYDnCb0LKRjwBZIoJ12jZoQ1PHcYDgD5OFjey0bYjByHcCKn617U5Z\nihle1EG+OEawW/JkCgDy5NPbf3DMP6bPeu0bjTNTmZjNLBUBEFOwSFCIzN/e8Ntv\nb9Dl34ELJqnQw43tgsNphFYh7Cjn1Kn+6WMx3gK9MK5beiVPd3IMew6D18jAFtG7\nW64u8OBKBHMWN1n+YI19ubwnDx63sQet3tzqFxfhvNmCgbiZrTuR1+dQiWlpDmoZ\nMSoD4ujYNAY4nahBWlG5zDq3dAGZn5Om99d0pT+ZS7mwsch58ujrVq8NY3mChXHi\nlXX1MaOcSF5JVZPYkXd/aCIMrRrehuaszqueMmGAyAZFsJ4NSwihsUBswzYG7bhh\nEQPApYaKSoff5Su+J85kYBCA4sVpgjcqcq6ISLVN6t+VMG3Rh2+juhVBy8fNKP5K\nCktO1NwJqPDzjc6uIcnHupQ6atvmvOvBa3xV47/AuxLypa4a1J1IroIXXmNpclex\n7bpe/0ztLx2rAX/b4ylSBgefZN54fQdnjN4WXPyHTGlbrMG8xQ3hNZVU/anqGv4z\n5RdGDUkOSuEJzewhzkdm\n=Wmiz\n-----END PGP SIGNATURE-----", + "payload": "tree 3773c9bf1759a1a2f64d6b0827ed890929a5fb2a\nparent 2a9625656d4f8e9268890e24a8454be7c0a2bac2\nauthor Rich Trott 1478479661 -0800\ncommitter Anna Henningsen 1479792772 +0100\n\nbenchmark: split timers benchmark and refactor\n\nThe depth benchmark for timers sets a timer that sets a timer that sets\na timer that... 500K of them.\n\nSince each timer has to wait for the next tick of the event loop this\nbenchmark takes a very long time to run compared to the breadth\ntest that is already in the file. This may be more of an event loop\nbenchmark than a timer benchmark.\n\nReduce the number of iterations for the depth test as it's really just\nrunning the iterations in sequence, not in parallel. And even on an\ninfinitely fast machine, it would take over 8 minutes to run because\neach tick of the event loop would have to wait 1ms before firing the\ntimer.\n\nSplit the depth and breadth benchmarks so that their `N` values can be\nset independently.\n\nDo some minor refactoring to the benchmarks (but no ES6 additions so\nthat the benchmarks can still be run with old versions of Node.js).\n\nRefs: https://github.com/nodejs/node/issues/9493\nPR-URL: https://github.com/nodejs/node/pull/9497\nReviewed-By: Andreas Madsen \nReviewed-By: Colin Ihrig \nReviewed-By: Jeremiah Senkpiel \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/819a38df96b73102beef7b7497886f34ec11dbdf", + "html_url": "https://github.com/nodejs/node/commit/819a38df96b73102beef7b7497886f34ec11dbdf", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/819a38df96b73102beef7b7497886f34ec11dbdf/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "2a9625656d4f8e9268890e24a8454be7c0a2bac2", + "url": "https://api.github.com/repos/nodejs/node/commits/2a9625656d4f8e9268890e24a8454be7c0a2bac2", + "html_url": "https://github.com/nodejs/node/commit/2a9625656d4f8e9268890e24a8454be7c0a2bac2" + } + ] + }, + { + "sha": "dab3e451acbdd4a8d0000ff06e63bec701fd13a2", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZGFiM2U0NTFhY2JkZDRhOGQwMDAwZmYwNmU2M2JlYzcwMWZkMTNhMg==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-07T04:01:17Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:53Z" + }, + "message": "test: refactor make-callback-recurse test\n\nMove copy/pasted callback into its own function.\n\nPR-URL: https://github.com/nodejs/node/pull/9498\nReviewed-By: Colin Ihrig \nReviewed-By: Jeremiah Senkpiel ", + "tree": { + "sha": "04a22d251ed126b6ad8266be29418407cd2df022", + "url": "https://api.github.com/repos/nodejs/node/git/trees/04a22d251ed126b6ad8266be29418407cd2df022" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/dab3e451acbdd4a8d0000ff06e63bec701fd13a2", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iFAAoJENi59a6uhOTPCtcP/2HxIOOmvMXFnfLFn/qgwGPJ\nQXHV7kwySNiXqlLeZcUtdhECixeUInnrzy03rfjnCwmhHH8p1/BhkImSofJTP15N\n9zIngxFA1NJiRf3Ek+E6Ks9DdGSU2tPmjbe2wGCnZiBlEZW8fK1+LQJHP9dk5CyP\nhWxCf2x95xE0SajE2fHRJnaZH1NJ6h3Tc6yB3zhFrQNQyzJy2ksB22SKBFtyDxpx\nIXeWKef+v1cayk0iopN4svHZzOGbu7PhzG3uJpf8IWfn61DbSV4OMk9rnx2D7KYg\nwKjnodwtDGWA/prTB+W4ASu4yShrZfBUa/ahkK0oPieJqfWhxvNaBGqmg0z/vznn\nrDN9omv95JNHqQnB2QIXwMJQztbsWiB2GF4Bp5nSboMSX0FIoBVt6v/Vs2Vti28/\nv2IAI4xsAX11pmI8oM6GVyElCreXRQd8CxBOqfkunAU1pdsTUvc5t2eyovwOZNq5\nnahJzBmYbz/fh/0iafFsbCWriQsbfCk3gG83DIU58yHAqd6s1wGqtn0ng9Kuusbd\n2Mo6QyyvxsUI1t6k9LpDJ23OtMKqQB9X9xs13egpthOsL3s3u+YKmza9FRT+VX4+\nWYvrRB2HzzkIPfquc5xH/Wki7mEpmkFvJ+FO36yos8D8GxnWgo2n+2KWWwvff5Jx\nSLUBo1dkZhQina1D6gt6\n=uekW\n-----END PGP SIGNATURE-----", + "payload": "tree 04a22d251ed126b6ad8266be29418407cd2df022\nparent 819a38df96b73102beef7b7497886f34ec11dbdf\nauthor Rich Trott 1478491277 -0800\ncommitter Anna Henningsen 1479792773 +0100\n\ntest: refactor make-callback-recurse test\n\nMove copy/pasted callback into its own function.\n\nPR-URL: https://github.com/nodejs/node/pull/9498\nReviewed-By: Colin Ihrig \nReviewed-By: Jeremiah Senkpiel \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/dab3e451acbdd4a8d0000ff06e63bec701fd13a2", + "html_url": "https://github.com/nodejs/node/commit/dab3e451acbdd4a8d0000ff06e63bec701fd13a2", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/dab3e451acbdd4a8d0000ff06e63bec701fd13a2/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "819a38df96b73102beef7b7497886f34ec11dbdf", + "url": "https://api.github.com/repos/nodejs/node/commits/819a38df96b73102beef7b7497886f34ec11dbdf", + "html_url": "https://github.com/nodejs/node/commit/819a38df96b73102beef7b7497886f34ec11dbdf" + } + ] + }, + { + "sha": "342d8e05cb33d5c7274eff3ff623fba2ac7d6e68", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzQyZDhlMDVjYjMzZDVjNzI3NGVmZjNmZjYyM2ZiYTJhYzdkNmU2OA==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-07T04:20:03Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:53Z" + }, + "message": "test: refactor inspector-helper.js\n\nThere are two instances of `setTimeout()` called without a duration in\n`inspector-helper.js`. Change to `setImmediate()` for clarity that it\nisn't a mistake.\n\nPR-URL: https://github.com/nodejs/node/pull/9499\nReviewed-By: Colin Ihrig \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: James M Snell \nReviewed-By: Eugene Ostroukhov \nReviewed-By: Prince John Wesley \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "7a89100b65a75cd8be9c1c3d0c3b7cb009af07f8", + "url": "https://api.github.com/repos/nodejs/node/git/trees/7a89100b65a75cd8be9c1c3d0c3b7cb009af07f8" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/342d8e05cb33d5c7274eff3ff623fba2ac7d6e68", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iFAAoJENi59a6uhOTPwLoP/3eaFdH0PANxPkJVsyiTIvvU\nisBesPQyEM3L99pHACiJHrNNpf6yei6sQ8IaZ9A+tMmCCcDmep6v0UypNaV2XDe2\nbsc7bIvAqvQJB2ULJIkqbRSLXK844lurLpgnZh5sRSnf38rgiUI+FQAXyPPsgUlR\nzLMJxjkHhdrjZ3AAsyPayGZ44CTevgKZwLzEPPleKXSvC388epfPx5CZAChMohPV\nfUgVx3rxy2UbGIVCstCttysTARHBGcHySsD8h/ThcrLlDT8qPNZRqsyf5y6fEkrU\nNSnkLyaC6zGy2hwSwqmQsRr6z9iskIX6deUvNJsFAdSgY/hc8xx2rfUk7S+lgKGl\nXQYV98kBpuaSTftb3ZZDUoBzUWRKY5tYhY5TpGrxGf0GO49hODiZq2kx1M33aQn1\n7F6K3TctMICqBEViWCptHfuud7uDr7uh4tB+SVFTiDXwzR7sjrYZSP/5f8uQxzEf\nvXVQatxePcDx61YF6td8P0B6Okybo9rbobJ/cirEzk6hFPUJaTXDIgv6cYQPFtLl\nm3q2MCKab2jV5Kne6/hu/NlvVQI2/G35SumVywq1KzYfQUImt0Fbe1atOjixZidD\n3vQhKgPPxVyGme69jcHwDCoD4hPlHzPsoDzihMKgksStakPer6Gl17N+dkDzFQnz\nJtDBOYcF7XrQO5qPMvCn\n=qX01\n-----END PGP SIGNATURE-----", + "payload": "tree 7a89100b65a75cd8be9c1c3d0c3b7cb009af07f8\nparent dab3e451acbdd4a8d0000ff06e63bec701fd13a2\nauthor Rich Trott 1478492403 -0800\ncommitter Anna Henningsen 1479792773 +0100\n\ntest: refactor inspector-helper.js\n\nThere are two instances of `setTimeout()` called without a duration in\n`inspector-helper.js`. Change to `setImmediate()` for clarity that it\nisn't a mistake.\n\nPR-URL: https://github.com/nodejs/node/pull/9499\nReviewed-By: Colin Ihrig \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: James M Snell \nReviewed-By: Eugene Ostroukhov \nReviewed-By: Prince John Wesley \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/342d8e05cb33d5c7274eff3ff623fba2ac7d6e68", + "html_url": "https://github.com/nodejs/node/commit/342d8e05cb33d5c7274eff3ff623fba2ac7d6e68", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/342d8e05cb33d5c7274eff3ff623fba2ac7d6e68/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "dab3e451acbdd4a8d0000ff06e63bec701fd13a2", + "url": "https://api.github.com/repos/nodejs/node/commits/dab3e451acbdd4a8d0000ff06e63bec701fd13a2", + "html_url": "https://github.com/nodejs/node/commit/dab3e451acbdd4a8d0000ff06e63bec701fd13a2" + } + ] + }, + { + "sha": "96471556b5cf5de89d838726cef8afc3263f0feb", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OTY0NzE1NTZiNWNmNWRlODlkODM4NzI2Y2VmOGFmYzMyNjNmMGZlYg==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-07T21:34:54Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:54Z" + }, + "message": "test: move tick-processor tests to own directory\n\nThe tick-processor tests are inherently non-deterministic. They\ntherefore have false negatives from time to time. They also\nsometimes leave extra processes running.\n\nMove them to their own directory until these issues are sorted. Note\nthat this means that the tests will not be run in CI. Like the inspector\ntests and other tests, they will have to be run manually when they are\nwanted.\n\nPR-URL: https://github.com/nodejs/node/pull/9506\nReviewed-By: Daniel Bevenius \nReviewed-By: Matthew Loring \nReviewed-By: Gibson Fahnestock ", + "tree": { + "sha": "99ce2e4a39afdd9cecd0bd00b257641d9580baca", + "url": "https://api.github.com/repos/nodejs/node/git/trees/99ce2e4a39afdd9cecd0bd00b257641d9580baca" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/96471556b5cf5de89d838726cef8afc3263f0feb", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iGAAoJENi59a6uhOTPLL8P/2sjE3AcQS/XUwwvHqH8RFb4\n4cojOuAa0KN3UE1kOoIAWBDd7f6YGbL3un0cwLReeEZAevzR7qMNK3ZpHv8TRoCa\nsCRxzoz2WRd1RM6RWAUMYuKojTXqTjLE29F7bAZSXcifxQtOAPMv9nliKNYFrJ++\n8DS0lQ9JLq79hzLXgynA1qA1m1/WULyOZc4TFcrjx2roBd+e89lcZbcte9xfLk+d\nE4B727OrbueVMYZGNUYUwroZj65deaoW4/ZZhLNKX6FgLGolUrNJ4ulaZJkyuaXI\nANWbgj31STdOIU6t8KyrOBlvHe6tj3ceMhd+Vii5Z6pAwvVcWTkhDyAtVxLaweSA\n0c72fFHJ3rMbQ6ip2d3EZ/W259layR+DwRDz9qMKrxjIg/gdg4RpSVNpjTPmMRL/\nA/j3chFGqUJhG46NxOAfoBk+DZg7vKTb2D+wMqSZCQJHOw7c5LSUrKeavXgUDOCl\n+vzKQZHWatkcj3yDQ/vs/oYirIM88PFG8R/1PW3qCSofxt5MVe/1/AyYR+uJp1pH\n8iM33zm/NF/5kev+bjTILTpgSVvJyqOHFVT7n8JuuaxsXNWQ5AOtWTcWjb9uex1r\nGXoGp22mgfstwHRhs4E851HI5Xrkb7lKEoHPEu3+DBfS63vHbcruzcsqNvB301NM\nRI3ksCVnzVcp2xVXDMWA\n=ih3P\n-----END PGP SIGNATURE-----", + "payload": "tree 99ce2e4a39afdd9cecd0bd00b257641d9580baca\nparent 342d8e05cb33d5c7274eff3ff623fba2ac7d6e68\nauthor Rich Trott 1478554494 -0800\ncommitter Anna Henningsen 1479792774 +0100\n\ntest: move tick-processor tests to own directory\n\nThe tick-processor tests are inherently non-deterministic. They\ntherefore have false negatives from time to time. They also\nsometimes leave extra processes running.\n\nMove them to their own directory until these issues are sorted. Note\nthat this means that the tests will not be run in CI. Like the inspector\ntests and other tests, they will have to be run manually when they are\nwanted.\n\nPR-URL: https://github.com/nodejs/node/pull/9506\nReviewed-By: Daniel Bevenius \nReviewed-By: Matthew Loring \nReviewed-By: Gibson Fahnestock \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/96471556b5cf5de89d838726cef8afc3263f0feb", + "html_url": "https://github.com/nodejs/node/commit/96471556b5cf5de89d838726cef8afc3263f0feb", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/96471556b5cf5de89d838726cef8afc3263f0feb/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "342d8e05cb33d5c7274eff3ff623fba2ac7d6e68", + "url": "https://api.github.com/repos/nodejs/node/commits/342d8e05cb33d5c7274eff3ff623fba2ac7d6e68", + "html_url": "https://github.com/nodejs/node/commit/342d8e05cb33d5c7274eff3ff623fba2ac7d6e68" + } + ] + }, + { + "sha": "c07f6486629e9cbb8a03529f681fa55f7656c830", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YzA3ZjY0ODY2MjllOWNiYjhhMDM1MjlmNjgxZmE1NWY3NjU2YzgzMA==", + "commit": { + "author": { + "name": "Andreas Lind", + "email": "andreas@one.com", + "date": "2016-11-02T22:21:54Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:54Z" + }, + "message": "doc: Fix inaccuracy in https.request docs\n\nPR-URL: https://github.com/nodejs/node/pull/9453\nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \nReviewed-By: Sam Roberts \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "f339b4721d4d7d2806216dde66a0824b2950aa54", + "url": "https://api.github.com/repos/nodejs/node/git/trees/f339b4721d4d7d2806216dde66a0824b2950aa54" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/c07f6486629e9cbb8a03529f681fa55f7656c830", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iGAAoJENi59a6uhOTP3lkQAI1CeRJacX5ZpOENPw/bIq4J\nhdq7Ik3RKFj8VlXs9lpQ38DWN1kqTlN1RfFhofVqkc2JC8xb0TxhEv7Zzv3TlaNZ\nv5l0GSmbnVTOlmdK8iBQ3TP7tm05TQkvJIBPamRVEsebTJL0+ElRWNt/3i3Kr8Zb\nEm9zafpDrzTc3PHSHAx2AEWgnLpzs0BECAsmsduIosoAmSlgEgp9x/Y7lZ2Z9JQz\nC1wgcr9L0BRKNFKT4h0m6xqzUD2Km9LsBv+3QqTRuUb4pcec13RG/wKv/Fjx8aS0\ntD8FQjyXpPzD5Wj7h7ZKJr3oYS/ncWKo1jBFt/aVh2jwRtEiVr/Eoiewz8leUBaN\nbnprr7/mjsHv+D9Drw7beqn3L0bR9cCyOZyPxZFbmDTuSLJgphqhQSc0AjNCXwUd\n0Pfjj/VTpKBMIhkGB8Ek0a77AfCKbCFvFmo4e/AmRlgNTpAx7Wi7sv4D1BEAcHj8\nuLHqZsXnmvoU4QoyVKfS66KdF64bBbKSHKcB8xI66VMlakxBWMcbhkCKg45zCPc1\nidAoWYE8G8tXymXqTl9705QmCsgq6AOl2YzMLET6Cn+DWAulbFCa6c7ISyGPukbv\nqiarvjPU/EC5DfsAlB+LqfsYAThBwYf3WR5OtXDLHjplg9lv1EbjcP9j2BIVKzHA\nwtoOT3nWDoadSreNHT4v\n=L9+R\n-----END PGP SIGNATURE-----", + "payload": "tree f339b4721d4d7d2806216dde66a0824b2950aa54\nparent 96471556b5cf5de89d838726cef8afc3263f0feb\nauthor Andreas Lind 1478125314 +0100\ncommitter Anna Henningsen 1479792774 +0100\n\ndoc: Fix inaccuracy in https.request docs\n\nPR-URL: https://github.com/nodejs/node/pull/9453\nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \nReviewed-By: Sam Roberts \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/c07f6486629e9cbb8a03529f681fa55f7656c830", + "html_url": "https://github.com/nodejs/node/commit/c07f6486629e9cbb8a03529f681fa55f7656c830", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/c07f6486629e9cbb8a03529f681fa55f7656c830/comments", + "author": { + "login": "papandreou", + "id": 373545, + "node_id": "MDQ6VXNlcjM3MzU0NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/373545?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/papandreou", + "html_url": "https://github.com/papandreou", + "followers_url": "https://api.github.com/users/papandreou/followers", + "following_url": "https://api.github.com/users/papandreou/following{/other_user}", + "gists_url": "https://api.github.com/users/papandreou/gists{/gist_id}", + "starred_url": "https://api.github.com/users/papandreou/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/papandreou/subscriptions", + "organizations_url": "https://api.github.com/users/papandreou/orgs", + "repos_url": "https://api.github.com/users/papandreou/repos", + "events_url": "https://api.github.com/users/papandreou/events{/privacy}", + "received_events_url": "https://api.github.com/users/papandreou/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "96471556b5cf5de89d838726cef8afc3263f0feb", + "url": "https://api.github.com/repos/nodejs/node/commits/96471556b5cf5de89d838726cef8afc3263f0feb", + "html_url": "https://github.com/nodejs/node/commit/96471556b5cf5de89d838726cef8afc3263f0feb" + } + ] + }, + { + "sha": "62478eb3d97243e2c7f71b64c23b4ac0a0dfb012", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NjI0NzhlYjNkOTcyNDNlMmM3ZjcxYjY0YzIzYjRhYzBhMGRmYjAxMg==", + "commit": { + "author": { + "name": "timathon", + "email": "timathon@outlook.com", + "date": "2016-11-09T04:07:49Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:55Z" + }, + "message": "doc: fix link to Event Loop page\n\nPR-URL: https://github.com/nodejs/node/pull/9527\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "be3639c91789fc1aa5453a210bc4aa4d2e5d0380", + "url": "https://api.github.com/repos/nodejs/node/git/trees/be3639c91789fc1aa5453a210bc4aa4d2e5d0380" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/62478eb3d97243e2c7f71b64c23b4ac0a0dfb012", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iHAAoJENi59a6uhOTPg1IP/1ysRKwBIXWd0MV3UNLOykuM\nyv/6ZO7O4GsQNdla9ksN6Hqrfbab0XTAyu5IjXnHkeYvZyOcKw31e+yamGYJuj96\n/JPZ+16pT+a0OKllcfcL8auiyl/64ep8qxpQnudzHX9K00tCkqJJlXhT7En+WgWw\nQk06F5ntgJm+fcvJRu62P/4p7gw4WzOtz0iURczrxHoBg0C2bEA55hY/I/zDEVma\nZhTGURfDXlo9zwJ3XYWApRKi5G3pg9VGPmfeW5o2SMeA9hAmdPFMvY05baU9ERvH\nGYXr6PQbN6Z1pP6vkhPtlQHurHYTq3q3AoZZNGLsP1DSvnWvXXlcnBByIze476/b\nSeTbgDaHKJX0ktPjA1Hk0B3a2LkZ4q+ZY3B9AWoXS1gouQlfyvh7cuTWjUjmk/Wf\n7tMNrE2wdF3zjHzq38MEAYViHlpBlDdsl9sXtJtpb3g5/KbFLm2yV5XKJAud4ZHw\n4UN4HGk+Kc1nPQYgmTdaJG55jJXrtNamwJPCNCKseb8UEVQi9h1XEjE4KYz6+Md0\nDCLVKs+tD54U/IQXC+1oywna87UIzZdlaXQuwd25DzE6MoaCvkGI+p0p20EhWq9+\n/bgDuxaP4glmE84HJjyPQ7o3qBx/t5nNsCUk+ZSWZnZnm1CuniDzRFeIM0536NN9\n/ZObBC6HOYbDr6YC6i1i\n=NML/\n-----END PGP SIGNATURE-----", + "payload": "tree be3639c91789fc1aa5453a210bc4aa4d2e5d0380\nparent c07f6486629e9cbb8a03529f681fa55f7656c830\nauthor timathon 1478664469 +0800\ncommitter Anna Henningsen 1479792775 +0100\n\ndoc: fix link to Event Loop page\n\nPR-URL: https://github.com/nodejs/node/pull/9527\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/62478eb3d97243e2c7f71b64c23b4ac0a0dfb012", + "html_url": "https://github.com/nodejs/node/commit/62478eb3d97243e2c7f71b64c23b4ac0a0dfb012", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/62478eb3d97243e2c7f71b64c23b4ac0a0dfb012/comments", + "author": { + "login": "timathon", + "id": 9364651, + "node_id": "MDQ6VXNlcjkzNjQ2NTE=", + "avatar_url": "https://avatars.githubusercontent.com/u/9364651?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/timathon", + "html_url": "https://github.com/timathon", + "followers_url": "https://api.github.com/users/timathon/followers", + "following_url": "https://api.github.com/users/timathon/following{/other_user}", + "gists_url": "https://api.github.com/users/timathon/gists{/gist_id}", + "starred_url": "https://api.github.com/users/timathon/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/timathon/subscriptions", + "organizations_url": "https://api.github.com/users/timathon/orgs", + "repos_url": "https://api.github.com/users/timathon/repos", + "events_url": "https://api.github.com/users/timathon/events{/privacy}", + "received_events_url": "https://api.github.com/users/timathon/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "c07f6486629e9cbb8a03529f681fa55f7656c830", + "url": "https://api.github.com/repos/nodejs/node/commits/c07f6486629e9cbb8a03529f681fa55f7656c830", + "html_url": "https://github.com/nodejs/node/commit/c07f6486629e9cbb8a03529f681fa55f7656c830" + } + ] + }, + { + "sha": "92f163e4655b738370c781edc72bdd1b6bbfe8dd", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OTJmMTYzZTQ2NTViNzM4MzcwYzc4MWVkYzcyYmRkMWI2YmJmZThkZA==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-07T14:27:37Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:55Z" + }, + "message": "doc: clarify the exit code part of writing_tests\n\nPR-URL: https://github.com/nodejs/node/pull/9502\nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Daniel Bevenius \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "96c311acf51b18660696de9e36c57f6e53d8f6ab", + "url": "https://api.github.com/repos/nodejs/node/git/trees/96c311acf51b18660696de9e36c57f6e53d8f6ab" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/92f163e4655b738370c781edc72bdd1b6bbfe8dd", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iHAAoJENi59a6uhOTPocoP+wfofIGwwq6w3o6XzMvgvzdn\nlwnwhkBiml6eNbqwdLrBOOEIXIhWUKteC/jSLIeff0xJFXLaandYRlFIzF4gvLg2\ngk4oRZDMmf02JuW7P/6pH/QMz9dKuDLx/nUbZE6UoL+un3t1zC9pLE/32rXfkSsX\nmiVznF832n3wr9AzweRBZPCMQSdgkVM7FWbJLU+NDrOLgvz5oKnq8scSJlHhmOR0\nIEnG7uygcy+Ti0tb++w60z33xN6ZZotAKY98aSC7LN2bZp2ewUJAx4YPNCe0G2nk\nT9QrKUmG5/Q646hGesdo43sL6f3t0z9Q/C1Z+joLb5JEbwkYs88Ge6acY0DA4hxm\nzeDifwGfQr//MBqtRCziWsMEaMOhdVVKj7ZlxzY1BV2b0F3pWxL1Ou/wJlx1luKS\nzPz3VF2o+7BsvXpSoO/mVOk+U11mXnCmYyD+5YMsaTVIofQnowEZyQkDgRpRs0Ag\nTAhp6Xoz4YVd6qfDhdl6m9y1eiEEr0PDV2Eqn96r+mTNkEjEcmaZyLQMHiSk4ENn\n9fKjPzUCjb7HCIsDG1mIrfV5AJ6Zm3WuO6wDqbEx53eboBvIuL3aeIMJWZaMjlRw\nidFfMHCnyjrtiklY+juw06dn3go4XOX1bZ7z1s2SCg446++q3NaXnUf67DZ6/i7g\nyam7d8Mx9szlI/+AdMT+\n=UX6p\n-----END PGP SIGNATURE-----", + "payload": "tree 96c311acf51b18660696de9e36c57f6e53d8f6ab\nparent 62478eb3d97243e2c7f71b64c23b4ac0a0dfb012\nauthor Jeremiah Senkpiel 1478528857 -0500\ncommitter Anna Henningsen 1479792775 +0100\n\ndoc: clarify the exit code part of writing_tests\n\nPR-URL: https://github.com/nodejs/node/pull/9502\nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Daniel Bevenius \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/92f163e4655b738370c781edc72bdd1b6bbfe8dd", + "html_url": "https://github.com/nodejs/node/commit/92f163e4655b738370c781edc72bdd1b6bbfe8dd", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/92f163e4655b738370c781edc72bdd1b6bbfe8dd/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "62478eb3d97243e2c7f71b64c23b4ac0a0dfb012", + "url": "https://api.github.com/repos/nodejs/node/commits/62478eb3d97243e2c7f71b64c23b4ac0a0dfb012", + "html_url": "https://github.com/nodejs/node/commit/62478eb3d97243e2c7f71b64c23b4ac0a0dfb012" + } + ] + }, + { + "sha": "a412b9fa9ab882f25270ed983a9b35420f2c9f73", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YTQxMmI5ZmE5YWI4ODJmMjUyNzBlZDk4M2E5YjM1NDIwZjJjOWY3Mw==", + "commit": { + "author": { + "name": "Ryan Lewis", + "email": "ryanharrisonlewis@gmail.com", + "date": "2016-11-06T21:29:59Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:56Z" + }, + "message": "doc: grammar and structure revisions of wg doc\n\nPR-URL: https://github.com/nodejs/node/pull/9495\nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "0654a0d16b1fad4274bb2d5a0b5524f90c5ded07", + "url": "https://api.github.com/repos/nodejs/node/git/trees/0654a0d16b1fad4274bb2d5a0b5524f90c5ded07" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/a412b9fa9ab882f25270ed983a9b35420f2c9f73", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iIAAoJENi59a6uhOTPPS0P/3vIgtojr5Bc8e5G7KFnrlgL\nfiLf7gAE+hAIv/C2rXR7uXtNYi8d/0Pbp23qCHIXspyIQ25lMWoPfxdcyzXFIPG3\nIVcJG67jbi1KQAgo9Tj8K7hngouYSuCN/hdiKgwkqxeDtJPPm6LFKZkUlS0zl54O\nosApi62IPEunOL084VYvAmqOlj+I563xy4hFscoe7AN48Y4RWTxQ/aQNMzI3oN+4\nbm/0XYlzheoKNCUZkLqwlwinOYzbDUxieFpj00I8emZOqaYfnNBwea6BM5jLbkvZ\nce1cCry0pZgliG+XHN53cAEniInMqF9uYHfWJ2MPobdj6HyiOQljbissmfMZ0ITS\nF5g5FXu2Ic+AJ9cav+SD/Pq5lhPPo5TW69BqlI8iUl4rjFh75m1xUWKYOG1ofxvi\nmIddii2pMlLpBO2gt6oW0OPkfgHbLXv+DCWLw5mVZYt5T8vnlnD7ubwjsZGj6zq8\nAsyNin3oKIoGCB4o6L8f12NDNTF15sa25+ZfrUpj7Ut4m6GV5/SJLf1FTw7w4uu4\nGC6G3vnU6QvGgeRtGse1GiBEBQXz+HiZ3qulT2SXfHLWfDvJKSciGYyGSk877J6Q\nJJWvRqYGRTzt7HIkMkxI0YXqy5yER5qLNR5N8kl3+D+FZpSYBaCuedqBPiqDW7ml\nGzXNAOwRn1dhhh0t00qY\n=Czqf\n-----END PGP SIGNATURE-----", + "payload": "tree 0654a0d16b1fad4274bb2d5a0b5524f90c5ded07\nparent 92f163e4655b738370c781edc72bdd1b6bbfe8dd\nauthor Ryan Lewis 1478467799 -0800\ncommitter Anna Henningsen 1479792776 +0100\n\ndoc: grammar and structure revisions of wg doc\n\nPR-URL: https://github.com/nodejs/node/pull/9495\nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/a412b9fa9ab882f25270ed983a9b35420f2c9f73", + "html_url": "https://github.com/nodejs/node/commit/a412b9fa9ab882f25270ed983a9b35420f2c9f73", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/a412b9fa9ab882f25270ed983a9b35420f2c9f73/comments", + "author": { + "login": "ryanmurakami", + "id": 767105, + "node_id": "MDQ6VXNlcjc2NzEwNQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/767105?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ryanmurakami", + "html_url": "https://github.com/ryanmurakami", + "followers_url": "https://api.github.com/users/ryanmurakami/followers", + "following_url": "https://api.github.com/users/ryanmurakami/following{/other_user}", + "gists_url": "https://api.github.com/users/ryanmurakami/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ryanmurakami/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ryanmurakami/subscriptions", + "organizations_url": "https://api.github.com/users/ryanmurakami/orgs", + "repos_url": "https://api.github.com/users/ryanmurakami/repos", + "events_url": "https://api.github.com/users/ryanmurakami/events{/privacy}", + "received_events_url": "https://api.github.com/users/ryanmurakami/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "92f163e4655b738370c781edc72bdd1b6bbfe8dd", + "url": "https://api.github.com/repos/nodejs/node/commits/92f163e4655b738370c781edc72bdd1b6bbfe8dd", + "html_url": "https://github.com/nodejs/node/commit/92f163e4655b738370c781edc72bdd1b6bbfe8dd" + } + ] + }, + { + "sha": "31a34d7992c2cb6fb19f2c0818f1f498b40a1358", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzFhMzRkNzk5MmMyY2I2ZmIxOWYyYzA4MThmMWY0OThiNDBhMTM1OA==", + "commit": { + "author": { + "name": "Daniel Bevenius", + "email": "daniel.bevenius@gmail.com", + "date": "2016-11-10T19:19:56Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:56Z" + }, + "message": "doc: fix minor style issue in code examples\n\nI've noticed that a few of the code examples have an minor\nindentation issue with the first line, for example:\n\nhttps://nodejs.org/api/child_process.html#child_process_child_process\nThis commit attempt to fix this issue by using the solution provided\nprovided by silverwind and hiendv.\n\nFixes: https://github.com/nodejs/node/issues/9381\nPR-URL: https://github.com/nodejs/node/pull/9482\nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "d425ec01d87ac7fe5be07a1309a6c4ab2985d8ab", + "url": "https://api.github.com/repos/nodejs/node/git/trees/d425ec01d87ac7fe5be07a1309a6c4ab2985d8ab" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/31a34d7992c2cb6fb19f2c0818f1f498b40a1358", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iIAAoJENi59a6uhOTPf+MP/1Trs0OsqieQIWFLEjwdf7lc\n80IlUkJ+H8o4ijVzdNrmZ588/7J2eycEFrbxOvPrmv9Y5OUJpdlyVyyzoDWzL5YW\nItUOY5Ex5PUoRkOfepFQHigoIdw3opdhgE4R1ZgFA1rR1GTbl/ONoSlScq8CIxQX\n19JCaPSaW+oHKasnWE/Oad9Rg2+A/JKsyEhkT3ynoM50ZNrUsR9cQ5x9L61IrruN\nWUR2XAuiuEj33x0KfDcrg4gRa+ZHbWO1QuzE7pnhRA+Ttd0ohXPjmmehv9M6IDuG\nJ61ec6EUJpnml5zDi/nFzzdV+u6x2S7UD7KlxDvGulYbUM+sVtKzs/ZxUJ/mLDFt\ngMBlK1Qqg50Xk/SWK+0ELZxEIK30VoWb529/VvJQl2NBwbeFXb0CDmjOfmRb1mVG\n0TYM7Sg4CQmNmbiI44rqYZYv1tgjsL3KF07I802Ge+8aUX/3xvFCK4XdC6OTbpsH\n3lQ+MpRzO2guUjXy/52hIQxDmaglshXrT1o6qUTXoYWu+yPZPU9M9rfkL5Egcgtl\n+hpmiSQA1FifHKe+7RV0x3T95H9ZEBAu8Q9Q1mstl2ks+++roX6BJiS8oUBat6lF\nf+Gy1VMzce9iXqnCnSGNbh93wX+s9x6sdY15c8JWQ0urWARFf007jChoA7EpZTaa\nUUzp5HRtKuNrCA/AJ099\n=hnU8\n-----END PGP SIGNATURE-----", + "payload": "tree d425ec01d87ac7fe5be07a1309a6c4ab2985d8ab\nparent a412b9fa9ab882f25270ed983a9b35420f2c9f73\nauthor Daniel Bevenius 1478805596 +0100\ncommitter Anna Henningsen 1479792776 +0100\n\ndoc: fix minor style issue in code examples\n\nI've noticed that a few of the code examples have an minor\nindentation issue with the first line, for example:\n\nhttps://nodejs.org/api/child_process.html#child_process_child_process\nThis commit attempt to fix this issue by using the solution provided\nprovided by silverwind and hiendv.\n\nFixes: https://github.com/nodejs/node/issues/9381\nPR-URL: https://github.com/nodejs/node/pull/9482\nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/31a34d7992c2cb6fb19f2c0818f1f498b40a1358", + "html_url": "https://github.com/nodejs/node/commit/31a34d7992c2cb6fb19f2c0818f1f498b40a1358", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/31a34d7992c2cb6fb19f2c0818f1f498b40a1358/comments", + "author": { + "login": "danbev", + "id": 432351, + "node_id": "MDQ6VXNlcjQzMjM1MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/432351?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/danbev", + "html_url": "https://github.com/danbev", + "followers_url": "https://api.github.com/users/danbev/followers", + "following_url": "https://api.github.com/users/danbev/following{/other_user}", + "gists_url": "https://api.github.com/users/danbev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/danbev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/danbev/subscriptions", + "organizations_url": "https://api.github.com/users/danbev/orgs", + "repos_url": "https://api.github.com/users/danbev/repos", + "events_url": "https://api.github.com/users/danbev/events{/privacy}", + "received_events_url": "https://api.github.com/users/danbev/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "a412b9fa9ab882f25270ed983a9b35420f2c9f73", + "url": "https://api.github.com/repos/nodejs/node/commits/a412b9fa9ab882f25270ed983a9b35420f2c9f73", + "html_url": "https://github.com/nodejs/node/commit/a412b9fa9ab882f25270ed983a9b35420f2c9f73" + } + ] + }, + { + "sha": "549b6f23dbb8c0fc219ea6893767078ed7032202", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NTQ5YjZmMjNkYmI4YzBmYzIxOWVhNjg5Mzc2NzA3OGVkNzAzMjIwMg==", + "commit": { + "author": { + "name": "Timothy", + "email": "zzzzBov@gmail.com", + "date": "2016-11-07T23:36:40Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:57Z" + }, + "message": "doc: fix fs constants link\n\nhttps://nodejs.org/api/fs.html#fs_fs_constants links to itself rather\nthan to https://nodejs.org/api/fs.html#fs_fs_constants_1\n\nPR-URL: https://github.com/nodejs/node/pull/9508\nReviewed-By: Luigi Pinca \nReviewed-By: Evan Lucas \nReviewed-By: Colin Ihrig \nReviewed-By: Prince John Wesley \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "0b168748e00ab0d6b5d05bfb6fa1b477eb9055df", + "url": "https://api.github.com/repos/nodejs/node/git/trees/0b168748e00ab0d6b5d05bfb6fa1b477eb9055df" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/549b6f23dbb8c0fc219ea6893767078ed7032202", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iJAAoJENi59a6uhOTPzSsQAId24p+F96AVU6PBE1saxaKC\nffWV1xVW0qHDBECiohVFkJrbQtpuQ5rf/NfIgaj6XrQLB0NOnnWA+NMDduynXhNq\n1obAjPSnoIuA7gUCU8ON98/UGomM/UMcp3r555NixH68Czlvn5zWrhRkuivJP3P+\nRBajVhXcWxBDF9vffLA/j/xVdEkaDD1HmPm6t90uJYV7ambU9sacAGj40WRS+I3t\n5Jbhen75FHwi/AxFW9pPknyQqUlBdJW2o8Yu4xZP9s43DDYm8HlyCsIyYT1nCeCS\n2TcyKX0EMe9X3XI9zclIkzv361mkoAgUW/IdKXGP90xdW/jRgxmIGyS9AQC6zNYm\nkddF09Q/gYc5nCxKJEaelS5hPoy/VkPv/Ywcrdtw3LmKGleC9gkLJrLpF9+G9RL2\nwLWP39+7cnPUJo8NYmqbLMJ689o5aYDTjTVknuRE31A17cb4w6UFRAxWiXP6ZoGu\nFqm805vz6FJfuSC9KrhMyqirnuQk+Bu8hvRUd27MJMLA9f7E+qvuVWh4klUmkcjk\nLXFAc3dea6JQeWyLfDxjsk0RXxQOqGVHxiuvz/lU48/3P0NxhfKVeTdLR6TBOLuj\nmawF6yspQLKvyc4PJb5Pa4MYHTiS6L0b2fEK2RWpQvzx7F40hwWR5ny6Xj3hP4jg\ntkizBoXYK9nmRPGxoIAK\n=BwVz\n-----END PGP SIGNATURE-----", + "payload": "tree 0b168748e00ab0d6b5d05bfb6fa1b477eb9055df\nparent 31a34d7992c2cb6fb19f2c0818f1f498b40a1358\nauthor Timothy 1478561800 -0500\ncommitter Anna Henningsen 1479792777 +0100\n\ndoc: fix fs constants link\n\nhttps://nodejs.org/api/fs.html#fs_fs_constants links to itself rather\nthan to https://nodejs.org/api/fs.html#fs_fs_constants_1\n\nPR-URL: https://github.com/nodejs/node/pull/9508\nReviewed-By: Luigi Pinca \nReviewed-By: Evan Lucas \nReviewed-By: Colin Ihrig \nReviewed-By: Prince John Wesley \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/549b6f23dbb8c0fc219ea6893767078ed7032202", + "html_url": "https://github.com/nodejs/node/commit/549b6f23dbb8c0fc219ea6893767078ed7032202", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/549b6f23dbb8c0fc219ea6893767078ed7032202/comments", + "author": { + "login": "zzzzBov", + "id": 518319, + "node_id": "MDQ6VXNlcjUxODMxOQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/518319?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/zzzzBov", + "html_url": "https://github.com/zzzzBov", + "followers_url": "https://api.github.com/users/zzzzBov/followers", + "following_url": "https://api.github.com/users/zzzzBov/following{/other_user}", + "gists_url": "https://api.github.com/users/zzzzBov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/zzzzBov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/zzzzBov/subscriptions", + "organizations_url": "https://api.github.com/users/zzzzBov/orgs", + "repos_url": "https://api.github.com/users/zzzzBov/repos", + "events_url": "https://api.github.com/users/zzzzBov/events{/privacy}", + "received_events_url": "https://api.github.com/users/zzzzBov/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "31a34d7992c2cb6fb19f2c0818f1f498b40a1358", + "url": "https://api.github.com/repos/nodejs/node/commits/31a34d7992c2cb6fb19f2c0818f1f498b40a1358", + "html_url": "https://github.com/nodejs/node/commit/31a34d7992c2cb6fb19f2c0818f1f498b40a1358" + } + ] + }, + { + "sha": "7488b0041f956e6275050760809a47043e549320", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NzQ4OGIwMDQxZjk1NmU2Mjc1MDUwNzYwODA5YTQ3MDQzZTU0OTMyMA==", + "commit": { + "author": { + "name": "imatvieiev", + "email": "idmatvieiev@gmail.com", + "date": "2016-11-08T18:00:30Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:32:58Z" + }, + "message": "doc: added types to path docs\n\nPR-URL: https://github.com/nodejs/node/pull/9514\nReviewed-By: Roman Reiss ", + "tree": { + "sha": "2d07bab3122916dc841d32a017c4852425adea80", + "url": "https://api.github.com/repos/nodejs/node/git/trees/2d07bab3122916dc841d32a017c4852425adea80" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/7488b0041f956e6275050760809a47043e549320", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9iKAAoJENi59a6uhOTP3AYP/1A4LX0CUlPK6smzubu3S0zH\n3iwaK9gkPSfQ2P18cXDhcxoUNxEN3IqLPSNeWsTJpnVBrJdkro7ZslbAF8+tMTFO\nvbAIVWPN9JfeaYIN5hc+YUX3sk9PJqPNVC9ca7s6rrEz6RRCt1oHSfnlZBa/yy2G\ny25QdCP4rQfxC2wqIsPAvsV3ZNDhzyGi+Lel3eDm10diRLNNncutrsPtjGZKf3dr\ni/NQytBpNz4xOowj+pxJj7qRMEnsTjUN4GEvxvFEQiXLPmmB0+HXlUZeQLRLx6xT\nVrBtpjt9GiJYntBWd+Zo+KTH9PH5pA9UgFGRyPBa6yYnliLLJA3LB/TlGQU4s39K\nVSymBD545oJl9z49Fz7asbKk72tkXqEH98+ysgmOJwVkeTXO+TgDnN8WtQSUh7HR\nptaPsjxVHSBwIc8y3bhL8MEvUyo44BzgsB46Od74KHU2u7QfO7P3BJyU/jDRJ4nd\nXOjb+SAfiEYPX0XF2PSx1gboNsHeWNraAQwBZ6xizTskyMT2pQemedHlWqKkKFGc\n+vOlxJI54x+IuFB/0z3Zv/Jr65kHEvofyT5Z/LgRGtrUts+PMfYw0x5UNF6YOOoX\njqEPFODExWlGtK/mnDAezPuAY3RxfYVTU1Q7m6kGKA0qq/NsJx8jKC5ZSeokavJK\ng/c2IQJxkELnOBWkmvnr\n=LJWA\n-----END PGP SIGNATURE-----", + "payload": "tree 2d07bab3122916dc841d32a017c4852425adea80\nparent 549b6f23dbb8c0fc219ea6893767078ed7032202\nauthor imatvieiev 1478628030 +0200\ncommitter Anna Henningsen 1479792778 +0100\n\ndoc: added types to path docs\n\nPR-URL: https://github.com/nodejs/node/pull/9514\nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/7488b0041f956e6275050760809a47043e549320", + "html_url": "https://github.com/nodejs/node/commit/7488b0041f956e6275050760809a47043e549320", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/7488b0041f956e6275050760809a47043e549320/comments", + "author": { + "login": "imatveev", + "id": 10616396, + "node_id": "MDQ6VXNlcjEwNjE2Mzk2", + "avatar_url": "https://avatars.githubusercontent.com/u/10616396?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/imatveev", + "html_url": "https://github.com/imatveev", + "followers_url": "https://api.github.com/users/imatveev/followers", + "following_url": "https://api.github.com/users/imatveev/following{/other_user}", + "gists_url": "https://api.github.com/users/imatveev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/imatveev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/imatveev/subscriptions", + "organizations_url": "https://api.github.com/users/imatveev/orgs", + "repos_url": "https://api.github.com/users/imatveev/repos", + "events_url": "https://api.github.com/users/imatveev/events{/privacy}", + "received_events_url": "https://api.github.com/users/imatveev/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "549b6f23dbb8c0fc219ea6893767078ed7032202", + "url": "https://api.github.com/repos/nodejs/node/commits/549b6f23dbb8c0fc219ea6893767078ed7032202", + "html_url": "https://github.com/nodejs/node/commit/549b6f23dbb8c0fc219ea6893767078ed7032202" + } + ] + }, + { + "sha": "77aded3ba1f6f601b2ca9779099640795a8d9b48", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NzdhZGVkM2JhMWY2ZjYwMWIyY2E5Nzc5MDk5NjQwNzk1YThkOWI0OA==", + "commit": { + "author": { + "name": "imatvieiev", + "email": "idmatvieiev@gmail.com", + "date": "2016-11-07T21:23:41Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:48Z" + }, + "message": "doc: add process api data types to documentation\n\nPR-URL: https://github.com/nodejs/node/pull/9505\nReviewed-By: Luigi Pinca \nReviewed-By: Brian White \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "520c8aedbcd05ccea1560cabad567595da6c2d27", + "url": "https://api.github.com/repos/nodejs/node/git/trees/520c8aedbcd05ccea1560cabad567595da6c2d27" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/77aded3ba1f6f601b2ca9779099640795a8d9b48", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9i8AAoJENi59a6uhOTPZ8sP/jvr+MMM7IPUK3srJFB7Vng2\nBn7UwxO4SFGVFugLkEN+oCzIfhXB+CiNZXNnPz6PAiY+jzdQQRfUVbUCcgHXZHZ2\n8xIOzKcHdAmCHS0dRjZEpp6GC3/hS8L5BJIIfe5PgcdcUk4cgJKzqpH8ynP7kwVA\n8Fg4nl2C4uVRDlx0g6GFmwqsTBWEntq3nRZ5ozg5wf4S+W/8ZIFN6tBC65hqsDTx\n7cuAtY8x976LAwZ0L58OM4BQFz7i6O+8smuJ/PK1BiQqVas/GixwybR1S8S9ymmN\njI+/67cVN/yFnl0XDZypYa7MUdBfotqo24Bx2EQrJv06x0QlATlDEHh7j5z8/qvi\ncaSZ2YoztVJFhamAKRyxB6+0aOQKnhpJA8LwAlZ9WXVeoqjE6jXynV0Lobsz6xs0\ndmLgFxKOBGBO0OLyErDhYd8BTkbCPDl384hTtIExhQqAyTJ6XhoDtBds74BR6VOw\nmnI13kTLT2qO1cyvZ3ExjgG2tq/VOE/PEQ634GnZaeBmmTCEOnGXzLDQFCD0qcg1\nef758dkodQV7YWj5Ns+kD7EwKJzls8ciBfxzW3fmbD0FICy6LQYk/G1J8d3CCTPi\nQk9CA+EjUWiD4VQcT55y91VxUSyKlygmZlbYjkpA6gfJ+5Kvkt2jEGL0lbGI4iUX\nZMdc4XYTCLwDSl3ab6eM\n=22pw\n-----END PGP SIGNATURE-----", + "payload": "tree 520c8aedbcd05ccea1560cabad567595da6c2d27\nparent 7488b0041f956e6275050760809a47043e549320\nauthor imatvieiev 1478553821 +0200\ncommitter Anna Henningsen 1479792828 +0100\n\ndoc: add process api data types to documentation\n\nPR-URL: https://github.com/nodejs/node/pull/9505\nReviewed-By: Luigi Pinca \nReviewed-By: Brian White \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/77aded3ba1f6f601b2ca9779099640795a8d9b48", + "html_url": "https://github.com/nodejs/node/commit/77aded3ba1f6f601b2ca9779099640795a8d9b48", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/77aded3ba1f6f601b2ca9779099640795a8d9b48/comments", + "author": { + "login": "imatveev", + "id": 10616396, + "node_id": "MDQ6VXNlcjEwNjE2Mzk2", + "avatar_url": "https://avatars.githubusercontent.com/u/10616396?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/imatveev", + "html_url": "https://github.com/imatveev", + "followers_url": "https://api.github.com/users/imatveev/followers", + "following_url": "https://api.github.com/users/imatveev/following{/other_user}", + "gists_url": "https://api.github.com/users/imatveev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/imatveev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/imatveev/subscriptions", + "organizations_url": "https://api.github.com/users/imatveev/orgs", + "repos_url": "https://api.github.com/users/imatveev/repos", + "events_url": "https://api.github.com/users/imatveev/events{/privacy}", + "received_events_url": "https://api.github.com/users/imatveev/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "7488b0041f956e6275050760809a47043e549320", + "url": "https://api.github.com/repos/nodejs/node/commits/7488b0041f956e6275050760809a47043e549320", + "html_url": "https://github.com/nodejs/node/commit/7488b0041f956e6275050760809a47043e549320" + } + ] + }, + { + "sha": "d09a9f4d2781a114f8926a0355d5117980b1a838", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZDA5YTlmNGQyNzgxYTExNGY4OTI2YTAzNTVkNTExNzk4MGIxYTgzOA==", + "commit": { + "author": { + "name": "William Kapke", + "email": "william.kapke@gmail.com", + "date": "2016-11-10T23:20:43Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:49Z" + }, + "message": "doc: remove Roadmap Working Group\n\nRefs: https://github.com/nodejs/CTC/issues/16\nPR-URL: https://github.com/nodejs/node/pull/9545\nReviewed-By: Ben Noordhuis \nReviewed-By: Rich Trott \nReviewed-By: Luigi Pinca \nReviewed-By: Evan Lucas \nReviewed-By: Colin Ihrig \nReviewed-By: Johan Bergstrƶm \nReviewed-By: Michael Dawson \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "0813bde80c46a5c5e13623084509dcae8b26110a", + "url": "https://api.github.com/repos/nodejs/node/git/trees/0813bde80c46a5c5e13623084509dcae8b26110a" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/d09a9f4d2781a114f8926a0355d5117980b1a838", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9i9AAoJENi59a6uhOTPLiAP/1r7DGnb7//+BHU0aiv7ouXg\nQVnS7tW+YOLdRanQsa+/s825ylb/QIXUntbVzqTEwZlZx90RnszmmNjZspdNEcMn\nOwkQhIYcFE7OF231u6TFl1zXvlsqWuZ81wH7cEDEvJZK9CKXc0r15d8Zi377EqWy\nfamh2422aambpXR8QTrWB4/MxIWbabqmSxilO30+zA8Kh5nVdl0uIQxJOASbTbmx\n4SGOQVPlhxM+LF/dFcM6fjYlPukkQ8/h0p2jm6EGuZogOK7nI5i6KAfu0KSI7n8U\n/N+8pG+1q/3EyJUgG1N9Bc3dCoXTGN57hgvtj7QrB61rKKLW2gnKxLXi1DFB7xwr\ncDBUCj3m3oqhAnbpgItyunNgMUwZodpqETHzs5BT9G3oORCm3v2r4T4wwIPYQaHS\nKjgsfl2RtQtg5a6WC0viS+dGfl9oxYTDeZMImBem8a3Ig1/W57GxmD0SlK+tSMHc\nSpX69AEM58P93g732py0ela8dHRk24B/1dcYctCUfhdA9VTJLzSLnGN/x9qRwOrj\nsVwi/wCPbHYjKZ3/xllsEFPjP+LFHJfplATrNloMql/6GP5K5Xz4aHXNta7xR6Z+\nzhRzFHN6QMgcnfQc3682tsqG5/Nf8cyDaCFu0PLQhP8zWFxg5jI3wN3buPmlkUK+\nXamezCXVXEH9biAG3fPi\n=AGv/\n-----END PGP SIGNATURE-----", + "payload": "tree 0813bde80c46a5c5e13623084509dcae8b26110a\nparent 77aded3ba1f6f601b2ca9779099640795a8d9b48\nauthor William Kapke 1478820043 +0000\ncommitter Anna Henningsen 1479792829 +0100\n\ndoc: remove Roadmap Working Group\n\nRefs: https://github.com/nodejs/CTC/issues/16\nPR-URL: https://github.com/nodejs/node/pull/9545\nReviewed-By: Ben Noordhuis \nReviewed-By: Rich Trott \nReviewed-By: Luigi Pinca \nReviewed-By: Evan Lucas \nReviewed-By: Colin Ihrig \nReviewed-By: Johan Bergstrƶm \nReviewed-By: Michael Dawson \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/d09a9f4d2781a114f8926a0355d5117980b1a838", + "html_url": "https://github.com/nodejs/node/commit/d09a9f4d2781a114f8926a0355d5117980b1a838", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/d09a9f4d2781a114f8926a0355d5117980b1a838/comments", + "author": { + "login": "williamkapke", + "id": 739813, + "node_id": "MDQ6VXNlcjczOTgxMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/739813?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/williamkapke", + "html_url": "https://github.com/williamkapke", + "followers_url": "https://api.github.com/users/williamkapke/followers", + "following_url": "https://api.github.com/users/williamkapke/following{/other_user}", + "gists_url": "https://api.github.com/users/williamkapke/gists{/gist_id}", + "starred_url": "https://api.github.com/users/williamkapke/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/williamkapke/subscriptions", + "organizations_url": "https://api.github.com/users/williamkapke/orgs", + "repos_url": "https://api.github.com/users/williamkapke/repos", + "events_url": "https://api.github.com/users/williamkapke/events{/privacy}", + "received_events_url": "https://api.github.com/users/williamkapke/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "77aded3ba1f6f601b2ca9779099640795a8d9b48", + "url": "https://api.github.com/repos/nodejs/node/commits/77aded3ba1f6f601b2ca9779099640795a8d9b48", + "html_url": "https://github.com/nodejs/node/commit/77aded3ba1f6f601b2ca9779099640795a8d9b48" + } + ] + }, + { + "sha": "7c9e8cbd762505430d4367ca167e93cbae4366ff", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6N2M5ZThjYmQ3NjI1MDU0MzBkNDM2N2NhMTY3ZTkzY2JhZTQzNjZmZg==", + "commit": { + "author": { + "name": "kohta ito", + "email": "kohta110@gmail.com", + "date": "2016-11-12T07:18:05Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:49Z" + }, + "message": "doc: fix the index order in pseudocode of modules\n\nfix the index order in pseudocode of modules.\n\nPR-URL: https://github.com/nodejs/node/pull/9562\nReviewed-By: Shigeki Ohtsu \nReviewed-By: Yosuke Furukawa \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "c4cf3dc3aeaa01e54c604fa98f5e94c77c099d99", + "url": "https://api.github.com/repos/nodejs/node/git/trees/c4cf3dc3aeaa01e54c604fa98f5e94c77c099d99" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/7c9e8cbd762505430d4367ca167e93cbae4366ff", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9i9AAoJENi59a6uhOTP+wYP/3ufptyDJv6Ovvh0qlbBUHvK\n72foBNioqo6THeB9Sqb4hD4M6/im0IG63hKongopMb+DfH8GZkjnSo7b1ccCTLLJ\n0QXgV8hgRMRtWDkEeF5e3E2cK3QBa2B++CRSWWPThljcnnopMEFdoAPGpK4f9S83\nBJSpGPE27N8C9EKddsrZKXXAPczRqTDSLwIXwll+7TVzhZOvVQ9AGvpApEWXQ4sJ\nK0q+ZACiyJqH/Y+lScGLE3KLAXk0vGpam1L6lcq7GdIUmaubMR4+4kHxs9F/kAr2\n/dWVwxOCaSD9tEZEf36FnZz7JZypNl4A5X9Xi3wfstm9AJGb6ren1/3DpqVDbCGo\nzfRM3PthsuTi7z9RVXBo6zUSitGdTTRmF/R4/E10DnEflvPSMjvqndPqFYMw8nTB\nMWF/4Fp8DiYDYOriQb+jQ/7s+58w4/dzxVUuyULP28+sDwM/vEd8ERtwFITAQR2+\n9PV7938EM+UgfkHobbi/IwiUlrERgMjsZolk+jOILypYA423gYTQgnuT51kQNKXj\nd6uCMgaEywflHIca9mIOgMRDJu6l0EBhkPIrLiNhFDiG7SG9bkfjl5aOGZsh6Fio\nWoE45s50KfVMCQPh6HqMW94foE2Z2djNJVJEIjZOQ5evaQ6HapXjHGWMYwzZyABP\nHz4WPilsL/cQZfKjHjQx\n=ceUL\n-----END PGP SIGNATURE-----", + "payload": "tree c4cf3dc3aeaa01e54c604fa98f5e94c77c099d99\nparent d09a9f4d2781a114f8926a0355d5117980b1a838\nauthor kohta ito 1478935085 +0900\ncommitter Anna Henningsen 1479792829 +0100\n\ndoc: fix the index order in pseudocode of modules\n\nfix the index order in pseudocode of modules.\n\nPR-URL: https://github.com/nodejs/node/pull/9562\nReviewed-By: Shigeki Ohtsu \nReviewed-By: Yosuke Furukawa \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/7c9e8cbd762505430d4367ca167e93cbae4366ff", + "html_url": "https://github.com/nodejs/node/commit/7c9e8cbd762505430d4367ca167e93cbae4366ff", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/7c9e8cbd762505430d4367ca167e93cbae4366ff/comments", + "author": { + "login": "koh110", + "id": 1889831, + "node_id": "MDQ6VXNlcjE4ODk4MzE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1889831?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/koh110", + "html_url": "https://github.com/koh110", + "followers_url": "https://api.github.com/users/koh110/followers", + "following_url": "https://api.github.com/users/koh110/following{/other_user}", + "gists_url": "https://api.github.com/users/koh110/gists{/gist_id}", + "starred_url": "https://api.github.com/users/koh110/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/koh110/subscriptions", + "organizations_url": "https://api.github.com/users/koh110/orgs", + "repos_url": "https://api.github.com/users/koh110/repos", + "events_url": "https://api.github.com/users/koh110/events{/privacy}", + "received_events_url": "https://api.github.com/users/koh110/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "d09a9f4d2781a114f8926a0355d5117980b1a838", + "url": "https://api.github.com/repos/nodejs/node/commits/d09a9f4d2781a114f8926a0355d5117980b1a838", + "html_url": "https://github.com/nodejs/node/commit/d09a9f4d2781a114f8926a0355d5117980b1a838" + } + ] + }, + { + "sha": "8c859d58aba3eeba6bd8fd0d8416c6b189709948", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OGM4NTlkNThhYmEzZWViYTZiZDhmZDBkODQxNmM2YjE4OTcwOTk0OA==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-10T05:02:14Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:50Z" + }, + "message": "test: refactor test-tls-inception\n\n* buffer-to-string comparison replaced with string-to-string comparison\n* equal -> strictEqual\n* var -> const\n* rename identifiers to avoid masking\n\nPR-URL: https://github.com/nodejs/node/pull/9536\nReviewed-By: Santiago Gimeno \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Michael Dawson \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "ddb8937212309d2fff9cd6c553ae3fef98af931e", + "url": "https://api.github.com/repos/nodejs/node/git/trees/ddb8937212309d2fff9cd6c553ae3fef98af931e" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/8c859d58aba3eeba6bd8fd0d8416c6b189709948", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9i+AAoJENi59a6uhOTPA6gP/0Fu9Fgp0o8+hBrizHIc81L7\nvnOhMxadU6rHNVfiIRLoiMkT4TpJdU0HEkcNShEY0tAIlxJgGDcq6WmqkQXKJNfw\n5aRIZbH1KiX1mPGP3e3oyYx+H6w9kMeVf9iAlIqcO3iwJRF2Tk49fa7UfeCeQfbf\nS9L28PpJXwaCnRvVij4sVZzLRaTjktY4H8L6dx4lC/aSnZXq85cTMIFWmq+bdbuJ\ncg/dQBPivXndNCAKC4RExt09InlgCavysTXyQCNkTIbkwa8Mrcwel6/2POgPBG1a\nm+4aC+PUZhzZrjIThxKD4kR/3cIErACEpWImfUyK8f8CClZ6z2iGc6fm6U9XWEVe\nwLB2IxyAOMFMUwn302JAVsKi+Z5MlKdkhVPgO+7GtjgFyy/00gJnFUZpfyGuE+lh\nN9vl6I5owBWL50T0a5ZCLOrU+oZ/D0FR5EvcWd5Wy54ghZc68/fXJ5gxFiJouHhA\nMILAY5ODOgTMzM1+C+/zxaHIaLvNrntqDQO3E8VwlvTT222/KfiosU2Y0+pntI6J\nH7Udch0mOm0GzhAwAa7NzcmlXMX0uGyXdZz0nVF9W/MA/ATK8PnyRerlPMy4wD7h\njPVr6DFlQD/7ymXqYb9jhbWgb5yimzrQr74zwKxAI+DX34L7M2Lkh9xOb/VpxM4s\nyiawfprBx6LLOMrT9Qcw\n=WOaI\n-----END PGP SIGNATURE-----", + "payload": "tree ddb8937212309d2fff9cd6c553ae3fef98af931e\nparent 7c9e8cbd762505430d4367ca167e93cbae4366ff\nauthor Rich Trott 1478754134 -0800\ncommitter Anna Henningsen 1479792830 +0100\n\ntest: refactor test-tls-inception\n\n* buffer-to-string comparison replaced with string-to-string comparison\n* equal -> strictEqual\n* var -> const\n* rename identifiers to avoid masking\n\nPR-URL: https://github.com/nodejs/node/pull/9536\nReviewed-By: Santiago Gimeno \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Michael Dawson \nReviewed-By: Colin Ihrig \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/8c859d58aba3eeba6bd8fd0d8416c6b189709948", + "html_url": "https://github.com/nodejs/node/commit/8c859d58aba3eeba6bd8fd0d8416c6b189709948", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/8c859d58aba3eeba6bd8fd0d8416c6b189709948/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "7c9e8cbd762505430d4367ca167e93cbae4366ff", + "url": "https://api.github.com/repos/nodejs/node/commits/7c9e8cbd762505430d4367ca167e93cbae4366ff", + "html_url": "https://github.com/nodejs/node/commit/7c9e8cbd762505430d4367ca167e93cbae4366ff" + } + ] + } + ] + \ No newline at end of file diff --git a/test/_fixtures/pull-request-commits-page-2.json b/test/_fixtures/pull-request-commits-page-2.json new file mode 100644 index 00000000..44aae2ef --- /dev/null +++ b/test/_fixtures/pull-request-commits-page-2.json @@ -0,0 +1,2373 @@ +[ + { + "sha": "dae3d3e53c5bed61dc70cc624c7fac50ca5af92d", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZGFlM2QzZTUzYzViZWQ2MWRjNzBjYzYyNGM3ZmFjNTBjYTVhZjkyZA==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-10T06:09:56Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:50Z" + }, + "message": "test: refactor test-next-tick-error-spin\n\n* use common.mustCall()\n* setTimeout() -> setImmediate()\n* assert() -> assert.strictEqual()\n* var -> const\n* remove unneeded console.log()\n* remove commented-out code\n\nPR-URL: https://github.com/nodejs/node/pull/9537\nReviewed-By: Michael Dawson \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "5f1953500c8f50879ae5ea22da38bf5a4c63863a", + "url": "https://api.github.com/repos/nodejs/node/git/trees/5f1953500c8f50879ae5ea22da38bf5a4c63863a" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/dae3d3e53c5bed61dc70cc624c7fac50ca5af92d", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9i/AAoJENi59a6uhOTPES4P/RGPAwHYX7TqFQ9Kp1JH9TCT\nGY/IZziLRFA+fanAFFDRCNwSM2K3pwBJ9ZTvsoaU4Pb/knPiP1DcD/L28d+nR32d\nSEwKfwY7W5MeW/DAxL6CBeuCVXrrIlwurGBC5qJEwPYS9FsReRfz+/C/gfh/cvTv\ny4nlSyns3akLLdjOn+Cf+yiMBuznEzAS5yZgaZs2Q+XYsj0NacBQ8n4e7KUvXVcW\nAUDH6qyOLJc1O4gwTmC6DSaMMB9/xlc99ot+QGyDfdK09CzQNLYWHnAMI96pCOSk\n8iVV9diF3DQXvvLEE9VnUjHrIF4cK/GPt0vZ3djZm1yEeLQ7l14YYIDOzFLfHlpV\n6YxPFbUsV5AG7CotIuGZSOQ/LbVlOgGz+uquydtrRClcMizmQQgM0FwhuwRTG9WQ\nlGwSKEbbdlWPWpyu9vsyFZubc8pP00hERe5i70DOwILd0p6mkmJmYR2r7lQmE1+H\nG56qRwqJ3xGloEmyDGulaBrIRJXp/rwtHuMc2ncKyWdzz3D5hVKQfUqncDKxuZhL\nhBHHEOtAMCNRtDBgzpidYGe+/cjcaiWczmmtjI31RKHxiuTDeuntQm977cE/i8Bj\nKXaOg2eXlc4WI6ZV3hz6sVAiE5jIKxc65Z6P5KaXj5Hy+f1iUNYgdxVjw0QJM/y2\nvS+UN3GhMq1d45yTGI7Z\n=jE0w\n-----END PGP SIGNATURE-----", + "payload": "tree 5f1953500c8f50879ae5ea22da38bf5a4c63863a\nparent 8c859d58aba3eeba6bd8fd0d8416c6b189709948\nauthor Rich Trott 1478758196 -0800\ncommitter Anna Henningsen 1479792830 +0100\n\ntest: refactor test-next-tick-error-spin\n\n* use common.mustCall()\n* setTimeout() -> setImmediate()\n* assert() -> assert.strictEqual()\n* var -> const\n* remove unneeded console.log()\n* remove commented-out code\n\nPR-URL: https://github.com/nodejs/node/pull/9537\nReviewed-By: Michael Dawson \nReviewed-By: Colin Ihrig \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/dae3d3e53c5bed61dc70cc624c7fac50ca5af92d", + "html_url": "https://github.com/nodejs/node/commit/dae3d3e53c5bed61dc70cc624c7fac50ca5af92d", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/dae3d3e53c5bed61dc70cc624c7fac50ca5af92d/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "8c859d58aba3eeba6bd8fd0d8416c6b189709948", + "url": "https://api.github.com/repos/nodejs/node/commits/8c859d58aba3eeba6bd8fd0d8416c6b189709948", + "html_url": "https://github.com/nodejs/node/commit/8c859d58aba3eeba6bd8fd0d8416c6b189709948" + } + ] + }, + { + "sha": "64dec14502ab41036c23da7f501b4fc83945f427", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NjRkZWMxNDUwMmFiNDEwMzZjMjNkYTdmNTAxYjRmYzgzOTQ1ZjQyNw==", + "commit": { + "author": { + "name": "ikasumi_wt", + "email": "wtsnyk13@gmail.com", + "date": "2016-11-12T07:19:47Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:51Z" + }, + "message": "doc: fix e.g., to e.g. in doc/http.md\n\nfix e.g., to e.g. in doc/http.md\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9564\nReviewed-By: Yosuke Furukawa \nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "de2edfd0a528a521c519c7274d7f9ace7fedb5f6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/de2edfd0a528a521c519c7274d7f9ace7fedb5f6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/64dec14502ab41036c23da7f501b4fc83945f427", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9i/AAoJENi59a6uhOTPQ78P/R3yeOBZzIPTUPNh+xaQT+uz\nUX69mQxFe13gk6S6HuikShZpkE4VHm7PpcoCez0uATJUd+d9pJgIwkHp3l/6VVih\nL19YnFnVq1uSU3bk4np4BgCtG89EfM2sLfxEzSoKXQbSwNWWgnrOhZf2aWJQUIQ7\n7CIHKmzSVSm46dITq8+Wrybg/4tXf+ADSvYL/QmSX8AnV8YpT3JhdRWLWFbvOQpM\nXfkoHJN+XThAGHoRFsBYdz32SKUw+SQ0164jXJ+ufwOT/1a8OeWbgqSfnGZ9yuDw\ntQ8qZuv6HAEWEBmtceOkjsCYhgTSr1mxBZVEsYAuCV+YnMmis6NXPGxwDowJKCT5\nJorpDEKtV//uSp+qkBy3YMwfXHfsTZM9PZwJS+TVngOGk3CN9wVDl8KRCDN+7Sbd\nV07PnljvsXlsdsD9u2haLsQKk6kOcfSbwK8c4Pn7oivzZMjwx0WxEoEZ6FNN8gag\nQMzruK/LEWNOqvMxZscrTAds95yB8jQ+yenU4ST7rMzLf7l5YWsOrSkMiCZM+l2U\nigJvdVy/0iCQ80AfW2FEtkM0V78l5IK0U2X+ejK/ov/HcGR2ajX4C07NixH++BmK\n+6Katm/Y2fVYjzVvb8EGEw3lhZzL01yBJpSKZTBl+IzUTGfMtuMpJG+IMhDa3z8P\nbL7sW4RKprxiub9vbpmd\n=3Htw\n-----END PGP SIGNATURE-----", + "payload": "tree de2edfd0a528a521c519c7274d7f9ace7fedb5f6\nparent dae3d3e53c5bed61dc70cc624c7fac50ca5af92d\nauthor ikasumi_wt 1478935187 +0900\ncommitter Anna Henningsen 1479792831 +0100\n\ndoc: fix e.g., to e.g. in doc/http.md\n\nfix e.g., to e.g. in doc/http.md\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9564\nReviewed-By: Yosuke Furukawa \nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/64dec14502ab41036c23da7f501b4fc83945f427", + "html_url": "https://github.com/nodejs/node/commit/64dec14502ab41036c23da7f501b4fc83945f427", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/64dec14502ab41036c23da7f501b4fc83945f427/comments", + "author": { + "login": "ikasumiwt", + "id": 4006425, + "node_id": "MDQ6VXNlcjQwMDY0MjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/4006425?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ikasumiwt", + "html_url": "https://github.com/ikasumiwt", + "followers_url": "https://api.github.com/users/ikasumiwt/followers", + "following_url": "https://api.github.com/users/ikasumiwt/following{/other_user}", + "gists_url": "https://api.github.com/users/ikasumiwt/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ikasumiwt/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ikasumiwt/subscriptions", + "organizations_url": "https://api.github.com/users/ikasumiwt/orgs", + "repos_url": "https://api.github.com/users/ikasumiwt/repos", + "events_url": "https://api.github.com/users/ikasumiwt/events{/privacy}", + "received_events_url": "https://api.github.com/users/ikasumiwt/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "dae3d3e53c5bed61dc70cc624c7fac50ca5af92d", + "url": "https://api.github.com/repos/nodejs/node/commits/dae3d3e53c5bed61dc70cc624c7fac50ca5af92d", + "html_url": "https://github.com/nodejs/node/commit/dae3d3e53c5bed61dc70cc624c7fac50ca5af92d" + } + ] + }, + { + "sha": "e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZTdlYjljY2RjZmE3MTkzYjdiMzczNmIyZjY1MjJiOGQ1YzQ5M2Q0MA==", + "commit": { + "author": { + "name": "Yoshiya Hinosawa", + "email": "stibium121@gmail.com", + "date": "2016-11-12T07:26:52Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:52Z" + }, + "message": "test: improve test-stream2-objects.js\n\nThis commit improves the test cases in\ntest-stream2-objects.js by using assert.strictEqual\ninstead of assert.equal.\n\nThis is a part of Code And Learn at NodeFest 2016\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9565\nReviewed-By: Shigeki Ohtsu \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "f9c9455abce7f05da782836ded7df77a66400da0", + "url": "https://api.github.com/repos/nodejs/node/git/trees/f9c9455abce7f05da782836ded7df77a66400da0" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jAAAoJENi59a6uhOTPMCYQAJY7brLIwrx7q9ObiCqr6Noi\nExflJXq1wDe6R5pPFwCZRg4MTxDvXKXe2hKtbdv44q7CKVu779olBwS/vyrRxusX\nt03E16mV2RbuxregVGVqmrn9Ix1cdYgdDxPwB3/gn/WjeYIXwRIncre/zxxuhp+3\n74ib84wz06yxfVn1lF+Zmr6MGooT2xHY+msnrl+nQ7ecxF6Htw2BIdXteZcvl0ZT\n9V6X8Ta0YugHyz1m0i+9uVATRmIfyUf3hk9AujKuU9/2ej0W2wnoatkw8q7S+BA7\nL+LK/iI/+FxqE0PJAYky8wBf3yyVIE2C9777RHAIfAeDx+qFaUbSP5h/RUbRqRuv\npN76misQgULl26XAE49bJmlaBTriGUJVp9zgvF9pAvNipJ7DbB8nTGNyr/uXwyAL\nGpIH/tP5YHq7mOxLO//wP64XSK7F4CpGlzmrNRyTRvYKTjZ7isSa0OEa/AVgvMgW\nkZfvdERrGLmhXcK77KmZk+Hv8VQcRp1cRBvejUN1hyEWZju4cnklQibke8Pu8fGX\n8UvbEbU9zBetLgX5haxH+uufivaL3a+47BQ9krEX0l4EIjbrJys6vd5n/adnd9pD\nQkTPgGCj6ywgVEryfG6oaAKYIi/bfaGZXyRot9nlTGe2YZkL6MVeYgz7nAq84JIl\n/T7/593VKlPKDvgfUmeB\n=HMAz\n-----END PGP SIGNATURE-----", + "payload": "tree f9c9455abce7f05da782836ded7df77a66400da0\nparent 64dec14502ab41036c23da7f501b4fc83945f427\nauthor Yoshiya Hinosawa 1478935612 +0900\ncommitter Anna Henningsen 1479792832 +0100\n\ntest: improve test-stream2-objects.js\n\nThis commit improves the test cases in\ntest-stream2-objects.js by using assert.strictEqual\ninstead of assert.equal.\n\nThis is a part of Code And Learn at NodeFest 2016\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9565\nReviewed-By: Shigeki Ohtsu \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40", + "html_url": "https://github.com/nodejs/node/commit/e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40/comments", + "author": { + "login": "kt3k", + "id": 613956, + "node_id": "MDQ6VXNlcjYxMzk1Ng==", + "avatar_url": "https://avatars.githubusercontent.com/u/613956?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kt3k", + "html_url": "https://github.com/kt3k", + "followers_url": "https://api.github.com/users/kt3k/followers", + "following_url": "https://api.github.com/users/kt3k/following{/other_user}", + "gists_url": "https://api.github.com/users/kt3k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kt3k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kt3k/subscriptions", + "organizations_url": "https://api.github.com/users/kt3k/orgs", + "repos_url": "https://api.github.com/users/kt3k/repos", + "events_url": "https://api.github.com/users/kt3k/events{/privacy}", + "received_events_url": "https://api.github.com/users/kt3k/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "64dec14502ab41036c23da7f501b4fc83945f427", + "url": "https://api.github.com/repos/nodejs/node/commits/64dec14502ab41036c23da7f501b4fc83945f427", + "html_url": "https://github.com/nodejs/node/commit/64dec14502ab41036c23da7f501b4fc83945f427" + } + ] + }, + { + "sha": "4ae4e00ae94a0b0039876e06db59381ccfa27998", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NGFlNGUwMGFlOTRhMGIwMDM5ODc2ZTA2ZGI1OTM4MWNjZmEyNzk5OA==", + "commit": { + "author": { + "name": "YutamaKotaro", + "email": "california.dreamin.never.die@gmail.com", + "date": "2016-11-12T07:36:06Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:52Z" + }, + "message": "doc: fix typo about cluster doc, (eg. -> e.g.)\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9568\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "c8fb88289d094c386428bfd93876ba735bdf4dae", + "url": "https://api.github.com/repos/nodejs/node/git/trees/c8fb88289d094c386428bfd93876ba735bdf4dae" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/4ae4e00ae94a0b0039876e06db59381ccfa27998", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jAAAoJENi59a6uhOTPMtsP/0vjczEj4jnHI3aP5yhu3YPU\ntefagfiPqNwQEzPhUzN2O31+53RuhajpZra0vQIaaIDc3Tv65WOOI56PUskiAHTS\nD6xtF/dx9EW3OrMcpgD9U/bxykrgodNvr1QtR6mvqGKubBgU9GXtgINExX5fiO/l\ncY9+OMdD/Gcpj3ILV8MuGP3u/0bWrQn0cj10W/32IH38HCK11wr5hlVg2lPGOsxJ\n+cqYmHhnl1D0ZcU9KZQQ0+jffrj+Ua6REl2cTfWEf4LsUnXZumq2L1d70ialwslc\n/b+Ehe70wzDx3KBhXpLL2VbkKrUxNlr4FWfoLJw2qKQkq69ln6l0u7C/gVcMAxaD\n5x6epZrxq9uVDgKMp+UAi1GA60E6Q1yzNartR58X4hy5EXZxdViTb/t1FTbygh8X\nidZM8fIUSLFdMHPuKTZJoMNIfPVLgCBub8GGI8h6gipUA4Tp7o6/yNPUdP32AV2q\nT/ayqnJFf4l5tojmBS2HMdch5A4KWp6yNyBlnSl60+bwIW+bISGmy/hpQ3IK368I\nS5hg6nhJqzuoj/rzIUV99qjD2SdcUNotw2a2Gb7lklnSZr7e7Uh/wJriUSpM5thq\npo4ErVfPH08fMNzZ2Jq4vOhDNHzxT0nyAL+GcLW9S8oslfrkM4tMT59REAf+9kzS\n4HOKbDCV+VsA4SDZ9wV4\n=SqmT\n-----END PGP SIGNATURE-----", + "payload": "tree c8fb88289d094c386428bfd93876ba735bdf4dae\nparent e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40\nauthor YutamaKotaro 1478936166 +0900\ncommitter Anna Henningsen 1479792832 +0100\n\ndoc: fix typo about cluster doc, (eg. -> e.g.)\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9568\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/4ae4e00ae94a0b0039876e06db59381ccfa27998", + "html_url": "https://github.com/nodejs/node/commit/4ae4e00ae94a0b0039876e06db59381ccfa27998", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/4ae4e00ae94a0b0039876e06db59381ccfa27998/comments", + "author": { + "login": "YutamaKotaro", + "id": 19544218, + "node_id": "MDQ6VXNlcjE5NTQ0MjE4", + "avatar_url": "https://avatars.githubusercontent.com/u/19544218?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/YutamaKotaro", + "html_url": "https://github.com/YutamaKotaro", + "followers_url": "https://api.github.com/users/YutamaKotaro/followers", + "following_url": "https://api.github.com/users/YutamaKotaro/following{/other_user}", + "gists_url": "https://api.github.com/users/YutamaKotaro/gists{/gist_id}", + "starred_url": "https://api.github.com/users/YutamaKotaro/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/YutamaKotaro/subscriptions", + "organizations_url": "https://api.github.com/users/YutamaKotaro/orgs", + "repos_url": "https://api.github.com/users/YutamaKotaro/repos", + "events_url": "https://api.github.com/users/YutamaKotaro/events{/privacy}", + "received_events_url": "https://api.github.com/users/YutamaKotaro/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40", + "url": "https://api.github.com/repos/nodejs/node/commits/e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40", + "html_url": "https://github.com/nodejs/node/commit/e7eb9ccdcfa7193b7b3736b2f6522b8d5c493d40" + } + ] + }, + { + "sha": "58fc7a137c71ecc9abdad40846259121f26f8328", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NThmYzdhMTM3YzcxZWNjOWFiZGFkNDA4NDYyNTkxMjFmMjZmODMyOA==", + "commit": { + "author": { + "name": "MURAKAMI Masahiko", + "email": "fossamagna2@gmail.com", + "date": "2016-11-12T08:04:42Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:53Z" + }, + "message": "test: change from setTimeout to setImmediate\n\nThis is a part of Code And Learn at NodeFest 2016 Challenge\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9578\nReviewed-By: Yosuke Furukawa \nReviewed-By: Shigeki Ohtsu \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "5c2557e934f01a6b6b8fe305e09c79e7153a292e", + "url": "https://api.github.com/repos/nodejs/node/git/trees/5c2557e934f01a6b6b8fe305e09c79e7153a292e" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/58fc7a137c71ecc9abdad40846259121f26f8328", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jBAAoJENi59a6uhOTPutAP/jmUK7pPylnxggSs9ALYn9iW\naWPfBuJ+gMQC0XdoKeOp/bALJUNFl9oziwD3HTXOA4hEolvzL+caPy5pxHnNrWHY\nK5ABHcPsPRloImlGWbdV/Fh6V8lou+lPtFXxcYYq0jUV6B+NpmMZwXWdDEEfUDUV\nKkNW8+zXZvnNxnXxON8zeMFUiN9WG/MWp9m82ft1MebEoWPBt5Ixcfc5fyxKSV3z\n++8hR6Tm5RbfLfJuPBleJmykArUuUDHScjQPSYpXTK9uiAqfaE1K8cbtRc3y1IhN\nga/BIUSuwHTckEBTwD8OzcrrjSxqNoApKAWRz6TUdl7zQIGCoTrSgmcoP0OgtKUZ\nGvoeDzmNnFkFm2VMkqm+wlcXbN60VnyIYUAVulPloeb5e/NwEuW0jS4IllFiVBUy\npnx1W+TU1cwo2hFEsC98luMN1SsR66E8OB6FxQFR9NWbagmtM7UQAuixyYrjAddU\nvoslCHcGyxcm+DsjMcHTJhziXFC/C/NpeSwItJcXuSr3G5AfGU9ns4YeNAUDkBSb\nfwyST7Bu9BLJQ3xk2Jl40i510Tj8uGoj8gKQls9aPSC1nCcVfkq+ZTKnaWXXi6eg\n78vaOf1puDVTXNRlWSQh7o5CzJ2KickViToUVLFu2tVEvDBxB/lDuM6kYisz5wbg\nTpZP46xVLTMksAmyKEo6\n=RZNN\n-----END PGP SIGNATURE-----", + "payload": "tree 5c2557e934f01a6b6b8fe305e09c79e7153a292e\nparent 4ae4e00ae94a0b0039876e06db59381ccfa27998\nauthor MURAKAMI Masahiko 1478937882 +0900\ncommitter Anna Henningsen 1479792833 +0100\n\ntest: change from setTimeout to setImmediate\n\nThis is a part of Code And Learn at NodeFest 2016 Challenge\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9578\nReviewed-By: Yosuke Furukawa \nReviewed-By: Shigeki Ohtsu \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/58fc7a137c71ecc9abdad40846259121f26f8328", + "html_url": "https://github.com/nodejs/node/commit/58fc7a137c71ecc9abdad40846259121f26f8328", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/58fc7a137c71ecc9abdad40846259121f26f8328/comments", + "author": { + "login": "fossamagna", + "id": 1638848, + "node_id": "MDQ6VXNlcjE2Mzg4NDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/1638848?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fossamagna", + "html_url": "https://github.com/fossamagna", + "followers_url": "https://api.github.com/users/fossamagna/followers", + "following_url": "https://api.github.com/users/fossamagna/following{/other_user}", + "gists_url": "https://api.github.com/users/fossamagna/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fossamagna/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fossamagna/subscriptions", + "organizations_url": "https://api.github.com/users/fossamagna/orgs", + "repos_url": "https://api.github.com/users/fossamagna/repos", + "events_url": "https://api.github.com/users/fossamagna/events{/privacy}", + "received_events_url": "https://api.github.com/users/fossamagna/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "4ae4e00ae94a0b0039876e06db59381ccfa27998", + "url": "https://api.github.com/repos/nodejs/node/commits/4ae4e00ae94a0b0039876e06db59381ccfa27998", + "html_url": "https://github.com/nodejs/node/commit/4ae4e00ae94a0b0039876e06db59381ccfa27998" + } + ] + }, + { + "sha": "92bd19e0bdfb24776db6c5b325975843435acc62", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OTJiZDE5ZTBiZGZiMjQ3NzZkYjZjNWIzMjU5NzU4NDM0MzVhY2M2Mg==", + "commit": { + "author": { + "name": "Thomas Watson Steen", + "email": "w@tson.dk", + "date": "2016-11-12T03:17:52Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:53Z" + }, + "message": "doc: simplify process.memoryUsage() example code\n\nUsing util.inspect doesn't change the output in this case\n\nPR-URL: https://github.com/nodejs/node/pull/9560\nReviewed-By: Myles Borins \nReviewed-By: Rich Trott \nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "3226843f794c1d83da28011f1e132fb60eac719e", + "url": "https://api.github.com/repos/nodejs/node/git/trees/3226843f794c1d83da28011f1e132fb60eac719e" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/92bd19e0bdfb24776db6c5b325975843435acc62", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jBAAoJENi59a6uhOTPrO8P/3LDk3SXx50eP9/XV+gynRKa\nIpGcZxJgIiMTK00v1bdRDhHRqp5n2HtJ3OTqTG742s5b5f67AC4cateq4DgYNFw/\nKbzggaJKycP0tiggNIFUdqCODxWERvVfzN4XOgUKjbIVEHaVPgQwHdkhgjgaO3XA\nhLnD/T15cwKhE0P54pb2aVCYCi1cL2qbg/JrvzGaQXBUWCscauxNyJZiIwKQk6mn\ncf9X8ZRQa0hN05ryxzk7k16hcVhIY/ghH2U5Pl6PtJwdYSqdfsAeXviAhv0HbaiZ\nO6rmaiM8FziaUxfqUit8bkmLmvPe793WZh3rEZYOqeo4u6t9osYgsfPA2gBDb9kV\n4MmMmdhDTYQ32CEUoIAS9BNYFZSYAzo3OHOidmHAtBEM9jtLPZZ7fL7Nk6IuXdkA\n59NCQ9DyWHi9EUjS40il8fZMDjIYSBAKOhwrYhHGwd06WDaUfVHbl5J4MSeo9TC4\no47GDxAACHGxmUYTYVcGnRs4kxBJZKasmlfgCC+t1hzJv2nsVQgJbfG3PRmp8lbn\nkP4k+o9KJkUvf16/13/SWxUWrKyOwBnLX8nZX80+7uZpQiEN6iwhAJXhYsC3FHE+\n0UizZ3dciDrOcGYR4cAJQPYtcRRQECH+mBXfzQSYUGnyQh5x40ygacw0fLpNnQBz\npME7q6oesPiLSMCYAyrp\n=hUPT\n-----END PGP SIGNATURE-----", + "payload": "tree 3226843f794c1d83da28011f1e132fb60eac719e\nparent 58fc7a137c71ecc9abdad40846259121f26f8328\nauthor Thomas Watson Steen 1478920672 +0900\ncommitter Anna Henningsen 1479792833 +0100\n\ndoc: simplify process.memoryUsage() example code\n\nUsing util.inspect doesn't change the output in this case\n\nPR-URL: https://github.com/nodejs/node/pull/9560\nReviewed-By: Myles Borins \nReviewed-By: Rich Trott \nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/92bd19e0bdfb24776db6c5b325975843435acc62", + "html_url": "https://github.com/nodejs/node/commit/92bd19e0bdfb24776db6c5b325975843435acc62", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/92bd19e0bdfb24776db6c5b325975843435acc62/comments", + "author": { + "login": "watson", + "id": 10602, + "node_id": "MDQ6VXNlcjEwNjAy", + "avatar_url": "https://avatars.githubusercontent.com/u/10602?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/watson", + "html_url": "https://github.com/watson", + "followers_url": "https://api.github.com/users/watson/followers", + "following_url": "https://api.github.com/users/watson/following{/other_user}", + "gists_url": "https://api.github.com/users/watson/gists{/gist_id}", + "starred_url": "https://api.github.com/users/watson/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/watson/subscriptions", + "organizations_url": "https://api.github.com/users/watson/orgs", + "repos_url": "https://api.github.com/users/watson/repos", + "events_url": "https://api.github.com/users/watson/events{/privacy}", + "received_events_url": "https://api.github.com/users/watson/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "58fc7a137c71ecc9abdad40846259121f26f8328", + "url": "https://api.github.com/repos/nodejs/node/commits/58fc7a137c71ecc9abdad40846259121f26f8328", + "html_url": "https://github.com/nodejs/node/commit/58fc7a137c71ecc9abdad40846259121f26f8328" + } + ] + }, + { + "sha": "d532a57a4b007e5a74ba9901c6aa1eff8ce676af", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZDUzMmE1N2E0YjAwN2U1YTc0YmE5OTAxYzZhYTFlZmY4Y2U2NzZhZg==", + "commit": { + "author": { + "name": "Roman Reiss", + "email": "me@silverwind.io", + "date": "2016-11-11T20:29:01Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:54Z" + }, + "message": "doc: consistent 'Returns:'\n\nFor consistency, changed all `Return:` to `Returns:` in the API docs.\n\nPR-URL: https://github.com/nodejs/node/pull/9554\nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: Jeremiah Senkpiel ", + "tree": { + "sha": "a0259899e69a964aebd7daf44b4aca11b6d85a42", + "url": "https://api.github.com/repos/nodejs/node/git/trees/a0259899e69a964aebd7daf44b4aca11b6d85a42" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/d532a57a4b007e5a74ba9901c6aa1eff8ce676af", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jCAAoJENi59a6uhOTPHwwP/0+ES6fQ+2l4498bzb/Fjh4m\ndRBh0sFjEzk/ThrrAp12s6XHiwBY3pgtPHf6ph6qPdnpbQqt+uwpnoED7imNppGC\npHSClyp5JRkKrcA4FSfk073p8TS3Y0QnA+1JeELNl1p01jjWnUZsS8G8ax+Bk9On\nen6M65uwHZr+gGzCdTk+s8hx5iF52nCkU8+nI5lBTfh3kPzcA0Liz8h1iOAcANps\n0QPwfaSNGI+FCdqd8/GR/AKDefZ9xzl2G3XxyT9sZ+InPFrY6PWP70kVMbBbxLL3\nT+CbWWncCsDlZZ2n1O9tpaBQPedDJ8GjaqYVmGCKt2i1OxNekk5OwLX1jHYLHB9k\nyvmQvve0anXcin0Cl6Bc1rDKJlEH1Y8rpEkil6B+Rbg8JtrIqaKNZ+O/+FFfWKHQ\n9GjXy4+D3nilPQbJynRFW4org0QNQKUMG1gI7EnxngW/23NTGk+XRw15jZqvZh/3\noWtqXUzefpQyMldRWnDDe8xSX198KFtkM2WIgxCajHPLXzLkJ0HT4ElRp5xc8/lx\nXWz/9SwdpbJ4PrLywjkmDVEU7VBdtBa6vunu3XDAwI5mtZpN3wtMx9pn+hkzGz3z\ncdb3u+S1mHYnpccC02bSkf7ABHlunckir0MIdwTpIq62/gIScb0PqrG+wONHA924\ngvke2ddG7u6k+C7kWu2j\n=rYur\n-----END PGP SIGNATURE-----", + "payload": "tree a0259899e69a964aebd7daf44b4aca11b6d85a42\nparent 92bd19e0bdfb24776db6c5b325975843435acc62\nauthor Roman Reiss 1478896141 +0100\ncommitter Anna Henningsen 1479792834 +0100\n\ndoc: consistent 'Returns:'\n\nFor consistency, changed all `Return:` to `Returns:` in the API docs.\n\nPR-URL: https://github.com/nodejs/node/pull/9554\nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: Jeremiah Senkpiel \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/d532a57a4b007e5a74ba9901c6aa1eff8ce676af", + "html_url": "https://github.com/nodejs/node/commit/d532a57a4b007e5a74ba9901c6aa1eff8ce676af", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/d532a57a4b007e5a74ba9901c6aa1eff8ce676af/comments", + "author": { + "login": "silverwind", + "id": 115237, + "node_id": "MDQ6VXNlcjExNTIzNw==", + "avatar_url": "https://avatars.githubusercontent.com/u/115237?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/silverwind", + "html_url": "https://github.com/silverwind", + "followers_url": "https://api.github.com/users/silverwind/followers", + "following_url": "https://api.github.com/users/silverwind/following{/other_user}", + "gists_url": "https://api.github.com/users/silverwind/gists{/gist_id}", + "starred_url": "https://api.github.com/users/silverwind/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/silverwind/subscriptions", + "organizations_url": "https://api.github.com/users/silverwind/orgs", + "repos_url": "https://api.github.com/users/silverwind/repos", + "events_url": "https://api.github.com/users/silverwind/events{/privacy}", + "received_events_url": "https://api.github.com/users/silverwind/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "92bd19e0bdfb24776db6c5b325975843435acc62", + "url": "https://api.github.com/repos/nodejs/node/commits/92bd19e0bdfb24776db6c5b325975843435acc62", + "html_url": "https://github.com/nodejs/node/commit/92bd19e0bdfb24776db6c5b325975843435acc62" + } + ] + }, + { + "sha": "d83cb48b3a2059abec3cfb800a65aa5c013d2be0", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZDgzY2I0OGIzYTIwNTlhYmVjM2NmYjgwMGE2NWFhNWMwMTNkMmJlMA==", + "commit": { + "author": { + "name": "Daijiro Yamada", + "email": "yamad@daiji.ro", + "date": "2016-11-12T07:24:46Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:54Z" + }, + "message": "doc: fix typo e.g., => e.g.\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9563\nReviewed-By: Yosuke Furukawa \nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "93843f98d6a955c4c6ce9239a4ed9962ea2f41d3", + "url": "https://api.github.com/repos/nodejs/node/git/trees/93843f98d6a955c4c6ce9239a4ed9962ea2f41d3" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/d83cb48b3a2059abec3cfb800a65aa5c013d2be0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jCAAoJENi59a6uhOTPGdgQALu/6R3ZPJc/IWvEV0LPwqNV\niq6Fp8FCewc4bz8wop1SA2i0gNsTy9QA75bEz8nlosZ58JsUy04ZzJsmdUmuP6z0\n45DLiEQzXIrojAjMxcOb5nM1lxvLbOYtwcQqhDtNIzum/fZAixYp0T5COJbR/Y6w\nRy6mLJkJAMLVYkTEyfthDsJL14Dk7pT4LqWqYb/nwZ9QOXIEEvtvRaqotn0pLUKB\nevXBZjV+YBGQw6xLTYyQYo/fB0vm8P7xH1EmYYCA4qmJkRJjrK7sMLhkY/pLIVOH\nzKOATBq3cYR3breR43aaNlzZQRtVJrn6cAtv4mc49mgIzgmzRV2hnftzQEiI52o6\n8jvEZSZh/SpyVBkwk4uWklqpI227an2FYa404aNf9RA+p2PTLJh8WYEhJvX9sJ6U\n+ajk2JbmjmZFHfQTM7ophTJwJGnHGL8flCMLJMZVCy9eExDLNrTfgVEPvt6IMUPz\nr+mo43/2FlRZWL4c28pprBoHkmXD11w2cWQuWHWwjM8rbaYFn0reMl2I/NGxJeZG\n3PsuasIwQ5GyYUCB2P2V0Eu/nEhUBjfmfnRhQ3bZ1ObXluWk8gU1gMzbPSnhwuXn\nvuWJ3klHKpsroZCh6tiMVTqFzHGR8/2WTm9XCmeK3boKGr9MlJNbBtIMXizKeROk\nt5C/3tJbKF2X6Y/l7utX\n=hbzk\n-----END PGP SIGNATURE-----", + "payload": "tree 93843f98d6a955c4c6ce9239a4ed9962ea2f41d3\nparent d532a57a4b007e5a74ba9901c6aa1eff8ce676af\nauthor Daijiro Yamada 1478935486 +0900\ncommitter Anna Henningsen 1479792834 +0100\n\ndoc: fix typo e.g., => e.g.\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9563\nReviewed-By: Yosuke Furukawa \nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/d83cb48b3a2059abec3cfb800a65aa5c013d2be0", + "html_url": "https://github.com/nodejs/node/commit/d83cb48b3a2059abec3cfb800a65aa5c013d2be0", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/d83cb48b3a2059abec3cfb800a65aa5c013d2be0/comments", + "author": { + "login": "dorako321", + "id": 857898, + "node_id": "MDQ6VXNlcjg1Nzg5OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/857898?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/dorako321", + "html_url": "https://github.com/dorako321", + "followers_url": "https://api.github.com/users/dorako321/followers", + "following_url": "https://api.github.com/users/dorako321/following{/other_user}", + "gists_url": "https://api.github.com/users/dorako321/gists{/gist_id}", + "starred_url": "https://api.github.com/users/dorako321/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/dorako321/subscriptions", + "organizations_url": "https://api.github.com/users/dorako321/orgs", + "repos_url": "https://api.github.com/users/dorako321/repos", + "events_url": "https://api.github.com/users/dorako321/events{/privacy}", + "received_events_url": "https://api.github.com/users/dorako321/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "d532a57a4b007e5a74ba9901c6aa1eff8ce676af", + "url": "https://api.github.com/repos/nodejs/node/commits/d532a57a4b007e5a74ba9901c6aa1eff8ce676af", + "html_url": "https://github.com/nodejs/node/commit/d532a57a4b007e5a74ba9901c6aa1eff8ce676af" + } + ] + }, + { + "sha": "163397a206aecce0b18b304f73456a569bb06733", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MTYzMzk3YTIwNmFlY2NlMGIxOGIzMDRmNzM0NTZhNTY5YmIwNjczMw==", + "commit": { + "author": { + "name": "Fedor Indutny", + "email": "fedor@indutny.com", + "date": "2016-11-12T21:49:40Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:33:55Z" + }, + "message": "process: add `process.memoryUsage.external`\n\nPR-URL: https://github.com/nodejs/node/pull/9587\nReviewed-By: Ben Noordhuis \nReviewed-By: Matteo Collina \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Johan Bergstrƶm \nReviewed-By: Colin Ihrig \nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "2a48e10db5ae481b1ea3a3b0f34635d791cdade6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/2a48e10db5ae481b1ea3a3b0f34635d791cdade6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/163397a206aecce0b18b304f73456a569bb06733", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9jDAAoJENi59a6uhOTPJmYP/iJXNf1gC87z0ky1qOV1/vRR\nUX1eX4H6O/FFFWAoYmAHQ9LqqdXLQb9qu+aBZ4Uta9UZvJyG3ncNVBaF9fqi3DLh\n6LxdUVyTWxYQpuwi48U5O42eiqspZhg1dn95TI1IluwA0aJO+IC5NL6d/N/kfXcp\nACbTVab2cqAaEQesYNRzUsaKPWdjgbvK2icmFidiwM1sZoOE52VpK6iHjWmqKcQD\nIc/chOQHMV+cJQahIFT6n4fCGlY7O4b43X9pKFP1EDUtMDbdSy4wfmW9ql2xtbiy\n0fwmyznoo3PVoPS430weUpUX1cbFrDs7HYLFOsSKVe4e3+7uSCFfCwKLWuaiv4qr\n5VyDtGUuOSemY8xHFTjDUZ3lBVrv6i8hNiuB8KFJb5WMuIoj4Ei+A2rRGcrVcfCB\nTuXqoUSGccZDV/ez+YZozoXadOHmTY5JJjhDxJaUxOaXtffF71o2vIdEnUEXoXE+\neHW/22GHfDDhI+6ruQZQA4KK9lNstgKRueQQDSOg0vqzeGSIV+/ZgryyhSFulXfx\nHR6mvhxs04nziunJmA2xRfUWZU1+k14Xs/01vU0zdRlgyCtj/0kNaJ/60f5pqSV4\nkTn+th876geBn7TfLagBPXSQLQlFkCoN4cMlfycPTS5WMW+9XIpqEVCTuO8ONJGs\nfhH0W90YmNkf0EQqVaHW\n=8B7L\n-----END PGP SIGNATURE-----", + "payload": "tree 2a48e10db5ae481b1ea3a3b0f34635d791cdade6\nparent d83cb48b3a2059abec3cfb800a65aa5c013d2be0\nauthor Fedor Indutny 1478987380 -0500\ncommitter Anna Henningsen 1479792835 +0100\n\nprocess: add `process.memoryUsage.external`\n\nPR-URL: https://github.com/nodejs/node/pull/9587\nReviewed-By: Ben Noordhuis \nReviewed-By: Matteo Collina \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Johan Bergstrƶm \nReviewed-By: Colin Ihrig \nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/163397a206aecce0b18b304f73456a569bb06733", + "html_url": "https://github.com/nodejs/node/commit/163397a206aecce0b18b304f73456a569bb06733", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/163397a206aecce0b18b304f73456a569bb06733/comments", + "author": { + "login": "indutny", + "id": 238531, + "node_id": "MDQ6VXNlcjIzODUzMQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/238531?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/indutny", + "html_url": "https://github.com/indutny", + "followers_url": "https://api.github.com/users/indutny/followers", + "following_url": "https://api.github.com/users/indutny/following{/other_user}", + "gists_url": "https://api.github.com/users/indutny/gists{/gist_id}", + "starred_url": "https://api.github.com/users/indutny/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/indutny/subscriptions", + "organizations_url": "https://api.github.com/users/indutny/orgs", + "repos_url": "https://api.github.com/users/indutny/repos", + "events_url": "https://api.github.com/users/indutny/events{/privacy}", + "received_events_url": "https://api.github.com/users/indutny/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "d83cb48b3a2059abec3cfb800a65aa5c013d2be0", + "url": "https://api.github.com/repos/nodejs/node/commits/d83cb48b3a2059abec3cfb800a65aa5c013d2be0", + "html_url": "https://github.com/nodejs/node/commit/d83cb48b3a2059abec3cfb800a65aa5c013d2be0" + } + ] + }, + { + "sha": "f3db5e4720903f4dd719e7e087881ee2a9018e53", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZjNkYjVlNDcyMDkwM2Y0ZGQ3MTllN2UwODc4ODFlZTJhOTAxOGU1Mw==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-10T19:26:20Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:47Z" + }, + "message": "test: refactor test-zlib.js\n\n* minor layout changes for clarity\n* assert.equal() and assert.ok() swapped out for assert.strictEqual()\n* var -> const for modules included via require()\n\nPR-URL: https://github.com/nodejs/node/pull/9544\nReviewed-By: Evan Lucas \nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "0dd000fbdb213e92156ac58a0cbcad75065d487f", + "url": "https://api.github.com/repos/nodejs/node/git/trees/0dd000fbdb213e92156ac58a0cbcad75065d487f" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/f3db5e4720903f4dd719e7e087881ee2a9018e53", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9kzAAoJENi59a6uhOTP80MQAKnZ3mUZanN36TSLpFGsO9Q6\np0CswA1QxKDKtUt5dOKJRpzsnzXW3muAdaMYegMfruPwRR3CHFj3krEPgnkFj879\nGroNxYMSkYLnkTU9aNP9OKv0KFJPjg3gAJokt7bUfQPdxGu2wwFq++uDELU+jpyM\nuAEiZhlgn8vSyDpnLdavyEyZpnn1v666tY/amCVkvFs0vf2bXwCG/qyixYOr40P4\nW4HPbR9cEPttwhbB11+EA6HxpSNoLgZi0+OidwMLF7xbhsKBglhvTrfqI5UoRTFS\nI9sIKZC4dd9UASRSZ57SxDfG5XjYtoL7mYBLZSBaq1bScbEAUWjaAB6I1ibPDMcI\nDX+oZgT5zDkt7M9zwH/NIhDlBLFaOolTZp4HssCNvk+kHFM5Ns38wTS5PMMkrQeg\nE+uC95QFbvpm+QOFFpxUUo0FbUkqMC1Jy9X1JQFxPTZ/lek1Ooqo6C7AymjuAok9\nybxalYSJf/Rm/dTVi2/5gr36IAeMpYhdP9Ow9Y0gX8t026C94mQaLF7zLEk/8rvg\nSh1R5uGF52bkJyJz4nmZBe5qrxsSR3BYLKyx95pfHMhtF14qtvlnBAolXy/K1n+e\nvqPFkTkWl7zlJoBGRqD18AALnJko3dtRx/Fz40al39aDcgUbklayRmUM68/zJblD\nYRKLl0AcBntRdJnWeJyo\n=8VEe\n-----END PGP SIGNATURE-----", + "payload": "tree 0dd000fbdb213e92156ac58a0cbcad75065d487f\nparent 163397a206aecce0b18b304f73456a569bb06733\nauthor Rich Trott 1478805980 -0800\ncommitter Anna Henningsen 1479792947 +0100\n\ntest: refactor test-zlib.js\n\n* minor layout changes for clarity\n* assert.equal() and assert.ok() swapped out for assert.strictEqual()\n* var -> const for modules included via require()\n\nPR-URL: https://github.com/nodejs/node/pull/9544\nReviewed-By: Evan Lucas \nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/f3db5e4720903f4dd719e7e087881ee2a9018e53", + "html_url": "https://github.com/nodejs/node/commit/f3db5e4720903f4dd719e7e087881ee2a9018e53", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/f3db5e4720903f4dd719e7e087881ee2a9018e53/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "163397a206aecce0b18b304f73456a569bb06733", + "url": "https://api.github.com/repos/nodejs/node/commits/163397a206aecce0b18b304f73456a569bb06733", + "html_url": "https://github.com/nodejs/node/commit/163397a206aecce0b18b304f73456a569bb06733" + } + ] + }, + { + "sha": "00a5490ecd947ea8e6ad4a02a51fef88b248177a", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MDBhNTQ5MGVjZDk0N2VhOGU2YWQ0YTAyYTUxZmVmODhiMjQ4MTc3YQ==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-11T20:57:18Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:47Z" + }, + "message": "test: increase coverage of process.emitWarning\n\nPreviously our tests did not check these codepaths as seen at\ncoverage.nodejs.org\n\nPR-URL: https://github.com/nodejs/node/pull/9556\nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "77f38597a01268a6f0296d496f8565dfbf4eaa39", + "url": "https://api.github.com/repos/nodejs/node/git/trees/77f38597a01268a6f0296d496f8565dfbf4eaa39" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/00a5490ecd947ea8e6ad4a02a51fef88b248177a", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9kzAAoJENi59a6uhOTPrVkP/j/sGrcYa3oozKrWoXI+oqq6\nmop0gIqxI9WI1i/SfssoUgesF8msm09dIVSKcye/SJ95cbWDbkXH1aL6uRb+ZQCZ\nmmlPSOaqjrk9UjTD+uDpwIEv5AeimpQ4DYv6DLp44TVT8h8c8ltm1KAWvWXNxrxb\nDcoZb5u17EPApLR9akUrfwoabqhi7XaKn3tVOX8obcgT5Vtj1kVBcil/y6Ogzb1R\nu5dn9ZYiuyipkgAWMQlxhehHONkoRDl6Rb+HNHdLeIJ06LO3TUc8/3x5GJs9E65U\n5VHjWBZ2mvJh0CqEwfqtn9eggQZ8ixPc1mDvaQj0vttADFIrYthAyXpcHJEWSK1k\nTnJz+bkKj77TU+G8D1Huz0xOpd/1yyjunvwtuMtYiAPyWPUIBtJsaOmJSCdZhpio\nrpHk9tJ1P2NwsFK3IdBJKQX+/9m0BfYBmKsHbpP5U0aHUbKmjJ6+kks8WD7MbCpF\nFD5xzvmNuL41desyLBOaHlXopqOyHTWGQM8jmdW9GN+mJGoP8tmV6vwaUtp9ACxg\nk0Lc0q2zEtRr6rL0iqpF/T8ZglHPLmcWoyUUyea/l8HAT7/iolopp8Dnaw1mSUBT\nk7nXQ61rEbdOCrylHA1N8s0WM8OStIGjIKouHwCsr6o4tRFHmJzsfVtamXwaP0Ik\ndGYLurZlM8ghDGVXKq9C\n=rxFp\n-----END PGP SIGNATURE-----", + "payload": "tree 77f38597a01268a6f0296d496f8565dfbf4eaa39\nparent f3db5e4720903f4dd719e7e087881ee2a9018e53\nauthor Jeremiah Senkpiel 1478897838 -0500\ncommitter Anna Henningsen 1479792947 +0100\n\ntest: increase coverage of process.emitWarning\n\nPreviously our tests did not check these codepaths as seen at\ncoverage.nodejs.org\n\nPR-URL: https://github.com/nodejs/node/pull/9556\nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/00a5490ecd947ea8e6ad4a02a51fef88b248177a", + "html_url": "https://github.com/nodejs/node/commit/00a5490ecd947ea8e6ad4a02a51fef88b248177a", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/00a5490ecd947ea8e6ad4a02a51fef88b248177a/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "f3db5e4720903f4dd719e7e087881ee2a9018e53", + "url": "https://api.github.com/repos/nodejs/node/commits/f3db5e4720903f4dd719e7e087881ee2a9018e53", + "html_url": "https://github.com/nodejs/node/commit/f3db5e4720903f4dd719e7e087881ee2a9018e53" + } + ] + }, + { + "sha": "ccc6e75bea5b3d6e130f1897a9b3723d91124fa6", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6Y2NjNmU3NWJlYTViM2Q2ZTEzMGYxODk3YTliMzcyM2Q5MTEyNGZhNg==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-11T20:28:18Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:48Z" + }, + "message": "test: ensure nextTick is not scheduled in exit\n\nPreviously our tests did not check this codepath as seen at\ncoverage.nodejs.org\n\nPR-URL: https://github.com/nodejs/node/pull/9555\nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: MichaĆ«l Zasso ", + "tree": { + "sha": "7b6eef4cfc45f1c2f81f28e9e9e4f2ef0c6b6bd8", + "url": "https://api.github.com/repos/nodejs/node/git/trees/7b6eef4cfc45f1c2f81f28e9e9e4f2ef0c6b6bd8" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/ccc6e75bea5b3d6e130f1897a9b3723d91124fa6", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k0AAoJENi59a6uhOTPuh4QALIrG2KlbxA6KAII2pSv90xo\ncQHvaQXQVFLF67gm7tXSN8vfbbaHI81lzhFzGYPhs4jK6kjMpXw0YKbca6yxTxee\nhfqdNBBD/2cMWPFlvoTpZp7pOcmZxiBPysFqrNmd6HYssGyCcbquQOhf5sBvm0vM\ngE9v8BnMj/QvWNvC0wZJyhxkIpcFmGzkee4XDDVCEn2VpB3AFn9WkQ/3Fe0bQlVA\nrcUz6LH0Yp5M6eELEptjRd6IY4BDikbUZnEHrSRw1dLuOv641ardEw9uOJdsyvaT\nY5sF4g58me5O6A3054NEnrmTTmaMBiW9Rrk8cE1x3iUpmr89LSy+8+NJG2ZlZ5wM\nTvVK/YW3rYfHtw0088zu03/7sbhEflJC2YFxsUjOitf8g9qkEx3yGq1b9cmglcFm\nNrARh+BLMTEszVCfFoucCuvv01bXQ6MyNkDpcnEl1AwjswrMNBhxL6+WhXmJaG3/\n/69VF5i0oektJe02n+WS9LuxeHDqM32ditWW93SpksRtelU7NQXzElyVg52F3gkg\n+Z0HkorzCUGoP0BGrtC8eI2TM5NYcV2yqaXGnTjhwwZ1UquFS2hyys4xTa+cNoOn\nx5M501TJI53x+8aF8V0f/whBjifZdaLlL6A2C+DF6iM1fRESUI1XTgn7jwzLY8vv\nsudUb91wEGUVj4wNHDuH\n=9RwL\n-----END PGP SIGNATURE-----", + "payload": "tree 7b6eef4cfc45f1c2f81f28e9e9e4f2ef0c6b6bd8\nparent 00a5490ecd947ea8e6ad4a02a51fef88b248177a\nauthor Jeremiah Senkpiel 1478896098 -0500\ncommitter Anna Henningsen 1479792948 +0100\n\ntest: ensure nextTick is not scheduled in exit\n\nPreviously our tests did not check this codepath as seen at\ncoverage.nodejs.org\n\nPR-URL: https://github.com/nodejs/node/pull/9555\nReviewed-By: Colin Ihrig \nReviewed-By: Luigi Pinca \nReviewed-By: MichaĆ«l Zasso \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/ccc6e75bea5b3d6e130f1897a9b3723d91124fa6", + "html_url": "https://github.com/nodejs/node/commit/ccc6e75bea5b3d6e130f1897a9b3723d91124fa6", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/ccc6e75bea5b3d6e130f1897a9b3723d91124fa6/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "00a5490ecd947ea8e6ad4a02a51fef88b248177a", + "url": "https://api.github.com/repos/nodejs/node/commits/00a5490ecd947ea8e6ad4a02a51fef88b248177a", + "html_url": "https://github.com/nodejs/node/commit/00a5490ecd947ea8e6ad4a02a51fef88b248177a" + } + ] + }, + { + "sha": "65b60801ce1107bc3950a25d1317370fcee80ad0", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NjViNjA4MDFjZTExMDdiYzM5NTBhMjVkMTMxNzM3MGZjZWU4MGFkMA==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-11-08T21:07:16Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:48Z" + }, + "message": "tools: copy run-valgrind.py to tools/\n\nIt was a symbolic link to deps/v8/tools/run-valgrind.py before. We are\ngoing to make changes to it and we don't want to carry the patch forward\nso make a copy.\n\nPR-URL: https://github.com/nodejs/node/pull/9520\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Anna Henningsen \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "3df026e82adbfce1e4d760233194bf978fee5753", + "url": "https://api.github.com/repos/nodejs/node/git/trees/3df026e82adbfce1e4d760233194bf978fee5753" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/65b60801ce1107bc3950a25d1317370fcee80ad0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k0AAoJENi59a6uhOTPTP8QAJfL+G3f501/clb+yn477NsK\ngdibKNmjVGHnUbnG/3Bgy00DRjGj6K6DdYH4rU3042lLoJ0Ic4sLMC+SPyvbNngG\nFJlULaxBh5MAyryVFVRE3+TTtLIGyw7wW3eZsNOAoqTfXR7HuJaaOSN5mjH2LES7\nDBBZpqW9lp1tryVCt4wENvSzR9X+FajXRY9I7yaVHUKMWvfXpvwPPZt596fgq87h\nghALFkHh1ftv5i2qW4QaU/N0lLPr6C+M4kbxRT+RXqhZtnuWgcQfuqv+5TQvOIvD\nNxFSE/BhjCUCIvnItb8YOGZkXtrkGDauCAKIEHNRRHirh8CwDkKzK1CfqQhYEoTM\np1g7c3phh7pyWFzcy2mdPtvLXCDLBUt18r5qH1g8Y8MxeIkjNBDZPB2vxpDGszCw\n6fHa5DCuxXHGcxaVW8ewFQt9VameQtdoG7OjMgGJHXAktDLeoqNjnh8NwGEPAkcd\ndHwNeWFShXJtPsGv2X62yIs4koCDNTOOBS92TUe+xzM/V2/lZnqS2uiAs+7OcQ5R\nEKYXjNb4W8m8wIMVf/gyZ3kG032QL4U0zFybk8JlWHn/6B0a28NkbLjtbN4DK00V\nf1dRaFhg3uKk9zBDdPy0FJ3XLqtxLgA2C1+RKe9ofCq3aohLpK1xBTjlJiZ5Id/d\n3U5WV/7lgqqphmEHdKvI\n=CcQD\n-----END PGP SIGNATURE-----", + "payload": "tree 3df026e82adbfce1e4d760233194bf978fee5753\nparent ccc6e75bea5b3d6e130f1897a9b3723d91124fa6\nauthor Ben Noordhuis 1478639236 +0100\ncommitter Anna Henningsen 1479792948 +0100\n\ntools: copy run-valgrind.py to tools/\n\nIt was a symbolic link to deps/v8/tools/run-valgrind.py before. We are\ngoing to make changes to it and we don't want to carry the patch forward\nso make a copy.\n\nPR-URL: https://github.com/nodejs/node/pull/9520\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Anna Henningsen \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/65b60801ce1107bc3950a25d1317370fcee80ad0", + "html_url": "https://github.com/nodejs/node/commit/65b60801ce1107bc3950a25d1317370fcee80ad0", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/65b60801ce1107bc3950a25d1317370fcee80ad0/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "ccc6e75bea5b3d6e130f1897a9b3723d91124fa6", + "url": "https://api.github.com/repos/nodejs/node/commits/ccc6e75bea5b3d6e130f1897a9b3723d91124fa6", + "html_url": "https://github.com/nodejs/node/commit/ccc6e75bea5b3d6e130f1897a9b3723d91124fa6" + } + ] + }, + { + "sha": "887c76a664d97695abbef39846a2491a73fd8fee", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ODg3Yzc2YTY2NGQ5NzY5NWFiYmVmMzk4NDZhMjQ5MWE3M2ZkOGZlZQ==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-11-08T21:07:17Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:49Z" + }, + "message": "tools: fix run-valgrind.py script\n\nThe script had a dependency on the copy of valgrind that is bundled\nwith V8 but that only gets checked out when doing a full depot_tools\ncheckout. Use the system-provided valgrind.\n\nPR-URL: https://github.com/nodejs/node/pull/9520\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Anna Henningsen \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "c4ff10addc9f486358006e19833df64f903af1f8", + "url": "https://api.github.com/repos/nodejs/node/git/trees/c4ff10addc9f486358006e19833df64f903af1f8" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/887c76a664d97695abbef39846a2491a73fd8fee", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k1AAoJENi59a6uhOTPOKkQAKUGpl8aTEY8Up4l1PszEfP0\nJhpL6hqRbxs9XKkJOzdVkKVdDRX9fSE5S8Hw8cjbdII5WBuME0ZiH6doXfXR5VJK\n3ykUQYbfjoDelOWUQKdpNmGnMFgp+XILL9uaQKnEiQ9YDeG5rpKuGlnUuEzMnz1/\n0bKs3E0LPgzQGtxvOb3XV/FpaajgT+t+P7CBw7xmpBJ9WXL7SUoOkYYafcyykvD+\nEbqTEWUlRTNUUCTbwpGTUGM2MBb+AuBfO8QWnhDNoCXeC0XiAcorW6/4jOOG2ARf\nVhj/wd40EOuOSSsLmWXG/m9m/+ukr7g5UMQ/lAHyGl3ZTwo7Y5wLlevk4aQJRszp\nkP0u2EFOaQZJoVFjl2nI4lRb7FYr9zR15u94NTVTxEpvKOy8B6OOOhIYa2dmsscm\nDBAyJv86SyNDceEIKJaZAqsQWdXUAjyLQK9zo+1SVTV76GbOPKF9jC/IqhAdohKz\nt9FHSUQ0RdTevMos6N8zE2nk4MSdwmuNdc/0K7Q9qf+QJOxM/HPmdPp1p1TyJvG/\nLqCoPvWIl0BDiwaA0g8F+XpIP+LeMTDNylGtgkhIq0Tpx3DuENjk+rfQfnMMcBKo\nc7WaM8boExMFDgFMTy36ApjGnlEp2BUTirW9m61RfnsM2/vvZtSveTm7yTy+RS5d\n2avK/1+/0R2zjiVJUAB9\n=KdhF\n-----END PGP SIGNATURE-----", + "payload": "tree c4ff10addc9f486358006e19833df64f903af1f8\nparent 65b60801ce1107bc3950a25d1317370fcee80ad0\nauthor Ben Noordhuis 1478639237 +0100\ncommitter Anna Henningsen 1479792949 +0100\n\ntools: fix run-valgrind.py script\n\nThe script had a dependency on the copy of valgrind that is bundled\nwith V8 but that only gets checked out when doing a full depot_tools\ncheckout. Use the system-provided valgrind.\n\nPR-URL: https://github.com/nodejs/node/pull/9520\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Anna Henningsen \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/887c76a664d97695abbef39846a2491a73fd8fee", + "html_url": "https://github.com/nodejs/node/commit/887c76a664d97695abbef39846a2491a73fd8fee", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/887c76a664d97695abbef39846a2491a73fd8fee/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "65b60801ce1107bc3950a25d1317370fcee80ad0", + "url": "https://api.github.com/repos/nodejs/node/commits/65b60801ce1107bc3950a25d1317370fcee80ad0", + "html_url": "https://github.com/nodejs/node/commit/65b60801ce1107bc3950a25d1317370fcee80ad0" + } + ] + }, + { + "sha": "deabb5cfaac407a601175af9a6b841ecab93f9b3", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZGVhYmI1Y2ZhYWM0MDdhNjAxMTc1YWY5YTZiODQxZWNhYjkzZjliMw==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-11-08T21:07:34Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:49Z" + }, + "message": "tools: make run-valgrind.py useful\n\nNode.js does not clean up on exit so don't complain about memory leaks\nbut do complain about invalid memory access. In the future we may want\nto add a cleanup-on-exit flag or put together a suppression list.\n\nPR-URL: https://github.com/nodejs/node/pull/9520\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Anna Henningsen \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "16bc432761052c764e9d4a5d18b4f1ec8d835e5d", + "url": "https://api.github.com/repos/nodejs/node/git/trees/16bc432761052c764e9d4a5d18b4f1ec8d835e5d" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/deabb5cfaac407a601175af9a6b841ecab93f9b3", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k1AAoJENi59a6uhOTPf5IQAJx4/Nt19K2ZKdRN+b+/3Urd\nNeVKblATZGC5XbKjwOCWMbpHlTgKlu8ymsO3x65Wj2GjswG1LEm0j0EIEtKBHvyA\ny2aFIChf2xQxoQp4HM8u/6A9zmnABcm4jmg6rKi4IZehuBetu7Esah/bLiIogfv7\nQmkKGuoikAuK6saNQ7vn1eytSD1xF9tu4RMcmJtLXZKGrsIShOllPzptAU/WcgRi\nNMihonrzGkVVGoZAW8ejCdUERQ3ePO+x+DdX45dJzE+Xseeofidi45nGlhZTF7WS\nui1WwGbrLskX3HrUsC+Kz9YtttvtInx1v4LmTY61xf59nDId9Ft+oGxb6053nSHE\nwVWgPbWtBnzWi4WfxHixm97frLjHxCAF26gjHbxSJYkKsgsTJTPZQki8JPGuzj/T\nZCZi1z3Mrp4ZultkSUdOMD6h28UDpZXd8R6ZI0NYjXKs48wwKbEqENoUje2wNoXV\nVczo2mYNER+dhUN0l6YxPaRXgy0nyn3LI2PsZIYlSHB0GDyo80t3XRNzLhq9/4ey\n/3X7YrBtQvz1Bz5ET8uIl93h6gV7zzYhT9Uh8GWtejpgZk7f+fyaKyXWuzg/U/cO\n6E2mUmQW6xkIP/ke3Xs52BuJKIWzoXluCBSOMPboMj+wHql5E64l2zTSBVT6yh2G\ntKvmukGYmAfRAOi576j6\n=ZNhC\n-----END PGP SIGNATURE-----", + "payload": "tree 16bc432761052c764e9d4a5d18b4f1ec8d835e5d\nparent 887c76a664d97695abbef39846a2491a73fd8fee\nauthor Ben Noordhuis 1478639254 +0100\ncommitter Anna Henningsen 1479792949 +0100\n\ntools: make run-valgrind.py useful\n\nNode.js does not clean up on exit so don't complain about memory leaks\nbut do complain about invalid memory access. In the future we may want\nto add a cleanup-on-exit flag or put together a suppression list.\n\nPR-URL: https://github.com/nodejs/node/pull/9520\nReviewed By: Sakthipriyan Vairamani \nReviewed-By: Anna Henningsen \nReviewed-By: Michael Dawson \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/deabb5cfaac407a601175af9a6b841ecab93f9b3", + "html_url": "https://github.com/nodejs/node/commit/deabb5cfaac407a601175af9a6b841ecab93f9b3", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/deabb5cfaac407a601175af9a6b841ecab93f9b3/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "887c76a664d97695abbef39846a2491a73fd8fee", + "url": "https://api.github.com/repos/nodejs/node/commits/887c76a664d97695abbef39846a2491a73fd8fee", + "html_url": "https://github.com/nodejs/node/commit/887c76a664d97695abbef39846a2491a73fd8fee" + } + ] + }, + { + "sha": "bff4e88f0b71227fd8f08442cfa22d77dcab07d4", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YmZmNGU4OGYwYjcxMjI3ZmQ4ZjA4NDQyY2ZhMjJkNzdkY2FiMDdkNA==", + "commit": { + "author": { + "name": "Vse Mozhet Byt", + "email": "vsemozhetbyt@gmail.com", + "date": "2016-11-13T23:50:08Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:50Z" + }, + "message": "doc: fix a typo in the assert.md\n\nPR-URL: https://github.com/nodejs/node/pull/9598\nReviewed-By: Rich Trott \nReviewed-By: Luigi Pinca \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "1af3aae0512143af3e2f64226e57b9b68206e229", + "url": "https://api.github.com/repos/nodejs/node/git/trees/1af3aae0512143af3e2f64226e57b9b68206e229" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/bff4e88f0b71227fd8f08442cfa22d77dcab07d4", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k2AAoJENi59a6uhOTPsSkQAIF31zBt3sFuxRp5kpw0VWLH\nHHtUpdmrj0BYH0wpq5VDShO3bP29qvAdYPMH3DkOHgBjJI2QdOqnvog4pUAuXX9w\nLl0dwEVoDHWOzqGNEBh2OYHXe7RdqP+Mjq7conLBjlfDiqkssUCNlbCGQZZLNT3T\nN0w9NfeXU2EcfZxpf6FFKLD1R6GV5MmOkyLeiC1C9UggT0Ni5FUcqhmPvzL0bxL0\n6NzhvcwDnr6v7vbCT6hBTuWDkwQ4lCGZFR35n8uJ0ppq9Hyo/HZ1VgEI0S/oXZxd\nlUUJ5zOAGRJtpOia4XFFVVrBMfbbM9cfvydwd3WBVMQRHulBJTnZYBEwFnbyxN3b\nVpzKyZlJ2+i5FTQs+yfyaeZ0axTMH/wswSB3C/fopvpVzgwuAYtO0bLyie3lssGS\ndbn/9+FB0nhMesWKamPRPmT/bQ5Ocni0bv8Wghw8/0ZegGKiqT2TQqtIwKA/bD3L\n9ID/M/6mc7L4uuBd6JSFd9x3R7zSI59utl3DBVnOErzdbOVy2VeDw3unf6PRYJ8g\n3pog6HsDkjyelPs8SocaIU5KyCXXlh1GBBqJ26vo6w3t9FvAwhd4R47/ixxgGShA\n/gbZi+haQKqNPmCiGRAIAS5NW9wT3m+MdpcMRV0TO8pFFzYNnwI7rWYdziNRL0hx\nNsyUtJombJjfKuLyZObl\n=XSKC\n-----END PGP SIGNATURE-----", + "payload": "tree 1af3aae0512143af3e2f64226e57b9b68206e229\nparent deabb5cfaac407a601175af9a6b841ecab93f9b3\nauthor Vse Mozhet Byt 1479081008 +0200\ncommitter Anna Henningsen 1479792950 +0100\n\ndoc: fix a typo in the assert.md\n\nPR-URL: https://github.com/nodejs/node/pull/9598\nReviewed-By: Rich Trott \nReviewed-By: Luigi Pinca \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/bff4e88f0b71227fd8f08442cfa22d77dcab07d4", + "html_url": "https://github.com/nodejs/node/commit/bff4e88f0b71227fd8f08442cfa22d77dcab07d4", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/bff4e88f0b71227fd8f08442cfa22d77dcab07d4/comments", + "author": { + "login": "vsemozhetbyt", + "id": 10393198, + "node_id": "MDQ6VXNlcjEwMzkzMTk4", + "avatar_url": "https://avatars.githubusercontent.com/u/10393198?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vsemozhetbyt", + "html_url": "https://github.com/vsemozhetbyt", + "followers_url": "https://api.github.com/users/vsemozhetbyt/followers", + "following_url": "https://api.github.com/users/vsemozhetbyt/following{/other_user}", + "gists_url": "https://api.github.com/users/vsemozhetbyt/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vsemozhetbyt/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vsemozhetbyt/subscriptions", + "organizations_url": "https://api.github.com/users/vsemozhetbyt/orgs", + "repos_url": "https://api.github.com/users/vsemozhetbyt/repos", + "events_url": "https://api.github.com/users/vsemozhetbyt/events{/privacy}", + "received_events_url": "https://api.github.com/users/vsemozhetbyt/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "deabb5cfaac407a601175af9a6b841ecab93f9b3", + "url": "https://api.github.com/repos/nodejs/node/commits/deabb5cfaac407a601175af9a6b841ecab93f9b3", + "html_url": "https://github.com/nodejs/node/commit/deabb5cfaac407a601175af9a6b841ecab93f9b3" + } + ] + }, + { + "sha": "34c8b0b411b588db99eba0bfdedad1d7649f7a4c", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzRjOGIwYjQxMWI1ODhkYjk5ZWJhMGJmZGVkYWQxZDc2NDlmN2E0Yw==", + "commit": { + "author": { + "name": "Kelvin Jin", + "email": "kelvinjin@google.com", + "date": "2016-10-01T00:24:03Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:50Z" + }, + "message": "module: check -e flag in debug break setup\n\nWhen both --debug-brk and --eval are set, and a filename is\nspecified, its full path is not set correctly, causing an error\nfor relative filenames with './' omitted.\n\nFor example, 'node --debug-brk -e 0 hello.js' throws an error.\n\nSince the script referenced by the filename is never run anyway,\nthis change skips resolving its full path if both --debug-brk and\n--eval are set.\n\nPR-URL: https://github.com/nodejs/node/pull/8876\nReviewed-By: Ben Noordhuis \nReviewed-By: James M Snell ", + "tree": { + "sha": "fb1a8f4989d27b3142eb7254f64d2cbab670d13b", + "url": "https://api.github.com/repos/nodejs/node/git/trees/fb1a8f4989d27b3142eb7254f64d2cbab670d13b" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/34c8b0b411b588db99eba0bfdedad1d7649f7a4c", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k2AAoJENi59a6uhOTPaKoP/jYYdEZruvmFrU7jNZNGA7+Y\nOzF9pGlj6+mZw3YY65UUHN+oH7vu9HV2hbxhqMbB98qLpUmX11yIeVs2j0WDpjsW\n6LZpW/qM4pOvLGOfJay3JoutZpm77ULUZffgw1OzJGmE5bUj40vyc4EKpGlukOAV\nIUaBe3nfDaGLtKWYGNKtC42DcPE5Bu6bU9CDLnhS0+l0VTjBns3i24CisqhqTHtp\ncpdL5U3xS7shD+5DsXCG2WuvhxHp0w3tSdFOwBFfIf/n/GMN5JCaHEuaUU8YtHXk\nYShVH2LWUEoPVLSd+HI959+KGrmLK01kuzr3XHk18HJqbj/sMS0zJeXeowrcus2Y\npkjmVeULI+2am5q/9gtOsVwEuSlVecol6jbr8z4H1WmQFaPO6c6FeUtBu5+2aUEe\n1+G4r8aqLNwepeQdWJsIfmN+yTiQyyqk3EbS457dj3Z+ATGOlJX2uMtnUNX2DCig\nCTt26MHpyETMcrb+4gopRW2huoepVap0b1X+rYpy9qD7r5CpuzwQ7y3lK7eokKsG\nG0SHVB3fKzkK/GDUK0paaUCS2tqauynEg1kfchSU2fAO/oDBH2mpldY53ZoSn9Ba\n+35hfVC1aJyLeMiEmC9m39maQLFVu12Di2yxaVPp6aIX00sDWjoXn6H+CkcZeA/1\nQA366Z90glM5MPIvaxVD\n=oZMj\n-----END PGP SIGNATURE-----", + "payload": "tree fb1a8f4989d27b3142eb7254f64d2cbab670d13b\nparent bff4e88f0b71227fd8f08442cfa22d77dcab07d4\nauthor Kelvin Jin 1475281443 -0700\ncommitter Anna Henningsen 1479792950 +0100\n\nmodule: check -e flag in debug break setup\n\nWhen both --debug-brk and --eval are set, and a filename is\nspecified, its full path is not set correctly, causing an error\nfor relative filenames with './' omitted.\n\nFor example, 'node --debug-brk -e 0 hello.js' throws an error.\n\nSince the script referenced by the filename is never run anyway,\nthis change skips resolving its full path if both --debug-brk and\n--eval are set.\n\nPR-URL: https://github.com/nodejs/node/pull/8876\nReviewed-By: Ben Noordhuis \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/34c8b0b411b588db99eba0bfdedad1d7649f7a4c", + "html_url": "https://github.com/nodejs/node/commit/34c8b0b411b588db99eba0bfdedad1d7649f7a4c", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/34c8b0b411b588db99eba0bfdedad1d7649f7a4c/comments", + "author": { + "login": "kjin", + "id": 2365820, + "node_id": "MDQ6VXNlcjIzNjU4MjA=", + "avatar_url": "https://avatars.githubusercontent.com/u/2365820?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kjin", + "html_url": "https://github.com/kjin", + "followers_url": "https://api.github.com/users/kjin/followers", + "following_url": "https://api.github.com/users/kjin/following{/other_user}", + "gists_url": "https://api.github.com/users/kjin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kjin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kjin/subscriptions", + "organizations_url": "https://api.github.com/users/kjin/orgs", + "repos_url": "https://api.github.com/users/kjin/repos", + "events_url": "https://api.github.com/users/kjin/events{/privacy}", + "received_events_url": "https://api.github.com/users/kjin/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "bff4e88f0b71227fd8f08442cfa22d77dcab07d4", + "url": "https://api.github.com/repos/nodejs/node/commits/bff4e88f0b71227fd8f08442cfa22d77dcab07d4", + "html_url": "https://github.com/nodejs/node/commit/bff4e88f0b71227fd8f08442cfa22d77dcab07d4" + } + ] + }, + { + "sha": "89216a45b73fb325f91a81c20ad3c23be5ac2157", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ODkyMTZhNDViNzNmYjMyNWY5MWE4MWMyMGFkM2MyM2JlNWFjMjE1Nw==", + "commit": { + "author": { + "name": "Timothy Gu", + "email": "timothygu99@gmail.com", + "date": "2016-11-12T18:17:20Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:51Z" + }, + "message": "doc: fix type of http.request's `agent` option\n\nPR-URL: https://github.com/nodejs/node/pull/9584\nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "3fc3127389ec8d50ef7d4d22dbd3ea46e0f6758a", + "url": "https://api.github.com/repos/nodejs/node/git/trees/3fc3127389ec8d50ef7d4d22dbd3ea46e0f6758a" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/89216a45b73fb325f91a81c20ad3c23be5ac2157", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k3AAoJENi59a6uhOTP2QIP/Ai9clmYgYdzZT5CEwNKkADq\npI0IOOtqRli0a3VxNkm0te1IgsuDtBHPijeCKoSor7Ssn0nljgYXh4uk9oR4G7sT\nBPNJQcugNTKTIdGYLup5i3RLEHazsSzWbeqT27akiRnLiDMWwqXUr6zlIRcmm/45\nfKpHUvWetbWBPEqlqLgAYlQFwAwiA/VQHOIWCeopsAQe5IQBJ27XBiRfAQMFZXqQ\nPcCgHPVCURbOcZmu02HHIpv1EECWgEnohYQfDwQp7LaalKBqF28dm6xyIrqW0DJv\nwSVimcfQJ7U4CtgmE2G9xsrg914bAvRyRzJ6/K6r3/GKlZAdrGGTWgi6Z0NnsCf3\nTyouNWNUcYSmcrOxqah314h09YEyuv8zjfYyD7Zgi928R3V6Z7fNbtedjsysHNYw\n0fVgUkam6u7/N15dtiyOifRdH3XwynPItyIiXlr+7MrlVhJ6vpAnBcbEdQGCZn5S\nMXnVA7onO8jpvF67bEaYQ7CiaVaXEHSkh6hS8cb6H4hlxJhOTVsgc0kATZKoD4FU\n5cL0llp3IPmNHphUy6XspcE+DZ5mEUXZ1JlqVUBRdnNyna6h+RInN8+roRcquk90\nZxgdgAjTJXZ/eI7nOlIKhC1nskB1tOW8J0Kdvcs6oZAcM8MAJ/D8NsWpCmvEqRv+\njXpZmbf2pCjfM20TZqvM\n=QoUc\n-----END PGP SIGNATURE-----", + "payload": "tree 3fc3127389ec8d50ef7d4d22dbd3ea46e0f6758a\nparent 34c8b0b411b588db99eba0bfdedad1d7649f7a4c\nauthor Timothy Gu 1478974640 -0800\ncommitter Anna Henningsen 1479792951 +0100\n\ndoc: fix type of http.request's `agent` option\n\nPR-URL: https://github.com/nodejs/node/pull/9584\nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/89216a45b73fb325f91a81c20ad3c23be5ac2157", + "html_url": "https://github.com/nodejs/node/commit/89216a45b73fb325f91a81c20ad3c23be5ac2157", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/89216a45b73fb325f91a81c20ad3c23be5ac2157/comments", + "author": { + "login": "TimothyGu", + "id": 1538624, + "node_id": "MDQ6VXNlcjE1Mzg2MjQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1538624?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TimothyGu", + "html_url": "https://github.com/TimothyGu", + "followers_url": "https://api.github.com/users/TimothyGu/followers", + "following_url": "https://api.github.com/users/TimothyGu/following{/other_user}", + "gists_url": "https://api.github.com/users/TimothyGu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TimothyGu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TimothyGu/subscriptions", + "organizations_url": "https://api.github.com/users/TimothyGu/orgs", + "repos_url": "https://api.github.com/users/TimothyGu/repos", + "events_url": "https://api.github.com/users/TimothyGu/events{/privacy}", + "received_events_url": "https://api.github.com/users/TimothyGu/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "34c8b0b411b588db99eba0bfdedad1d7649f7a4c", + "url": "https://api.github.com/repos/nodejs/node/commits/34c8b0b411b588db99eba0bfdedad1d7649f7a4c", + "html_url": "https://github.com/nodejs/node/commit/34c8b0b411b588db99eba0bfdedad1d7649f7a4c" + } + ] + }, + { + "sha": "3014dfd25474e2b9f2991dab6a9e8cc7669718cb", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzAxNGRmZDI1NDc0ZTJiOWYyOTkxZGFiNmE5ZThjYzc2Njk3MThjYg==", + "commit": { + "author": { + "name": "Timothy Gu", + "email": "timothygu99@gmail.com", + "date": "2016-11-13T14:43:55Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:51Z" + }, + "message": "doc: wrap long lines in http.request\n\nPR-URL: https://github.com/nodejs/node/pull/9584\nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "4f9db1e0f9e241f402ed826949bf43878d68db7c", + "url": "https://api.github.com/repos/nodejs/node/git/trees/4f9db1e0f9e241f402ed826949bf43878d68db7c" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/3014dfd25474e2b9f2991dab6a9e8cc7669718cb", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k4AAoJENi59a6uhOTPjZQP/0m851Fmmsj+cMC9eX+veBx5\n3yiQlQXatzEHBVqE3ycM96f+E1ywiLvNuVYufZaIbJuESmdc/BrOMB514y8MQaWs\nD82WnjXacFkSza1Hz8nyqepdyl4f16e4JO+qqaq4H7Zkvr6WRDh+wRdOgSh63AW6\nD8lJmvjDFdcWka2b7gJgKR348+ubg/ZJ2ZkD8n/v/8pZRBhQgmju5rh4H5XhL+HU\n2ZqdGpsaA8hHuehLfMnkE5j2WNLTxcaX7jdihw6uac63m63EkbkPLLUwi2xC6rvg\nZAl6a0n3u6mtqPfD0xNDTi0KEEoXZ76pd655WOVkYDLWZqkJoqJQW2s8XX3kvSpw\nGxK+qAnZF68gf1Wtd5YEBgsGsfitOA0xWCEwECFmn4aSOxHRftXXXr/A8cuNNHDX\nD+ft91SQZTDN8EAfKXAPnBnpqwnCEBxsEB4Mjh0JsOuueFfrZxwxMmNkBKGVfq7K\nNzh4UP0/ftVJtS1m2rYVN4Bc/XZ3208rF0JA0+Ca2um1C+21MqnJuBdzqoLmA+fr\nRkE9cxYo88cVtVAvOqdOJjNwgvO2DbacQKvli23GxWpwbtOzKXbbZCFbJU38+En7\nm9iHHntYPv58jEgvUE6xKphw3rnXjibb31kttuDGrWCY0ih20J2Xp3TmyQ0nQtWJ\nY9zbMQvg9rGNbxQkLA7S\n=mu08\n-----END PGP SIGNATURE-----", + "payload": "tree 4f9db1e0f9e241f402ed826949bf43878d68db7c\nparent 89216a45b73fb325f91a81c20ad3c23be5ac2157\nauthor Timothy Gu 1479048235 -0800\ncommitter Anna Henningsen 1479792951 +0100\n\ndoc: wrap long lines in http.request\n\nPR-URL: https://github.com/nodejs/node/pull/9584\nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/3014dfd25474e2b9f2991dab6a9e8cc7669718cb", + "html_url": "https://github.com/nodejs/node/commit/3014dfd25474e2b9f2991dab6a9e8cc7669718cb", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/3014dfd25474e2b9f2991dab6a9e8cc7669718cb/comments", + "author": { + "login": "TimothyGu", + "id": 1538624, + "node_id": "MDQ6VXNlcjE1Mzg2MjQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1538624?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TimothyGu", + "html_url": "https://github.com/TimothyGu", + "followers_url": "https://api.github.com/users/TimothyGu/followers", + "following_url": "https://api.github.com/users/TimothyGu/following{/other_user}", + "gists_url": "https://api.github.com/users/TimothyGu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TimothyGu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TimothyGu/subscriptions", + "organizations_url": "https://api.github.com/users/TimothyGu/orgs", + "repos_url": "https://api.github.com/users/TimothyGu/repos", + "events_url": "https://api.github.com/users/TimothyGu/events{/privacy}", + "received_events_url": "https://api.github.com/users/TimothyGu/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "89216a45b73fb325f91a81c20ad3c23be5ac2157", + "url": "https://api.github.com/repos/nodejs/node/commits/89216a45b73fb325f91a81c20ad3c23be5ac2157", + "html_url": "https://github.com/nodejs/node/commit/89216a45b73fb325f91a81c20ad3c23be5ac2157" + } + ] + }, + { + "sha": "d5fa1d530721461e9bec0577d80c2a8957193103", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZDVmYTFkNTMwNzIxNDYxZTliZWMwNTc3ZDgwYzJhODk1NzE5MzEwMw==", + "commit": { + "author": { + "name": "Nikolai Vavilov", + "email": "vvnicholas@gmail.com", + "date": "2016-10-27T17:49:21Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:52Z" + }, + "message": "doc: clarify eventType in fs.watch\n\n'rename' is confusing, and it's not clear what \"they\" refers to.\n\nFixes: https://github.com/nodejs/node/issues/9082\nPR-URL: https://github.com/nodejs/node/pull/9318\nReviewed-By: Rich Trott \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "723bd784c06f24adb33a7983fb20a36f528736f6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/723bd784c06f24adb33a7983fb20a36f528736f6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/d5fa1d530721461e9bec0577d80c2a8957193103", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k4AAoJENi59a6uhOTPCHoQAKIU8NIjhj3ds9i2rNbHolu0\nfOwjmzI1CeZcx3VzWFpE56+jQFQ/Q7vUgeIxCuDUtXAQPFEbmLmyyZoEGJXT7xE9\nsu6BfU/zS6r6+1ZCtk8QY1jfNlmIfzAtuI8E2VUftNcSbO07ByvnAOaAvuFEF/ux\nYK/8S6wKOSxbdVYpY09vqDyqoxJGUmIwJwriTDH6QyvHtnPIn+9rVBnQMJvupHHe\nhbpiaMaWee+IzJYXRZ4Jzlr3bDkz5bcJS+WxNZeLlJxpfs2kv60Npvj0gKagXl9Y\neXBD1FzlQoBB5OwmQsW6/SOc46/zodJXoHNLP/53hs7v0tcoeGJPi9f+h9gv3n6G\nOUdvuKz9eDPNx9XCfnheAogLQEFW9hrbIBWHt1dWBssF1m0oYr928DxJ8OqqLEyG\nrczvF1mmfVZP2YQaVTnKqzOTUi4tmAOnx8/V3Zl9FJLCJ+0bCKa5WL9CcFJzXbNd\niCDmbtRNR6tfjgyk+TS9juus5kBBQZ364jRGMtN9pDtz0aDqapdyOYLgC+S6yA9i\nVMxOd5IYk89uYQxvFK1wWqX1+YgeVuyQitRO7xsvVku9+ih1DxZ6x99Yc1boWp8U\nX6G2VXvCRimJog8Jkmghp1WtTjbM7CsZwuZL3wB33rl1z5eTCNS6ZXNHLNy+Mc+E\n7ikExCyum90Jg4Voxypn\n=0LAO\n-----END PGP SIGNATURE-----", + "payload": "tree 723bd784c06f24adb33a7983fb20a36f528736f6\nparent 3014dfd25474e2b9f2991dab6a9e8cc7669718cb\nauthor Nikolai Vavilov 1477590561 +0300\ncommitter Anna Henningsen 1479792952 +0100\n\ndoc: clarify eventType in fs.watch\n\n'rename' is confusing, and it's not clear what \"they\" refers to.\n\nFixes: https://github.com/nodejs/node/issues/9082\nPR-URL: https://github.com/nodejs/node/pull/9318\nReviewed-By: Rich Trott \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/d5fa1d530721461e9bec0577d80c2a8957193103", + "html_url": "https://github.com/nodejs/node/commit/d5fa1d530721461e9bec0577d80c2a8957193103", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/d5fa1d530721461e9bec0577d80c2a8957193103/comments", + "author": { + "login": "seishun", + "id": 988441, + "node_id": "MDQ6VXNlcjk4ODQ0MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/988441?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/seishun", + "html_url": "https://github.com/seishun", + "followers_url": "https://api.github.com/users/seishun/followers", + "following_url": "https://api.github.com/users/seishun/following{/other_user}", + "gists_url": "https://api.github.com/users/seishun/gists{/gist_id}", + "starred_url": "https://api.github.com/users/seishun/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/seishun/subscriptions", + "organizations_url": "https://api.github.com/users/seishun/orgs", + "repos_url": "https://api.github.com/users/seishun/repos", + "events_url": "https://api.github.com/users/seishun/events{/privacy}", + "received_events_url": "https://api.github.com/users/seishun/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "3014dfd25474e2b9f2991dab6a9e8cc7669718cb", + "url": "https://api.github.com/repos/nodejs/node/commits/3014dfd25474e2b9f2991dab6a9e8cc7669718cb", + "html_url": "https://github.com/nodejs/node/commit/3014dfd25474e2b9f2991dab6a9e8cc7669718cb" + } + ] + }, + { + "sha": "3b4ec5f6c584e49ca6cf6c618191daff44247806", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6M2I0ZWM1ZjZjNTg0ZTQ5Y2E2Y2Y2YzYxODE5MWRhZmY0NDI0NzgwNg==", + "commit": { + "author": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-10-21T20:57:17Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:53Z" + }, + "message": "test: check that `process.execPath` is a realpath\n\nThis test is only here to ensure consistent cross-platform behaviour.\n\nPR-URL: https://github.com/nodejs/node/pull/9229\nReviewed-By: Evan Lucas \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "968608b3f1a7be0db628418eae6fac4fda013a37", + "url": "https://api.github.com/repos/nodejs/node/git/trees/968608b3f1a7be0db628418eae6fac4fda013a37" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/3b4ec5f6c584e49ca6cf6c618191daff44247806", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k5AAoJENi59a6uhOTPOIsP/RnCQ78F1JxWR032Nbp82PYE\n0R4c8cGf4jxwbH3HVGN6GzzXPzKS3jDZ/bKPzdvbQ6d86gL+ZWf+4AWXRAF/Pl0X\nRTGXUklDVj50J3j28OKrT0RekW+SH6Pf4W5NQ+3UEFp/DJmaTQ8kKJ2hz8p9iyf3\nn+ONqsDQZtQ/2fBa0pWYtCx61P+F+edr7yod2OtI+6EeCS0hxhyQYRv84E5jTdHp\nhetxvNCmoocgqcihQVdbJAB185SkYRsrMDiJ2PICCnG1qfh/Logkc+izN7zl+fyU\nan4mmGwo9NZ8rYmxUpwNuu2vlsRN8akfcZJnxwDMLtw6cTmWOWOqZQtlWVQkgEJY\n8esAzfki5R79uXX98QhY/oWZPNaIZSOYnroeOveT6QM1DDFr50xtcEgo0TKJ+1l9\nADWvXjoJADZn/B2PB0CdGvCAXkHQh1TgunCerCTaUP/iTR3JLe0EMw1t7++qlRg5\niNZnQiZ6JxL2dUudtjb9zAprFr68tHS/rc+7lMBNT0ceb95uC0uQsnCvRD5Qy0Vn\n29rO3fLAF4p/Wss4I67d6+u+EAUu4Q5/NRJ1bn3eL0Kh6l6kE38cCBZcyHXZ2wQu\nFP2rBYNyByqVrTrLO/k1SLDLNhPskidfp/FOqq89eZ7s+9mjjF7ma7EtQPGUdOBh\n5lmU2voAOJCMXRi/b5uX\n=geeN\n-----END PGP SIGNATURE-----", + "payload": "tree 968608b3f1a7be0db628418eae6fac4fda013a37\nparent d5fa1d530721461e9bec0577d80c2a8957193103\nauthor Anna Henningsen 1477083437 +0200\ncommitter Anna Henningsen 1479792953 +0100\n\ntest: check that `process.execPath` is a realpath\n\nThis test is only here to ensure consistent cross-platform behaviour.\n\nPR-URL: https://github.com/nodejs/node/pull/9229\nReviewed-By: Evan Lucas \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/3b4ec5f6c584e49ca6cf6c618191daff44247806", + "html_url": "https://github.com/nodejs/node/commit/3b4ec5f6c584e49ca6cf6c618191daff44247806", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/3b4ec5f6c584e49ca6cf6c618191daff44247806/comments", + "author": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "d5fa1d530721461e9bec0577d80c2a8957193103", + "url": "https://api.github.com/repos/nodejs/node/commits/d5fa1d530721461e9bec0577d80c2a8957193103", + "html_url": "https://github.com/nodejs/node/commit/d5fa1d530721461e9bec0577d80c2a8957193103" + } + ] + }, + { + "sha": "25a6f88d98d732f69562bf95c39bf6d73e35e48d", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MjVhNmY4OGQ5OGQ3MzJmNjk1NjJiZjk1YzM5YmY2ZDczZTM1ZTQ4ZA==", + "commit": { + "author": { + "name": "Brian White", + "email": "mscdex@mscdex.net", + "date": "2016-11-13T04:34:35Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:53Z" + }, + "message": "doc: improve process.emitWarning() example\n\nPR-URL: https://github.com/nodejs/node/pull/9590\nReviewed-By: Roman Reiss \nReviewed-By: Prince John Wesley \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "bcedf1f5ea1114480c3f81bfd288842d9d36df0d", + "url": "https://api.github.com/repos/nodejs/node/git/trees/bcedf1f5ea1114480c3f81bfd288842d9d36df0d" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/25a6f88d98d732f69562bf95c39bf6d73e35e48d", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k5AAoJENi59a6uhOTPjVwQAIQHNQmnCLTnWipHjgZ+blgo\ncYUG++b0faYi96zHF4KuOV7S0un/kzJ3VpNSBzHN01rOWLXCbr4VU6XAxLpLBFDs\nqSI1GbWmUx0JM8LbBqCwZiTRgW22S9YwACgHnnLeuwj+toq1IDuvcJ38otTy4qjp\nhiEROcYm6YpJz/WWYxp17f2Ow23zSZcgU7O165WPZptoQdQ8wMmiCwZ38FslLONS\n3gK52/4zIYnUmbnWr0e+ZDlUpfE3DQxBaPu5v1ua91mlaD+gubq2BOYNxiC+bvFd\n0KMnRuIZj+nhtpn/uI7AT5oHgXQm14oJCuaISG7ehil7H36aCKPJEyFB4Fuw1PRs\naekEDR+cQJo2Z5RjBQLnsJDmTAA8P2iLDTi/W0wyIo55p7d7o5y46COjnXN9Hu4j\nZ8bVvE4eFcVA06W5wcZwjzz15MLiOOt72r2+WPejr52jt9tr3pYw5MkDDQKYYodS\nCK+GrRrFlZTjU1+xziT/LZkk+ITmNGUeRIeMCZHgqcq7UpfkY/Pek0OrgUcTfShQ\nIxhZPlUgbQ3T/lYCGlO/czA7YlXZGL1VFcwM6zFfT1RasG02ZbUrfcmjhvD+mNqH\nZagsuLhhd1ibc2F88hE293+RM3M/tUXYhRiuFH4YgXwgAvzi60fer63f9+f4k9eq\nJjk6fjt8ih1foyNDufj4\n=piTz\n-----END PGP SIGNATURE-----", + "payload": "tree bcedf1f5ea1114480c3f81bfd288842d9d36df0d\nparent 3b4ec5f6c584e49ca6cf6c618191daff44247806\nauthor Brian White 1479011675 -0500\ncommitter Anna Henningsen 1479792953 +0100\n\ndoc: improve process.emitWarning() example\n\nPR-URL: https://github.com/nodejs/node/pull/9590\nReviewed-By: Roman Reiss \nReviewed-By: Prince John Wesley \nReviewed-By: Colin Ihrig \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/25a6f88d98d732f69562bf95c39bf6d73e35e48d", + "html_url": "https://github.com/nodejs/node/commit/25a6f88d98d732f69562bf95c39bf6d73e35e48d", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/25a6f88d98d732f69562bf95c39bf6d73e35e48d/comments", + "author": { + "login": "mscdex", + "id": 54666, + "node_id": "MDQ6VXNlcjU0NjY2", + "avatar_url": "https://avatars.githubusercontent.com/u/54666?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mscdex", + "html_url": "https://github.com/mscdex", + "followers_url": "https://api.github.com/users/mscdex/followers", + "following_url": "https://api.github.com/users/mscdex/following{/other_user}", + "gists_url": "https://api.github.com/users/mscdex/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mscdex/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mscdex/subscriptions", + "organizations_url": "https://api.github.com/users/mscdex/orgs", + "repos_url": "https://api.github.com/users/mscdex/repos", + "events_url": "https://api.github.com/users/mscdex/events{/privacy}", + "received_events_url": "https://api.github.com/users/mscdex/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "3b4ec5f6c584e49ca6cf6c618191daff44247806", + "url": "https://api.github.com/repos/nodejs/node/commits/3b4ec5f6c584e49ca6cf6c618191daff44247806", + "html_url": "https://github.com/nodejs/node/commit/3b4ec5f6c584e49ca6cf6c618191daff44247806" + } + ] + }, + { + "sha": "d964eacd6aafd45f205e540bc7b6037a0f86b667", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZDk2NGVhY2Q2YWFmZDQ1ZjIwNWU1NDBiYzdiNjAzN2EwZjg2YjY2Nw==", + "commit": { + "author": { + "name": "Brian White", + "email": "mscdex@mscdex.net", + "date": "2016-11-13T04:38:29Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:54Z" + }, + "message": "doc: remove redundant warning information\n\nprocess.emitWarning() already describes how to emit custom warnings,\nso just merely provide a link to that function from the 'warning'\nevent documentation.\n\nPR-URL: https://github.com/nodejs/node/pull/9590\nReviewed-By: Roman Reiss \nReviewed-By: Prince John Wesley \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "5f1853a2732b54ced13f37487776ec2f5e8f0438", + "url": "https://api.github.com/repos/nodejs/node/git/trees/5f1853a2732b54ced13f37487776ec2f5e8f0438" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/d964eacd6aafd45f205e540bc7b6037a0f86b667", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k6AAoJENi59a6uhOTPR04P/AnADZoBAE77Nc9s4ivCdVWq\nlZG3xwc9/D/JEsJ7FuUnnSCWOqzd+51C7PdGDvEbMOG+dYryv20cVUcHaLOzILIQ\nJoHweBNBcTGrlWYaEO06fAsDg3Mt4dKnjczz9ZZ+vuGVwgbV+cSa0bWKgM6nd1ZU\nQJ/wlgffURDAo/3q/+1Co2rqCSDTivNQx6QnFikFiT/DZTOi01jScL40L9P1Bg0f\ndhctaXpNV5hvFuCD7QQMI56TdeRwQuZUJDpjkN0HDiUItLmJ7s02xTGxi+/tEsgJ\nQ2SM9N7MMyz9qHyMR1TD8S8iC1IRJ/t7zX9lIc370jtEeTmEPB7ipubQECHRKUX9\nUqwPGqPpyC+6AK0Wb1d58GnRSVtwpJiv0FKQIxkobkaokXfzOirs0bD03nVfSzI+\n7zdzCS6bd8D7TuKo3uzhzYk9PTHcrzfYIKJq0f2bwn7xKns0eH8+jyMG+r//82UE\nRUchMXWBhyf+zkDi6aY7jGC9hqIyQYfbzyGkuBcDQCGo3gk2EJl+Cg3aLMp9wa1m\ndz594AjEKERzBxo1ILzxI0Br+IYAJMfMywEqa/6xdRoAt1UuwW8kvKZzy6yCLywA\noj1R0Hno4W29trX/bGYQIFNxTPJG7EtCc9MvbXHxYc89fwe2mNPUv+shKQgMqyoG\n1GGrEwrfcKOzz6xA0zl4\n=bKGO\n-----END PGP SIGNATURE-----", + "payload": "tree 5f1853a2732b54ced13f37487776ec2f5e8f0438\nparent 25a6f88d98d732f69562bf95c39bf6d73e35e48d\nauthor Brian White 1479011909 -0500\ncommitter Anna Henningsen 1479792954 +0100\n\ndoc: remove redundant warning information\n\nprocess.emitWarning() already describes how to emit custom warnings,\nso just merely provide a link to that function from the 'warning'\nevent documentation.\n\nPR-URL: https://github.com/nodejs/node/pull/9590\nReviewed-By: Roman Reiss \nReviewed-By: Prince John Wesley \nReviewed-By: Colin Ihrig \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/d964eacd6aafd45f205e540bc7b6037a0f86b667", + "html_url": "https://github.com/nodejs/node/commit/d964eacd6aafd45f205e540bc7b6037a0f86b667", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/d964eacd6aafd45f205e540bc7b6037a0f86b667/comments", + "author": { + "login": "mscdex", + "id": 54666, + "node_id": "MDQ6VXNlcjU0NjY2", + "avatar_url": "https://avatars.githubusercontent.com/u/54666?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mscdex", + "html_url": "https://github.com/mscdex", + "followers_url": "https://api.github.com/users/mscdex/followers", + "following_url": "https://api.github.com/users/mscdex/following{/other_user}", + "gists_url": "https://api.github.com/users/mscdex/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mscdex/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mscdex/subscriptions", + "organizations_url": "https://api.github.com/users/mscdex/orgs", + "repos_url": "https://api.github.com/users/mscdex/repos", + "events_url": "https://api.github.com/users/mscdex/events{/privacy}", + "received_events_url": "https://api.github.com/users/mscdex/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "25a6f88d98d732f69562bf95c39bf6d73e35e48d", + "url": "https://api.github.com/repos/nodejs/node/commits/25a6f88d98d732f69562bf95c39bf6d73e35e48d", + "html_url": "https://github.com/nodejs/node/commit/25a6f88d98d732f69562bf95c39bf6d73e35e48d" + } + ] + }, + { + "sha": "7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6N2FmNjgwZTZmZTUzMWUwNjc5MmFlMmMwZGJkZjhkN2M1YzcyNDNjNA==", + "commit": { + "author": { + "name": "Daniel Bevenius", + "email": "daniel.bevenius@gmail.com", + "date": "2016-11-08T20:04:57Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:54Z" + }, + "message": "doc: make comment indentation consistent\n\nCurrently, some of the docs use different indentation for comments\nin the code examples. This commit makes the indentation consistent\nby putting the comments at the beginning of the line (really no\nindentation that is).\n\nPR-URL: https://github.com/nodejs/node/pull/9518\nReviewed-By: Teddy Katz \nReviewed-By: Roman Reiss \nReviewed-By: MichaĆ«l Zasso ", + "tree": { + "sha": "e62ad917d30f8daeddf7c054318fb37315e2c54c", + "url": "https://api.github.com/repos/nodejs/node/git/trees/e62ad917d30f8daeddf7c054318fb37315e2c54c" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k6AAoJENi59a6uhOTPS9IQAKC5JsDP9OozfSghx285x6wv\nem7j6n6ImGDm86EpLj+9b0DZgoD0KEG6kI2sEK7JpiABtdycQRWO2AppTq3GgGyv\nXnq6XG1bkKR0mcmOW7/cB7kfk/hYlAG+iA2bhAmUGuC3wi97ZbDchWePcWaLHpxS\ndLjN9FJPwQTfPChoErVAdCb4RMaFVz7bNBU24cZCP5gAbuDxO8gbl1b7QBv0Ht6R\nMSGAywe8WIt2T1jy8ZeI2zEwCAKcB1X7z4uS5X7FrJPsXExb/uTSZOK0e+MVS+it\nD1sbLJkmoQlIAjkl8pPBuD93tFQn6TCZCY+zlfwMR5N20mcNMrfDAIOP8VV3zBJO\nejkRg+t02xllXad+iX9suwsZAG/UVhN+G5lRmNjeV+j59GOvQRtgZ32zlnjxf7y7\nVmlOeWqsDhjlc1QjZhrx5JXXPwep+44bZOSvlbCV5nVZ/0TfyJ9W6qkG6v4p7Vam\nKpV1H7ncemrGb9OqkitWaAly4hhmm1rXc+dfLTClgNqa53BqRbeQJ6tM3nfZSIEy\n1uGSwxd2kqe0yPiYCtJHydU96LUA6R4WWA7JGxl9D29x592w4dfmSi7qp2UqRULI\n2O8SLSMjp0KoWF6V6J7pewHdYNzQrtJLo0uTci6xE2FRC0C/w5UtHqZKfu06wqc+\nyjcsKcTla1ry3+E7hsms\n=C7rT\n-----END PGP SIGNATURE-----", + "payload": "tree e62ad917d30f8daeddf7c054318fb37315e2c54c\nparent d964eacd6aafd45f205e540bc7b6037a0f86b667\nauthor Daniel Bevenius 1478635497 +0100\ncommitter Anna Henningsen 1479792954 +0100\n\ndoc: make comment indentation consistent\n\nCurrently, some of the docs use different indentation for comments\nin the code examples. This commit makes the indentation consistent\nby putting the comments at the beginning of the line (really no\nindentation that is).\n\nPR-URL: https://github.com/nodejs/node/pull/9518\nReviewed-By: Teddy Katz \nReviewed-By: Roman Reiss \nReviewed-By: MichaĆ«l Zasso \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4", + "html_url": "https://github.com/nodejs/node/commit/7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4/comments", + "author": { + "login": "danbev", + "id": 432351, + "node_id": "MDQ6VXNlcjQzMjM1MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/432351?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/danbev", + "html_url": "https://github.com/danbev", + "followers_url": "https://api.github.com/users/danbev/followers", + "following_url": "https://api.github.com/users/danbev/following{/other_user}", + "gists_url": "https://api.github.com/users/danbev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/danbev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/danbev/subscriptions", + "organizations_url": "https://api.github.com/users/danbev/orgs", + "repos_url": "https://api.github.com/users/danbev/repos", + "events_url": "https://api.github.com/users/danbev/events{/privacy}", + "received_events_url": "https://api.github.com/users/danbev/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "d964eacd6aafd45f205e540bc7b6037a0f86b667", + "url": "https://api.github.com/repos/nodejs/node/commits/d964eacd6aafd45f205e540bc7b6037a0f86b667", + "html_url": "https://github.com/nodejs/node/commit/d964eacd6aafd45f205e540bc7b6037a0f86b667" + } + ] + }, + { + "sha": "9a0bcfc4522b233c5506da91b01b6d649cfe5020", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OWEwYmNmYzQ1MjJiMjMzYzU1MDZkYTkxYjAxYjZkNjQ5Y2ZlNTAyMA==", + "commit": { + "author": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-09-30T14:16:28Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:55Z" + }, + "message": "fs: export `realpathCacheKey` from `internal/fs`\n\nMove the internally defined symbol `fs.realpathCacheKey` to\nthe internal fs module, where it’s more appropriate.\n\nThe symbol was recently added in c084287a608ef, but since\n`internal/fs` is only available in the v7.x branch, this\nneeds to be a separate follow-up change.\n\nPR-URL: https://github.com/nodejs/node/pull/8862\nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell ", + "tree": { + "sha": "67799c40c7732a94f9aa2df57747a83a9e0fa928", + "url": "https://api.github.com/repos/nodejs/node/git/trees/67799c40c7732a94f9aa2df57747a83a9e0fa928" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/9a0bcfc4522b233c5506da91b01b6d649cfe5020", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k7AAoJENi59a6uhOTPHKQP/jkoRIDtUOxFB55w7JMvGd9H\nkv2oRTCiOzz7LDc8DaB7iQq+7LMKs1o7OPmmiBlTbYd8ay18VFCWkQgwGHFPH5ws\nKc8jaFstTI3G0xVE2zh4AYPI/4nmGnQoTCnEQuo7sOkp/MaXc+IY5HrSkfSjqZ7d\n79cjV2RJViAwTkPXgJeGZq62EG60wfby9HbAL+q+xJ4AZho9ik/+AuxehybtmWXh\n9buqyshZVDb7XOngR8bcyUjdQJBRel7rai1swwlLFDAmYa8tQrOa2lkwYyya5Ml3\nxGMoRDxe1d8d5cEQ9Qvh9J68cOZaCh43w+pVXLabxpnAsoJryIZRqrg5C8HRKPgk\nmGoj3HcXfTUpZNCOd2Jb8qeSK4bwnYLfGoQ8+lYAka4EWPn0HDxB528gsb49XrTN\noXGCh029duvjuQyBbv93lHRjMTxQtM3B5NNzD7o8mE8IS0usVOkYnt0MHsv4K+h1\n8l9FlGk3vGyvDxokzVvSdOWdRec5tanjQhcKMtu6EUTiwwouJxr/7X6RCDIQSR48\nD/XV0d24TWIf4qmE0IJgmNbzKdGnSLGSlgrycjr7SgHdwZyf3geqlYDmtjcHccX4\ngobBsnKhe93F66X1wqwrN2B1lDtb2JLmtbpK8rpjxihoGL+wEsGidrd4sAIQk+sJ\nE0yAcTMpa6JySBq70eG2\n=ehKa\n-----END PGP SIGNATURE-----", + "payload": "tree 67799c40c7732a94f9aa2df57747a83a9e0fa928\nparent 7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4\nauthor Anna Henningsen 1475244988 +0200\ncommitter Anna Henningsen 1479792955 +0100\n\nfs: export `realpathCacheKey` from `internal/fs`\n\nMove the internally defined symbol `fs.realpathCacheKey` to\nthe internal fs module, where it’s more appropriate.\n\nThe symbol was recently added in c084287a608ef, but since\n`internal/fs` is only available in the v7.x branch, this\nneeds to be a separate follow-up change.\n\nPR-URL: https://github.com/nodejs/node/pull/8862\nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/9a0bcfc4522b233c5506da91b01b6d649cfe5020", + "html_url": "https://github.com/nodejs/node/commit/9a0bcfc4522b233c5506da91b01b6d649cfe5020", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/9a0bcfc4522b233c5506da91b01b6d649cfe5020/comments", + "author": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4", + "url": "https://api.github.com/repos/nodejs/node/commits/7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4", + "html_url": "https://github.com/nodejs/node/commit/7af680e6fe531e06792ae2c0dbdf8d7c5c7243c4" + } + ] + }, + { + "sha": "cc6901d48204363888fda4b54a85ca070f798092", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6Y2M2OTAxZDQ4MjA0MzYzODg4ZmRhNGI1NGE4NWNhMDcwZjc5ODA5Mg==", + "commit": { + "author": { + "name": "Sakthipriyan Vairamani (thefourtheye)", + "email": "thechargingvolcano@gmail.com", + "date": "2016-11-03T09:03:13Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:55Z" + }, + "message": "tools: improve docopen target in Makefile\n\n1. As it is, it just tries to build only the `all.html` file. If none of\n the other files are built already, generated page will not be good.\n To fix this, we process the assets and generate HTML files first.\n\n2. After the HTML is generated, `google-chrome` is used to open the\n generated file in browser. This is not very portable as it might not\n be installed or installations might have used a different name. So,\n we use Python's webbrowser module to open the file.\n\nPR-URL: https://github.com/nodejs/node/pull/9436\n\nReviewed-By: Daniel Bevenius \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "b99061e61bb15a5d97b1f6a1627b42c7429a6032", + "url": "https://api.github.com/repos/nodejs/node/git/trees/b99061e61bb15a5d97b1f6a1627b42c7429a6032" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/cc6901d48204363888fda4b54a85ca070f798092", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k7AAoJENi59a6uhOTP4XwP/jzj9xkyH/cUxpoaWMxjiz9Z\nYRDOKgb5bfcm8wFf5hFU9qEFLbDJSVqIJxX8hPoSP7YkUj+SwJLNyKzL/YZxtcUK\nB8uxT/FV5EcmlGqNMUfDPPVfMDT2TC9qUpdlkxo+sdlEseovaj0K+jFMbu2BpbM7\ns6sD0/CLFzSLdV4GWNs/jCHcTdhGZMDNZY9PvheaGirnCr8rx/LUsaswmWaAHYN7\nTsw5I5Yj/d9JMGQ15vv/O4tiZfXuCGYTI4MltjrY80St4g0aqv0gKGqvxUF+9M1m\nnjmXrWv1MSmZ9xoQZxZV7r0m5uSyac3mxkY7QCI9Nef1HFDS6aWMos3Knb9Hc1Vy\nrUVlTr4D+lQ4ELwG++88K7aH9ZxwPFsLDa8GMZ2ZVY1F/QOdDwjnKaq+/3WT79jb\ncrqhp4RcyGNJCyAAb/EskIda+X9R/rxC+K6NxsjsUuBCiJElCdePgImpoltiLUlM\nF/Mf8MPhglMeXAkIGhPPzPtQOpRdlE2JajhFnDgAWmQUraNCJjNe+2hgt+NpSfkL\n6mAteaMsSipNn4An/pljJePzfPah3OBhmD0OYPAKWkVxyn7E8Cjg5JJB9YzN/JV2\nmBWqw/V8cuRP49rsMlxt3F+UUrmQwIOYCvRTtdYTBdneGMSAMwJDBU5lTqSsO0Xk\n80xD+KFX8NYeakBdgXW0\n=35jC\n-----END PGP SIGNATURE-----", + "payload": "tree b99061e61bb15a5d97b1f6a1627b42c7429a6032\nparent 9a0bcfc4522b233c5506da91b01b6d649cfe5020\nauthor Sakthipriyan Vairamani (thefourtheye) 1478163793 +0530\ncommitter Anna Henningsen 1479792955 +0100\n\ntools: improve docopen target in Makefile\n\n1. As it is, it just tries to build only the `all.html` file. If none of\n the other files are built already, generated page will not be good.\n To fix this, we process the assets and generate HTML files first.\n\n2. After the HTML is generated, `google-chrome` is used to open the\n generated file in browser. This is not very portable as it might not\n be installed or installations might have used a different name. So,\n we use Python's webbrowser module to open the file.\n\nPR-URL: https://github.com/nodejs/node/pull/9436\n\nReviewed-By: Daniel Bevenius \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/cc6901d48204363888fda4b54a85ca070f798092", + "html_url": "https://github.com/nodejs/node/commit/cc6901d48204363888fda4b54a85ca070f798092", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/cc6901d48204363888fda4b54a85ca070f798092/comments", + "author": { + "login": "thefourtheye", + "id": 696611, + "node_id": "MDQ6VXNlcjY5NjYxMQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/696611?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/thefourtheye", + "html_url": "https://github.com/thefourtheye", + "followers_url": "https://api.github.com/users/thefourtheye/followers", + "following_url": "https://api.github.com/users/thefourtheye/following{/other_user}", + "gists_url": "https://api.github.com/users/thefourtheye/gists{/gist_id}", + "starred_url": "https://api.github.com/users/thefourtheye/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/thefourtheye/subscriptions", + "organizations_url": "https://api.github.com/users/thefourtheye/orgs", + "repos_url": "https://api.github.com/users/thefourtheye/repos", + "events_url": "https://api.github.com/users/thefourtheye/events{/privacy}", + "received_events_url": "https://api.github.com/users/thefourtheye/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "9a0bcfc4522b233c5506da91b01b6d649cfe5020", + "url": "https://api.github.com/repos/nodejs/node/commits/9a0bcfc4522b233c5506da91b01b6d649cfe5020", + "html_url": "https://github.com/nodejs/node/commit/9a0bcfc4522b233c5506da91b01b6d649cfe5020" + } + ] + }, + { + "sha": "875d1b93fc122902d2883a504212c0f97d1ff9cb", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ODc1ZDFiOTNmYzEyMjkwMmQyODgzYTUwNDIxMmMwZjk3ZDFmZjljYg==", + "commit": { + "author": { + "name": "Yoshiya Hinosawa", + "email": "stibium121@gmail.com", + "date": "2016-11-12T08:16:03Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:56Z" + }, + "message": "test: add test case of PassThrough\n\nThis commit adds the test case of PassThrough.\nThis test case checks that PassThrough can\nconstruct without new operator.\n\nThis is a part of Code And Learn at NodeFest 2016\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9581\nReviewed-By: Yosuke Furukawa \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "0151609711b66ffb1163f6db79cf2f0aba0ed3e6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/0151609711b66ffb1163f6db79cf2f0aba0ed3e6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/875d1b93fc122902d2883a504212c0f97d1ff9cb", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k8AAoJENi59a6uhOTPiR4QAK39hE4PppKybIS3Su7x3Z8t\nIxoBths/IExP0IcqP9NKFz3X1dewBS8N6gaZTrGyxaZ63Tus8zfAMsuUXByszKig\ns3+7l2yMVUNze4092vZ/7OuaRklq/w/MFD9mk4vwNxlV9XDx6nXA/iImf3i3wCVy\naLyom6h9IHZNd2IpQ0gRxQ/RmvF7r8k0w9mCPQ6MUvsPVAQD8/TliNsB6XNDix9h\nfsT19kQS8NToicTdqd9gjZpML92DxylWnMj6RzWkTB9DRg4jO6aiBURX/mHh1u+u\n5te/fKem6IF3WRqopEna4OD914kFr1JKLmZAA8qiWKy3E1H/4sAfDmKxJbxZDJAJ\nOZNuuH1DF83VyZ7P7dtSLVi3DWroL4dhAuWzmob4QUnxaFokjDo7wG0lH0uNvlMl\njAooe5bAGJkZJrxWKDs1dorWW0M/mX2h3JhW6acPZT3LUgq0xQ1LrFxR9sNWkyUA\nDhdAjeiiErgZpQO5iJb2eqmrvPkBC7HeJ3XWLG+M2IYLFvOgsQ1WRErA6eh+k+DI\n6F74HERcQ/qeYV7hddc6jc6caHcgyEXJYfNYkN7F75LLC43eC3fMxGE8fcBzxwWt\ntzN6NmWS8y5cT559KIKTkTW1qNQ7TMneUMm+BO6igYIhDvxtDZMfgCnj+FWNB7D/\nyA3gP7xjcGD1L+/ZdZH6\n=pZoY\n-----END PGP SIGNATURE-----", + "payload": "tree 0151609711b66ffb1163f6db79cf2f0aba0ed3e6\nparent cc6901d48204363888fda4b54a85ca070f798092\nauthor Yoshiya Hinosawa 1478938563 +0900\ncommitter Anna Henningsen 1479792956 +0100\n\ntest: add test case of PassThrough\n\nThis commit adds the test case of PassThrough.\nThis test case checks that PassThrough can\nconstruct without new operator.\n\nThis is a part of Code And Learn at NodeFest 2016\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9581\nReviewed-By: Yosuke Furukawa \nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/875d1b93fc122902d2883a504212c0f97d1ff9cb", + "html_url": "https://github.com/nodejs/node/commit/875d1b93fc122902d2883a504212c0f97d1ff9cb", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/875d1b93fc122902d2883a504212c0f97d1ff9cb/comments", + "author": { + "login": "kt3k", + "id": 613956, + "node_id": "MDQ6VXNlcjYxMzk1Ng==", + "avatar_url": "https://avatars.githubusercontent.com/u/613956?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kt3k", + "html_url": "https://github.com/kt3k", + "followers_url": "https://api.github.com/users/kt3k/followers", + "following_url": "https://api.github.com/users/kt3k/following{/other_user}", + "gists_url": "https://api.github.com/users/kt3k/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kt3k/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kt3k/subscriptions", + "organizations_url": "https://api.github.com/users/kt3k/orgs", + "repos_url": "https://api.github.com/users/kt3k/repos", + "events_url": "https://api.github.com/users/kt3k/events{/privacy}", + "received_events_url": "https://api.github.com/users/kt3k/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "cc6901d48204363888fda4b54a85ca070f798092", + "url": "https://api.github.com/repos/nodejs/node/commits/cc6901d48204363888fda4b54a85ca070f798092", + "html_url": "https://github.com/nodejs/node/commit/cc6901d48204363888fda4b54a85ca070f798092" + } + ] + }, + { + "sha": "474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NDc0ZDRhYTJlMzg0NDFhYTVjZjRmMzAzYjdiOGFkNDhlMjBjOGM2Yw==", + "commit": { + "author": { + "name": "Mitsuo Utano", + "email": "utano320@gmail.com", + "date": "2016-11-12T08:04:28Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:35:56Z" + }, + "message": "doc: fix typo in doc/repl.md line: 6\n\nfix doc/api/repl.md line 6 \"includable\" => \"includible\"\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9582\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "767b5729dec67ef4147282bcb5edcc3bbb37bcb3", + "url": "https://api.github.com/repos/nodejs/node/git/trees/767b5729dec67ef4147282bcb5edcc3bbb37bcb3" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9k9AAoJENi59a6uhOTPHUkQAI17jo1941mpspWALjfQyCNx\n9cwap4UWeYv4ud0kPAiDfh17Xm7HZgVE4jK5Kfcji3Hre3C0fonfr4WqqJKxqFhR\nXgSFSSPZOpsBfm22P5QY4cyHx2ceV1rAsLrvehtDxNcDiLLBRDdibFCs2E5jl+ak\nLGL6/iYNVuU+cPFkAvmr1OFG1E4q2eBvMRj19e0PHllWaR7epxtmcjCIiJeidxk6\nhvErFPz5tJIKWtYmRb1zirc6Iw7aNIv+j26NWqVgjnSTwLTaNLfB8miur3QX4/Ba\nUKjm8+a2o5/u6VeTlCpFJmqqgCx7rs6J3xEg2pDvfxcxSzmlWq2vIanNF+3naV4S\nR5ifj7EFqyFhzPDMH8hyTZYuN/2gcRKicF9SLF6kMr5cIbSsXIHlp6FkyLPgvQOu\nJuqGkIeXqaYkOkvzAanFwvBeWHRC3Zt9GbtPit8lnHf7DfO442J9bUhV5pEKbUQJ\ndLW1Wpr8BS8u+KKA2WaxF8EOWKyfAVB10HAmnAPd+Z3mjUgdZt2XLk5/adp2+eE9\nJliqgGdMEsXgn7ez2d/yEw0BsJI/b2xAvtxXBdv7eyBaubz8FDPhR6OjHJAn9vGE\nlFyhyBur5/VObrsDkDm+aUzbiif32uR8kGODDjpyeOUM/yOkKwHAVwpzEayvc/bY\nLFl/ptqgsGqEJfdu0CDx\n=r2R7\n-----END PGP SIGNATURE-----", + "payload": "tree 767b5729dec67ef4147282bcb5edcc3bbb37bcb3\nparent 875d1b93fc122902d2883a504212c0f97d1ff9cb\nauthor Mitsuo Utano 1478937868 +0900\ncommitter Anna Henningsen 1479792956 +0100\n\ndoc: fix typo in doc/repl.md line: 6\n\nfix doc/api/repl.md line 6 \"includable\" => \"includible\"\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9582\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c", + "html_url": "https://github.com/nodejs/node/commit/474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c/comments", + "author": { + "login": "utano320", + "id": 2193992, + "node_id": "MDQ6VXNlcjIxOTM5OTI=", + "avatar_url": "https://avatars.githubusercontent.com/u/2193992?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/utano320", + "html_url": "https://github.com/utano320", + "followers_url": "https://api.github.com/users/utano320/followers", + "following_url": "https://api.github.com/users/utano320/following{/other_user}", + "gists_url": "https://api.github.com/users/utano320/gists{/gist_id}", + "starred_url": "https://api.github.com/users/utano320/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/utano320/subscriptions", + "organizations_url": "https://api.github.com/users/utano320/orgs", + "repos_url": "https://api.github.com/users/utano320/repos", + "events_url": "https://api.github.com/users/utano320/events{/privacy}", + "received_events_url": "https://api.github.com/users/utano320/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "875d1b93fc122902d2883a504212c0f97d1ff9cb", + "url": "https://api.github.com/repos/nodejs/node/commits/875d1b93fc122902d2883a504212c0f97d1ff9cb", + "html_url": "https://github.com/nodejs/node/commit/875d1b93fc122902d2883a504212c0f97d1ff9cb" + } + ] + }, + { + "sha": "51e24e770abf1e2c452969b508d5fea781cd3dc0", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NTFlMjRlNzcwYWJmMWUyYzQ1Mjk2OWI1MDhkNWZlYTc4MWNkM2RjMA==", + "commit": { + "author": { + "name": "masashi.g", + "email": "masashi.g@gmail.com", + "date": "2016-11-12T13:56:19Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:36:11Z" + }, + "message": "test: use setImmediate() in test of stream2\n\nuse setImmediate() insted of setTimeout()\n in test of stream2 push.\nThe test is in test/parallel/test-stream2-push.js\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9583\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "7813218cf046c59abcdf3be7ee97d6bf7665ec1b", + "url": "https://api.github.com/repos/nodejs/node/git/trees/7813218cf046c59abcdf3be7ee97d6bf7665ec1b" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/51e24e770abf1e2c452969b508d5fea781cd3dc0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9lLAAoJENi59a6uhOTPoGMQAKL2ZSc56Zh4nIxLOumx5YIc\nXJwB2jY9FwSTz3U6DCLMn0tEFFNWjCOQpQkYVhTKy4opu337KGWi0sF6dUZwlCwP\nFOC2O8CJz1n4LP/l7T/N2rlRJ56HH3GnIkeeRtE4zOaMNVrESyj7pHk6l9Dm/Rju\nlhjcccD8kTv5ThAQeJSbo4HZUiB7pApT8AYhiXi1g4UodSStlKBd6/L3+52uOIL2\nuZPslWjCQLNq49IuIgBewSOQCt7B13Jpwx73IdHmM2MxyftZ69SOnh+3tpmMNZ5v\nsS0Qky5m9yT+pD0fkzduvCXn5SBtd0bCFyg2Zpl5st6Y1w2LFyxLOBkyqC+ox21M\nuYB6Pqwvp4SdZ6I0PFrf1vf3UFsG7T2XDt6SQjxpD4Y+OWoyGaD+xZLad2/dNm1v\nHYPKv/Cvvc4/esIwT/GA/VcJ6PYKs50JC1RI6ojOLoM/EkZTpmgZjzj7NfrYkoa0\nkUWHjxrHaxPqq9ORwOMuo2MbREJ1IFI8qLDvJn13BTOa2isVyhKuUj4O1s2hGnoy\nnuImmVlZJqMl3eMsRihtFmzjyJFsJquutVaEG+Evg3kPnOuD9895dDAsyZg/lQPN\nEo6KKm+fue9NnPucAZSxGagYwdIHKKxl5VmcIhOqlQWzEcGdRuvPqzAKozasubGQ\nbWAuw8VeWSEwHCZD/5sx\n=hsHS\n-----END PGP SIGNATURE-----", + "payload": "tree 7813218cf046c59abcdf3be7ee97d6bf7665ec1b\nparent 474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c\nauthor masashi.g 1478958979 +0900\ncommitter Anna Henningsen 1479792971 +0100\n\ntest: use setImmediate() in test of stream2\n\nuse setImmediate() insted of setTimeout()\n in test of stream2 push.\nThe test is in test/parallel/test-stream2-push.js\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9583\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/51e24e770abf1e2c452969b508d5fea781cd3dc0", + "html_url": "https://github.com/nodejs/node/commit/51e24e770abf1e2c452969b508d5fea781cd3dc0", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/51e24e770abf1e2c452969b508d5fea781cd3dc0/comments", + "author": { + "login": "mganeko", + "id": 3625666, + "node_id": "MDQ6VXNlcjM2MjU2NjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3625666?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mganeko", + "html_url": "https://github.com/mganeko", + "followers_url": "https://api.github.com/users/mganeko/followers", + "following_url": "https://api.github.com/users/mganeko/following{/other_user}", + "gists_url": "https://api.github.com/users/mganeko/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mganeko/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mganeko/subscriptions", + "organizations_url": "https://api.github.com/users/mganeko/orgs", + "repos_url": "https://api.github.com/users/mganeko/repos", + "events_url": "https://api.github.com/users/mganeko/events{/privacy}", + "received_events_url": "https://api.github.com/users/mganeko/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c", + "url": "https://api.github.com/repos/nodejs/node/commits/474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c", + "html_url": "https://github.com/nodejs/node/commit/474d4aa2e38441aa5cf4f303b7b8ad48e20c8c6c" + } + ] + }, + { + "sha": "4ddc23828d1acb57bbbca94ebabec2b03cfd49ec", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NGRkYzIzODI4ZDFhY2I1N2JiYmNhOTRlYmFiZWMyYjAzY2ZkNDllYw==", + "commit": { + "author": { + "name": "James M Snell", + "email": "jasnell@gmail.com", + "date": "2016-11-07T16:26:19Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:36:12Z" + }, + "message": "doc: move TSC and CTC meeting minutes out of core repo\n\nThe TSC and CTC meeting minutes are more properly placed in\nthe nodejs/tsc and nodejs/ctc repositories, respectively.\n\nPR-URL: https://github.com/nodejs/node/pull/9503\nReviewed-By: Colin Ihrig \nReviewed-By: Myles Borins \nReviewed-By: Michael Dawson \nReviewed-By: Evan Lucas \nReviewed-By: Rich Trott \nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "2fcc34df5e6bb65248bcf6e3cb87a6afc287b5cc", + "url": "https://api.github.com/repos/nodejs/node/git/trees/2fcc34df5e6bb65248bcf6e3cb87a6afc287b5cc" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/4ddc23828d1acb57bbbca94ebabec2b03cfd49ec", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9lMAAoJENi59a6uhOTPShQQAKv0lxkL3L1/MqD6E6M33l4W\nsGY8YE6odi8g9opZGxot0WzvCaeVm0hehJJP71CF78BAwBcY7uiW1MF1I9Q5dDyT\nzm9RsUAVjSzAiC5Y2V3WvbqK/mQEyQergI/aX+VjvHLF0B6dzSCB6dQYDRrzyg1A\ny9SYooKu87UtmEKMmKRlhOqeSpbvsq67WWfSin/Ucl5/forQMCsu+hfwmhHGGlor\nJmDgwp0bDPL8Vs5i7X6Ko6eF8w4qju0rT1y5jP0UW7Syi+MceHUAHt+x3yeWksbV\nr6aQz9hF3jUf1UZVstoEvrSyMMEiDsmukLa3VIztizmljjf5bSbOgnIh+GziUBRt\nmru7f21bqtEYy+yLEKawiRdK29IMsBOnPqfBtIi6/ruDi1nHUdgiwIjHzEE5EGaP\neOZoy9ThB9hIqVnXZJU7+NrHlvX2bjQ5Lml7Cd3CiLa6dWjVX2tyYAm0GUf/pJWy\nzoynJIyPVUE3upB6TF3kTHL+tWiEidP2mXZ+NYZTcI2Z2ox/DNn5hKTehTheOWkK\nGBlcPzUINEzv4dMhHsqDTWILKDsxRnkUPnddD6GbwztjDQ43dkbrQJFDvcXss62k\nhO9A7JV/eSRtOde76eR/Ip3mQsnjcR6nURNCtk1sTNrMPz7fQNcocJ4xzr73ihwo\nZZ+RYWm4oPevFOCMwxWt\n=tqjY\n-----END PGP SIGNATURE-----", + "payload": "tree 2fcc34df5e6bb65248bcf6e3cb87a6afc287b5cc\nparent 51e24e770abf1e2c452969b508d5fea781cd3dc0\nauthor James M Snell 1478535979 -0800\ncommitter Anna Henningsen 1479792972 +0100\n\ndoc: move TSC and CTC meeting minutes out of core repo\n\nThe TSC and CTC meeting minutes are more properly placed in\nthe nodejs/tsc and nodejs/ctc repositories, respectively.\n\nPR-URL: https://github.com/nodejs/node/pull/9503\nReviewed-By: Colin Ihrig \nReviewed-By: Myles Borins \nReviewed-By: Michael Dawson \nReviewed-By: Evan Lucas \nReviewed-By: Rich Trott \nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/4ddc23828d1acb57bbbca94ebabec2b03cfd49ec", + "html_url": "https://github.com/nodejs/node/commit/4ddc23828d1acb57bbbca94ebabec2b03cfd49ec", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/4ddc23828d1acb57bbbca94ebabec2b03cfd49ec/comments", + "author": { + "login": "jasnell", + "id": 439929, + "node_id": "MDQ6VXNlcjQzOTkyOQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/439929?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jasnell", + "html_url": "https://github.com/jasnell", + "followers_url": "https://api.github.com/users/jasnell/followers", + "following_url": "https://api.github.com/users/jasnell/following{/other_user}", + "gists_url": "https://api.github.com/users/jasnell/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jasnell/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jasnell/subscriptions", + "organizations_url": "https://api.github.com/users/jasnell/orgs", + "repos_url": "https://api.github.com/users/jasnell/repos", + "events_url": "https://api.github.com/users/jasnell/events{/privacy}", + "received_events_url": "https://api.github.com/users/jasnell/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "51e24e770abf1e2c452969b508d5fea781cd3dc0", + "url": "https://api.github.com/repos/nodejs/node/commits/51e24e770abf1e2c452969b508d5fea781cd3dc0", + "html_url": "https://github.com/nodejs/node/commit/51e24e770abf1e2c452969b508d5fea781cd3dc0" + } + ] + } + ] + \ No newline at end of file diff --git a/test/_fixtures/pull-request-commits-page-3.json b/test/_fixtures/pull-request-commits-page-3.json new file mode 100644 index 00000000..3c3ef9a7 --- /dev/null +++ b/test/_fixtures/pull-request-commits-page-3.json @@ -0,0 +1,2354 @@ +[ + { + "sha": "7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NzQyMGNlOGI3ZTg1MGVjYjVjMTFhM2M1Y2Y4N2JkYTVlOThlN2U0Zg==", + "commit": { + "author": { + "name": "solebox", + "email": "solekiller@gmail.com", + "date": "2016-10-16T11:03:38Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:36:12Z" + }, + "message": "src: squelch unused function warnings in util.h\n\nFixes: https://github.com/nodejs/node/issues/9083\n\nPR-URL: https://github.com/nodejs/node/pull/9115\nReviewed-By: Anna Henningsen \nReviewed-By: James M Snell \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "5c24b3a7e76631b94d17d88b0fadfc6b9db939cd", + "url": "https://api.github.com/repos/nodejs/node/git/trees/5c24b3a7e76631b94d17d88b0fadfc6b9db939cd" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9lMAAoJENi59a6uhOTPdQQP/i9RkMNw/ZAaoD+T2PdGbIk6\noPrS9KnAAPTOZYMEe59+zxErTUVHS5DEi+CD0TmSpUM3LEYKPuoMq8VvMab4Kjop\nFhTsNrsmo0h5Q4hhf7IF5OJhvwCp444J+e7hHTXQX1eAZxI7Kd+u5g7MZRTLC8nH\ncIQfXB1oI2w8Bg9bj4UkCSi6nzfPy7qxbkwS5IisxayylVrFUZXW+PwzEMQHdw7f\nAZ9bP1l4m9PiYphbLMksrmWocCFO9GAL8YWtE7C9ZckgIl7Wgh0wsAXJOGZ5Zhnm\nIZ1WlKwYrqa8V+q9IV7PceTy4f+kRhJom2XdTbssDZgalrq9N2OVuFVPZ7dmhR/N\n5xS79T2JZwUCh9+nKv8yTCBbJLDoG7muaD6FR7EGngvN+om1jcEN8cxvHFKQcdTc\noq5GM4Ko34duMBto3zMQbGfQIq8/n+41xb/CrialIrwrfMX6HKMVaOvuibrV3DEV\nr5o5jr6rtFUhhnykmFOFAH9zeGMh6q7yAneiTTa43a+k5XcUrI496YPpZipchLLa\nOG4/lXABECtKl+ulrIFvS0SNQaYBSzGg+kGzNugfr0Hb61WGuUazahlOEDAGlUdB\nIN5w8LbJt0iYsljcCC2mAMOcC/u9d3VAYKRMUt3UOK8qjIf7WkOjJKaSH84s3WJb\nk5Re6QViIqDbmD6OktuH\n=N9aB\n-----END PGP SIGNATURE-----", + "payload": "tree 5c24b3a7e76631b94d17d88b0fadfc6b9db939cd\nparent 4ddc23828d1acb57bbbca94ebabec2b03cfd49ec\nauthor solebox 1476615818 +0300\ncommitter Anna Henningsen 1479792972 +0100\n\nsrc: squelch unused function warnings in util.h\n\nFixes: https://github.com/nodejs/node/issues/9083\n\nPR-URL: https://github.com/nodejs/node/pull/9115\nReviewed-By: Anna Henningsen \nReviewed-By: James M Snell \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f", + "html_url": "https://github.com/nodejs/node/commit/7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f/comments", + "author": { + "login": "solebox", + "id": 103052, + "node_id": "MDQ6VXNlcjEwMzA1Mg==", + "avatar_url": "https://avatars.githubusercontent.com/u/103052?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/solebox", + "html_url": "https://github.com/solebox", + "followers_url": "https://api.github.com/users/solebox/followers", + "following_url": "https://api.github.com/users/solebox/following{/other_user}", + "gists_url": "https://api.github.com/users/solebox/gists{/gist_id}", + "starred_url": "https://api.github.com/users/solebox/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/solebox/subscriptions", + "organizations_url": "https://api.github.com/users/solebox/orgs", + "repos_url": "https://api.github.com/users/solebox/repos", + "events_url": "https://api.github.com/users/solebox/events{/privacy}", + "received_events_url": "https://api.github.com/users/solebox/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "4ddc23828d1acb57bbbca94ebabec2b03cfd49ec", + "url": "https://api.github.com/repos/nodejs/node/commits/4ddc23828d1acb57bbbca94ebabec2b03cfd49ec", + "html_url": "https://github.com/nodejs/node/commit/4ddc23828d1acb57bbbca94ebabec2b03cfd49ec" + } + ] + }, + { + "sha": "a086566be615785960e23c4fa98528886fbcbd3b", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YTA4NjU2NmJlNjE1Nzg1OTYwZTIzYzRmYTk4NTI4ODg2ZmJjYmQzYg==", + "commit": { + "author": { + "name": "Sam Roberts", + "email": "vieuxtech@gmail.com", + "date": "2016-11-17T20:17:07Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:36:58Z" + }, + "message": "doc: fix an SNI mistyped as SNS\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "425ecbc5eef2613831dd22f5683c72c8a9ba8771", + "url": "https://api.github.com/repos/nodejs/node/git/trees/425ecbc5eef2613831dd22f5683c72c8a9ba8771" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/a086566be615785960e23c4fa98528886fbcbd3b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l7AAoJENi59a6uhOTPza4QALzBpw0Dt3Lfd3tR2qyEoqEX\nnu2BZcJPeqqWktXulukP+zehazleGpCfKM7BMYeur8TZQ4WxhXaYaTpXQUvJAxje\nf6BQ5iPxZvyYf2f4tLhS+Z53KyPTjY9Jp0vVTmAN3Nl9cu21vDS0PsmBM6MHWy5T\n/pcySf6hnklo8O5m9vkDOd5EHBcpR//gpmcpCthNAWzruR6i31JKO+kZOVYJMNBr\npoWbNU+cs6turyYNpNzNXs7NLSnehaDdAnGyuAUZiHkIyihBbTUMwrmyp+EBCGYC\nqz9n6LFPVoP5/TzMXz88sLUStpCLI2/HT78NUkexI3zugdBMN5Seu37xstVuhaA6\nJmx2cnNMfKfWKW2aZfnNG5ZGkVwgKazHIb/wMf79Okmm74fJzV9sjE3nTV5iBn61\nH2V6po8bpSZ077TFe5+WaNSN8V6wZqpIiubBMuSTC52h+E2ZbCK+nloPPUqxeF++\n6dVO/g6pj5iwoWcyDO1ZDaaA3/7wNKD6D+zznJGajPBeZVPsvLQF5brYFdds2uip\nh3AXpd58hTpSOBAkJODOcY0BZ5ZGDWBWAciR6cQv75RVytDuEcLMn/kXneKbn5g7\n9QOAfJVTrtJm7p4cV9dtua5zwcoK0gR9vrk/UBvP1QMb7qkqAlZUv1xOwR1rNqS+\n8P9h2DhxiOfCYw7/RcWZ\n=jfYL\n-----END PGP SIGNATURE-----", + "payload": "tree 425ecbc5eef2613831dd22f5683c72c8a9ba8771\nparent 7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f\nauthor Sam Roberts 1479413827 -0800\ncommitter Anna Henningsen 1479793018 +0100\n\ndoc: fix an SNI mistyped as SNS\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/a086566be615785960e23c4fa98528886fbcbd3b", + "html_url": "https://github.com/nodejs/node/commit/a086566be615785960e23c4fa98528886fbcbd3b", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/a086566be615785960e23c4fa98528886fbcbd3b/comments", + "author": { + "login": "sam-github", + "id": 17607, + "node_id": "MDQ6VXNlcjE3NjA3", + "avatar_url": "https://avatars.githubusercontent.com/u/17607?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sam-github", + "html_url": "https://github.com/sam-github", + "followers_url": "https://api.github.com/users/sam-github/followers", + "following_url": "https://api.github.com/users/sam-github/following{/other_user}", + "gists_url": "https://api.github.com/users/sam-github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sam-github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sam-github/subscriptions", + "organizations_url": "https://api.github.com/users/sam-github/orgs", + "repos_url": "https://api.github.com/users/sam-github/repos", + "events_url": "https://api.github.com/users/sam-github/events{/privacy}", + "received_events_url": "https://api.github.com/users/sam-github/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f", + "url": "https://api.github.com/repos/nodejs/node/commits/7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f", + "html_url": "https://github.com/nodejs/node/commit/7420ce8b7e850ecb5c11a3c5cf87bda5e98e7e4f" + } + ] + }, + { + "sha": "f43e47aab2bc400a5bfdf4ff162a8484e3559630", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZjQzZTQ3YWFiMmJjNDAwYTViZmRmNGZmMTYyYTg0ODRlMzU1OTYzMA==", + "commit": { + "author": { + "name": "Sam Roberts", + "email": "vieuxtech@gmail.com", + "date": "2016-11-17T20:24:43Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:36:59Z" + }, + "message": "doc: describe when a tls server emits 'close'\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "da701a3cb6a8425ff3c8a711179dec717152b68e", + "url": "https://api.github.com/repos/nodejs/node/git/trees/da701a3cb6a8425ff3c8a711179dec717152b68e" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/f43e47aab2bc400a5bfdf4ff162a8484e3559630", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l7AAoJENi59a6uhOTPHo0P/3GeWE0WL1htcf7VBMwy6qo1\nvhs/bQHv2FVT9oGDaq8lff8rrmFpFgzbazub3myPPSruiquBI5lI/tzVhFQHg9Kx\nIlVPAoFI+mtc7HNIq6hmy0taUgRE0BcFRDHfp/Ead1dVExZNWkO2unRu7UiXbKKu\nauidKXBJEYrCY/0PQ8ee9uEYosPkeY9Ie418u9PkoGCRmGwLRAnY+q4QhATJABC6\ns0vn/WUOUTz4g6uDGv5aVp6faw7WEPNm8OEWI67uyWyMNAbDOg/YL+AThf+cJhOA\nGXygJEQvROpUyFdwmgIoajGd14Kwep9UK7N/CPuKJHqlq7vwJbFKoJJFG+i+Euv5\nsVrJECxouhpvM6BnuXM98iGTK1BCfizeFsTKaH7YkO0gNlTbrw9uID9p4AdiqtcT\nxYs/NeEUo/9UmJG4/VNcoLFECPgjLU6hJXf/k7eDxFeBHiIJkfUYcon+wc5E4hlx\nh+tHwg/kabAO+tOKFW+b11zEYkHgvTWIpfoOlJX0AspDlp+8K1yen7KyTTriN77z\nLkx/oMMS/1Wr8/sVcSP5aMeH8/MlGNx90h4ZODpd/tr/uSFl/5u/Zd+XIUzt8kb5\nywVP55KbfhkvQhUT5JqdHDaMwPGMfi+NItJKEkOsST3HLOl0YCJYWhhCjs5/r98A\nj3VbmHo+CYfYANVVfE51\n=Mwwl\n-----END PGP SIGNATURE-----", + "payload": "tree da701a3cb6a8425ff3c8a711179dec717152b68e\nparent a086566be615785960e23c4fa98528886fbcbd3b\nauthor Sam Roberts 1479414283 -0800\ncommitter Anna Henningsen 1479793019 +0100\n\ndoc: describe when a tls server emits 'close'\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/f43e47aab2bc400a5bfdf4ff162a8484e3559630", + "html_url": "https://github.com/nodejs/node/commit/f43e47aab2bc400a5bfdf4ff162a8484e3559630", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/f43e47aab2bc400a5bfdf4ff162a8484e3559630/comments", + "author": { + "login": "sam-github", + "id": 17607, + "node_id": "MDQ6VXNlcjE3NjA3", + "avatar_url": "https://avatars.githubusercontent.com/u/17607?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sam-github", + "html_url": "https://github.com/sam-github", + "followers_url": "https://api.github.com/users/sam-github/followers", + "following_url": "https://api.github.com/users/sam-github/following{/other_user}", + "gists_url": "https://api.github.com/users/sam-github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sam-github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sam-github/subscriptions", + "organizations_url": "https://api.github.com/users/sam-github/orgs", + "repos_url": "https://api.github.com/users/sam-github/repos", + "events_url": "https://api.github.com/users/sam-github/events{/privacy}", + "received_events_url": "https://api.github.com/users/sam-github/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "a086566be615785960e23c4fa98528886fbcbd3b", + "url": "https://api.github.com/repos/nodejs/node/commits/a086566be615785960e23c4fa98528886fbcbd3b", + "html_url": "https://github.com/nodejs/node/commit/a086566be615785960e23c4fa98528886fbcbd3b" + } + ] + }, + { + "sha": "c18ca1593e4aa5b19df67147ee048b1ba862ed17", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YzE4Y2ExNTkzZTRhYTViMTlkZjY3MTQ3ZWUwNDhiMWJhODYyZWQxNw==", + "commit": { + "author": { + "name": "Sam Roberts", + "email": "vieuxtech@gmail.com", + "date": "2016-11-17T20:25:52Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:00Z" + }, + "message": "doc: fix tls \"the the\" typo\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "90990204b539e9dfe98aa6c7aaf41620dcadef6a", + "url": "https://api.github.com/repos/nodejs/node/git/trees/90990204b539e9dfe98aa6c7aaf41620dcadef6a" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/c18ca1593e4aa5b19df67147ee048b1ba862ed17", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l8AAoJENi59a6uhOTP0/kP/3wDj94ZEBsAdW7xbcIIbWl3\ny0s7B+0oTDeFwxQeSzEG2iCQxKkWS0Z/fxXkD4nWUOtzBpDpHcuFVT+fUqinWmpk\nU3B86gja2otfZh3PeGKWmAeKYAA19BoKpvdvfi8J3L35Ggutex2tyFbC9u31fTqo\nITYY38XZqirUhFVF0XJFmox3zZd64x0uVigPTghYJPQmJj07g4IvPf5qdvWIXgJD\n/tdi9L1y5cb9ZblrkkUcq8aavbpYEa9cWDUywPKWxgixZ3IaUBNRMvyZf2D1x4EK\noyDdtPdbYCVtRMSw2rfCD3GnZ7zJ2+SXk8z0MgqQZ7kLmJyAPYdXY+OoBbMva3RZ\nwvmCwYXGIxbFjheZSW068iiwVjIX5t2y9oypTbNx/D19tayzC5+jBZzJ6BB7pEuu\ni07NRC0vj+ieZRB8cVefyWArLcLrW9c0DDuAbh+lwFdcDrCys9O9fgcT5qIg7833\nUeIZYIlmnAzYNohj7jmXePlBsQv7VeL/X0CamTNOyONLCue1/xfuGmAQuRzyzdK1\nBu3wA0NAiltYVwQrsMYo6hPSDWFRwy5CpliQCEAhiiBePbHdwCHgT0/9qfuCmdGO\nJP7aa+Qu1ylndR3JyqM/mIKELke/ZT5Lczr8e9BIqy3Ow2z5r8g1L8zmHOek6f/0\nH8PETcfKu3x24j2/gKl8\n=Grxi\n-----END PGP SIGNATURE-----", + "payload": "tree 90990204b539e9dfe98aa6c7aaf41620dcadef6a\nparent f43e47aab2bc400a5bfdf4ff162a8484e3559630\nauthor Sam Roberts 1479414352 -0800\ncommitter Anna Henningsen 1479793020 +0100\n\ndoc: fix tls \"the the\" typo\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/c18ca1593e4aa5b19df67147ee048b1ba862ed17", + "html_url": "https://github.com/nodejs/node/commit/c18ca1593e4aa5b19df67147ee048b1ba862ed17", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/c18ca1593e4aa5b19df67147ee048b1ba862ed17/comments", + "author": { + "login": "sam-github", + "id": 17607, + "node_id": "MDQ6VXNlcjE3NjA3", + "avatar_url": "https://avatars.githubusercontent.com/u/17607?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sam-github", + "html_url": "https://github.com/sam-github", + "followers_url": "https://api.github.com/users/sam-github/followers", + "following_url": "https://api.github.com/users/sam-github/following{/other_user}", + "gists_url": "https://api.github.com/users/sam-github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sam-github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sam-github/subscriptions", + "organizations_url": "https://api.github.com/users/sam-github/orgs", + "repos_url": "https://api.github.com/users/sam-github/repos", + "events_url": "https://api.github.com/users/sam-github/events{/privacy}", + "received_events_url": "https://api.github.com/users/sam-github/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "f43e47aab2bc400a5bfdf4ff162a8484e3559630", + "url": "https://api.github.com/repos/nodejs/node/commits/f43e47aab2bc400a5bfdf4ff162a8484e3559630", + "html_url": "https://github.com/nodejs/node/commit/f43e47aab2bc400a5bfdf4ff162a8484e3559630" + } + ] + }, + { + "sha": "16819d29b05cf7422b7250e740dac2ceadb73df4", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MTY4MTlkMjliMDVjZjc0MjJiNzI1MGU3NDBkYWMyY2VhZGI3M2RmNA==", + "commit": { + "author": { + "name": "Sam Roberts", + "email": "vieuxtech@gmail.com", + "date": "2016-11-17T21:01:39Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:00Z" + }, + "message": "doc: fix \"either as either\" typo\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "8318ed8f6438fe5ea1da9907c847aa460c41a1d9", + "url": "https://api.github.com/repos/nodejs/node/git/trees/8318ed8f6438fe5ea1da9907c847aa460c41a1d9" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/16819d29b05cf7422b7250e740dac2ceadb73df4", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l8AAoJENi59a6uhOTPSkMQAKuFuLI3OnwjyCIiEaVdPKU+\nJkB+tlI9c6mWk/GoXNE6ioY7G4CzinP1ntZ4R40ShClGmUP3w7V2l22TqHORUS+e\nGUMtptu8rqadNOT5gkceR/tGbd+IdAc2ftdCOumrbJM1uzjWq6ChsT3T74zn5gtF\nmLZs8/BrEjYxMckSiKLC7y3Jt3OlP9TPRBf4+0eh1JsT8DxdC7aFxoIuC58vzO1Z\nkSWeNWEFYS7rqWGMmNTbYc6Y/zMxBzHLvBbrT22Dd3o1dPXjYA8WlTNp2MozVTpE\nIr0eKYHtCENkEWbPZTzDAaz/zJSvGk3+N6a8nIujm9XI4rt2upc5fV3wi4qfe/aP\nmn+qpQbdT03sBgyC2KM3bAWTwqgUoHOnbnS+kG9rHUgyfZzOdsFi1owlbEpfkvtO\nEkr61l9YSHC8N19O7Xoz8+8Icuq1TZM21Ehvgo/beXlrGfeZ/KylTHtMQxUj47uK\nB2Mqq6Z9LFVkb1KCq7WUzal4ztSk7Y+81POwIxgudAc+eCDiLGnQmvYADpvrNfZC\nFUZfI+QiIuIG9iT9c1O+e8zk/KDK+I6zhRlwQA+IH+5CFZnO5kO4rkK68cwlOJp4\nkfQ4mK0Xe/UOhKf0li0Std8tkmoceCXiU1oLOG1Pn+ExXbjgvieFh3cfxnDYH/IA\nrnn1s5qGaGyxKq69zOi3\n=S8Or\n-----END PGP SIGNATURE-----", + "payload": "tree 8318ed8f6438fe5ea1da9907c847aa460c41a1d9\nparent c18ca1593e4aa5b19df67147ee048b1ba862ed17\nauthor Sam Roberts 1479416499 -0800\ncommitter Anna Henningsen 1479793020 +0100\n\ndoc: fix \"either as either\" typo\n\nPR-URL: https://github.com/nodejs/node/pull/9665\nReviewed-By: Roman Reiss \nReviewed-By: Michael Dawson \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: Brian White \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/16819d29b05cf7422b7250e740dac2ceadb73df4", + "html_url": "https://github.com/nodejs/node/commit/16819d29b05cf7422b7250e740dac2ceadb73df4", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/16819d29b05cf7422b7250e740dac2ceadb73df4/comments", + "author": { + "login": "sam-github", + "id": 17607, + "node_id": "MDQ6VXNlcjE3NjA3", + "avatar_url": "https://avatars.githubusercontent.com/u/17607?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sam-github", + "html_url": "https://github.com/sam-github", + "followers_url": "https://api.github.com/users/sam-github/followers", + "following_url": "https://api.github.com/users/sam-github/following{/other_user}", + "gists_url": "https://api.github.com/users/sam-github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sam-github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sam-github/subscriptions", + "organizations_url": "https://api.github.com/users/sam-github/orgs", + "repos_url": "https://api.github.com/users/sam-github/repos", + "events_url": "https://api.github.com/users/sam-github/events{/privacy}", + "received_events_url": "https://api.github.com/users/sam-github/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "c18ca1593e4aa5b19df67147ee048b1ba862ed17", + "url": "https://api.github.com/repos/nodejs/node/commits/c18ca1593e4aa5b19df67147ee048b1ba862ed17", + "html_url": "https://github.com/nodejs/node/commit/c18ca1593e4aa5b19df67147ee048b1ba862ed17" + } + ] + }, + { + "sha": "8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OGJmNDJiNGVjNGZjMjk4YjY5NjdlNmE3YmMzNjJiOGFmYzlkMThiYg==", + "commit": { + "author": { + "name": "Sam Roberts", + "email": "vieuxtech@gmail.com", + "date": "2016-11-15T17:56:15Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:01Z" + }, + "message": "doc: strip trailing whitespace\n\nPR-URL: https://github.com/nodejs/node/pull/9620\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell ", + "tree": { + "sha": "28217913a8cf9fd4eeb325fb59ade66f31c77cbe", + "url": "https://api.github.com/repos/nodejs/node/git/trees/28217913a8cf9fd4eeb325fb59ade66f31c77cbe" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l9AAoJENi59a6uhOTPiXsP/2JSFkbm83BMSqywDCGyCRXO\nu2i2zmeahI+yV/6pUdbY/S2ulocov1NE5h81xXqhXqZJEXiXhN7j/8P+nMSac0ez\n8aWarAqqw0RmJuwcCYiUksdDqngB0aD73hStq/sBwxnWeRudJbWwi1LB58LhMcpW\nJY5DoH5o3CkNh8cs4Ul2lourO/4C0ldRJwT0YQbpNqeb3Lhy7kv/F6ji0lph9dew\nZWL+FuYWcfMFt5plzjXhgdHqzEDftJdmB2hICRiMSqy9iYq3L5w2l5sBQ36My4GF\n9MIn90YGwmw4GpHuvgXw4ZRC3JwxHNMu9XW2g5QVR1d26LBswguTdZOXWQeoeSS6\nRW6hlJPbj2JytwBig2+XKm7pMGb9Lan9ul88MjGMUmAcM2uuBZNr1kUY+Ld/yR6r\nnapa0cYRBjK781cngUUnbBBi4mxQicXGE4rs2faMYsZJ97bpSeC/aCb3EPsOwQvy\naSEwec9aOSCfnfHg1hspauyFbttguyrbYmvFKI/kl8DuZ03MHuYBZ0RV4JUm8WFR\nEhcVfDUsRxF7wMoXsKm5roegKvFqjM2u3IPqSgJ9vTsptGAMe+8DH5NNb9TWt7JL\n7UljG+wr0ALvH0hIUM7v0KjPP7DRK7dMmzGk4z+AXr6bY+9LstztwDiExJU0nKoJ\nUUhknGDodCDicgunJbNT\n=2FMr\n-----END PGP SIGNATURE-----", + "payload": "tree 28217913a8cf9fd4eeb325fb59ade66f31c77cbe\nparent 16819d29b05cf7422b7250e740dac2ceadb73df4\nauthor Sam Roberts 1479232575 -0800\ncommitter Anna Henningsen 1479793021 +0100\n\ndoc: strip trailing whitespace\n\nPR-URL: https://github.com/nodejs/node/pull/9620\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb", + "html_url": "https://github.com/nodejs/node/commit/8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb/comments", + "author": { + "login": "sam-github", + "id": 17607, + "node_id": "MDQ6VXNlcjE3NjA3", + "avatar_url": "https://avatars.githubusercontent.com/u/17607?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sam-github", + "html_url": "https://github.com/sam-github", + "followers_url": "https://api.github.com/users/sam-github/followers", + "following_url": "https://api.github.com/users/sam-github/following{/other_user}", + "gists_url": "https://api.github.com/users/sam-github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sam-github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sam-github/subscriptions", + "organizations_url": "https://api.github.com/users/sam-github/orgs", + "repos_url": "https://api.github.com/users/sam-github/repos", + "events_url": "https://api.github.com/users/sam-github/events{/privacy}", + "received_events_url": "https://api.github.com/users/sam-github/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "16819d29b05cf7422b7250e740dac2ceadb73df4", + "url": "https://api.github.com/repos/nodejs/node/commits/16819d29b05cf7422b7250e740dac2ceadb73df4", + "html_url": "https://github.com/nodejs/node/commit/16819d29b05cf7422b7250e740dac2ceadb73df4" + } + ] + }, + { + "sha": "776d291a07a8f2fd139d3aba4c1d33b86c09ed8e", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6Nzc2ZDI5MWEwN2E4ZjJmZDEzOWQzYWJhNGMxZDMzYjg2YzA5ZWQ4ZQ==", + "commit": { + "author": { + "name": "Bethany Griggs", + "email": "Bethany.Griggs@uk.ibm.com", + "date": "2016-11-15T11:14:16Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:01Z" + }, + "message": "test: run tests even if os.cpus() fails\n\nCurrently if the os.cpus() call fails every test will fail. As there is\nalready a test for os.cpus(), the other tests should run even if the\nos.cpus() call fails.\n\nPR-URL: https://github.com/nodejs/node/pull/9616\n\nReviewed-By: Gibson Fahnestock \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Evan Lucas \nReviewed-By: Ben Noordhuis \nReviewed-By: James M Snell ", + "tree": { + "sha": "3a723c4cdaef4140e8d0207427365ceabc4cef56", + "url": "https://api.github.com/repos/nodejs/node/git/trees/3a723c4cdaef4140e8d0207427365ceabc4cef56" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/776d291a07a8f2fd139d3aba4c1d33b86c09ed8e", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l9AAoJENi59a6uhOTPJxcQALFZOOXsNNmn54ky3NDM6F44\nAOA84m8YFaUnvYNaZPogkhZM+VmwsO5gD40U924iBxTerzxvPv50h1FAzvwR0AOS\ndDtTvaugcc2K6bKMkhBKfivnPl7a7mS6DRnqzBMQmIc4RWvfsEgGKoE1aJ1F1lWq\nZ9/mVP0K6m7oCfqNbmbnP8+YmBJuQ2ugEl+7+pelKO9yxkn1YiFa/5evg5zHSC0I\n/buN3Cql2FaOSPLGPsBurdpNvVPEZzIm7qID5Pazwc+IjVklZ0Zj3V7i1kx5xCd4\nVFpuRFp4YVrrKne22qvkk75Q7LCmyYQwpyR00ujKUtCaUaK1QNN3JiZqZv7BX+WT\n+3JfVNXySjQvcuTMa+LCQ3QD7wILZ5X+VfdGzoPK4E0oa6LwxGwClCrPyNBaxKha\nzHJk+FBwTXHDP89WOFdRotIx1cT9JH7ZI9CHWmdPWadyDPvl/ZgDS8aheDLwvOBw\nPDavspbdCZkXLbROpWeEHWi/qvRz+PE79a7H4TUGOU3t0Hogyaez7zdTYGFM/+6c\nZnAHZjGAPqjxoKNG5IRCUNbS/PBmQhOqYvvUjZ7nIHy2l91nn8PxTYNY3ZMwmZry\nZyvWfwjpU7BXIi8X7MWcwc29d9znBVQN904s2sZ8QP2mMoVMqY9asd4LpaM9Cois\nGZPJl91o98r+8dPylVzx\n=iM+j\n-----END PGP SIGNATURE-----", + "payload": "tree 3a723c4cdaef4140e8d0207427365ceabc4cef56\nparent 8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb\nauthor Bethany Griggs 1479208456 +0000\ncommitter Anna Henningsen 1479793021 +0100\n\ntest: run tests even if os.cpus() fails\n\nCurrently if the os.cpus() call fails every test will fail. As there is\nalready a test for os.cpus(), the other tests should run even if the\nos.cpus() call fails.\n\nPR-URL: https://github.com/nodejs/node/pull/9616\n\nReviewed-By: Gibson Fahnestock \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: Evan Lucas \nReviewed-By: Ben Noordhuis \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/776d291a07a8f2fd139d3aba4c1d33b86c09ed8e", + "html_url": "https://github.com/nodejs/node/commit/776d291a07a8f2fd139d3aba4c1d33b86c09ed8e", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/776d291a07a8f2fd139d3aba4c1d33b86c09ed8e/comments", + "author": { + "login": "BethGriggs", + "id": 8297234, + "node_id": "MDQ6VXNlcjgyOTcyMzQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/8297234?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/BethGriggs", + "html_url": "https://github.com/BethGriggs", + "followers_url": "https://api.github.com/users/BethGriggs/followers", + "following_url": "https://api.github.com/users/BethGriggs/following{/other_user}", + "gists_url": "https://api.github.com/users/BethGriggs/gists{/gist_id}", + "starred_url": "https://api.github.com/users/BethGriggs/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/BethGriggs/subscriptions", + "organizations_url": "https://api.github.com/users/BethGriggs/orgs", + "repos_url": "https://api.github.com/users/BethGriggs/repos", + "events_url": "https://api.github.com/users/BethGriggs/events{/privacy}", + "received_events_url": "https://api.github.com/users/BethGriggs/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb", + "url": "https://api.github.com/repos/nodejs/node/commits/8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb", + "html_url": "https://github.com/nodejs/node/commit/8bf42b4ec4fc298b6967e6a7bc362b8afc9d18bb" + } + ] + }, + { + "sha": "425a8646e22daeaad2982885fd62c0d5f967c2a4", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NDI1YTg2NDZlMjJkYWVhYWQyOTgyODg1ZmQ2MmMwZDVmOTY3YzJhNA==", + "commit": { + "author": { + "name": "Italo A. Casas", + "email": "italo@italoacasas.com", + "date": "2016-11-18T18:17:16Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:02Z" + }, + "message": "doc: add italoacasas to collaborators\n\nPR-URL: https://github.com/nodejs/node/pull/9677\nReviewed-By: Rich Trott \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "6c109830837c7201701c9282d2c31b57620c7d9c", + "url": "https://api.github.com/repos/nodejs/node/git/trees/6c109830837c7201701c9282d2c31b57620c7d9c" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/425a8646e22daeaad2982885fd62c0d5f967c2a4", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l+AAoJENi59a6uhOTPgM4P/iqsTKuUAw78SXFTO48MRsdV\n0a4g9D3McN1SIXYxXtkzIS2kO/fgSaF/E8mbh60sLb3dL/GJCJwvTRjPcZ9Dkqdn\nyHx3cnUYtPehUOPxctwJV2UUgY2B3qlCYvPCouaMx7c7FpojtAsD8k5ca6EFwlBM\nzFP/idr84vaD4xMZH+p9rKgKBA3MmHXuyHinlZVVcv3cM7XOORAlMhjCwbohUD51\nZidMHRd01MMx82q693AuoWSkdtJEYO3w3ooAIthNdI5ZviGUspPfGmH+2mokhcB0\nb1aE3da+avOhFP6vfOAucGvQTFKD/7jNPGoMBOTj5AveGhZyx+iYsC04SGMiFxrS\neqdGaRgiF1JHB/5kKsUKupM09TYmU4LPYEnIheC/8tLsJYSq6ufhiy4UBvzxgzJo\nHIUHCde4RYOz+Wn9i7W1ZiamKQLP7qWwGFHnL1Y0Exp+/64QxPbKrIYw0r56VB4N\ntkdjhLynUAEmAlz/QNxTDRqfu17KdDoDVM5Vv5HLHqQk0CUE0uEtQPFBWVFVWMTs\nPAcGX53iYjhqfgEd520V9DfmZq+0xJQQAf5e8P/F2L9DS4hDVPrgs+E4DMEf5wiI\ni98IFNycBz8qMGFVeHOOngw5Xs+kV44gtK5MZknpRUooyrxP0ElX7vrkmtCIm5aA\nTbsdmm6BzRMyNITNNnHr\n=mTbO\n-----END PGP SIGNATURE-----", + "payload": "tree 6c109830837c7201701c9282d2c31b57620c7d9c\nparent 776d291a07a8f2fd139d3aba4c1d33b86c09ed8e\nauthor Italo A. Casas 1479493036 -0500\ncommitter Anna Henningsen 1479793022 +0100\n\ndoc: add italoacasas to collaborators\n\nPR-URL: https://github.com/nodejs/node/pull/9677\nReviewed-By: Rich Trott \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/425a8646e22daeaad2982885fd62c0d5f967c2a4", + "html_url": "https://github.com/nodejs/node/commit/425a8646e22daeaad2982885fd62c0d5f967c2a4", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/425a8646e22daeaad2982885fd62c0d5f967c2a4/comments", + "author": null, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "776d291a07a8f2fd139d3aba4c1d33b86c09ed8e", + "url": "https://api.github.com/repos/nodejs/node/commits/776d291a07a8f2fd139d3aba4c1d33b86c09ed8e", + "html_url": "https://github.com/nodejs/node/commit/776d291a07a8f2fd139d3aba4c1d33b86c09ed8e" + } + ] + }, + { + "sha": "a29be5282eeea8f49b18255a484af4b628eaff9f", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YTI5YmU1MjgyZWVlYThmNDliMTgyNTVhNDg0YWY0YjYyOGVhZmY5Zg==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-11-17T21:00:00Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:02Z" + }, + "message": "test: fix memory leaks in malloc cctests\n\nMake cctest valgrind-clean again by freeing heap-allocated memory.\nOverlooked in commit ea94086 (\"src: provide allocation + nullptr check\nshortcuts.\")\n\nPR-URL: https://github.com/nodejs/node/pull/9667\nRefs: https://github.com/nodejs/node/pull/8482\nReviewed-By: Anna Henningsen \nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \nReviewed-By: Santiago Gimeno ", + "tree": { + "sha": "7fdbf82e3ddfe746aa8b02206f02dc6576fcf805", + "url": "https://api.github.com/repos/nodejs/node/git/trees/7fdbf82e3ddfe746aa8b02206f02dc6576fcf805" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/a29be5282eeea8f49b18255a484af4b628eaff9f", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9l+AAoJENi59a6uhOTPnhUP/2/UYppsiUPEO0gXNlb3ZO1m\n0irZ2N/2ovnrq7jVpMv95LKL2DPxPOMgr0G/NoBcbYOaTCZZ81JtHbKpyG9n6vi4\nrMlwxhG5yvPi3UIiDaCR7hcmTkfGz2xaypoIYeKvmqqjnhJ11p7ozWcQhh0vdMuo\nRBF24LCQWUhvgpN140HYtn8evE0QLd3zMdjytUoGwf8I3Ks/U/8mx5a6lLMPDzxb\n3paoUF1y2fX2+NEelKzfuZXPYUMNaTJ73f1/3UwW210lBTA8gJuV0PAPGi3dWkVE\ndSgM+RzUr0uQeBRXFVG69rRABMIkWmHvnFtABl2XR8t1HYdxn5wz9rtcwRbHpVI1\nKYvtyDSzpqWU21Id46oGAPZz1Ilu14gv30wJ5xZRK8fhIsbiURN5YbTIik1/HMz0\nok6iZbbymup8pIFDVLzcqnTLhorRe8XQ9UVTYXA5Nwc1HhqKQ8XMQu+CkvVgBD9G\nJ6PJwpn+b78IQJ5hrkLy5NL5K0i3rRSk5j7EG2BlYF9FnuPJIZgjcUH52/h8uOtB\nua/k3XC8M1LyjqMvB4XyhkOSkvQs0KjBN9yquKwb3senynuhoKjW5+ylRoJAJeea\nlv+xhum5n86N/rgCtEet4bHaQrJQCT6Vn99BXVqEKh0anWDSBRG0WOtUUyEYPpsd\nSrNLhykvLFFdvnuMhkdq\n=GerH\n-----END PGP SIGNATURE-----", + "payload": "tree 7fdbf82e3ddfe746aa8b02206f02dc6576fcf805\nparent 425a8646e22daeaad2982885fd62c0d5f967c2a4\nauthor Ben Noordhuis 1479416400 +0100\ncommitter Anna Henningsen 1479793022 +0100\n\ntest: fix memory leaks in malloc cctests\n\nMake cctest valgrind-clean again by freeing heap-allocated memory.\nOverlooked in commit ea94086 (\"src: provide allocation + nullptr check\nshortcuts.\")\n\nPR-URL: https://github.com/nodejs/node/pull/9667\nRefs: https://github.com/nodejs/node/pull/8482\nReviewed-By: Anna Henningsen \nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \nReviewed-By: Santiago Gimeno \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/a29be5282eeea8f49b18255a484af4b628eaff9f", + "html_url": "https://github.com/nodejs/node/commit/a29be5282eeea8f49b18255a484af4b628eaff9f", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/a29be5282eeea8f49b18255a484af4b628eaff9f/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "425a8646e22daeaad2982885fd62c0d5f967c2a4", + "url": "https://api.github.com/repos/nodejs/node/commits/425a8646e22daeaad2982885fd62c0d5f967c2a4", + "html_url": "https://github.com/nodejs/node/commit/425a8646e22daeaad2982885fd62c0d5f967c2a4" + } + ] + }, + { + "sha": "b258a70a407c7956ba1d817d73a6a34df07b7239", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YjI1OGE3MGE0MDdjNzk1NmJhMWQ4MTdkNzNhNmEzNGRmMDdiNzIzOQ==", + "commit": { + "author": { + "name": "imatvieiev", + "email": "idmatvieiev@gmail.com", + "date": "2016-11-16T20:52:05Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:32Z" + }, + "message": "doc: add return types and props types to OS module\n\nPR-URL: https://github.com/nodejs/node/pull/9648\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: James M Snell \nReviewed-By: Prince John Wesley \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "131d1471cd8126cf69f4be341571b5dbc046ae96", + "url": "https://api.github.com/repos/nodejs/node/git/trees/131d1471cd8126cf69f4be341571b5dbc046ae96" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/b258a70a407c7956ba1d817d73a6a34df07b7239", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mcAAoJENi59a6uhOTPPoUP/0h8OIlHu8ZAv2qGKZKZxggN\n3IOkLopEQMNFDZyweF+67tiVqqhsfKdyTSfXo2abJm9Q7pUCTXuXuBATUUWmE2j1\nI9gQKmCN+Wo3DqNo8TlteuSFbvOiyX6EEjRPpLzu0FYGyW9qmS1A5hXjOwxx91qn\n9X91QqNuRJMpRR7zj/XcWADrmtr3iYa4gq+wdxmJftiPVDRqvOW4/M6cSDeo9rrh\n3N0TEGbYtayyTcaK6gnQcV3Z7x4fKST5y/5aKtndMEccXJH6A3+oUCtDoQvDAPQR\naXe/Ra6yQ1FXIPgiROt02QLnQTBUiF/pVsgVUPKVx6aUlGHyHQnwNTYroPE+SV0Z\nt5xH+f/ZiBAjjJdHwV0tGtvWu/xwcLWaSMn4dqJwHkmV2/48nka9CWT9CG36S1iY\nXfxxNEPQR7b6d9gM8uwfXNX3nWhRcENnUZDf71O+d1FOLlxmqSKuNbNl5QOQAnt/\n9Mn8B1ehiZi1djUdYq9aVVL967bMFiYwXHATjYTcnCQl/0iLJG2361oGHm42ILkM\nQqQR/eiXut+RFFWGXOULxibH8dEAnCaxygQD3hefZfqBUkFkWSg1BOuALjUUN2n1\nW9yVuuXhMjj/X9Lo2AJV9LkWMwb85SUY5aIFc2bPGZVtgq/Dwhsmfoc6vceLWwwR\nYKHcW1c3Nc2j7qjNGb1s\n=HEKw\n-----END PGP SIGNATURE-----", + "payload": "tree 131d1471cd8126cf69f4be341571b5dbc046ae96\nparent a29be5282eeea8f49b18255a484af4b628eaff9f\nauthor imatvieiev 1479329525 +0200\ncommitter Anna Henningsen 1479793052 +0100\n\ndoc: add return types and props types to OS module\n\nPR-URL: https://github.com/nodejs/node/pull/9648\nReviewed-By: Roman Reiss \nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: James M Snell \nReviewed-By: Prince John Wesley \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/b258a70a407c7956ba1d817d73a6a34df07b7239", + "html_url": "https://github.com/nodejs/node/commit/b258a70a407c7956ba1d817d73a6a34df07b7239", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/b258a70a407c7956ba1d817d73a6a34df07b7239/comments", + "author": { + "login": "imatveev", + "id": 10616396, + "node_id": "MDQ6VXNlcjEwNjE2Mzk2", + "avatar_url": "https://avatars.githubusercontent.com/u/10616396?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/imatveev", + "html_url": "https://github.com/imatveev", + "followers_url": "https://api.github.com/users/imatveev/followers", + "following_url": "https://api.github.com/users/imatveev/following{/other_user}", + "gists_url": "https://api.github.com/users/imatveev/gists{/gist_id}", + "starred_url": "https://api.github.com/users/imatveev/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/imatveev/subscriptions", + "organizations_url": "https://api.github.com/users/imatveev/orgs", + "repos_url": "https://api.github.com/users/imatveev/repos", + "events_url": "https://api.github.com/users/imatveev/events{/privacy}", + "received_events_url": "https://api.github.com/users/imatveev/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "a29be5282eeea8f49b18255a484af4b628eaff9f", + "url": "https://api.github.com/repos/nodejs/node/commits/a29be5282eeea8f49b18255a484af4b628eaff9f", + "html_url": "https://github.com/nodejs/node/commit/a29be5282eeea8f49b18255a484af4b628eaff9f" + } + ] + }, + { + "sha": "c99fb1e0d27165f30ec9c35810587bced5b2a80a", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6Yzk5ZmIxZTBkMjcxNjVmMzBlYzljMzU4MTA1ODdiY2VkNWIyYTgwYQ==", + "commit": { + "author": { + "name": "JungMinu", + "email": "jmwsoft@gmail.com", + "date": "2016-11-15T02:29:15Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:33Z" + }, + "message": "doc: remove invalid padding from privateEncrypt\n\nPR-URL: https://github.com/nodejs/node/pull/9611\nFixes: https://github.com/nodejs/node/issues/9609\nReviewed-By: Claudio Rodriguez \nReviewed-By: Sam Roberts \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "d194bf93de670d9a01e2b9e88db3c9bae56c1fd8", + "url": "https://api.github.com/repos/nodejs/node/git/trees/d194bf93de670d9a01e2b9e88db3c9bae56c1fd8" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/c99fb1e0d27165f30ec9c35810587bced5b2a80a", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mdAAoJENi59a6uhOTPYsgQAIEI7HoIfJ+5HTQlI0dPUjuj\nBahCWfZ+RmL3ivXdALx4s80oKnTSYn9rdqFhhXlVMjByhpkdQUjnZRGP/oV7E94t\n3XMVGFBRwBDaVn+vYskg+2k/13VRsGBa8hn/e4KLztHGovLaN24Y9epp+mPcCpJ0\nCQHtGmYx8UUBlRRta78ZS//ilFIu9c5syga19eR6yE06B3jFK5C29geVJ/HytQUL\nibyuPA0EVnM/PPrubV77dnPOqMWJH5fVoZKzB1fY30WTij34Dmh5OU2uIX2Zw3ug\npfprj0jFVcLTtWW0KwcRHm079OzZtagPwbhzcV6KclbO9zKr0KY49XH2OyTrZyFY\nvmM9QZsAWm3a06vhY6AVHYWjSOOqOq3GlkoOMg/W2qNVPtVwV5gtBfXxC1CeUKVz\nyf5k0nDVKU8w+4wGuO0fg1p1IeMmKdcqnBEvA17Fy/IlCi5/2WW6lRLMdSbuiTER\nO6Gd65+ocuSjNBmKUWzxMrEyUIlc3eLjUc+HUhfnl6uw2GVojFahhlvaAD44twsQ\nw0eLSP6f9Q9hBgVuFjakUSlOTh97HUwJcWqJ2GpRh8R4A7D3fTeNV+Msk0CMfIcK\ncKJ4upZyVn3sm6qRSGVzLTlt6KQey4KzuX6KUoK34KHkmdZwNvde6JK9nTuV3Zje\nBMqcnc8Jb63SkXeSC5J/\n=106k\n-----END PGP SIGNATURE-----", + "payload": "tree d194bf93de670d9a01e2b9e88db3c9bae56c1fd8\nparent b258a70a407c7956ba1d817d73a6a34df07b7239\nauthor JungMinu 1479176955 +0900\ncommitter Anna Henningsen 1479793053 +0100\n\ndoc: remove invalid padding from privateEncrypt\n\nPR-URL: https://github.com/nodejs/node/pull/9611\nFixes: https://github.com/nodejs/node/issues/9609\nReviewed-By: Claudio Rodriguez \nReviewed-By: Sam Roberts \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/c99fb1e0d27165f30ec9c35810587bced5b2a80a", + "html_url": "https://github.com/nodejs/node/commit/c99fb1e0d27165f30ec9c35810587bced5b2a80a", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/c99fb1e0d27165f30ec9c35810587bced5b2a80a/comments", + "author": { + "login": "JungMinu", + "id": 5035902, + "node_id": "MDQ6VXNlcjUwMzU5MDI=", + "avatar_url": "https://avatars.githubusercontent.com/u/5035902?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JungMinu", + "html_url": "https://github.com/JungMinu", + "followers_url": "https://api.github.com/users/JungMinu/followers", + "following_url": "https://api.github.com/users/JungMinu/following{/other_user}", + "gists_url": "https://api.github.com/users/JungMinu/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JungMinu/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JungMinu/subscriptions", + "organizations_url": "https://api.github.com/users/JungMinu/orgs", + "repos_url": "https://api.github.com/users/JungMinu/repos", + "events_url": "https://api.github.com/users/JungMinu/events{/privacy}", + "received_events_url": "https://api.github.com/users/JungMinu/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "b258a70a407c7956ba1d817d73a6a34df07b7239", + "url": "https://api.github.com/repos/nodejs/node/commits/b258a70a407c7956ba1d817d73a6a34df07b7239", + "html_url": "https://github.com/nodejs/node/commit/b258a70a407c7956ba1d817d73a6a34df07b7239" + } + ] + }, + { + "sha": "69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NjlmZmUwY2Y4Y2Q5MzZkZDZiNjRhMTI0NDliOWI3Y2Y4MDA5M2YxZQ==", + "commit": { + "author": { + "name": "Kenneth Skovhus", + "email": "kenneth.skovhus@gmail.com", + "date": "2016-11-16T18:06:15Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:33Z" + }, + "message": "doc: child_process .stdio accepts a String type\n\nDocument that `execFileSync`, `execSync` and `spawnSync` also support\n`stdio` as an Array.\n\nPR-URL: https://github.com/nodejs/node/pull/9637\nFixes: https://github.com/nodejs/node/issues/9636\nReviewed-By: Jeremiah Senkpiel \nReviewed-By: Colin Ihrig \nReviewed-By: Sam Roberts \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "efe792d5ba76d6a648a3eb3977abe7de5c06b148", + "url": "https://api.github.com/repos/nodejs/node/git/trees/efe792d5ba76d6a648a3eb3977abe7de5c06b148" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mdAAoJENi59a6uhOTPsPAP/04TcEI37gHStI+n/MBCjTyx\nrUi19Z2+KS1xnLobzBCKc7cojNrmcFl/IE4x9CviFGQxAMNGnvD9HbEW2h4ncYyb\nSx73dS0r5IulMIK7kE1OHuycVXesQPLYjvY00A8MsxjuPI7pWvb8pN9uD/XaU6qS\n8nLWVX3+YpmUh6meDp+77caOaV4CYtfXOhKNDlEF1f4F1sBXCFDGTyZIt4B0VBtr\nMDUoRRwIytJvDQHbeL7SzJa//c1QSO1g+YCYPNHzApppnTaMpE66j+ji84BcwhpO\nBntehUbsFsppMIN8dw3rgnImRZVC5J5mtBTQf/bvqGYGg2AgsVLzho/tvpGfA3xJ\nyifVyqHPpz6IeT1TPoFGT03X6hyZIx6a6ZftqgZFOnEtWkKpYKo2jWr4p7OxhqNC\nxGYfdbu+3/iqWObBYSHPFSqR/uga5lnK2vI/K6K/jvCLRImH/Q3NxkB1IOaLpNWi\nWa206Z1lU7PwWYhFjqOxgYNR9oUHr44Q09HxkGaqefIYBeSiukfqytllrZdVpvv/\nAmdjFtqnuut0HPcr+TcrrzTXV1eLAgzpWELoDGxZ+yqHVHD0OdMjirMpWgQcvM+N\ne6ngCvYXdV4qrXQsBLp9HLaAyCy3cq2EysTO4YWWaF/pUYQ4dDW9z8CfwMnneKnF\nkruUivRZQD8Tek5m9e1z\n=ZBm5\n-----END PGP SIGNATURE-----", + "payload": "tree efe792d5ba76d6a648a3eb3977abe7de5c06b148\nparent c99fb1e0d27165f30ec9c35810587bced5b2a80a\nauthor Kenneth Skovhus 1479319575 +0100\ncommitter Anna Henningsen 1479793053 +0100\n\ndoc: child_process .stdio accepts a String type\n\nDocument that `execFileSync`, `execSync` and `spawnSync` also support\n`stdio` as an Array.\n\nPR-URL: https://github.com/nodejs/node/pull/9637\nFixes: https://github.com/nodejs/node/issues/9636\nReviewed-By: Jeremiah Senkpiel \nReviewed-By: Colin Ihrig \nReviewed-By: Sam Roberts \nReviewed-By: James M Snell \nReviewed-By: Roman Reiss \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e", + "html_url": "https://github.com/nodejs/node/commit/69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e/comments", + "author": { + "login": "skovhus", + "id": 1260305, + "node_id": "MDQ6VXNlcjEyNjAzMDU=", + "avatar_url": "https://avatars.githubusercontent.com/u/1260305?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/skovhus", + "html_url": "https://github.com/skovhus", + "followers_url": "https://api.github.com/users/skovhus/followers", + "following_url": "https://api.github.com/users/skovhus/following{/other_user}", + "gists_url": "https://api.github.com/users/skovhus/gists{/gist_id}", + "starred_url": "https://api.github.com/users/skovhus/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/skovhus/subscriptions", + "organizations_url": "https://api.github.com/users/skovhus/orgs", + "repos_url": "https://api.github.com/users/skovhus/repos", + "events_url": "https://api.github.com/users/skovhus/events{/privacy}", + "received_events_url": "https://api.github.com/users/skovhus/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "c99fb1e0d27165f30ec9c35810587bced5b2a80a", + "url": "https://api.github.com/repos/nodejs/node/commits/c99fb1e0d27165f30ec9c35810587bced5b2a80a", + "html_url": "https://github.com/nodejs/node/commit/c99fb1e0d27165f30ec9c35810587bced5b2a80a" + } + ] + }, + { + "sha": "731a1fa602969900eda4ab3ea6fb18778e0cc698", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NzMxYTFmYTYwMjk2OTkwMGVkYTRhYjNlYTZmYjE4Nzc4ZTBjYzY5OA==", + "commit": { + "author": { + "name": "Aaron Petcoff", + "email": "hello@aaronpetcoff.me", + "date": "2016-11-17T20:32:27Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:34Z" + }, + "message": "test: Use strictEqual in test-tls-writewrap-leak\n\nPR-URL: https://github.com/nodejs/node/pull/9666\nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Colin Ihrig \nReviewed-By: Sakthipriyan Vairamani \nReviewed-By: James M Snell \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "f16bd0d49d0e92111e21027de95746667b5e31d6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/f16bd0d49d0e92111e21027de95746667b5e31d6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/731a1fa602969900eda4ab3ea6fb18778e0cc698", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9meAAoJENi59a6uhOTPhk4P+gPfRKc21bv0BSu8vIosH8HM\n/ViU3uEfoTgxG+TchapGXAtOPcFCw6du8xpJkMBj5rSHdmyIlYG7R8Q0QUmUYljG\nZaYCW+d9KvXYFJBkYD9w4fDG9YdzxQap7CuKK0iv/pWIlLVlGDoFId8pfJ+FgtP7\n3lZJmlIr+kDjvwTBCYbm04u/4FxfzSlu5zy1YGszphodrRO917fXZp8pSexguGtk\nQAmxdFXke9Y73Bf1h/C8/zppVxH9hhKpZkLjPH0RKXTkw8HYw+Q/3AC8Q2CfzQSN\n3k1xFKhtUX2UQXnu8Zpv9sjFnMHFDGSddQDcIWgyY5D6aqvEBKLaHN1ba3PkwnLu\nPDKAUf2lZyjP6FHVaSfBLr/H2s/oXyydZR99dsiFHFAp+KWKZjoUQU2wR6Av6blG\n+L3ePZDwY3c15WVbnLl4fLAi86zliZgYWvN/ph3OR+3fuZYMxjiqMFMcaXK6aJD/\nIKYWOxiwaAKyv9rRlIcP+0o0h7PIW2cJ5HzlIl5/NbLsuJgo6rh7wadc3PCDxKQ8\nPNpTecfaINejDW7kcQs4jYn+bG44SOGKqZCmywTs2aPCtbOua/R3n2nXkuEMIpxk\nY/0zuw1nA0zSMcAEDyuwzt+OmbBMlkmM5wYMH0EMI75VZT5Q9cTxuaFKVkC1wwP+\nwfynRCWhIvWdV1azDOCm\n=dAOz\n-----END PGP SIGNATURE-----", + "payload": "tree f16bd0d49d0e92111e21027de95746667b5e31d6\nparent 69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e\nauthor Aaron Petcoff 1479414747 -0500\ncommitter Anna Henningsen 1479793054 +0100\n\ntest: Use strictEqual in test-tls-writewrap-leak\n\nPR-URL: https://github.com/nodejs/node/pull/9666\nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Colin Ihrig \nReviewed-By: Sakthipriyan Vairamani \nReviewed-By: James M Snell \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/731a1fa602969900eda4ab3ea6fb18778e0cc698", + "html_url": "https://github.com/nodejs/node/commit/731a1fa602969900eda4ab3ea6fb18778e0cc698", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/731a1fa602969900eda4ab3ea6fb18778e0cc698/comments", + "author": { + "login": "ughitsaaron", + "id": 5301535, + "node_id": "MDQ6VXNlcjUzMDE1MzU=", + "avatar_url": "https://avatars.githubusercontent.com/u/5301535?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/ughitsaaron", + "html_url": "https://github.com/ughitsaaron", + "followers_url": "https://api.github.com/users/ughitsaaron/followers", + "following_url": "https://api.github.com/users/ughitsaaron/following{/other_user}", + "gists_url": "https://api.github.com/users/ughitsaaron/gists{/gist_id}", + "starred_url": "https://api.github.com/users/ughitsaaron/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/ughitsaaron/subscriptions", + "organizations_url": "https://api.github.com/users/ughitsaaron/orgs", + "repos_url": "https://api.github.com/users/ughitsaaron/repos", + "events_url": "https://api.github.com/users/ughitsaaron/events{/privacy}", + "received_events_url": "https://api.github.com/users/ughitsaaron/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e", + "url": "https://api.github.com/repos/nodejs/node/commits/69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e", + "html_url": "https://github.com/nodejs/node/commit/69ffe0cf8cd936dd6b64a12449b9b7cf80093f1e" + } + ] + }, + { + "sha": "d62376c8d6ef771426d92321d850f370f0ef3ef0", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZDYyMzc2YzhkNmVmNzcxNDI2ZDkyMzIxZDg1MGYzNzBmMGVmM2VmMA==", + "commit": { + "author": { + "name": "Vse Mozhet Byt", + "email": "vsemozhetbyt@gmail.com", + "date": "2016-11-15T23:41:14Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:34Z" + }, + "message": "doc: small improvements in readline code examples\n\n1. Consistent template literals in `console.log()`.\n2. === instead of ==.\n3. const instead of var.\n\nPR-URL: https://github.com/nodejs/node/pull/9628\nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Jackson Tian ", + "tree": { + "sha": "6129d4b541b1e5e2df8991189ccdff2e795fcc34", + "url": "https://api.github.com/repos/nodejs/node/git/trees/6129d4b541b1e5e2df8991189ccdff2e795fcc34" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/d62376c8d6ef771426d92321d850f370f0ef3ef0", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9meAAoJENi59a6uhOTPxCcQAJFf+tt9o+nuIddXapXPsDWC\nyQVtcj/2J96/RujotDd5r4kUVkHUz7mTt/0SZvnfXEdP0xkK5lt6MemxRvS3vULZ\n/SVg9qE0MljxuiZql5grYXjJmaLWSENztIbamkVTbLwdjb5Pi28zV974n1o4TO59\n/KEJBCOlut1WedH4xUW8y2fSRywH879W3B4d6loWJEb0YVbjsvKEcVYjJ4uI/tV6\nYqsxYmRXYISDd2tZqqc7GxpgMKTVTqXHkOBepcFcfgjLK++fIz//Wj7/Atn4r+v1\n5dy+Q6vmY+w4H7REhirctp2y7s6Kado9q+6jlh7YlahIn8HzljaABS3e8KlgwOMz\nSc4E6yunTMccGi4DCeIyZLyHa2xUnEtbmBS6EhJkriwENcSgLEDQewv/umRvxlCN\nkGRjop8bg50mREYbbw6XdUyp9zMFq1vYfLs8gfemSgIuJn8gIqT9d0FvyxBPF5zU\nv3Zc4mcNdpdjCbOVWA+pHw70lhcIN39PVW6xmVsVX69uYHDqqiGCmKvkRVEcblXw\nTCutsSPvS74O9W+oz0TStLG/7m0HVN705kAc3YOO5b60/mJbU27jWNVFjM/iUo5K\nI1qzJy74yTN8kcGBiHWmH1DzFYNJeBqEbIL+yCXdwV781frz0n1kj8e5VHAOKczU\nTqPPyoj2w5kJLt2JWNrA\n=haTA\n-----END PGP SIGNATURE-----", + "payload": "tree 6129d4b541b1e5e2df8991189ccdff2e795fcc34\nparent 731a1fa602969900eda4ab3ea6fb18778e0cc698\nauthor Vse Mozhet Byt 1479253274 +0200\ncommitter Anna Henningsen 1479793054 +0100\n\ndoc: small improvements in readline code examples\n\n1. Consistent template literals in `console.log()`.\n2. === instead of ==.\n3. const instead of var.\n\nPR-URL: https://github.com/nodejs/node/pull/9628\nReviewed-By: Colin Ihrig \nReviewed-By: Michael Dawson \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Jackson Tian \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/d62376c8d6ef771426d92321d850f370f0ef3ef0", + "html_url": "https://github.com/nodejs/node/commit/d62376c8d6ef771426d92321d850f370f0ef3ef0", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/d62376c8d6ef771426d92321d850f370f0ef3ef0/comments", + "author": { + "login": "vsemozhetbyt", + "id": 10393198, + "node_id": "MDQ6VXNlcjEwMzkzMTk4", + "avatar_url": "https://avatars.githubusercontent.com/u/10393198?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vsemozhetbyt", + "html_url": "https://github.com/vsemozhetbyt", + "followers_url": "https://api.github.com/users/vsemozhetbyt/followers", + "following_url": "https://api.github.com/users/vsemozhetbyt/following{/other_user}", + "gists_url": "https://api.github.com/users/vsemozhetbyt/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vsemozhetbyt/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vsemozhetbyt/subscriptions", + "organizations_url": "https://api.github.com/users/vsemozhetbyt/orgs", + "repos_url": "https://api.github.com/users/vsemozhetbyt/repos", + "events_url": "https://api.github.com/users/vsemozhetbyt/events{/privacy}", + "received_events_url": "https://api.github.com/users/vsemozhetbyt/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "731a1fa602969900eda4ab3ea6fb18778e0cc698", + "url": "https://api.github.com/repos/nodejs/node/commits/731a1fa602969900eda4ab3ea6fb18778e0cc698", + "html_url": "https://github.com/nodejs/node/commit/731a1fa602969900eda4ab3ea6fb18778e0cc698" + } + ] + }, + { + "sha": "159799aa1d40d54a5ea0915f5a058369a7147f0b", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MTU5Nzk5YWExZDQwZDU0YTVlYTA5MTVmNWEwNTgzNjlhNzE0N2YwYg==", + "commit": { + "author": { + "name": "Rahat Ahmed", + "email": "rahatarmanahmed@gmail.com", + "date": "2016-11-15T19:56:03Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:35Z" + }, + "message": "doc: improve description of urlObject.query\n\nThe description of urlObject.query is ambiguous about when it's an\nobject vs when it's a string. Added a sentence pointing to the option\nthat determines this in url.parse().\n\nAlso fixed the missing parentheses in the first sentence by rewording it to\navoid nested parentheses.\n\nPR-URL: https://github.com/nodejs/node/pull/9625\nReviewed-By: Rich Trott \nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso ", + "tree": { + "sha": "aa32e2836bfea5b2c8a3a41900ca5a23ea1ba2dc", + "url": "https://api.github.com/repos/nodejs/node/git/trees/aa32e2836bfea5b2c8a3a41900ca5a23ea1ba2dc" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/159799aa1d40d54a5ea0915f5a058369a7147f0b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mfAAoJENi59a6uhOTPN7MQAKtivtYm1qrJnyLZwa0jCBLX\nCwnPORGqO9jpD+855b+lyb/2oOiZ7Cwg/RLgAvLz6UC3gWpZONffoAjKVifXtzkX\nPTAcrYGKSOpnxP+EZFuQUINxJ2P382DkWUGdaIsQjjTjV+oPxpOWRLKhcKA3M8/H\nAugnIIhtH6rayy6tLldnnuylsUcQCGTrdWbvcu/crxZ7xaURkB3r1PyLambWhH/W\nkfk5L9Pd6CUeKQGkuhIW6VSu5GMbGisuPX5DDsoqtza5PFQYK1IoCflRLDRoXdjW\nWoC5oXe3aGttdGhdQFbyzylS3Qgs91Qxouhfh29vLdXxeFR6sei5Oofy1ECjr25G\nYqhNXiO0/85PLdNrMKw+OVWWscvTmprdy35RR7BUsPq6wfpYJYc+kXhzI7QWeGI3\n8Cgg96PD6yslU4MPk/U6Gnk+t1I8Wswed0u4NONlf9Xtdz8FYTwhvhWnjfhpXoH5\n5/LQ5N8rENiyPYgLtnMc1n7LtEh8YYrVFJQzJo7Kj0c81Gq0EWoUR72PJ0UXuBoR\nSxZIccZhqAxxZ7GlwyegE4EoYf7VNrv8C/MMpZbLigqGBorBpwttY8J6D0Kf770/\n0Cb4KbQMWlx+fUjKRcXNsr9/GmGA5G05JxhuQmiziLPclYpQQ2LhDksBcghIkqrT\nWRgWtneJmUGejy5Cwgg0\n=afXK\n-----END PGP SIGNATURE-----", + "payload": "tree aa32e2836bfea5b2c8a3a41900ca5a23ea1ba2dc\nparent d62376c8d6ef771426d92321d850f370f0ef3ef0\nauthor Rahat Ahmed 1479239763 -0600\ncommitter Anna Henningsen 1479793055 +0100\n\ndoc: improve description of urlObject.query\n\nThe description of urlObject.query is ambiguous about when it's an\nobject vs when it's a string. Added a sentence pointing to the option\nthat determines this in url.parse().\n\nAlso fixed the missing parentheses in the first sentence by rewording it to\navoid nested parentheses.\n\nPR-URL: https://github.com/nodejs/node/pull/9625\nReviewed-By: Rich Trott \nReviewed-By: Colin Ihrig \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/159799aa1d40d54a5ea0915f5a058369a7147f0b", + "html_url": "https://github.com/nodejs/node/commit/159799aa1d40d54a5ea0915f5a058369a7147f0b", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/159799aa1d40d54a5ea0915f5a058369a7147f0b/comments", + "author": { + "login": "rahatarmanahmed", + "id": 3174006, + "node_id": "MDQ6VXNlcjMxNzQwMDY=", + "avatar_url": "https://avatars.githubusercontent.com/u/3174006?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rahatarmanahmed", + "html_url": "https://github.com/rahatarmanahmed", + "followers_url": "https://api.github.com/users/rahatarmanahmed/followers", + "following_url": "https://api.github.com/users/rahatarmanahmed/following{/other_user}", + "gists_url": "https://api.github.com/users/rahatarmanahmed/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rahatarmanahmed/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rahatarmanahmed/subscriptions", + "organizations_url": "https://api.github.com/users/rahatarmanahmed/orgs", + "repos_url": "https://api.github.com/users/rahatarmanahmed/repos", + "events_url": "https://api.github.com/users/rahatarmanahmed/events{/privacy}", + "received_events_url": "https://api.github.com/users/rahatarmanahmed/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "d62376c8d6ef771426d92321d850f370f0ef3ef0", + "url": "https://api.github.com/repos/nodejs/node/commits/d62376c8d6ef771426d92321d850f370f0ef3ef0", + "html_url": "https://github.com/nodejs/node/commit/d62376c8d6ef771426d92321d850f370f0ef3ef0" + } + ] + }, + { + "sha": "6c63ab7c9a628c15ccd9d30522907b0ab4c58732", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NmM2M2FiN2M5YTYyOGMxNWNjZDlkMzA1MjI5MDdiMGFiNGM1ODczMg==", + "commit": { + "author": { + "name": "Rod Vagg", + "email": "rod@vagg.org", + "date": "2016-11-17T00:20:27Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:35Z" + }, + "message": "test: simplify test-http-client-unescaped-path\n\nPR-URL: https://github.com/nodejs/node/pull/9649\nReviewed-By: Trevor Norris \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: Luigi Pinca \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "be2d5e8a73d5ccef15b5c6a78b11bfd17f929c6e", + "url": "https://api.github.com/repos/nodejs/node/git/trees/be2d5e8a73d5ccef15b5c6a78b11bfd17f929c6e" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/6c63ab7c9a628c15ccd9d30522907b0ab4c58732", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mfAAoJENi59a6uhOTPGacQAIlJb2sGaxmbe7yny8wEEFIm\nRDsYXvCqj33/l6E++8nysDrG9k9QTcjGPB6BGaJSCfEb7X8zxKDpxqcRioXD/Ok+\nxL+Xt1LpaVaM+/rSJ1Diyqzc4bcKhCGm/sG8zl1ir6guSISk/24vDWccIIpzatYW\n4NGMd8akl6OPq9w/KJoDchSdtBGeu8rpps0cfbXJ2qees5DxHO+UMODHeVWbJTHT\nTXcg8bUpPBQy6s+oyuHoejy7ev9EXDuTRf6EMthYVcd/n3edxbU2EpTZILTh+GT+\nu+wDVqnAr/GUW5sLfbPg62mvdvHOLFLeI78ClzO9fW4A9gZu/GWRca5LvZp8yGdq\novuvUrZq8zP1+xjBj4UbO1vxf1RWtJXkyrtooAV7lGvesGG1rZY1LB0j4sKic3Am\nfN5UEcT8N/irPRBT4NJTl6uYWWchpgqisuNJwbCt7B1QJ+zlO9WNSYqnCxA9L2Tq\nklBTr+eaosS513Z0k1An2ZZHk+nYbcuEG0/WrTGrYdRUqbV2G8C7VXwi36zDlrhK\nPxvE6odwJrAPKkRjeVL1GqQBa0+j/+MGrHXRhuozLwp194Pjk5P7rzTampXR/UqR\nQQkzcOAlQ6SMvKckBRcKAfgXskOQ2gpJKERoSBNbjAS1haQXY90I+w5lRwq5KeDT\nQcha7Y4rTU0xiaLjmgFD\n=yEbA\n-----END PGP SIGNATURE-----", + "payload": "tree be2d5e8a73d5ccef15b5c6a78b11bfd17f929c6e\nparent 159799aa1d40d54a5ea0915f5a058369a7147f0b\nauthor Rod Vagg 1479342027 +1100\ncommitter Anna Henningsen 1479793055 +0100\n\ntest: simplify test-http-client-unescaped-path\n\nPR-URL: https://github.com/nodejs/node/pull/9649\nReviewed-By: Trevor Norris \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: Luigi Pinca \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/6c63ab7c9a628c15ccd9d30522907b0ab4c58732", + "html_url": "https://github.com/nodejs/node/commit/6c63ab7c9a628c15ccd9d30522907b0ab4c58732", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/6c63ab7c9a628c15ccd9d30522907b0ab4c58732/comments", + "author": { + "login": "rvagg", + "id": 495647, + "node_id": "MDQ6VXNlcjQ5NTY0Nw==", + "avatar_url": "https://avatars.githubusercontent.com/u/495647?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rvagg", + "html_url": "https://github.com/rvagg", + "followers_url": "https://api.github.com/users/rvagg/followers", + "following_url": "https://api.github.com/users/rvagg/following{/other_user}", + "gists_url": "https://api.github.com/users/rvagg/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rvagg/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rvagg/subscriptions", + "organizations_url": "https://api.github.com/users/rvagg/orgs", + "repos_url": "https://api.github.com/users/rvagg/repos", + "events_url": "https://api.github.com/users/rvagg/events{/privacy}", + "received_events_url": "https://api.github.com/users/rvagg/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "159799aa1d40d54a5ea0915f5a058369a7147f0b", + "url": "https://api.github.com/repos/nodejs/node/commits/159799aa1d40d54a5ea0915f5a058369a7147f0b", + "html_url": "https://github.com/nodejs/node/commit/159799aa1d40d54a5ea0915f5a058369a7147f0b" + } + ] + }, + { + "sha": "29bf87197798c9433689f0e358514f28ee1dc423", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MjliZjg3MTk3Nzk4Yzk0MzM2ODlmMGUzNTg1MTRmMjhlZTFkYzQyMw==", + "commit": { + "author": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-16T01:58:40Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:36Z" + }, + "message": "tools: use better regexp for manpage references\n\nIn practice, manpage names may contain dots (e.g. `resolv.conf(5)`).\n\nPR-URL: https://github.com/nodejs/node/pull/9632\nReviewed-By: Ben Noordhuis \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "74d1aaf1eaf933c72ee58c18e4ba5f2ea8bd29e0", + "url": "https://api.github.com/repos/nodejs/node/git/trees/74d1aaf1eaf933c72ee58c18e4ba5f2ea8bd29e0" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/29bf87197798c9433689f0e358514f28ee1dc423", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mgAAoJENi59a6uhOTPs8YP/A0dMeOYixSbJJoI6oUNa8CP\nWMcvmsXrsAN9cu11ZVzMhyHwgUPa/HmZGLbtjg2ihPh1ouoeeXEOqltDimkFvv50\nYgb9C96Fq/ISGcCzyIs5sgBmUeqJUCQ5IPd3wqC5huCNNpVvUtMdGsjK3C6Ldrr1\nNjk/wL06CATSYS/g+swA/d88ENczWJe6GHqlTTYGidAYKWF/rl7IDhEw/wmgQfYZ\n6UZbjQgEFwVs+Epp6XEkWkrmgHvuKSmNDiaRDHrmiW8zXgV3kWXzpxsCxOdHGTUS\nZLHvZToeVIAD5a8TlroW2vCVuGVA+OofMSVzV+VREpbxT3Nr7X2BncklbYEiGfvh\nJl5jXBNO1RV5zZWu3rfSZijdAkBkU0KjWOAEyEz5mhjjz7przAHmqWdcMoWQ64Qv\nKyF4J6IcTXfkp5T82kRPeruuW7YqpPz1cIUt75XEiz0JaihbLuZP9XAnfM6x46E8\nozh9AdYRW8zDmraBbIy6XC0wWq661TcmcQlZEUiDvvXrscuDBtV0RgiDN/lWjQu9\nO3UMnzoIpazphVJ+BXd59deK6hIyILQyWiG1PcblnuUBO8AMWalDrQ1K4jGAB8DX\n0C9i+G1OK7kPTOXCWoGVJXGmsEXOUpocNw6kwake/+2/qNcStuZOoOOsLVVX0sI4\n5Uo6qNaL6ro8cyIjN92r\n=9Gt3\n-----END PGP SIGNATURE-----", + "payload": "tree 74d1aaf1eaf933c72ee58c18e4ba5f2ea8bd29e0\nparent 6c63ab7c9a628c15ccd9d30522907b0ab4c58732\nauthor Anna Henningsen 1479261520 +0100\ncommitter Anna Henningsen 1479793056 +0100\n\ntools: use better regexp for manpage references\n\nIn practice, manpage names may contain dots (e.g. `resolv.conf(5)`).\n\nPR-URL: https://github.com/nodejs/node/pull/9632\nReviewed-By: Ben Noordhuis \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/29bf87197798c9433689f0e358514f28ee1dc423", + "html_url": "https://github.com/nodejs/node/commit/29bf87197798c9433689f0e358514f28ee1dc423", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/29bf87197798c9433689f0e358514f28ee1dc423/comments", + "author": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "6c63ab7c9a628c15ccd9d30522907b0ab4c58732", + "url": "https://api.github.com/repos/nodejs/node/commits/6c63ab7c9a628c15ccd9d30522907b0ab4c58732", + "html_url": "https://github.com/nodejs/node/commit/6c63ab7c9a628c15ccd9d30522907b0ab4c58732" + } + ] + }, + { + "sha": "39f04829d6bcd360c89871d2a2b95746f4fe9620", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzlmMDQ4MjlkNmJjZDM2MGM4OTg3MWQyYTJiOTU3NDZmNGZlOTYyMA==", + "commit": { + "author": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-16T02:00:30Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:36Z" + }, + "message": "doc: remove backtick escaping for manpage refs\n\nRemoving backticks will make the doctool emit links to the man pages.\n\nPR-URL: https://github.com/nodejs/node/pull/9632\nReviewed-By: Ben Noordhuis \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "6aaf24fb42eb4b704f60935184a22c8c308657c8", + "url": "https://api.github.com/repos/nodejs/node/git/trees/6aaf24fb42eb4b704f60935184a22c8c308657c8" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/39f04829d6bcd360c89871d2a2b95746f4fe9620", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mgAAoJENi59a6uhOTPyuIQAJ+6ajgbNsDdoryKkjJd6T8c\n2Wg2H3t8Z4eTVHmYOM3ptkV3t7xTLuUAFK4jR8PWrJI4qixd+azXE8gMOciEVWiH\n3XASYjU3fMQ7caRUNj+rRNapvUam0hzc8ZviybOMA2TULwRCoymTH+B6oqGfITEg\n2E2F8c3SV8IqMbi5zmK9xwEfzkGwTmJ4S7it9EK7SwgdBLd5k6V0R9XudFLiBjUj\nKVas9TFTVOtVSezKQpmPjFL/+CiipwpoZgwGYDEHiQbgjj6NG5kQS+bGKAumdUA2\n3KR1tHBJWvpsrkg6HzSXxj56HJnKzVIHZ0Cni0doRjySNcd9CrRiJC15cLdGBhvp\nEYPstl8WoFP1irMENsIkuH/M4RIgQpgdN0Nl9kc2BENeVXakWY8kkBnqX7zsgyzr\n/VLuAxuxPRTgvaNZtb+hpLYSn1Xqm0kjjgqQG+IWEdKvEWVb9hXfVPUer/VOD8tB\nHyilL1jirYIkC+0G+yxL/uSMylfXzhm0YN0Q0zUpQ8xbxYBGYvvgCUnRd2M7tfes\nzIKAxKYOq38zIHAgEhsfWcsDGTyvcrdIqAJ+1sVKFwKv9hSryxXfA5s0aRNS+00v\n8ss8kO03U0GnAeS7jPPQMbbCFpYxgfqzHamWy9b4ylsl9QLRge3GEnWwenyfRfaZ\n3EGnmXhkWzAfO5jNTTUt\n=TpWw\n-----END PGP SIGNATURE-----", + "payload": "tree 6aaf24fb42eb4b704f60935184a22c8c308657c8\nparent 29bf87197798c9433689f0e358514f28ee1dc423\nauthor Anna Henningsen 1479261630 +0100\ncommitter Anna Henningsen 1479793056 +0100\n\ndoc: remove backtick escaping for manpage refs\n\nRemoving backticks will make the doctool emit links to the man pages.\n\nPR-URL: https://github.com/nodejs/node/pull/9632\nReviewed-By: Ben Noordhuis \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Luigi Pinca \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/39f04829d6bcd360c89871d2a2b95746f4fe9620", + "html_url": "https://github.com/nodejs/node/commit/39f04829d6bcd360c89871d2a2b95746f4fe9620", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/39f04829d6bcd360c89871d2a2b95746f4fe9620/comments", + "author": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "29bf87197798c9433689f0e358514f28ee1dc423", + "url": "https://api.github.com/repos/nodejs/node/commits/29bf87197798c9433689f0e358514f28ee1dc423", + "html_url": "https://github.com/nodejs/node/commit/29bf87197798c9433689f0e358514f28ee1dc423" + } + ] + }, + { + "sha": "b070df89321a8cf258c4e4db3e31e4290a418bc2", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YjA3MGRmODkzMjFhOGNmMjU4YzRlNGRiM2UzMWU0MjkwYTQxOGJjMg==", + "commit": { + "author": { + "name": "monkick", + "email": "saruyama.monki@gmail.com", + "date": "2016-11-12T07:30:28Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:37:37Z" + }, + "message": "doc: fix typo in BUILDING.md\n\ne.g., to e.g. at BUILDING.md line 116\n\nPR-URL: https://github.com/nodejs/node/pull/9569\nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \nReviewed-By: Michael Dawson \nReviewed-By: James M Snell ", + "tree": { + "sha": "a751bd9a93c9649c3990f876970765387a8ded2c", + "url": "https://api.github.com/repos/nodejs/node/git/trees/a751bd9a93c9649c3990f876970765387a8ded2c" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/b070df89321a8cf258c4e4db3e31e4290a418bc2", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9mhAAoJENi59a6uhOTP/wkP/2Jrk+kTLvgikGPq3WYyPePR\nc/3V7pqhZKx+ZZwP0wxCRInNJQt8EJ8r5KaLWSt7JfxxKku1ovLP//10tZnmkuTC\n3NQitcsUdReb5jttfYoo/z969OmUzBpOd4tC93oUl+tHMY967RzIHCsm7ebEeOCt\nKfq7KFCVtPhekJDnwFq6N1U/HE28zORtGWzoq947M2uRzycuL5AEnvAIfXL/D48k\nYMUMJWicSUCO8KJnCPuLfZWszL3toYTe1i8mTOCnojxzXBihf7RSiwnZuTWmKtMZ\n61hG0YaiuC3aDlWzVnnTlPh7T3PIhv1t5nts+TnpBjrOqcwnxAD/5eg1JiURjKgW\nL0Xz1581DcOWQZ8mGHs+cQmRCuaItXV+Gz9mV6gfOa7v6EpaCd+3ss+L4c51V0X5\nQtfBGX/JE/yV7TSJMa/GPlNLDddSFv9AGDoAITpJ5FxZSiK7ZZbIggRvjHbzmUVY\nSU6zcJbG6VkNAPh0vtkAQgLsW6OhVfFswzL1ZS1F+9S/p4P5hd5hmb+qAgXyYKGt\nu9CJetnFeMRo0F8xL3jABUuLVRjojGhbMVfDYuy9vNJjJ9PoJiJw+zlS/gpFkP6g\n9RFpB03D1VLS0FMOiAbPuFE88BR3r8XPqNYTQzdItJwuXRZgoDeczX24J3hhdTY2\nCowK+cpoefoHh9UlG1ly\n=JU4H\n-----END PGP SIGNATURE-----", + "payload": "tree a751bd9a93c9649c3990f876970765387a8ded2c\nparent 39f04829d6bcd360c89871d2a2b95746f4fe9620\nauthor monkick 1478935828 +0900\ncommitter Anna Henningsen 1479793057 +0100\n\ndoc: fix typo in BUILDING.md\n\ne.g., to e.g. at BUILDING.md line 116\n\nPR-URL: https://github.com/nodejs/node/pull/9569\nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu \nReviewed-By: Michael Dawson \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/b070df89321a8cf258c4e4db3e31e4290a418bc2", + "html_url": "https://github.com/nodejs/node/commit/b070df89321a8cf258c4e4db3e31e4290a418bc2", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/b070df89321a8cf258c4e4db3e31e4290a418bc2/comments", + "author": { + "login": "kazu80", + "id": 4590559, + "node_id": "MDQ6VXNlcjQ1OTA1NTk=", + "avatar_url": "https://avatars.githubusercontent.com/u/4590559?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/kazu80", + "html_url": "https://github.com/kazu80", + "followers_url": "https://api.github.com/users/kazu80/followers", + "following_url": "https://api.github.com/users/kazu80/following{/other_user}", + "gists_url": "https://api.github.com/users/kazu80/gists{/gist_id}", + "starred_url": "https://api.github.com/users/kazu80/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/kazu80/subscriptions", + "organizations_url": "https://api.github.com/users/kazu80/orgs", + "repos_url": "https://api.github.com/users/kazu80/repos", + "events_url": "https://api.github.com/users/kazu80/events{/privacy}", + "received_events_url": "https://api.github.com/users/kazu80/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "39f04829d6bcd360c89871d2a2b95746f4fe9620", + "url": "https://api.github.com/repos/nodejs/node/commits/39f04829d6bcd360c89871d2a2b95746f4fe9620", + "html_url": "https://github.com/nodejs/node/commit/39f04829d6bcd360c89871d2a2b95746f4fe9620" + } + ] + }, + { + "sha": "08a7e7b009f041c008399749b33937aaf78ea1b4", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MDhhN2U3YjAwOWYwNDFjMDA4Mzk5NzQ5YjMzOTM3YWFmNzhlYTFiNA==", + "commit": { + "author": { + "name": "Kirill Fomichev", + "email": "fanatid@ya.ru", + "date": "2016-11-01T12:24:31Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:01Z" + }, + "message": "crypto: return `this` in setAuthTag/setAAD\n\nAllow method chaining as with setAutoPadding and other methods.\n\nPR-URL: https://github.com/nodejs/node/pull/9398\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Sam Roberts \nReviewed-By: Luigi Pinca \nReviewed-By: Brian White \nReviewed-By: James M Snell ", + "tree": { + "sha": "df49d77faedb17756bed9f943766f37bfbf0877e", + "url": "https://api.github.com/repos/nodejs/node/git/trees/df49d77faedb17756bed9f943766f37bfbf0877e" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/08a7e7b009f041c008399749b33937aaf78ea1b4", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m5AAoJENi59a6uhOTPJ5UP/1WfBBoiIRYzj8GADSxI9QLf\n8jIAxj3GRuF3VfORcrhtvZCKZ19ZG4YPLmV2cL6SL5UAGspEWsla70dQ2XVr2r62\nbONBqpkH/+YBxyp4l5WprBDYsyh7Vj2quGU1egkNIQ28TVAqmTygRpHUR/Cg7eWP\nUdzYA4duBRRHcYFRY85MDBn/4E3Z6z/q5CvCiY3qcWWnMO+/Kleo8aLekzhZlclK\naHGWjPhJfW4yQaIlceWnq/c5qEkaivL4N7GEdG24E7GEJpR+eI0ANDFSuKWwJjLz\nqN61GqZg4Zzp7B33yFR3ygp/wCTBU3o69m1YnAPMt8JMNQU8DlJ3X12d4s7nO5pr\nQfKp6qE50cPS1fgHfOkvF92OmgR3M4lUnhVO7tOaJ+XvuU4XpVXxs+aEAwb4Yruz\nBJkSF4ZHY08z5IVF250WiUjwaDF595QTxdkRJ65z2cOBLKK9Rvn3pbZt0ingYRZl\nzBHfViPuFLKokXtmt9RIv1oeog2D3HRWQnktYRNT3qvZpwoy97yHpzsTMAfSigvl\nv+kAEnwQn1ad56uEOenufQZ7HD+uURHCB33BKrF7NEMnGbPuW9uys4jbvhvrf5xO\nRZQNugEdccK7n0LabK7Al1N44C/URs0lLMKUzVvioYOMNCZ0kEyOQ/TgVnDnl15a\nOdX62jzvZknCnvAp5Vc+\n=p3VH\n-----END PGP SIGNATURE-----", + "payload": "tree df49d77faedb17756bed9f943766f37bfbf0877e\nparent b070df89321a8cf258c4e4db3e31e4290a418bc2\nauthor Kirill Fomichev 1478003071 +0300\ncommitter Anna Henningsen 1479793081 +0100\n\ncrypto: return `this` in setAuthTag/setAAD\n\nAllow method chaining as with setAutoPadding and other methods.\n\nPR-URL: https://github.com/nodejs/node/pull/9398\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Sam Roberts \nReviewed-By: Luigi Pinca \nReviewed-By: Brian White \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/08a7e7b009f041c008399749b33937aaf78ea1b4", + "html_url": "https://github.com/nodejs/node/commit/08a7e7b009f041c008399749b33937aaf78ea1b4", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/08a7e7b009f041c008399749b33937aaf78ea1b4/comments", + "author": { + "login": "fanatid", + "id": 2633065, + "node_id": "MDQ6VXNlcjI2MzMwNjU=", + "avatar_url": "https://avatars.githubusercontent.com/u/2633065?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/fanatid", + "html_url": "https://github.com/fanatid", + "followers_url": "https://api.github.com/users/fanatid/followers", + "following_url": "https://api.github.com/users/fanatid/following{/other_user}", + "gists_url": "https://api.github.com/users/fanatid/gists{/gist_id}", + "starred_url": "https://api.github.com/users/fanatid/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/fanatid/subscriptions", + "organizations_url": "https://api.github.com/users/fanatid/orgs", + "repos_url": "https://api.github.com/users/fanatid/repos", + "events_url": "https://api.github.com/users/fanatid/events{/privacy}", + "received_events_url": "https://api.github.com/users/fanatid/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "b070df89321a8cf258c4e4db3e31e4290a418bc2", + "url": "https://api.github.com/repos/nodejs/node/commits/b070df89321a8cf258c4e4db3e31e4290a418bc2", + "html_url": "https://github.com/nodejs/node/commit/b070df89321a8cf258c4e4db3e31e4290a418bc2" + } + ] + }, + { + "sha": "4517276c74de5d07b4cfdd1cee4b85a10d5ee488", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NDUxNzI3NmM3NGRlNWQwN2I0Y2ZkZDFjZWU0Yjg1YTEwZDVlZTQ4OA==", + "commit": { + "author": { + "name": "Josh Gavant", + "email": "josh.gavant@outlook.com", + "date": "2016-11-14T23:22:48Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:02Z" + }, + "message": "src: fix method name, output format\n\n* add additional newline to HTTP GET JSON responses\n* SendTargentsListResponse -> SendListResponse\n\nPR-URL: https://github.com/nodejs/node/pull/9627\nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "b3deab187575cef331f01b4a8bd6da185c1d0691", + "url": "https://api.github.com/repos/nodejs/node/git/trees/b3deab187575cef331f01b4a8bd6da185c1d0691" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/4517276c74de5d07b4cfdd1cee4b85a10d5ee488", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m6AAoJENi59a6uhOTP8zIP/1gOQpdv64nS1H4M5pWXSkgr\njPUp1EKbRpN4pg6RYEtTxzdtcDuPpLBA7u8G/uITKHdAmqZQy9UwkDeY2uJANdum\nRWlSHdO3Ggd6MrWYHVco9d1Do5nu+bDylBmnS0bAuORjSGruu+m0ZIiZ3s2kmo8G\nCJpENFPu8GMTjIAcnVZGeeU6cbQKTmSpjHG1xZnMel+fKKzlNaUgNul7XIwjtHIA\nzJa0JtmXaJOIZLKQ/h2s76C8Bd1+dI2ef9rwah6YLOHgON9oX1Wv5G6yx0n0j65y\nQtLvFpqiijCuSIYcYv+eji/gEjDk/K3aWt2hp2Pw0PkH/1fKJyieQSuGvSS1Zg3M\nbuMbzj/6arH519ZFfX0kayPllyupxSUBr1Hg+dESBCxOHGsjQDt1SBjOT3PfFERw\nuVBN4Wi+G8SD2B7lutcDRNcMH7amrYBCPoO17EegyPysSC8CJgay1JfvmqcKELPq\nPWgpdgDVyy8fZOxAB1ibG17Q8F8MqRJbDJmAqXzoPnvnEmAGuZmTvzQrRNfdu42U\nONP+cg9qUVACmsvNia4f9rKqc2IY1qiVUsf3u96LwAF5tTbtkQby4wRiSQMop9aD\nDspOMhnQjuDNTgVTmweaIJTeSI+G1MRoDiQApuSvjcty7CuSOBIfdLqpep/R6YYv\nvOpoBmVL4coTIzV7XYLo\n=6B/R\n-----END PGP SIGNATURE-----", + "payload": "tree b3deab187575cef331f01b4a8bd6da185c1d0691\nparent 08a7e7b009f041c008399749b33937aaf78ea1b4\nauthor Josh Gavant 1479165768 -0800\ncommitter Anna Henningsen 1479793082 +0100\n\nsrc: fix method name, output format\n\n* add additional newline to HTTP GET JSON responses\n* SendTargentsListResponse -> SendListResponse\n\nPR-URL: https://github.com/nodejs/node/pull/9627\nReviewed-By: James M Snell \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/4517276c74de5d07b4cfdd1cee4b85a10d5ee488", + "html_url": "https://github.com/nodejs/node/commit/4517276c74de5d07b4cfdd1cee4b85a10d5ee488", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/4517276c74de5d07b4cfdd1cee4b85a10d5ee488/comments", + "author": { + "login": "joshgav", + "id": 4421720, + "node_id": "MDQ6VXNlcjQ0MjE3MjA=", + "avatar_url": "https://avatars.githubusercontent.com/u/4421720?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/joshgav", + "html_url": "https://github.com/joshgav", + "followers_url": "https://api.github.com/users/joshgav/followers", + "following_url": "https://api.github.com/users/joshgav/following{/other_user}", + "gists_url": "https://api.github.com/users/joshgav/gists{/gist_id}", + "starred_url": "https://api.github.com/users/joshgav/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/joshgav/subscriptions", + "organizations_url": "https://api.github.com/users/joshgav/orgs", + "repos_url": "https://api.github.com/users/joshgav/repos", + "events_url": "https://api.github.com/users/joshgav/events{/privacy}", + "received_events_url": "https://api.github.com/users/joshgav/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "08a7e7b009f041c008399749b33937aaf78ea1b4", + "url": "https://api.github.com/repos/nodejs/node/commits/08a7e7b009f041c008399749b33937aaf78ea1b4", + "html_url": "https://github.com/nodejs/node/commit/08a7e7b009f041c008399749b33937aaf78ea1b4" + } + ] + }, + { + "sha": "c4f33b48f7db46aa60bcf4c120e01280b59dc17b", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YzRmMzNiNDhmN2RiNDZhYTYwYmNmNGMxMjBlMDEyODBiNTlkYzE3Yg==", + "commit": { + "author": { + "name": "Gareth Ellis", + "email": "gareth.ellis@uk.ibm.com", + "date": "2016-09-17T09:52:26Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:02Z" + }, + "message": "src: extend `HeapStatistics` with new fields\n\nsrc: Add does_zap_garbage, malloced_memory and\npeak_malloced_memory to v8 HeapStatistics\n\nFollowing https://github.com/nodejs/code-and-learn/issues/56 I\nhave exposed does_zap_garbage to HeapStatistics.\nThe other fields, malloced_memory and peak_malloced_memory don't\nseem to be in the current version of v8 in master.\n\nPR-URL: https://github.com/nodejs/node/pull/8610\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "fe93b37ccb94f2c752b59e41452e0d556413bfbb", + "url": "https://api.github.com/repos/nodejs/node/git/trees/fe93b37ccb94f2c752b59e41452e0d556413bfbb" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/c4f33b48f7db46aa60bcf4c120e01280b59dc17b", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m6AAoJENi59a6uhOTPmsAP/3HA2tmS/+8U2Z07RbgiCkR4\nLWulhhr0B5KIxP1lNxCzBQ+Vkzmojrmio9+irRlOlUlLbM9HRQyzYgSZaMnrsQs1\nMNvBgs77cwQ7AnAGunp6jY5lHao+qAMdUs2YydFH1yEDR90ydXEilr8VPCOvQjpV\n0SYWhTBCQ5Sn930KmPPDLOX/GNXsEqtsg45uosBF+q+0kivUwYzL/KqCY741Rz8V\nH0KOYv93oWu0FvAZyXepoknF5cLi1n0pjlWw2VV8wuywiPwChin7MBjiU2C7P2wL\nfeXsw85KNTha+9z/KRu7VY8Anh9EjRL1UZbY2RuzVn4sWU0Z4wwnOK6ClyOuZrpT\nT7Psl+nKXQWvpC6pXh6TY58dpMj8wnCHsRgVw1QEPTErE6appfrEq1b91S0cblvK\nnucQT/0RSzEB3TR9WN097WEZicNQjZtKeOKnw7AkLcttQumM8BOLwbPgLxYGoBfI\nV/eaZWMNGzE426hKv0Ja/nfNXCqrsybsIfg3595gRFSymAIScRmUa7EYNM45/M0l\nSgkJvc0elh3QVMTMo6R14GecA/1yn2Rz3cgkjfkZJ0amCxX8BPQSEhn11kKQG6jd\npxb6jzQtTzMYM7rSoPAQj47cpEoyYLf+vKB7DSfvWuxm+hncPvYJCOIv2t5OMiYt\nFsh7H2EKX0R804ZBxxhm\n=QvuR\n-----END PGP SIGNATURE-----", + "payload": "tree fe93b37ccb94f2c752b59e41452e0d556413bfbb\nparent 4517276c74de5d07b4cfdd1cee4b85a10d5ee488\nauthor Gareth Ellis 1474105946 +0100\ncommitter Anna Henningsen 1479793082 +0100\n\nsrc: extend `HeapStatistics` with new fields\n\nsrc: Add does_zap_garbage, malloced_memory and\npeak_malloced_memory to v8 HeapStatistics\n\nFollowing https://github.com/nodejs/code-and-learn/issues/56 I\nhave exposed does_zap_garbage to HeapStatistics.\nThe other fields, malloced_memory and peak_malloced_memory don't\nseem to be in the current version of v8 in master.\n\nPR-URL: https://github.com/nodejs/node/pull/8610\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Ben Noordhuis \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/c4f33b48f7db46aa60bcf4c120e01280b59dc17b", + "html_url": "https://github.com/nodejs/node/commit/c4f33b48f7db46aa60bcf4c120e01280b59dc17b", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/c4f33b48f7db46aa60bcf4c120e01280b59dc17b/comments", + "author": { + "login": "gareth-ellis", + "id": 14981026, + "node_id": "MDQ6VXNlcjE0OTgxMDI2", + "avatar_url": "https://avatars.githubusercontent.com/u/14981026?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gareth-ellis", + "html_url": "https://github.com/gareth-ellis", + "followers_url": "https://api.github.com/users/gareth-ellis/followers", + "following_url": "https://api.github.com/users/gareth-ellis/following{/other_user}", + "gists_url": "https://api.github.com/users/gareth-ellis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gareth-ellis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gareth-ellis/subscriptions", + "organizations_url": "https://api.github.com/users/gareth-ellis/orgs", + "repos_url": "https://api.github.com/users/gareth-ellis/repos", + "events_url": "https://api.github.com/users/gareth-ellis/events{/privacy}", + "received_events_url": "https://api.github.com/users/gareth-ellis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "4517276c74de5d07b4cfdd1cee4b85a10d5ee488", + "url": "https://api.github.com/repos/nodejs/node/commits/4517276c74de5d07b4cfdd1cee4b85a10d5ee488", + "html_url": "https://github.com/nodejs/node/commit/4517276c74de5d07b4cfdd1cee4b85a10d5ee488" + } + ] + }, + { + "sha": "a220170861d62d7a488330896695ed7b4464a59e", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YTIyMDE3MDg2MWQ2MmQ3YTQ4ODMzMDg5NjY5NWVkN2I0NDY0YTU5ZQ==", + "commit": { + "author": { + "name": "Rich Trott", + "email": "rtrott@gmail.com", + "date": "2016-11-17T18:25:57Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:03Z" + }, + "message": "test: refactor test-async-wrap-*\n\n* `assert.equal()` -> `assert.strictEqual()`\n* add duration to `setTimeout()`\n\nPR-URL: https://github.com/nodejs/node/pull/9663\nReviewed-By: Ben Noordhuis \nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: Luigi Pinca \nReviewed-By: Prince John Wesley ", + "tree": { + "sha": "eade51729912df77f23d0293e8a513bb25271e09", + "url": "https://api.github.com/repos/nodejs/node/git/trees/eade51729912df77f23d0293e8a513bb25271e09" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/a220170861d62d7a488330896695ed7b4464a59e", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m7AAoJENi59a6uhOTP7E4P/2hEMXacFoXDIseiAqmI1wS+\nEB3HxqJys+MU6StpcKmfGnIvUoJj4NzJMKJ/ykO3lU1g+KPssgAV7jV1Vpf2lQre\noE8+GFsDE/aWxdU+IVX/ou+tWiOZBUouKPoZ79qnSs8Sp0DQoqAvb1AQrq9nXkj9\nBwALO8FlENjAgVlZwDdNPG+hTXQlU1moIfdm7/gIG/UrMtDgRaFj70WiHh0oUHL5\nj7xYzqPbDuIVLROHTPWz9NVyJd/E1NNIs8jPebwRLcbcdCW7CuiI+zhIeOD1d1or\nHQKq4bV2sDnCileEL/HB0bf/PGXaHfZiw33/wT2mGYOgbwelnrdRVtqGvqm6J7gd\nOzr1BOWhJhQtoo6yZaUjCKSwLXrBUgKZMP11vIbi5ld3zEsp2bBnsPsHc4dlx1+v\n0M/qHGAPpHWPd1yeEIyTjcx240ehG/jP8BNEyixKmIm4P9oOYFOnkE3SWKV03qIS\ncUUcTcpH8dhx4TCiZefkadIPWPBWxIBJMWRa3pYcUGiufNdfyo247hfzBYl17lrh\nOCw/oPxOz46EntX9QGADJCxSfTFu9UQtihVEbaAVRpGQmKGUp2PsGDXfF61HWogz\nWp5dfM6mjLVAtob/E4O4eYx0CYnDETPbLcN5NvHtcGk85uRbQig4BWkrHARdOJlt\nLMI143+B17FqSTp6hsUE\n=PNsu\n-----END PGP SIGNATURE-----", + "payload": "tree eade51729912df77f23d0293e8a513bb25271e09\nparent c4f33b48f7db46aa60bcf4c120e01280b59dc17b\nauthor Rich Trott 1479407157 -0800\ncommitter Anna Henningsen 1479793083 +0100\n\ntest: refactor test-async-wrap-*\n\n* `assert.equal()` -> `assert.strictEqual()`\n* add duration to `setTimeout()`\n\nPR-URL: https://github.com/nodejs/node/pull/9663\nReviewed-By: Ben Noordhuis \nReviewed-By: Colin Ihrig \nReviewed-By: Santiago Gimeno \nReviewed-By: James M Snell \nReviewed-By: Luigi Pinca \nReviewed-By: Prince John Wesley \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/a220170861d62d7a488330896695ed7b4464a59e", + "html_url": "https://github.com/nodejs/node/commit/a220170861d62d7a488330896695ed7b4464a59e", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/a220170861d62d7a488330896695ed7b4464a59e/comments", + "author": { + "login": "Trott", + "id": 718899, + "node_id": "MDQ6VXNlcjcxODg5OQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/718899?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Trott", + "html_url": "https://github.com/Trott", + "followers_url": "https://api.github.com/users/Trott/followers", + "following_url": "https://api.github.com/users/Trott/following{/other_user}", + "gists_url": "https://api.github.com/users/Trott/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Trott/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Trott/subscriptions", + "organizations_url": "https://api.github.com/users/Trott/orgs", + "repos_url": "https://api.github.com/users/Trott/repos", + "events_url": "https://api.github.com/users/Trott/events{/privacy}", + "received_events_url": "https://api.github.com/users/Trott/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "c4f33b48f7db46aa60bcf4c120e01280b59dc17b", + "url": "https://api.github.com/repos/nodejs/node/commits/c4f33b48f7db46aa60bcf4c120e01280b59dc17b", + "html_url": "https://github.com/nodejs/node/commit/c4f33b48f7db46aa60bcf4c120e01280b59dc17b" + } + ] + }, + { + "sha": "0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MDA4M2JmMjIzM2ZiN2M5ZTFmYTAwOWQ3YTZjMWY0YjMwYTc3YThiNQ==", + "commit": { + "author": { + "name": "Gibson Fahnestock", + "email": "gib@uk.ibm.com", + "date": "2016-11-16T16:02:57Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:03Z" + }, + "message": "build: default to ppc64 on AIX\n\nThe ./configure python script searches `gcc -dM -E -` for the ARCH\nflags. On AIX, gcc builds in 32 bit mode by default prior to gcc v6, so\nyou don't get the __PPC64__ flag unless you run `gcc -maix64 -dM -E -`.\n\nWe don't support ppc 32 bit for any OS, so always use ppc64 as the\nhost_arch.\n\nPR-URL: https://github.com/nodejs/node/pull/9645\n\nReviewed-By: Michael Dawson \nReviewed-By: James M Snell ", + "tree": { + "sha": "1b92fa9e55f2666b02a6a896fc1b63df33ce8b3f", + "url": "https://api.github.com/repos/nodejs/node/git/trees/1b92fa9e55f2666b02a6a896fc1b63df33ce8b3f" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m7AAoJENi59a6uhOTPuRsP/2qsWIN68zS25C/jUEH+lLA6\nygD80TSexqirERWxrUvIntJkH0AcfeZZeg/4tfxmQWlJyKKk+Q4NJhRqYUG1NuUk\ncGu8hCXnyzm8KC64ZCAA75DQwbhvWszrOm2juIGb/GKy/C9R2Lg6cTsPoe7c2sJ6\nO5oFCegQqiCd+sb8OXlHN7qoi6CAHSZb9WIf322ASFHE6UTlXYOa6P2nqr2uGgV6\nR91Gz9Djg+KhreiSPrkAuuV1jT5x3TdD2VARN1tUlLZrCc6PMKAytcwiuKnk39B/\nDyiNgPAgXzcG4SWCeFnrXssx6SC2ZPqpp5gNS/7x6e43pST/KQNni4n3e4L9GYRk\nusML10qX8NbZ8Wv6tOnZbN4O+h7vKggTNWTrukH1t0NoBg63zIK8oCMLwQlWh/qe\ny/04GGAndz6kOE0P9ZJ7qigRocyxLz5yE1DgbgayJ+E2oFzpPC07OvO45wxlDqSS\nKjoXtpCvMhliYs6VLAHZXjQfvonoSHUhbGcn93vP+qt8XEgzW9YPcr53E2vnf6wZ\ntm/zmpgJtcgaPOAYe7RJn4VwCpKMeReNwLOG/pRAIM1jjSr5ZTruo1iwVyZwV/PJ\neVv25qZ7DjCE9DD326VcMm/Cjg3I/9GEmn8hVIO/AH0Fq2HM+yLtYNcS8lUgZP2Q\nsq0RGBf1DpdkaCMmzDB2\n=hF1k\n-----END PGP SIGNATURE-----", + "payload": "tree 1b92fa9e55f2666b02a6a896fc1b63df33ce8b3f\nparent a220170861d62d7a488330896695ed7b4464a59e\nauthor Gibson Fahnestock 1479312177 +0000\ncommitter Anna Henningsen 1479793083 +0100\n\nbuild: default to ppc64 on AIX\n\nThe ./configure python script searches `gcc -dM -E -` for the ARCH\nflags. On AIX, gcc builds in 32 bit mode by default prior to gcc v6, so\nyou don't get the __PPC64__ flag unless you run `gcc -maix64 -dM -E -`.\n\nWe don't support ppc 32 bit for any OS, so always use ppc64 as the\nhost_arch.\n\nPR-URL: https://github.com/nodejs/node/pull/9645\n\nReviewed-By: Michael Dawson \nReviewed-By: James M Snell \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5", + "html_url": "https://github.com/nodejs/node/commit/0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5/comments", + "author": { + "login": "gibfahn", + "id": 15943089, + "node_id": "MDQ6VXNlcjE1OTQzMDg5", + "avatar_url": "https://avatars.githubusercontent.com/u/15943089?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/gibfahn", + "html_url": "https://github.com/gibfahn", + "followers_url": "https://api.github.com/users/gibfahn/followers", + "following_url": "https://api.github.com/users/gibfahn/following{/other_user}", + "gists_url": "https://api.github.com/users/gibfahn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/gibfahn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/gibfahn/subscriptions", + "organizations_url": "https://api.github.com/users/gibfahn/orgs", + "repos_url": "https://api.github.com/users/gibfahn/repos", + "events_url": "https://api.github.com/users/gibfahn/events{/privacy}", + "received_events_url": "https://api.github.com/users/gibfahn/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "a220170861d62d7a488330896695ed7b4464a59e", + "url": "https://api.github.com/repos/nodejs/node/commits/a220170861d62d7a488330896695ed7b4464a59e", + "html_url": "https://github.com/nodejs/node/commit/a220170861d62d7a488330896695ed7b4464a59e" + } + ] + }, + { + "sha": "7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6N2MxYTJmNTZmY2NkZjJkZjJhZWZiZjcyNTMzZTllNmEzMDdkY2YyMg==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-11-18T22:02:00Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:04Z" + }, + "message": "test: add new.target add-on regression test\n\nAdd a test that checks that new.target inheritance works when inheriting\nfrom a constructor defined in C++.\n\nPR-URL: https://github.com/nodejs/node/pull/9689\nRefs: https://github.com/nodejs/node/issues/9288\nRefs: https://github.com/nodejs/node/pull/9293\nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "d4c037be43a4f7b79306ff82b391ff3999ad89c6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/d4c037be43a4f7b79306ff82b391ff3999ad89c6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m8AAoJENi59a6uhOTP5rMQAJgG3ARsiB62p7869cqwMvId\nlw1sqgJuMrp7Kqw3YtPdMTyzbP9LSMTreEP3tljKsa/jQFa8Ci6d3W6DM5hyTQuP\n/HyXJBKHyd7PQbRtnXjIv2gKof9GtzgXgECSTU0EjbRsFyGKbxTHe12VGCNhEc7f\nMziJ3ZHbHdEuvi8tt6cd4fHDvhLPzI1jNUfCdafHhmj/a9qjhBfuakEoHrHsT20h\nYO7br1JlnuED7DgfEj4VVEo2WXIBC5LVH/FllvzoOVTD86gN92bQNKB0TL/JqTY/\nFkEd4YvvwPEFd17PhTzCR2TqbN1Vf8zA9GcAqHJ2Phj+e7dHpV3lGk9t855fjDYf\nrN8Fo4JlQxRGFE8w1we5QT+S/dYbugLhmLgSM3+nxeaMBjCdrvdA4jJJXIaiYA28\nRWXAWni7E6D7IN9uSXOUvk87buOk//qzHkpjHUsDAufUer+/jsLNKt+cC+OefLe1\nPe7kw3lYc6Z604qNg1LXtfBeByNzHnNXqhNqTMW6ne6rKD63XqfypyuiHbUZ6gd7\nA2FQ61VLd+njzcRpqoW43e8GTnmHcVn3LS1xDfQai9uCW+XlIK6ZZW6tlX0LvPP+\nOSFh/IbjU7qUy5J+JIeMj+7D1OpJu5nXNGhe+ehwqeGXqVcl7fl/WlXmaBEICamT\nLp4+6O0fLIJQPahsSbsi\n=r29w\n-----END PGP SIGNATURE-----", + "payload": "tree d4c037be43a4f7b79306ff82b391ff3999ad89c6\nparent 0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5\nauthor Ben Noordhuis 1479506520 +0100\ncommitter Anna Henningsen 1479793084 +0100\n\ntest: add new.target add-on regression test\n\nAdd a test that checks that new.target inheritance works when inheriting\nfrom a constructor defined in C++.\n\nPR-URL: https://github.com/nodejs/node/pull/9689\nRefs: https://github.com/nodejs/node/issues/9288\nRefs: https://github.com/nodejs/node/pull/9293\nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22", + "html_url": "https://github.com/nodejs/node/commit/7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5", + "url": "https://api.github.com/repos/nodejs/node/commits/0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5", + "html_url": "https://github.com/nodejs/node/commit/0083bf2233fb7c9e1fa009d7a6c1f4b30a77a8b5" + } + ] + }, + { + "sha": "19ca6cddcf7bf55d708db65e059089e2c2673e91", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MTljYTZjZGRjZjdiZjU1ZDcwOGRiNjVlMDU5MDg5ZTJjMjY3M2U5MQ==", + "commit": { + "author": { + "name": "Sam Roberts", + "email": "vieuxtech@gmail.com", + "date": "2016-11-18T17:40:45Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:04Z" + }, + "message": "tools: disallow trailing whitespace for markdown\n\nmarkdown had a dispensation because 2 or more trailing spaces triggers a\nnew paragraph. There are no examples of that usage in Node, all trailing\nwhitespace found were mistakes, and the dispensation is now removed.\n\nSee: https://github.com/nodejs/node/pull/9620\nPR-URL: https://github.com/nodejs/node/pull/9676\nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Gibson Fahnestock ", + "tree": { + "sha": "1dcf1e0863d357228a9bdfebf3d0d4bc2f865f82", + "url": "https://api.github.com/repos/nodejs/node/git/trees/1dcf1e0863d357228a9bdfebf3d0d4bc2f865f82" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/19ca6cddcf7bf55d708db65e059089e2c2673e91", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m8AAoJENi59a6uhOTPLg4QALc8kFA2osIpJswqaq3z+Et3\nWZ4iNaXegU6NGLdariJm2LOKIVNAoJyKH15UZ58bCObsXRjXaagLy675L55bjdvt\ndi8zSbfBsUwY/pWL7sGa6I0DaMOZqWpzbqThwQQYsXhe+l2V5aCCeIn9IYKt2kF0\n22Gxp+AghZvRi2nn6KSrgH9sy9M0YwncEHIXb+oidBCoWAXn0YoWFCIXpOSvIOYG\npRnFud9kr+ZKafL1Nz9sabvDHt+KpAGjwJiWA+3ZvaGuZrEwEfIl33Q4hNJftrj3\nEZqP9VlfnQm6Xx2l0ZIy1cC1I6HPZlrvAEjBtKbRZurM2RS2agvz4dtjZ36c3eNP\nLQlBaJQTx/qjZTzZF1oh6Chn9mD0wU9yP7sBPinhZBb3P29kSEIgCEQmCp4qWfK7\n5c0eemLfTKHNF3XQ/Q8IPXWcAPGra0ZRLyccGl4u+zIu5/tUvJocN3AqL8CPVm9L\n1l4QrxmnohmfjsGZlzeSmmUkJj1+zWVWxUYZW898YDZk9jN88DA9jcSG3ys0gfL2\nNSygbvNjWOds/aJPknWmpNRFtV+gLK9VCmBDWiCJ3jJXuBsF7YDCkGP6KQaYxhhK\ndXo8+IewxAtEVKlfI8VAhjqzkO8/p6Z6U5GbOwEnGsp0c20+QU5kThO1O+Q2wwFz\nyZu1rYwh5ET+DtxN/V7i\n=mP4Z\n-----END PGP SIGNATURE-----", + "payload": "tree 1dcf1e0863d357228a9bdfebf3d0d4bc2f865f82\nparent 7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22\nauthor Sam Roberts 1479490845 -0800\ncommitter Anna Henningsen 1479793084 +0100\n\ntools: disallow trailing whitespace for markdown\n\nmarkdown had a dispensation because 2 or more trailing spaces triggers a\nnew paragraph. There are no examples of that usage in Node, all trailing\nwhitespace found were mistakes, and the dispensation is now removed.\n\nSee: https://github.com/nodejs/node/pull/9620\nPR-URL: https://github.com/nodejs/node/pull/9676\nReviewed-By: Luigi Pinca \nReviewed-By: Roman Reiss \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Gibson Fahnestock \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/19ca6cddcf7bf55d708db65e059089e2c2673e91", + "html_url": "https://github.com/nodejs/node/commit/19ca6cddcf7bf55d708db65e059089e2c2673e91", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/19ca6cddcf7bf55d708db65e059089e2c2673e91/comments", + "author": { + "login": "sam-github", + "id": 17607, + "node_id": "MDQ6VXNlcjE3NjA3", + "avatar_url": "https://avatars.githubusercontent.com/u/17607?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sam-github", + "html_url": "https://github.com/sam-github", + "followers_url": "https://api.github.com/users/sam-github/followers", + "following_url": "https://api.github.com/users/sam-github/following{/other_user}", + "gists_url": "https://api.github.com/users/sam-github/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sam-github/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sam-github/subscriptions", + "organizations_url": "https://api.github.com/users/sam-github/orgs", + "repos_url": "https://api.github.com/users/sam-github/repos", + "events_url": "https://api.github.com/users/sam-github/events{/privacy}", + "received_events_url": "https://api.github.com/users/sam-github/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22", + "url": "https://api.github.com/repos/nodejs/node/commits/7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22", + "html_url": "https://github.com/nodejs/node/commit/7c1a2f56fccdf2df2aefbf72533e9e6a307dcf22" + } + ] + }, + { + "sha": "1520afd33619eed24e8a5df92128f58efa41e584", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MTUyMGFmZDMzNjE5ZWVkMjRlOGE1ZGY5MjEyOGY1OGVmYTQxZTU4NA==", + "commit": { + "author": { + "name": "MichaĆ«l Zasso", + "email": "targos@protonmail.com", + "date": "2016-11-19T13:35:49Z" + }, + "committer": { + "name": "Anna Henningsen", + "email": "anna@addaleax.net", + "date": "2016-11-22T05:38:05Z" + }, + "message": "deps: update V8 to 5.4.500.43\n\nPR-URL: https://github.com/nodejs/node/pull/9697\nReviewed-By: Ben Noordhuis \nReviewed-By: Colin Ihrig \nReviewed-By: Matteo Collina \nReviewed-By: Anna Henningsen ", + "tree": { + "sha": "68402a1e168450c940bd92327be2abcd468a8e6d", + "url": "https://api.github.com/repos/nodejs/node/git/trees/68402a1e168450c940bd92327be2abcd468a8e6d" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/1520afd33619eed24e8a5df92128f58efa41e584", + "comment_count": 0, + "verification": { + "verified": true, + "reason": "valid", + "signature": "-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1\n\niQIcBAABAgAGBQJYM9m9AAoJENi59a6uhOTPgEkP/2Snh0mY4k+Qny3ux2b2N0rG\nDJihjXZY0JDuxbIvBYvVEdLek3EPqhyfpxw5O9iywZOs0ZLiVZ82L9//1KxLF6Fk\niuP5v54ls1p7D/QocXh98X1pcecVdyk0y83ch8J0FSax+h7Dn8Oo0ZQzJyDH+7dZ\nvL1UOMnGE8olyPgk7BPm/Q3AHNHrK0r40vgTN9gXVTzfIw6lKOGPaKSla4Ll1pY4\nhgt5ZBkBpze9XMPGbxwbUmPQPI4ePf2vBFkQw9DaiDTpovQ+sPiYxKsC4trfaP9g\n5WXPmKQLrFdycIu7FMsrCpmMU2LIOX5Ti3id422sVGa/q4cDprMQZeTombigYLfY\nrEbJY93WdJGfnQWDmkzbGHMQ5Grpq3pOOTmai/fTCQl2EGQrfqABVyZB4xuftPiY\nYG5AKvZCCLVJVVT+LiCVo97GjFCcFg2e+D6bLuNaCxFdjXEiJ2fiFF3i8xj1uF7k\nQDwgUd2txnaN4iIxg5lKeX7DNQHCN8sRUf7DILmyqtc9j+wtM8F1lU9Bhxik0k3u\njL+3PxliVEfEH1gTJit6PQy6ybCVEzKFQQ6zy2Ox6h+dUBH8AemeOe30d5teJWaI\nyrfeI4mElPJkNy/tSLsH0bMUOdoQvQGYUJDa2J2cqrTZZNQpMm/ahEub1ZBwSl39\nwdNzHhROkC3WDV9caICB\n=vHRK\n-----END PGP SIGNATURE-----", + "payload": "tree 68402a1e168450c940bd92327be2abcd468a8e6d\nparent 19ca6cddcf7bf55d708db65e059089e2c2673e91\nauthor MichaĆ«l Zasso 1479562549 +0100\ncommitter Anna Henningsen 1479793085 +0100\n\ndeps: update V8 to 5.4.500.43\n\nPR-URL: https://github.com/nodejs/node/pull/9697\nReviewed-By: Ben Noordhuis \nReviewed-By: Colin Ihrig \nReviewed-By: Matteo Collina \nReviewed-By: Anna Henningsen \n" + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/1520afd33619eed24e8a5df92128f58efa41e584", + "html_url": "https://github.com/nodejs/node/commit/1520afd33619eed24e8a5df92128f58efa41e584", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/1520afd33619eed24e8a5df92128f58efa41e584/comments", + "author": { + "login": "targos", + "id": 2352663, + "node_id": "MDQ6VXNlcjIzNTI2NjM=", + "avatar_url": "https://avatars.githubusercontent.com/u/2352663?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/targos", + "html_url": "https://github.com/targos", + "followers_url": "https://api.github.com/users/targos/followers", + "following_url": "https://api.github.com/users/targos/following{/other_user}", + "gists_url": "https://api.github.com/users/targos/gists{/gist_id}", + "starred_url": "https://api.github.com/users/targos/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/targos/subscriptions", + "organizations_url": "https://api.github.com/users/targos/orgs", + "repos_url": "https://api.github.com/users/targos/repos", + "events_url": "https://api.github.com/users/targos/events{/privacy}", + "received_events_url": "https://api.github.com/users/targos/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "addaleax", + "id": 899444, + "node_id": "MDQ6VXNlcjg5OTQ0NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/899444?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/addaleax", + "html_url": "https://github.com/addaleax", + "followers_url": "https://api.github.com/users/addaleax/followers", + "following_url": "https://api.github.com/users/addaleax/following{/other_user}", + "gists_url": "https://api.github.com/users/addaleax/gists{/gist_id}", + "starred_url": "https://api.github.com/users/addaleax/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/addaleax/subscriptions", + "organizations_url": "https://api.github.com/users/addaleax/orgs", + "repos_url": "https://api.github.com/users/addaleax/repos", + "events_url": "https://api.github.com/users/addaleax/events{/privacy}", + "received_events_url": "https://api.github.com/users/addaleax/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "19ca6cddcf7bf55d708db65e059089e2c2673e91", + "url": "https://api.github.com/repos/nodejs/node/commits/19ca6cddcf7bf55d708db65e059089e2c2673e91", + "html_url": "https://github.com/nodejs/node/commit/19ca6cddcf7bf55d708db65e059089e2c2673e91" + } + ] + }, + { + "sha": "8030994554ce40bc54848180061f9499c4c1f775", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ODAzMDk5NDU1NGNlNDBiYzU0ODQ4MTgwMDYxZjk0OTljNGMxZjc3NQ==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-10-19T11:29:35Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:12:50Z" + }, + "message": "doc: fix some table problems in changelog.md\n\nPR-URL: https://github.com/nodejs/node/pull/9183\nReviewed-By: Claudio Rodriguez \nReviewed-By: MichaĆ«l Zasso \nReviewed-By: Myles Borins \nReviewed-By: Gibson Fahnestock \nReviewed-By: James M Snell \nReviewed-By: Michael Dawson \n\n Conflicts:\n\tCHANGELOG.md", + "tree": { + "sha": "cfb56164b872a28c21feb425182ccc7382a2a5c4", + "url": "https://api.github.com/repos/nodejs/node/git/trees/cfb56164b872a28c21feb425182ccc7382a2a5c4" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/8030994554ce40bc54848180061f9499c4c1f775", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/8030994554ce40bc54848180061f9499c4c1f775", + "html_url": "https://github.com/nodejs/node/commit/8030994554ce40bc54848180061f9499c4c1f775", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/8030994554ce40bc54848180061f9499c4c1f775/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "1520afd33619eed24e8a5df92128f58efa41e584", + "url": "https://api.github.com/repos/nodejs/node/commits/1520afd33619eed24e8a5df92128f58efa41e584", + "html_url": "https://github.com/nodejs/node/commit/1520afd33619eed24e8a5df92128f58efa41e584" + } + ] + }, + { + "sha": "bbd5853236852b67e5bbb50fd3bffa7a96b2bda7", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YmJkNTg1MzIzNjg1MmI2N2U1YmJiNTBmZDNiZmZhN2E5NmIyYmRhNw==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-10-19T11:27:28Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:13:40Z" + }, + "message": "doc: v6 is now LTS rather than Current\n\nPR-URL: https://github.com/nodejs/node/pull/9182\nReviewed-By: Claudio Rodriguez \nReviewed-By: Gibson Fahnestock \nReviewed-By: James M Snell \nReviewed-By: Myles Borins \n\n Conflicts:\n\tCHANGELOG.md", + "tree": { + "sha": "2d2087549e9afa134b869ee9f8d73e07e1d0bb6f", + "url": "https://api.github.com/repos/nodejs/node/git/trees/2d2087549e9afa134b869ee9f8d73e07e1d0bb6f" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/bbd5853236852b67e5bbb50fd3bffa7a96b2bda7", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/bbd5853236852b67e5bbb50fd3bffa7a96b2bda7", + "html_url": "https://github.com/nodejs/node/commit/bbd5853236852b67e5bbb50fd3bffa7a96b2bda7", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/bbd5853236852b67e5bbb50fd3bffa7a96b2bda7/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "8030994554ce40bc54848180061f9499c4c1f775", + "url": "https://api.github.com/repos/nodejs/node/commits/8030994554ce40bc54848180061f9499c4c1f775", + "html_url": "https://github.com/nodejs/node/commit/8030994554ce40bc54848180061f9499c4c1f775" + } + ] + }, + { + "sha": "8a9c45a4a974bc39223c441c31e5369134f8e6c2", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6OGE5YzQ1YTRhOTc0YmMzOTIyM2M0NDFjMzFlNTM2OTEzNGY4ZTZjMg==", + "commit": { + "author": { + "name": "Andreas Lind", + "email": "andreas@one.com", + "date": "2016-07-23T20:43:41Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:13:45Z" + }, + "message": "fs: Fix default params for fs.write(Sync)\n\nAdd support for fs.write(fd, buffer, cb) and fs.write(fd, buffer, offset, cb)\nas documented at\nhttps://nodejs.org/api/fs.html#fs_fs_write_fd_data_position_encoding_callback\nand equivalently for fs.writeSync\n\nUpdate docs and code comments to reflect the implementation.\n\nPR-URL: https://github.com/nodejs/node/pull/7856\nReviewed-By: Sam Roberts \nReviewed-By: James M Snell \nReviewed-By: Brian White \nReviewed-By: Yorkie Liu \nReviewed-By: Gibson Fahnestock ", + "tree": { + "sha": "e38a829390ea96413dc212d3f53f078f2c3fc676", + "url": "https://api.github.com/repos/nodejs/node/git/trees/e38a829390ea96413dc212d3f53f078f2c3fc676" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/8a9c45a4a974bc39223c441c31e5369134f8e6c2", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/8a9c45a4a974bc39223c441c31e5369134f8e6c2", + "html_url": "https://github.com/nodejs/node/commit/8a9c45a4a974bc39223c441c31e5369134f8e6c2", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/8a9c45a4a974bc39223c441c31e5369134f8e6c2/comments", + "author": { + "login": "papandreou", + "id": 373545, + "node_id": "MDQ6VXNlcjM3MzU0NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/373545?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/papandreou", + "html_url": "https://github.com/papandreou", + "followers_url": "https://api.github.com/users/papandreou/followers", + "following_url": "https://api.github.com/users/papandreou/following{/other_user}", + "gists_url": "https://api.github.com/users/papandreou/gists{/gist_id}", + "starred_url": "https://api.github.com/users/papandreou/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/papandreou/subscriptions", + "organizations_url": "https://api.github.com/users/papandreou/orgs", + "repos_url": "https://api.github.com/users/papandreou/repos", + "events_url": "https://api.github.com/users/papandreou/events{/privacy}", + "received_events_url": "https://api.github.com/users/papandreou/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "bbd5853236852b67e5bbb50fd3bffa7a96b2bda7", + "url": "https://api.github.com/repos/nodejs/node/commits/bbd5853236852b67e5bbb50fd3bffa7a96b2bda7", + "html_url": "https://github.com/nodejs/node/commit/bbd5853236852b67e5bbb50fd3bffa7a96b2bda7" + } + ] + } + ] + \ No newline at end of file diff --git a/test/_fixtures/pull-request-commits-page-4.json b/test/_fixtures/pull-request-commits-page-4.json new file mode 100644 index 00000000..027c9041 --- /dev/null +++ b/test/_fixtures/pull-request-commits-page-4.json @@ -0,0 +1,1109 @@ +[ + { + "sha": "3f45cc19b0879d3da8c71169bfcfab872dd275b9", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6M2Y0NWNjMTliMDg3OWQzZGE4YzcxMTY5YmZjZmFiODcyZGQyNzViOQ==", + "commit": { + "author": { + "name": "Adam Majer", + "email": "amajer@suse.de", + "date": "2016-08-30T11:16:27Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:02Z" + }, + "message": "crypto: Use reference count to manage cert_store\n\nSetting reference count at the time of setting cert_store instead of\ntrying to manage it by modifying internal states in destructor.\n\nPR-URL: https://github.com/nodejs/node/pull/9409\nReviewed-By: Fedor Indutny \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "b436da5ef2ef22825496279e3fabff9432089e91", + "url": "https://api.github.com/repos/nodejs/node/git/trees/b436da5ef2ef22825496279e3fabff9432089e91" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/3f45cc19b0879d3da8c71169bfcfab872dd275b9", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/3f45cc19b0879d3da8c71169bfcfab872dd275b9", + "html_url": "https://github.com/nodejs/node/commit/3f45cc19b0879d3da8c71169bfcfab872dd275b9", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/3f45cc19b0879d3da8c71169bfcfab872dd275b9/comments", + "author": { + "login": "AdamMajer", + "id": 1211498, + "node_id": "MDQ6VXNlcjEyMTE0OTg=", + "avatar_url": "https://avatars.githubusercontent.com/u/1211498?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/AdamMajer", + "html_url": "https://github.com/AdamMajer", + "followers_url": "https://api.github.com/users/AdamMajer/followers", + "following_url": "https://api.github.com/users/AdamMajer/following{/other_user}", + "gists_url": "https://api.github.com/users/AdamMajer/gists{/gist_id}", + "starred_url": "https://api.github.com/users/AdamMajer/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/AdamMajer/subscriptions", + "organizations_url": "https://api.github.com/users/AdamMajer/orgs", + "repos_url": "https://api.github.com/users/AdamMajer/repos", + "events_url": "https://api.github.com/users/AdamMajer/events{/privacy}", + "received_events_url": "https://api.github.com/users/AdamMajer/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "8a9c45a4a974bc39223c441c31e5369134f8e6c2", + "url": "https://api.github.com/repos/nodejs/node/commits/8a9c45a4a974bc39223c441c31e5369134f8e6c2", + "html_url": "https://github.com/nodejs/node/commit/8a9c45a4a974bc39223c441c31e5369134f8e6c2" + } + ] + }, + { + "sha": "bcdbf22f0de0e6a08b1743d274c215934bd7d71a", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YmNkYmYyMmYwZGUwZTZhMDhiMTc0M2QyNzRjMjE1OTM0YmQ3ZDcxYQ==", + "commit": { + "author": { + "name": "Adam Langley", + "email": "agl@google.com", + "date": "2016-10-30T20:22:50Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:03Z" + }, + "message": "crypto: fix handling of root_cert_store.\n\nSecureContext::AddRootCerts only parses the root certificates once and\nkeeps the result in root_cert_store, a global X509_STORE. This change\naddresses the following issues:\n\n1. SecureContext::AddCACert would add certificates to whatever\nX509_STORE was being used, even if that happened to be root_cert_store.\nThus adding a CA certificate to a SecureContext would also cause it to\nbe included in unrelated SecureContexts.\n\n2. AddCRL would crash if neither AddRootCerts nor AddCACert had been\ncalled first.\n\n3. Calling AddCACert without calling AddRootCerts first, and with an\ninput that didn't contain any certificates, would leak an X509_STORE.\n\n4. AddCRL would add the CRL to whatever X509_STORE was being used. Thus,\nlike AddCACert, unrelated SecureContext objects could be affected.\n\nThe following, non-obvious behaviour remains: calling AddRootCerts\ndoesn't /add/ them, rather it sets the CA certs to be the root set and\noverrides any previous CA certificates.\n\nPoints 1–3 are probably unimportant because the SecureContext is\ntypically configured by `createSecureContext` in `lib/_tls_common.js`.\nThis function either calls AddCACert or AddRootCerts and only calls\nAddCRL after setting up CA certificates. Point four could still apply in\nthe unlikely case that someone configures a CRL without explicitly\nconfiguring the CAs.\n\nPR-URL: https://github.com/nodejs/node/pull/9409\nReviewed-By: Fedor Indutny \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "85fa57816738d23b6ddeeb75dc5e8f9bc5d422aa", + "url": "https://api.github.com/repos/nodejs/node/git/trees/85fa57816738d23b6ddeeb75dc5e8f9bc5d422aa" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/bcdbf22f0de0e6a08b1743d274c215934bd7d71a", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/bcdbf22f0de0e6a08b1743d274c215934bd7d71a", + "html_url": "https://github.com/nodejs/node/commit/bcdbf22f0de0e6a08b1743d274c215934bd7d71a", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/bcdbf22f0de0e6a08b1743d274c215934bd7d71a/comments", + "author": { + "login": "agl", + "id": 21203, + "node_id": "MDQ6VXNlcjIxMjAz", + "avatar_url": "https://avatars.githubusercontent.com/u/21203?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/agl", + "html_url": "https://github.com/agl", + "followers_url": "https://api.github.com/users/agl/followers", + "following_url": "https://api.github.com/users/agl/following{/other_user}", + "gists_url": "https://api.github.com/users/agl/gists{/gist_id}", + "starred_url": "https://api.github.com/users/agl/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/agl/subscriptions", + "organizations_url": "https://api.github.com/users/agl/orgs", + "repos_url": "https://api.github.com/users/agl/repos", + "events_url": "https://api.github.com/users/agl/events{/privacy}", + "received_events_url": "https://api.github.com/users/agl/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "3f45cc19b0879d3da8c71169bfcfab872dd275b9", + "url": "https://api.github.com/repos/nodejs/node/commits/3f45cc19b0879d3da8c71169bfcfab872dd275b9", + "html_url": "https://github.com/nodejs/node/commit/3f45cc19b0879d3da8c71169bfcfab872dd275b9" + } + ] + }, + { + "sha": "af74db39614ce625ec6af4f089f7f9d20c8d67a3", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YWY3NGRiMzk2MTRjZTYyNWVjNmFmNGYwODlmN2Y5ZDIwYzhkNjdhMw==", + "commit": { + "author": { + "name": "Adam Langley", + "email": "agl@google.com", + "date": "2016-10-28T20:21:51Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:03Z" + }, + "message": "crypto: use SSL_get_servername.\n\n(Patch by David Benjamin.)\n\nRather than reach into the SSL_SESSION, use the intended API,\nSSL_get_servername. This will also help the transition to OpenSSL 1.1.0.\n\nAlso don't fill in the tlsTicket field here. This is never read by\noncertcb and was always false anyway; that field is maintained by\nclients and tracks whether the server issued a ticket or a session ID.\n\n(Note this is distinct from the copy passed to onclienthello which is\nused and is not a no-op.)\n\nPR-URL: https://github.com/nodejs/node/pull/9347\nReviewed-By: Fedor Indutny \nReviewed-By: Shigeki Ohtsu \nReviewed-By: Ben Noordhuis ", + "tree": { + "sha": "700541e78e1bd9b46199d07cd38c9544d54946f0", + "url": "https://api.github.com/repos/nodejs/node/git/trees/700541e78e1bd9b46199d07cd38c9544d54946f0" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/af74db39614ce625ec6af4f089f7f9d20c8d67a3", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/af74db39614ce625ec6af4f089f7f9d20c8d67a3", + "html_url": "https://github.com/nodejs/node/commit/af74db39614ce625ec6af4f089f7f9d20c8d67a3", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/af74db39614ce625ec6af4f089f7f9d20c8d67a3/comments", + "author": { + "login": "agl", + "id": 21203, + "node_id": "MDQ6VXNlcjIxMjAz", + "avatar_url": "https://avatars.githubusercontent.com/u/21203?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/agl", + "html_url": "https://github.com/agl", + "followers_url": "https://api.github.com/users/agl/followers", + "following_url": "https://api.github.com/users/agl/following{/other_user}", + "gists_url": "https://api.github.com/users/agl/gists{/gist_id}", + "starred_url": "https://api.github.com/users/agl/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/agl/subscriptions", + "organizations_url": "https://api.github.com/users/agl/orgs", + "repos_url": "https://api.github.com/users/agl/repos", + "events_url": "https://api.github.com/users/agl/events{/privacy}", + "received_events_url": "https://api.github.com/users/agl/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "bcdbf22f0de0e6a08b1743d274c215934bd7d71a", + "url": "https://api.github.com/repos/nodejs/node/commits/bcdbf22f0de0e6a08b1743d274c215934bd7d71a", + "html_url": "https://github.com/nodejs/node/commit/bcdbf22f0de0e6a08b1743d274c215934bd7d71a" + } + ] + }, + { + "sha": "ebc9c4ba974765b321fdfe113cd9aeccbd0217fc", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZWJjOWM0YmE5NzQ3NjViMzIxZmRmZTExM2NkOWFlY2NiZDAyMTdmYw==", + "commit": { + "author": { + "name": "Evan Lucas", + "email": "evanlucas@me.com", + "date": "2016-11-10T11:13:14Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:03Z" + }, + "message": "doc: add missing link in changelog\n\nThe link to v7.1.0 was missing.\n\nPR-URL: https://github.com/nodejs/node/pull/9540\nReviewed-By: Roman Reiss ", + "tree": { + "sha": "bcf10fa83cb1eb6821e81f847f010e2effc79dbb", + "url": "https://api.github.com/repos/nodejs/node/git/trees/bcf10fa83cb1eb6821e81f847f010e2effc79dbb" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/ebc9c4ba974765b321fdfe113cd9aeccbd0217fc", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/ebc9c4ba974765b321fdfe113cd9aeccbd0217fc", + "html_url": "https://github.com/nodejs/node/commit/ebc9c4ba974765b321fdfe113cd9aeccbd0217fc", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/ebc9c4ba974765b321fdfe113cd9aeccbd0217fc/comments", + "author": { + "login": "evanlucas", + "id": 677994, + "node_id": "MDQ6VXNlcjY3Nzk5NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/677994?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/evanlucas", + "html_url": "https://github.com/evanlucas", + "followers_url": "https://api.github.com/users/evanlucas/followers", + "following_url": "https://api.github.com/users/evanlucas/following{/other_user}", + "gists_url": "https://api.github.com/users/evanlucas/gists{/gist_id}", + "starred_url": "https://api.github.com/users/evanlucas/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/evanlucas/subscriptions", + "organizations_url": "https://api.github.com/users/evanlucas/orgs", + "repos_url": "https://api.github.com/users/evanlucas/repos", + "events_url": "https://api.github.com/users/evanlucas/events{/privacy}", + "received_events_url": "https://api.github.com/users/evanlucas/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "af74db39614ce625ec6af4f089f7f9d20c8d67a3", + "url": "https://api.github.com/repos/nodejs/node/commits/af74db39614ce625ec6af4f089f7f9d20c8d67a3", + "html_url": "https://github.com/nodejs/node/commit/af74db39614ce625ec6af4f089f7f9d20c8d67a3" + } + ] + }, + { + "sha": "409851427a1b49c2a2cd46e47861420ecb2d83b1", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6NDA5ODUxNDI3YTFiNDljMmEyY2Q0NmU0Nzg2MTQyMGVjYjJkODNiMQ==", + "commit": { + "author": { + "name": "Syuhei Kobayashi", + "email": "nanocloudx@gmail.com", + "date": "2016-11-12T07:36:09Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:03Z" + }, + "message": "doc: fix typo in doc/tls.md\n\nfix doc/tls.md: line 762 836 1026 e.g., => e.g.\n\nFixes: https://github.com/nodejs/code-and-learn/issues/58\nPR-URL: https://github.com/nodejs/node/pull/9566\nReviewed-By: Roman Reiss \nReviewed-By: Anna Henningsen \nReviewed-By: Luigi Pinca \nReviewed-By: Shigeki Ohtsu ", + "tree": { + "sha": "e9f36f824d10da1fe4d097cd5b3eb9566b8c6ee3", + "url": "https://api.github.com/repos/nodejs/node/git/trees/e9f36f824d10da1fe4d097cd5b3eb9566b8c6ee3" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/409851427a1b49c2a2cd46e47861420ecb2d83b1", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/409851427a1b49c2a2cd46e47861420ecb2d83b1", + "html_url": "https://github.com/nodejs/node/commit/409851427a1b49c2a2cd46e47861420ecb2d83b1", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/409851427a1b49c2a2cd46e47861420ecb2d83b1/comments", + "author": { + "login": "nanocloudx", + "id": 6778507, + "node_id": "MDQ6VXNlcjY3Nzg1MDc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6778507?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/nanocloudx", + "html_url": "https://github.com/nanocloudx", + "followers_url": "https://api.github.com/users/nanocloudx/followers", + "following_url": "https://api.github.com/users/nanocloudx/following{/other_user}", + "gists_url": "https://api.github.com/users/nanocloudx/gists{/gist_id}", + "starred_url": "https://api.github.com/users/nanocloudx/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/nanocloudx/subscriptions", + "organizations_url": "https://api.github.com/users/nanocloudx/orgs", + "repos_url": "https://api.github.com/users/nanocloudx/repos", + "events_url": "https://api.github.com/users/nanocloudx/events{/privacy}", + "received_events_url": "https://api.github.com/users/nanocloudx/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "ebc9c4ba974765b321fdfe113cd9aeccbd0217fc", + "url": "https://api.github.com/repos/nodejs/node/commits/ebc9c4ba974765b321fdfe113cd9aeccbd0217fc", + "html_url": "https://github.com/nodejs/node/commit/ebc9c4ba974765b321fdfe113cd9aeccbd0217fc" + } + ] + }, + { + "sha": "a83a28663172d140d4163fe880fadfc298dde1de", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YTgzYTI4NjYzMTcyZDE0MGQ0MTYzZmU4ODBmYWRmYzI5OGRkZTFkZQ==", + "commit": { + "author": { + "name": "cjihrig", + "email": "cjihrig@gmail.com", + "date": "2016-11-09T15:08:23Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:04Z" + }, + "message": "test: add test for broken child process stdio\n\nThis commit adds a test for the scenario where a child process is\nspawned, but the stdio streams could not be created.\n\nPR-URL: https://github.com/nodejs/node/pull/9528\nReviewed-By: Daniel Bevenius \nReviewed-By: Rich Trott \nReviewed-By: Santiago Gimeno \nReviewed-By: Michael Dawson ", + "tree": { + "sha": "290c8a43ff7c5d85b5245df617f82f99a30124dd", + "url": "https://api.github.com/repos/nodejs/node/git/trees/290c8a43ff7c5d85b5245df617f82f99a30124dd" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/a83a28663172d140d4163fe880fadfc298dde1de", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/a83a28663172d140d4163fe880fadfc298dde1de", + "html_url": "https://github.com/nodejs/node/commit/a83a28663172d140d4163fe880fadfc298dde1de", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/a83a28663172d140d4163fe880fadfc298dde1de/comments", + "author": { + "login": "cjihrig", + "id": 2512748, + "node_id": "MDQ6VXNlcjI1MTI3NDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2512748?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cjihrig", + "html_url": "https://github.com/cjihrig", + "followers_url": "https://api.github.com/users/cjihrig/followers", + "following_url": "https://api.github.com/users/cjihrig/following{/other_user}", + "gists_url": "https://api.github.com/users/cjihrig/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cjihrig/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cjihrig/subscriptions", + "organizations_url": "https://api.github.com/users/cjihrig/orgs", + "repos_url": "https://api.github.com/users/cjihrig/repos", + "events_url": "https://api.github.com/users/cjihrig/events{/privacy}", + "received_events_url": "https://api.github.com/users/cjihrig/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "409851427a1b49c2a2cd46e47861420ecb2d83b1", + "url": "https://api.github.com/repos/nodejs/node/commits/409851427a1b49c2a2cd46e47861420ecb2d83b1", + "html_url": "https://github.com/nodejs/node/commit/409851427a1b49c2a2cd46e47861420ecb2d83b1" + } + ] + }, + { + "sha": "30475beef69e6e5e4de428de531a0d71546964de", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MzA0NzViZWVmNjllNmU1ZTRkZTQyOGRlNTMxYTBkNzE1NDY5NjRkZQ==", + "commit": { + "author": { + "name": "Evan Lucas", + "email": "evanlucas@me.com", + "date": "2016-11-15T11:29:38Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:04Z" + }, + "message": "src: use ABORT() macro instead of abort()\n\nThis makes sure that we dump a backtrace and use raise(SIGABRT) on\nWindows.\n\nPR-URL: https://github.com/nodejs/node/pull/9613\nReviewed-By: Ben Noordhuis \nReviewed-By: Colin Ihrig ", + "tree": { + "sha": "144602047b4e17acb8347d30c30347535afcbd29", + "url": "https://api.github.com/repos/nodejs/node/git/trees/144602047b4e17acb8347d30c30347535afcbd29" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/30475beef69e6e5e4de428de531a0d71546964de", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/30475beef69e6e5e4de428de531a0d71546964de", + "html_url": "https://github.com/nodejs/node/commit/30475beef69e6e5e4de428de531a0d71546964de", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/30475beef69e6e5e4de428de531a0d71546964de/comments", + "author": { + "login": "evanlucas", + "id": 677994, + "node_id": "MDQ6VXNlcjY3Nzk5NA==", + "avatar_url": "https://avatars.githubusercontent.com/u/677994?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/evanlucas", + "html_url": "https://github.com/evanlucas", + "followers_url": "https://api.github.com/users/evanlucas/followers", + "following_url": "https://api.github.com/users/evanlucas/following{/other_user}", + "gists_url": "https://api.github.com/users/evanlucas/gists{/gist_id}", + "starred_url": "https://api.github.com/users/evanlucas/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/evanlucas/subscriptions", + "organizations_url": "https://api.github.com/users/evanlucas/orgs", + "repos_url": "https://api.github.com/users/evanlucas/repos", + "events_url": "https://api.github.com/users/evanlucas/events{/privacy}", + "received_events_url": "https://api.github.com/users/evanlucas/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "a83a28663172d140d4163fe880fadfc298dde1de", + "url": "https://api.github.com/repos/nodejs/node/commits/a83a28663172d140d4163fe880fadfc298dde1de", + "html_url": "https://github.com/nodejs/node/commit/a83a28663172d140d4163fe880fadfc298dde1de" + } + ] + }, + { + "sha": "786631c7b478a489cb9f99bef8e28662c930f86d", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6Nzg2NjMxYzdiNDc4YTQ4OWNiOWY5OWJlZjhlMjg2NjJjOTMwZjg2ZA==", + "commit": { + "author": { + "name": "cjihrig", + "email": "cjihrig@gmail.com", + "date": "2016-11-16T18:49:21Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:04Z" + }, + "message": "deps: upgrade libuv to 1.10.1\n\nFixes: https://github.com/nodejs/node/issues/9542\nFixes: https://github.com/nodejs/node/issues/9546\nPR-URL: https://github.com/nodejs/node/pull/9647\nReviewed-By: Imran Iqbal \nReviewed-By: Santiago Gimeno \nReviewed-By: Ben Noordhuis \nReviewed-By: Myles Borins \nReviewed-By: Johan Bergstrƶm ", + "tree": { + "sha": "bdbb080211422cca1b84b1ff17a3cc81b64f45e3", + "url": "https://api.github.com/repos/nodejs/node/git/trees/bdbb080211422cca1b84b1ff17a3cc81b64f45e3" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/786631c7b478a489cb9f99bef8e28662c930f86d", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/786631c7b478a489cb9f99bef8e28662c930f86d", + "html_url": "https://github.com/nodejs/node/commit/786631c7b478a489cb9f99bef8e28662c930f86d", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/786631c7b478a489cb9f99bef8e28662c930f86d/comments", + "author": { + "login": "cjihrig", + "id": 2512748, + "node_id": "MDQ6VXNlcjI1MTI3NDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2512748?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/cjihrig", + "html_url": "https://github.com/cjihrig", + "followers_url": "https://api.github.com/users/cjihrig/followers", + "following_url": "https://api.github.com/users/cjihrig/following{/other_user}", + "gists_url": "https://api.github.com/users/cjihrig/gists{/gist_id}", + "starred_url": "https://api.github.com/users/cjihrig/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/cjihrig/subscriptions", + "organizations_url": "https://api.github.com/users/cjihrig/orgs", + "repos_url": "https://api.github.com/users/cjihrig/repos", + "events_url": "https://api.github.com/users/cjihrig/events{/privacy}", + "received_events_url": "https://api.github.com/users/cjihrig/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "30475beef69e6e5e4de428de531a0d71546964de", + "url": "https://api.github.com/repos/nodejs/node/commits/30475beef69e6e5e4de428de531a0d71546964de", + "html_url": "https://github.com/nodejs/node/commit/30475beef69e6e5e4de428de531a0d71546964de" + } + ] + }, + { + "sha": "15af912ab582e92ab4e2f0e38ec6bb6e988fc099", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MTVhZjkxMmFiNTgyZTkyYWI0ZTJmMGUzOGVjNmJiNmU5ODhmYzA5OQ==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-11-14T12:39:40Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:04Z" + }, + "message": "src: fix memory leak introduced in 34febfbf4\n\nFix leaking the BIO in the error path. Introduced in commit 34febfbf4\n(\"crypto: fix handling of root_cert_store\").\n\nPR-URL: https://github.com/nodejs/node/pull/9604\nRefs: https://github.com/nodejs/node/pull/9409\nReviewed-By: Anna Henningsen \nReviewed-By: Colin Ihrig \nReviewed-By: Fedor Indutny \nReviewed-By: James M Snell \nReviewed-By: Jeremiah Senkpiel \nReviewed-By: Michael Dawson \nReviewed-By: Rod Vagg ", + "tree": { + "sha": "1b9ff21f1820f0b6016fa31cd2b43e5f68b0b1f6", + "url": "https://api.github.com/repos/nodejs/node/git/trees/1b9ff21f1820f0b6016fa31cd2b43e5f68b0b1f6" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/15af912ab582e92ab4e2f0e38ec6bb6e988fc099", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/15af912ab582e92ab4e2f0e38ec6bb6e988fc099", + "html_url": "https://github.com/nodejs/node/commit/15af912ab582e92ab4e2f0e38ec6bb6e988fc099", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/15af912ab582e92ab4e2f0e38ec6bb6e988fc099/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "786631c7b478a489cb9f99bef8e28662c930f86d", + "url": "https://api.github.com/repos/nodejs/node/commits/786631c7b478a489cb9f99bef8e28662c930f86d", + "html_url": "https://github.com/nodejs/node/commit/786631c7b478a489cb9f99bef8e28662c930f86d" + } + ] + }, + { + "sha": "1bd79368cdab12e56b6675dfe8bf0d949a7dccfb", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MWJkNzkzNjhjZGFiMTJlNTZiNjY3NWRmZThiZjBkOTQ5YTdkY2NmYg==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-10-26T05:51:34Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:05Z" + }, + "message": "dns: implement {ttl: true} for dns.resolve4()\n\nAdd an option to retrieve the Time-To-Live of the A record.\n\nPR-URL: https://github.com/nodejs/node/pull/9296\nRefs: https://github.com/nodejs/node/issues/5893\nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "6186b486ce217a6cd85bc0823635eb189e99fadf", + "url": "https://api.github.com/repos/nodejs/node/git/trees/6186b486ce217a6cd85bc0823635eb189e99fadf" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/1bd79368cdab12e56b6675dfe8bf0d949a7dccfb", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/1bd79368cdab12e56b6675dfe8bf0d949a7dccfb", + "html_url": "https://github.com/nodejs/node/commit/1bd79368cdab12e56b6675dfe8bf0d949a7dccfb", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/1bd79368cdab12e56b6675dfe8bf0d949a7dccfb/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "15af912ab582e92ab4e2f0e38ec6bb6e988fc099", + "url": "https://api.github.com/repos/nodejs/node/commits/15af912ab582e92ab4e2f0e38ec6bb6e988fc099", + "html_url": "https://github.com/nodejs/node/commit/15af912ab582e92ab4e2f0e38ec6bb6e988fc099" + } + ] + }, + { + "sha": "0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MGEzZTVjYzU3YWM5MTM2ZDU3NmFiNmUzNzgyNWVjMDRmYTViYWM3ZQ==", + "commit": { + "author": { + "name": "Ben Noordhuis", + "email": "info@bnoordhuis.nl", + "date": "2016-10-26T05:54:20Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T16:15:05Z" + }, + "message": "dns: implement {ttl: true} for dns.resolve6()\n\nAdd an option to retrieve the Time-To-Live of the AAAA record.\n\nPR-URL: https://github.com/nodejs/node/pull/9296\nRefs: https://github.com/nodejs/node/issues/5893\nReviewed-By: James M Snell \nReviewed-By: Roman Reiss ", + "tree": { + "sha": "a07257932b461a9643941c522ade943bacce13de", + "url": "https://api.github.com/repos/nodejs/node/git/trees/a07257932b461a9643941c522ade943bacce13de" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e", + "html_url": "https://github.com/nodejs/node/commit/0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e/comments", + "author": { + "login": "bnoordhuis", + "id": 275871, + "node_id": "MDQ6VXNlcjI3NTg3MQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/275871?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/bnoordhuis", + "html_url": "https://github.com/bnoordhuis", + "followers_url": "https://api.github.com/users/bnoordhuis/followers", + "following_url": "https://api.github.com/users/bnoordhuis/following{/other_user}", + "gists_url": "https://api.github.com/users/bnoordhuis/gists{/gist_id}", + "starred_url": "https://api.github.com/users/bnoordhuis/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/bnoordhuis/subscriptions", + "organizations_url": "https://api.github.com/users/bnoordhuis/orgs", + "repos_url": "https://api.github.com/users/bnoordhuis/repos", + "events_url": "https://api.github.com/users/bnoordhuis/events{/privacy}", + "received_events_url": "https://api.github.com/users/bnoordhuis/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "1bd79368cdab12e56b6675dfe8bf0d949a7dccfb", + "url": "https://api.github.com/repos/nodejs/node/commits/1bd79368cdab12e56b6675dfe8bf0d949a7dccfb", + "html_url": "https://github.com/nodejs/node/commit/1bd79368cdab12e56b6675dfe8bf0d949a7dccfb" + } + ] + }, + { + "sha": "fa98eec410e1e4269cf9bf67fe1569503562159a", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6ZmE5OGVlYzQxMGUxZTQyNjljZjliZjY3ZmUxNTY5NTAzNTYyMTU5YQ==", + "commit": { + "author": { + "name": "Vse Mozhet Byt", + "email": "vsemozhetbyt@gmail.com", + "date": "2016-11-20T02:20:35Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T17:29:41Z" + }, + "message": "doc: fix typo in assert code example\n\nPR-URL: https://github.com/nodejs/node/pull/9704\nReviewed-By: Colin Ihrig \nReviewed-By: Anna Henningsen \nReviewed-By: Sakthipriyan Vairamani \nReviewed-By: Luigi Pinca ", + "tree": { + "sha": "6b5ecdd5bd5df64e455c7b1426df3c7484df91c2", + "url": "https://api.github.com/repos/nodejs/node/git/trees/6b5ecdd5bd5df64e455c7b1426df3c7484df91c2" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/fa98eec410e1e4269cf9bf67fe1569503562159a", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/fa98eec410e1e4269cf9bf67fe1569503562159a", + "html_url": "https://github.com/nodejs/node/commit/fa98eec410e1e4269cf9bf67fe1569503562159a", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/fa98eec410e1e4269cf9bf67fe1569503562159a/comments", + "author": { + "login": "vsemozhetbyt", + "id": 10393198, + "node_id": "MDQ6VXNlcjEwMzkzMTk4", + "avatar_url": "https://avatars.githubusercontent.com/u/10393198?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/vsemozhetbyt", + "html_url": "https://github.com/vsemozhetbyt", + "followers_url": "https://api.github.com/users/vsemozhetbyt/followers", + "following_url": "https://api.github.com/users/vsemozhetbyt/following{/other_user}", + "gists_url": "https://api.github.com/users/vsemozhetbyt/gists{/gist_id}", + "starred_url": "https://api.github.com/users/vsemozhetbyt/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/vsemozhetbyt/subscriptions", + "organizations_url": "https://api.github.com/users/vsemozhetbyt/orgs", + "repos_url": "https://api.github.com/users/vsemozhetbyt/repos", + "events_url": "https://api.github.com/users/vsemozhetbyt/events{/privacy}", + "received_events_url": "https://api.github.com/users/vsemozhetbyt/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e", + "url": "https://api.github.com/repos/nodejs/node/commits/0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e", + "html_url": "https://github.com/nodejs/node/commit/0a3e5cc57ac9136d576ab6e37825ec04fa5bac7e" + } + ] + }, + { + "sha": "02c2bf7d34141ddb903e215580ee79551790ac48", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6MDJjMmJmN2QzNDE0MWRkYjkwM2UyMTU1ODBlZTc5NTUxNzkwYWM0OA==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-18T20:47:15Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T17:29:41Z" + }, + "message": "timers: use consistent checks for canceled timers\n\nPreviously not all codepaths set `timer._idleTimeout = -1` for canceled\nor closed timers, and not all codepaths checked it either.\n\nUnenroll uses this to say that a timer is indeed closed and it is the\nclosest thing there is to an authoritative source for this.\n\nRefs: https://github.com/nodejs/node/pull/9606\nFixes: https://github.com/nodejs/node/issues/9561\nPR-URL: https://github.com/nodejs/node/pull/9685\nReviewed-By: Rich Trott ", + "tree": { + "sha": "41c49c72effaf229888f8fb75e0f3918f1804cce", + "url": "https://api.github.com/repos/nodejs/node/git/trees/41c49c72effaf229888f8fb75e0f3918f1804cce" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/02c2bf7d34141ddb903e215580ee79551790ac48", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/02c2bf7d34141ddb903e215580ee79551790ac48", + "html_url": "https://github.com/nodejs/node/commit/02c2bf7d34141ddb903e215580ee79551790ac48", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/02c2bf7d34141ddb903e215580ee79551790ac48/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "fa98eec410e1e4269cf9bf67fe1569503562159a", + "url": "https://api.github.com/repos/nodejs/node/commits/fa98eec410e1e4269cf9bf67fe1569503562159a", + "html_url": "https://github.com/nodejs/node/commit/fa98eec410e1e4269cf9bf67fe1569503562159a" + } + ] + }, + { + "sha": "c1aa949064892dbe693750686c06f4ad5673e577", + "node_id": "MDY6Q29tbWl0MjcxOTM3Nzk6YzFhYTk0OTA2NDg5MmRiZTY5Mzc1MDY4NmMwNmY0YWQ1NjczZTU3Nw==", + "commit": { + "author": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T22:13:11Z" + }, + "committer": { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "date": "2016-11-22T22:13:11Z" + }, + "message": "2016-11-22, Version 7.2.0 (Current)\n\nThis is a security release impacting Windows 10 users.\n\nNotable changes:\n\n* crypto: The `Decipher` methods `setAuthTag()` and `setAAD` now return\n`this`. (Kirill Fomichev) https://github.com/nodejs/node/pull/9398\n* dns: Implemented `{ttl: true}` for `resolve4()` and `resolve6()`.\n(Ben Noordhuis) https://github.com/nodejs/node/pull/9296 &\nhttps://github.com/nodejs/node/pull/9296\n* libuv: Upgrade to v1.10.1 (cjihrig)\nhttps://github.com/nodejs/node/pull/9647\n - Fixed a potential buffer overflow when writing data to console on\nWindows 10. (CVE-2016-9551)\n* process: Added a new `external` property to the data returned by\n`memoryUsage()`. (Fedor Indutny)\nhttps://github.com/nodejs/node/pull/9587\n* tls: Fixed a memory leak when writes were queued on TLS connection\nthat was destroyed during handshake. (Fedor Indutny)\nhttps://github.com/nodejs/node/pull/9626\n* V8 (dep): Upgrade to v5.4.500.43 (MichaĆ«l Zasso)\nhttps://github.com/nodejs/node/pull/9697\n* v8: The data returned by `getHeapStatistics()` now includes three new\nfields: `malloced_memory`, `peak_malloced_memory`, and\n`does_zap_garbage`. (Gareth Ellis)\nhttps://github.com/nodejs/node/pull/8610\n\nPR-URL: https://github.com/nodejs/node/pull/9745", + "tree": { + "sha": "f87da6adf9e7e876103744caf4530793c3650129", + "url": "https://api.github.com/repos/nodejs/node/git/trees/f87da6adf9e7e876103744caf4530793c3650129" + }, + "url": "https://api.github.com/repos/nodejs/node/git/commits/c1aa949064892dbe693750686c06f4ad5673e577", + "comment_count": 0, + "verification": { + "verified": false, + "reason": "unsigned", + "signature": null, + "payload": null + } + }, + "url": "https://api.github.com/repos/nodejs/node/commits/c1aa949064892dbe693750686c06f4ad5673e577", + "html_url": "https://github.com/nodejs/node/commit/c1aa949064892dbe693750686c06f4ad5673e577", + "comments_url": "https://api.github.com/repos/nodejs/node/commits/c1aa949064892dbe693750686c06f4ad5673e577/comments", + "author": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "committer": { + "login": "Fishrock123", + "id": 1093990, + "node_id": "MDQ6VXNlcjEwOTM5OTA=", + "avatar_url": "https://avatars.githubusercontent.com/u/1093990?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/Fishrock123", + "html_url": "https://github.com/Fishrock123", + "followers_url": "https://api.github.com/users/Fishrock123/followers", + "following_url": "https://api.github.com/users/Fishrock123/following{/other_user}", + "gists_url": "https://api.github.com/users/Fishrock123/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Fishrock123/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Fishrock123/subscriptions", + "organizations_url": "https://api.github.com/users/Fishrock123/orgs", + "repos_url": "https://api.github.com/users/Fishrock123/repos", + "events_url": "https://api.github.com/users/Fishrock123/events{/privacy}", + "received_events_url": "https://api.github.com/users/Fishrock123/received_events", + "type": "User", + "site_admin": false + }, + "parents": [ + { + "sha": "02c2bf7d34141ddb903e215580ee79551790ac48", + "url": "https://api.github.com/repos/nodejs/node/commits/02c2bf7d34141ddb903e215580ee79551790ac48", + "html_url": "https://github.com/nodejs/node/commit/02c2bf7d34141ddb903e215580ee79551790ac48" + } + ] + } + ] + \ No newline at end of file diff --git a/test/_fixtures/pull-request-create-comment.json b/test/_fixtures/pull-request-create-comment.json new file mode 100644 index 00000000..1963ad00 --- /dev/null +++ b/test/_fixtures/pull-request-create-comment.json @@ -0,0 +1,32 @@ +{ + "url": "https://api.github.com/repos/nodejs/node-auto-test/issues/comments/667621459", + "html_url": "https://github.com/nodejs/node-auto-test/pull/19#issuecomment-667621459", + "issue_url": "https://api.github.com/repos/nodejs/node-auto-test/issues/19", + "id": 667621459, + "node_id": "MDEyOklzc3VlQ29tbWVudDY2NzYyMTQ1OQ==", + "user": { + "login": "mmarchini", + "id": 4048656, + "node_id": "MDQ6VXNlcjQwNDg2NTY=", + "avatar_url": "https://avatars1.githubusercontent.com/u/4048656?u=bf848ffe5efedded28239e602bfa3cd07b8e3e05&v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mmarchini", + "html_url": "https://github.com/mmarchini", + "followers_url": "https://api.github.com/users/mmarchini/followers", + "following_url": "https://api.github.com/users/mmarchini/following{/other_user}", + "gists_url": "https://api.github.com/users/mmarchini/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mmarchini/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mmarchini/subscriptions", + "organizations_url": "https://api.github.com/users/mmarchini/orgs", + "repos_url": "https://api.github.com/users/mmarchini/repos", + "events_url": "https://api.github.com/users/mmarchini/events{/privacy}", + "received_events_url": "https://api.github.com/users/mmarchini/received_events", + "type": "User", + "site_admin": false + }, + "created_at": "2020-08-02T03:37:18Z", + "updated_at": "2020-08-02T03:37:18Z", + "author_association": "MEMBER", + "body": "test comment", + "performed_via_github_app": null +} diff --git a/test/_fixtures/pull-request-events-2.json b/test/_fixtures/pull-request-events-2.json new file mode 100644 index 00000000..600ddc5d --- /dev/null +++ b/test/_fixtures/pull-request-events-2.json @@ -0,0 +1,22 @@ +{ + "data": [ + { + "event": "labeled", + "actor": { + "login": "nodejs-github-bot" + }, + "label": { + "name": "testlabel" + } + }, + { + "event": "unlabeled", + "actor": { + "login": "nodejs-github-bot" + }, + "label": { + "name": "testlabel" + } + } + ] +} diff --git a/test/_fixtures/pull-request-events.json b/test/_fixtures/pull-request-events.json new file mode 100644 index 00000000..262dccfb --- /dev/null +++ b/test/_fixtures/pull-request-events.json @@ -0,0 +1,13 @@ +{ + "data": [ + { + "event": "labeled", + "actor": { + "login": "nodejs-github-bot" + }, + "label": { + "name": "testlabel" + } + } + ] +} diff --git a/test/_fixtures/repo-labels-page-2.json b/test/_fixtures/repo-labels-page-2.json deleted file mode 100644 index 8a22e0bd..00000000 --- a/test/_fixtures/repo-labels-page-2.json +++ /dev/null @@ -1,72 +0,0 @@ -[ - { - "id": 280213872, - "url": "https://api.github.com/repos/nodejs/node/labels/v0.12", - "name": "v0.12", - "color": "c7def8", - "default": false - }, - { - "id": 280213880, - "url": "https://api.github.com/repos/nodejs/node/labels/v4.x", - "name": "v4.x", - "color": "eb6420", - "default": false - }, - { - "id": 364835500, - "url": "https://api.github.com/repos/nodejs/node/labels/v6.x", - "name": "v6.x", - "color": "c2e0c6", - "default": false - }, - { - "id": 441404503, - "url": "https://api.github.com/repos/nodejs/node/labels/v7.x", - "name": "v7.x", - "color": "fbca04", - "default": false - }, - { - "id": 176191361, - "url": "https://api.github.com/repos/nodejs/node/labels/V8", - "name": "V8", - "color": "0052cc", - "default": false - }, - { - "id": 386816750, - "url": "https://api.github.com/repos/nodejs/node/labels/V8_inspector", - "name": "V8_inspector", - "color": "ededed", - "default": false - }, - { - "id": 155436007, - "url": "https://api.github.com/repos/nodejs/node/labels/vm", - "name": "vm", - "color": "bfdadc", - "default": false - }, - { - "id": 166236401, - "url": "https://api.github.com/repos/nodejs/node/labels/windows", - "name": "windows", - "color": "9944dd", - "default": false - }, - { - "id": 151728680, - "url": "https://api.github.com/repos/nodejs/node/labels/wontfix", - "name": "wontfix", - "color": "ededed", - "default": true - }, - { - "id": 155436008, - "url": "https://api.github.com/repos/nodejs/node/labels/zlib", - "name": "zlib", - "color": "009800", - "default": false - } -] diff --git a/test/_fixtures/repo-labels.json b/test/_fixtures/repo-labels.json deleted file mode 100644 index 207298d4..00000000 --- a/test/_fixtures/repo-labels.json +++ /dev/null @@ -1,157 +0,0 @@ -[ - { - "url": "https://api.github.com/repos/nodejs/node/labels/confirmed-bug", - "name": "confirmed-bug", - "color": "fc2929" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/duplicate", - "name": "duplicate", - "color": "ededed" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/help%20wanted", - "name": "help wanted", - "color": "159818" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/invalid", - "name": "invalid", - "color": "ededed" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/question", - "name": "question", - "color": "cc317c" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/wontfix", - "name": "wontfix", - "color": "ededed" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/in%20progress", - "name": "in progress", - "color": "ededed" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/tls", - "name": "tls", - "color": "fad8c7" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/crypto", - "name": "crypto", - "color": "009800" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/buffer", - "name": "buffer", - "color": "f7c6c7" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/http", - "name": "http", - "color": "c7def8" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/https", - "name": "https", - "color": "0052cc" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/assert", - "name": "assert", - "color": "d4c5f9" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/util", - "name": "util", - "color": "d4c5f9" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/cluster", - "name": "cluster", - "color": "f7c6c7" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/child_process", - "name": "child_process", - "color": "f7c6c7" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/dgram", - "name": "dgram", - "color": "fbca04" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/c++", - "name": "c++", - "color": "e11d21" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/doc", - "name": "doc", - "color": "006b75" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/debugger", - "name": "debugger", - "color": "bfd4f2" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/dns", - "name": "dns", - "color": "fbca04" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/domain", - "name": "domain", - "color": "e11d21" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/events", - "name": "events", - "color": "bfdadc" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/fs", - "name": "fs", - "color": "0052cc" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/module", - "name": "module", - "color": "fbca04" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/net", - "name": "net", - "color": "eb6420" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/os", - "name": "os", - "color": "d4c5f9" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/querystring", - "name": "querystring", - "color": "5319e7" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/readline", - "name": "readline", - "color": "d4c5f9" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/repl", - "name": "repl", - "color": "5319e7" - }, - { - "url": "https://api.github.com/repos/nodejs/node/labels/V8", - "name": "V8", - "color": "0052cc" - } -] diff --git a/test/integration/event-relay-to-github-actions.test.js b/test/integration/event-relay-to-github-actions.test.js new file mode 100644 index 00000000..312de8ca --- /dev/null +++ b/test/integration/event-relay-to-github-actions.test.js @@ -0,0 +1,30 @@ +import test from 'node:test' +import fetchMock from 'fetch-mock' +import supertest from 'supertest' + +import { app, events } from '../../app.js' + +import readFixture from '../read-fixture.js' + +import eventRelay from '../../scripts/event-relay.js' + +eventRelay(app, events) + +test('Sends POST requests to https://api.github.com/repos/nodejs//dispatches', (t, done) => { + const jenkinsPayload = readFixture('success-payload.json') + + fetchMock.mockGlobal() + fetchMock.route('https://api.github.com/repos/nodejs/node/dispatches', 204) + + t.plan(2) + + supertest(app) + .post('/node/jenkins/start') + .send(jenkinsPayload) + .expect(200) + .end((err, res) => { + t.assert.strictEqual(err, null) + t.assert.strictEqual(fetchMock.callHistory.called(), true) + done() + }) +}) diff --git a/test/integration/node-labels-webhook.test.js b/test/integration/node-labels-webhook.test.js deleted file mode 100644 index 56034921..00000000 --- a/test/integration/node-labels-webhook.test.js +++ /dev/null @@ -1,173 +0,0 @@ -'use strict' - -const tap = require('tap') -const url = require('url') -const nock = require('nock') -const supertest = require('supertest') -const proxyquire = require('proxyquire') -const lolex = require('lolex') - -const testStubs = { - './github-secret': { - isValid: () => true, - - // necessary to make makes proxyquire return this stub - // whenever *any* module tries to require('./github-secret') - '@global': true - } -} - -const app = proxyquire('../../app', testStubs) - -const readFixture = require('../read-fixture') - -setupNoRequestMatchHandler() - -tap.test('Sends POST request to https://api.github.com/repos/nodejs/node/issues//labels', (t) => { - const clock = lolex.install() - const expectedLabels = ['timers'] - const webhookPayload = readFixture('pull-request-opened.json') - - const filesScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/pulls/19/files') - .reply(200, readFixture('pull-request-files.json')) - - const existingRepoLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/labels') - .reply(200, readFixture('repo-labels.json')) - - const newLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .post('/repos/nodejs/node/issues/19/labels', expectedLabels) - .reply(200) - - t.plan(1) - t.tearDown(() => filesScope.done() && existingRepoLabelsScope.done() && newLabelsScope.done() && clock.uninstall()) - - supertest(app) - .post('/hooks/github') - .set('x-github-event', 'pull_request') - .send(webhookPayload) - .expect(200) - .end((err, res) => { - clock.runAll() - t.equal(err, null) - }) -}) - -tap.test('Adds v6.x label when PR is targeting the v6.x-staging branch', (t) => { - const clock = lolex.install() - const expectedLabels = ['timers', 'v6.x'] - const webhookPayload = readFixture('pull-request-opened-v6.x.json') - - const filesScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/pulls/19/files') - .reply(200, readFixture('pull-request-files.json')) - - const existingRepoLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/labels') - .reply(200, readFixture('repo-labels.json')) - - const newLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .post('/repos/nodejs/node/issues/19/labels', expectedLabels) - .reply(200) - - t.plan(1) - t.tearDown(() => filesScope.done() && existingRepoLabelsScope.done() && newLabelsScope.done() && clock.uninstall()) - - supertest(app) - .post('/hooks/github') - .set('x-github-event', 'pull_request') - .send(webhookPayload) - .expect(200) - .end((err, res) => { - clock.runAll() - t.equal(err, null) - }) -}) - -// reported bug: https://github.com/nodejs/github-bot/issues/58 -tap.test('Does not create labels which does not already exist', (t) => { - const clock = lolex.install() - const webhookPayload = readFixture('pull-request-opened-mapproxy.json') - - const filesScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/pulls/7972/files') - .reply(200, readFixture('pull-request-files-mapproxy.json')) - - const existingRepoLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/labels') - .reply(200, readFixture('repo-labels.json')) - - t.plan(1) - t.tearDown(() => filesScope.done() && existingRepoLabelsScope.done() && clock.uninstall()) - - supertest(app) - .post('/hooks/github') - .set('x-github-event', 'pull_request') - .send(webhookPayload) - .expect(200) - .end((err, res) => { - clock.runAll() - t.equal(err, null) - }) -}) - -// reported bug: https://github.com/nodejs/github-bot/issues/92 -tap.test('Adds V8 label when PR has deps/v8 file changes', (t) => { - const clock = lolex.install() - const expectedLabels = ['V8'] - const webhookPayload = readFixture('pull-request-opened-v8.json') - - const filesScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/pulls/9422/files') - .reply(200, readFixture('pull-request-files-v8.json')) - - const existingRepoLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/labels') - .reply(200, readFixture('repo-labels.json')) - - const newLabelsScope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .post('/repos/nodejs/node/issues/9422/labels', expectedLabels) - .reply(200) - - t.plan(1) - t.tearDown(() => filesScope.done() && existingRepoLabelsScope.done() && newLabelsScope.done() && clock.uninstall()) - - supertest(app) - .post('/hooks/github') - .set('x-github-event', 'pull_request') - .send(webhookPayload) - .expect(200) - .end((err, res) => { - clock.runAll() - t.equal(err, null) - }) -}) - -function ignoreQueryParams (pathAndQuery) { - return url.parse(pathAndQuery, true).pathname -} - -// nock doesn't make the tests explode if an unexpected external request is made, -// we therefore have to attach an explicit "no match" handler too make tests fail -// if there's made outgoing request we didn't expect -function setupNoRequestMatchHandler () { - nock.emitter.on('no match', (req) => { - // requests against the app is expected and we shouldn't need to tell nock about it - if (req.hostname === '127.0.0.1') return - - const reqUrl = `${req._headers.host}${req.path}` - throw new Error(`Unexpected request was sent to ${reqUrl}`) - }) -} diff --git a/test/integration/ping.test.js b/test/integration/ping.test.js index 104095a7..1d2e3936 100644 --- a/test/integration/ping.test.js +++ b/test/integration/ping.test.js @@ -1,21 +1,33 @@ -'use strict' +import http from 'node:http' -const tap = require('tap') -const request = require('request') +import test from 'node:test' -const app = require('../../app') +import { app, events } from '../../app.js' -tap.test('GET /ping responds with status 200 / "pong"', (t) => { +import ping from '../../scripts/ping.js' + +ping(app, events) + +test('GET /ping responds with status 200 / "pong"', (t, done) => { const server = app.listen() const port = server.address().port const url = `http://localhost:${port}/ping` - t.plan(3) - t.tearDown(() => server.close()) + t.plan(2) + t.after(() => server.close()) + + http.get(url, (res) => { + t.assert.strictEqual(res.statusCode, 200) - request(url, (err, res, body) => { - t.equal(err, null) - t.equal(res.statusCode, 200) - t.equal(res.body, 'pong') + let data = '' + res.on('data', (chunk) => { + data += chunk + }) + res.on('end', () => { + t.assert.strictEqual(data, 'pong') + done() + }) + }).on('error', (e) => { + t.fail(e) }) }) diff --git a/test/integration/push-jenkins-update.test.js b/test/integration/push-jenkins-update.test.js index 39a49868..787bfd5c 100644 --- a/test/integration/push-jenkins-update.test.js +++ b/test/integration/push-jenkins-update.test.js @@ -1,66 +1,174 @@ -'use strict' +import test from 'node:test' +import fetchMock from 'fetch-mock' +import supertest from 'supertest' -const tap = require('tap') -const url = require('url') -const nock = require('nock') -const supertest = require('supertest') +import { app, events } from '../../app.js' -const app = require('../../app') +import readFixture from '../read-fixture.js' -const readFixture = require('../read-fixture') +import jenkinsStatus from '../../scripts/jenkins-status.js' -tap.test('Sends POST requests to https://api.github.com/repos/nodejs/node/statuses/', (t) => { +fetchMock.config.overwriteRoutes = true +fetchMock.mockGlobal() + +jenkinsStatus(app, events) + +test('Sends POST requests to https://api.github.com/repos/nodejs/node/statuses/', (t, done) => { const jenkinsPayload = readFixture('success-payload.json') - const prCommitsScope = setupGetCommitsMock() - const scope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .post('/repos/nodejs/node/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1') - .reply(201) + const listCommitsUrl = setupListCommitsMock('node') - t.plan(1) - t.tearDown(() => prCommitsScope.done() && scope.done()) + const url = 'https://api.github.com/repos/nodejs/node/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1' + fetchMock.route({ url, method: 'POST' }, 201) + + t.plan(3) supertest(app) .post('/node/jenkins/start') .send(jenkinsPayload) - .expect(201) + .expect(200) + .end((err, res) => { + t.assert.strictEqual(err, null) + t.assert.strictEqual(fetchMock.callHistory.called(url), true) + t.assert.strictEqual(fetchMock.callHistory.called(listCommitsUrl), true) + done() + }) +}) + +test('Allows repository name to be provided with URL parameter when pushing job started', (t, done) => { + const jenkinsPayload = readFixture('pending-payload.json') + + const listCommitsUrl = setupListCommitsMock('citgm') + + const url = 'https://api.github.com/repos/nodejs/citgm/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1' + fetchMock.route({ url, method: 'POST' }, 201) + + t.plan(3) + + supertest(app) + .post('/citgm/jenkins/start') + .send(jenkinsPayload) + .expect(200) .end((err, res) => { - t.equal(err, null) + t.assert.strictEqual(err, null) + t.assert.strictEqual(fetchMock.callHistory.called(url), true) + t.assert.strictEqual(fetchMock.callHistory.called(listCommitsUrl), true) + done() }) }) -tap.test('Forwards payload provided in incoming POST to GitHub status API', (t) => { +test('Allows repository name to be provided with URL parameter when pushing job ended', (t, done) => { + const jenkinsPayload = readFixture('success-payload.json') + + const listCommitsUrl = setupListCommitsMock('citgm') + + const url = 'https://api.github.com/repos/nodejs/citgm/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1' + fetchMock.route({ url, method: 'POST' }, 201) + + t.plan(3) + + supertest(app) + .post('/citgm/jenkins/end') + .send(jenkinsPayload) + .expect(200) + .end((err, res) => { + t.assert.strictEqual(err, null) + t.assert.strictEqual(fetchMock.callHistory.called(url), true) + t.assert.strictEqual(fetchMock.callHistory.called(listCommitsUrl), true) + done() + }) +}) + +test('Forwards payload provided in incoming POST to GitHub status API', (t, done) => { const fixture = readFixture('success-payload.json') - const prCommitsScope = setupGetCommitsMock() - const scope = nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .post('/repos/nodejs/node/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1', { - state: 'success', - context: 'test/osx', - description: 'tests passed', - target_url: 'https://ci.nodejs.org/job/node-test-commit-osx/3157/' - }) - .reply(201) + const listCommitsUrl = setupListCommitsMock('node') - t.plan(1) - t.tearDown(() => prCommitsScope.done() && scope.done()) + const url = 'https://api.github.com/repos/nodejs/node/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1' + const body = { + state: 'success', + context: 'test/osx', + description: 'tests passed', + target_url: 'https://ci.nodejs.org/job/node-test-commit-osx/3157/' + } + fetchMock.route({ url, method: 'POST', body }, 201) + + t.plan(3) supertest(app) .post('/node/jenkins/start') .send(fixture) - .expect(201) + .expect(200) .end((err, res) => { - t.equal(err, null) + t.assert.strictEqual(err, null) + t.assert.strictEqual(fetchMock.callHistory.called(url), true) + t.assert.strictEqual(fetchMock.callHistory.called(listCommitsUrl), true) + done() }) }) -tap.test('Responds with 400 / "Bad request" when incoming request has invalid payload', (t) => { +test('Posts a CI comment in the related PR when Jenkins build is named node-test-pull-request', (t, done) => { + const fixture = readFixture('jenkins-test-pull-request-success-payload.json') + + const url = 'https://api.github.com/repos/nodejs/node/issues/12345/comments' + const body = { body: 'CI: https://ci.nodejs.org/job/node-test-pull-request/21633/' } + fetchMock.route({ url, method: 'POST', body }, 200) + + // we don't care about asserting the scopes below, just want to stop the requests from actually being sent + setupListCommitsMock('node') + fetchMock.route( + { + url: 'https://api.github.com/repos/nodejs/node/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1', + method: 'POST' + }, 201) + + t.plan(2) + + supertest(app) + .post('/node/jenkins/start') + .send(fixture) + .expect(200) + .end((err, res) => { + t.assert.strictEqual(fetchMock.callHistory.called(url), true) + t.assert.strictEqual(err, null) + done() + }) +}) + +test('Posts a CI comment in the related PR when Jenkins build is named node-test-pull-request-lite-pipeline', (t, done) => { + const fixture = readFixture('jenkins-test-pull-request-success-payload.json') + fixture.identifier = 'node-test-pull-request-lite-pipeline' + + const url = 'https://api.github.com/repos/nodejs/node/issues/12345/comments' + const body = { body: 'Lite-CI: https://ci.nodejs.org/job/node-test-pull-request/21633/' } + fetchMock.route({ url, body, method: 'POST' }, 200) + + // we don't care about asserting the scopes below, just want to stop the requests from actually being sent + setupListCommitsMock('node') + fetchMock.route( + { + url: 'https://api.github.com/repos/nodejs/node/statuses/8a5fec2a6bade91e544a30314d7cf21f8a200de1', + method: 'POST' + }, 201) + + t.plan(2) + + supertest(app) + .post('/node/jenkins/start') + .send(fixture) + .expect(200) + .end((err, res) => { + t.assert.strictEqual(fetchMock.callHistory.called(url), true) + t.assert.strictEqual(err, null) + done() + }) +}) + +test('Responds with 400 / "Bad request" when incoming request has invalid payload', (t, done) => { const fixture = readFixture('invalid-payload.json') // don't care about the results, just want to prevent any HTTP request ever being made - nock('https://api.github.com') + fetchMock.route('https://api.github.com', 200) t.plan(1) @@ -69,19 +177,69 @@ tap.test('Responds with 400 / "Bad request" when incoming request has invalid pa .send(fixture) .expect(400, 'Invalid payload') .end((err, res) => { - t.equal(err, null) + t.assert.strictEqual(err, null) + done() }) }) -function setupGetCommitsMock () { - const commitsResponse = readFixture('pr-commits.json') +test('Responds with 400 / "Bad request" when build started status update is not related to a pull request', (t, done) => { + const fixture = readFixture('jenkins-staging-failure-payload.json') - return nock('https://api.github.com') - .filteringPath(ignoreQueryParams) - .get('/repos/nodejs/node/pulls/12345/commits') - .reply(200, commitsResponse) -} + // don't care about the results, just want to prevent any HTTP request ever being made + fetchMock.route('https://api.github.com', 200) + + t.plan(1) + + supertest(app) + .post('/node/jenkins/start') + .send(fixture) + .expect(400, 'Will only push builds related to pull requests') + .end((err, res) => { + t.assert.strictEqual(err, null) + done() + }) +}) + +test('Responds with 400 / "Bad request" when build ended status update is not related to a pull request', (t, done) => { + const fixture = readFixture('jenkins-staging-failure-payload.json') + + // don't care about the results, just want to prevent any HTTP request ever being made + fetchMock.route('https://api.github.com/', 200) + + t.plan(1) + + supertest(app) + .post('/node/jenkins/end') + .send(fixture) + .expect(400, 'Will only push builds related to pull requests') + .end((err, res) => { + t.assert.strictEqual(err, null) + done() + }) +}) + +test('Responds with 400 / "Bad request" when incoming providing invalid repository name', (t, done) => { + const fixture = readFixture('pending-payload.json') + + // don't care about the results, just want to prevent any HTTP request ever being made + fetchMock.route('https://api.github.com/', 200) + + t.plan(1) + + supertest(app) + .post('/not-valid-repo-name/jenkins/start') + .send(fixture) + .expect(400, 'Invalid repository') + .end((err, res) => { + t.assert.strictEqual(err, null) + done() + }) +}) + +function setupListCommitsMock (repoName) { + const commitsResponse = readFixture('pr-commits.json') + const url = `https://api.github.com/repos/nodejs/${repoName}/pulls/12345/commits` -function ignoreQueryParams (pathAndQuery) { - return url.parse(pathAndQuery, true).pathname + fetchMock.route(url, commitsResponse) + return url } diff --git a/test/read-fixture.js b/test/read-fixture.js index dcf9597c..6c67abe7 100644 --- a/test/read-fixture.js +++ b/test/read-fixture.js @@ -1,9 +1,7 @@ -'use strict' +import fs from 'node:fs' +import path from 'node:path' -const fs = require('fs') -const path = require('path') - -module.exports = function readFixture (fixtureName) { - const content = fs.readFileSync(path.join(__dirname, '_fixtures', fixtureName)).toString() - return JSON.parse(content) +export default function readFixture (fixtureName) { + const content = fs.readFileSync(path.join(import.meta.dirname, '_fixtures', fixtureName)).toString() + return fixtureName.endsWith('.json') ? JSON.parse(content) : content } diff --git a/test/unit/node-build-label.test.js b/test/unit/node-build-label.test.js deleted file mode 100644 index da0b4746..00000000 --- a/test/unit/node-build-label.test.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -const tap = require('tap') - -const nodeLabels = require('../../lib/node-labels') - -tap.test('label: "build" when build related files has been changed', (t) => { - const buildRelatedFiles = [ - 'configure', - 'node.gyp', - 'common.gypi', - 'BSDmakefile', - 'Makefile', - 'tools/Makefile', - 'tools/install.py', - 'tools/create_android_makefiles', - 'tools/genv8constants.py', - 'tools/getnodeversion.py', - 'tools/js2c.py', - 'tools/utils.py', - 'tools/configure.d/nodedownload.py' - ] - - buildRelatedFiles.forEach((filepath) => { - const labels = nodeLabels.resolveLabels([ filepath ]) - - t.same(labels, ['build'], filepath + ' got "build" label') - }) - - t.end() -}) - -tap.test('labels: not "build" when Makefile in ./deps has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/Makefile' - ]) - - t.notOk(labels.includes('build')) - - t.end() -}) diff --git a/test/unit/node-js-subsystem-labels.test.js b/test/unit/node-js-subsystem-labels.test.js deleted file mode 100644 index a24a72da..00000000 --- a/test/unit/node-js-subsystem-labels.test.js +++ /dev/null @@ -1,163 +0,0 @@ -'use strict' - -const tap = require('tap') - -const nodeLabels = require('../../lib/node-labels') - -tap.test('label: lib oddities', (t) => { - const libFiles = [ - 'lib/_debug_agent.js', - 'lib/_http_agent.js', - 'lib/_http_client.js', - 'lib/_http_common.js', - 'lib/_http_incoming.js', - 'lib/_http_outgoing.js', - 'lib/_http_server.js', - 'lib/_linklist.js', - 'lib/_stream_duplex.js', - 'lib/_stream_passthrough.js', - 'lib/_stream_readable.js', - 'lib/_stream_transform.js', - 'lib/_stream_wrap.js', - 'lib/_stream_writable.js', - 'lib/_tls_common.js', - 'lib/_tls_legacy.js', - 'lib/_tls_wrap.js', - 'lib/constants.js', - 'lib/punycode.js', // ignored - 'lib/sys.js', // ignored - 'lib/internal/freelist.js', // ignored - 'lib/internal/process', - 'lib/internal/readme.md', // ignored - 'lib/internal/socket_list.js', - 'lib/internal/v8_prof_polyfill.js', - 'lib/internal/v8_prof_processor.js' - ] - - const labels = nodeLabels.resolveLabels(libFiles, false) - - t.same(labels, [ - 'debugger', // _debug_agent - 'http', // _http_* - 'timers', // linklist - 'stream', // _stream_* - 'tls', // _tls_* - 'lib / src', // constants - 'process', // internal/process/ - 'net', // socket_list - 'tools' // v8_prof_* - ]) - - t.end() -}) - -tap.test('label: lib internals oddities duplicates', (t) => { - const libFiles = [ - 'lib/internal/bootstrap_node.js', - 'lib/internal/linkedlist.js', - 'lib/internal/streams' - ] - - const labels = nodeLabels.resolveLabels(libFiles) - - t.same(labels, [ - 'lib / src', // bootstrap_node - 'timers', // linkedlist - 'stream' // internal/streams/ - ]) - - t.end() -}) - -tap.test('label: lib normal without "lib / src" limiting', (t) => { - const libFiles = [ - 'lib/_debugger.js', - 'lib/assert.js', - 'lib/buffer.js', - 'lib/child_process.js', - 'lib/cluster.js', - 'lib/console.js', - 'lib/crypto.js', - 'lib/dgram.js', - 'lib/dns.js', - 'lib/domain.js', - 'lib/events.js', - 'lib/fs.js', - 'lib/http.js', - 'lib/https.js', - 'lib/module.js', - 'lib/net.js', - 'lib/os.js', - 'lib/path.js', - 'lib/process.js', - 'lib/querystring.js', - 'lib/readline.js', - 'lib/repl.js', - 'lib/stream.js', - 'lib/string_decoder.js', - 'lib/timers.js', - 'lib/tls.js', - 'lib/tty.js', - 'lib/url.js', - 'lib/util.js', - 'lib/v8.js', - 'lib/vm.js', - 'lib/zlib.js' - ] - - const labels = nodeLabels.resolveLabels(libFiles, false) - - t.same(labels, libFiles.map((path) => /lib\/(_)?(\w+)\.js/.exec(path)[2])) - - t.end() -}) - -tap.test('label: lib internals without "lib / src" limiting', (t) => { - const libFiles = [ - 'lib/internal/child_process.js', - 'lib/internal/cluster.js', - 'lib/internal/module.js', - 'lib/internal/net.js', - 'lib/internal/process.js', - 'lib/internal/readline.js', - 'lib/internal/repl.js', - 'lib/internal/util.js' - ] - - const labels = nodeLabels.resolveLabels(libFiles, false) - - t.same(labels, libFiles.map((path) => /lib\/internal\/(\w+)\.js/.exec(path)[1])) - - t.end() -}) - -tap.test('label: add subsystem when ./doc/api/.md has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'doc/api/fs.md' - ], false) - - t.same(labels, ['doc', 'fs']) - - t.end() -}) - -tap.test('label: only "doc" with multiple API doc files changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'doc/api/fs.md', - 'doc/api/stream.md' - ], false) - - t.same(labels, ['doc']) - - t.end() -}) - -tap.test('label: "doc,module" when doc/api/modules.md was changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'doc/api/modules.md' - ], false) - - t.same(labels, ['doc', 'module']) - - t.end() -}) diff --git a/test/unit/node-labels.test.js b/test/unit/node-labels.test.js deleted file mode 100644 index 5abf2f2e..00000000 --- a/test/unit/node-labels.test.js +++ /dev/null @@ -1,319 +0,0 @@ -'use strict' - -const tap = require('tap') - -const nodeLabels = require('../../lib/node-labels') - -tap.test('label: "test" when only ./test/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'test/debugger/test-debugger-pid.js', - 'test/debugger/test-debugger-repl-break-in-module.js', - 'test/debugger/test-debugger-repl-term.js' - ]) - - t.same(labels, ['test']) - - t.end() -}) - -tap.test('no labels: when ./test/ and ./doc/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'test/debugger/test-debugger-pid.js', - 'doc/api/fs.md' - ]) - - t.same(labels, []) - - t.end() -}) - -// This ensures older mislabelling issues doesn't happen again -// https://github.com/nodejs/node/pull/6432 -// https://github.com/nodejs/node/pull/6448 -tap.test('no labels: when ./test/ and ./lib/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'lib/punycode.js', - 'test/parallel/test-assert.js' - ]) - - t.same(labels, []) - - t.end() -}) - -tap.test('label: "doc" when only ./doc/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'doc/api/fs.md', - 'doc/api/http.md', - 'doc/onboarding.md' - ]) - - t.same(labels, ['doc']) - - t.end() -}) - -tap.test('label: "benchmark" when only ./benchmark/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'benchmark/http_server_lag.js', - 'benchmark/http/check_is_http_token.js' - ]) - - t.same(labels, ['benchmark']) - - t.end() -}) - -tap.test('label: "c++" when ./src/* has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'src/async-wrap.h', - 'src/async-wrap.cc' - ]) - - t.same(labels, ['c++']) - - t.end() -}) - -tap.test('label: not "c++" when ./src/node_version.h has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'src/node_version.h' - ]) - - t.same(labels, []) - - t.end() -}) - -tap.test('label: "v8_inspector" when ./src/inspector_* has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'src/inspector_socket.cc' - ]) - - t.same(labels, ['c++', 'v8_inspector', 'dont-land-on-v4.x']) - - t.end() -}) - -tap.test('label: "v8" when ./deps/v8/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/src/arguments.cc' - ]) - - t.same(labels, ['v8']) - - t.end() -}) - -tap.test('label: "libuv" when ./deps/uv/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/uv/src/fs-poll.c' - ]) - - t.same(labels, ['libuv']) - - t.end() -}) - -tap.test('label: "v8", "openssl" when ./deps/v8/ and ./deps/openssl/ files has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/src/arguments.cc', - 'deps/openssl/openssl/ssl/ssl_rsa.c' - ]) - - t.same(labels, ['v8', 'openssl']) - - t.end() -}) - -// -// Planned tests to be resolved later -// - -tap.test('label: "repl" when ./lib/repl.js has been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'lib/repl.js', - 'test/debugger/test-debugger-pid.js', - 'test/debugger/test-debugger-repl-break-in-module.js', - 'test/debugger/test-debugger-repl-term.js' - ]) - - t.same(labels, ['repl']) - - t.end() -}) - -tap.test('label: "lib / src" when 5 or more JS sub-systems have been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'lib/assert.js', - 'lib/dns.js', - 'lib/repl.js', - 'lib/process.js', - 'lib/module.js' - ]) - - t.same(labels, ['lib / src']) - - t.end() -}) - -// https://github.com/nodejs/node/pull/7488 wrongfully labelled with "lib / src" -tap.test('label: not "lib / src" when only deps have been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiterals.golden', - 'deps/v8/test/cctest/interpreter/bytecode_expectations/ArrayLiteralsWide.golden', - 'deps/v8/test/cctest/interpreter/bytecode_expectations/AssignmentsInBinaryExpression.golden', - 'deps/v8/test/cctest/interpreter/bytecode_expectations/BasicBlockToBoolean.golden', - 'deps/v8/test/cctest/interpreter/bytecode_expectations/BasicLoops.golden' - ]) - - t.same(labels, ['v8']) - - t.end() -}) - -tap.test('label: "JS sub-systems when less than 5 sub-systems have changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'lib/assert.js', - 'lib/dns.js', - 'lib/repl.js', - 'lib/process.js' - ]) - - t.same(labels, ['assert', 'dns', 'repl', 'process']) - - t.end() -}) - -tap.test('label: "meta" when meta-info files have changed', (t) => { - // e.g. LICENSE, AUTHORS, some ./*.md files - const labels = nodeLabels.resolveLabels([ - '.gitattributes', - '.gitignore', - '.mailmap', - 'AUTHORS', - 'LICENSE', - 'CHANGELOG.md', - 'CODE_OF_CONDUCT.md', - 'GOVERNANCE.md', - 'ROADMAP.md', - 'WORKING_GROUPS.md' - ]) - - t.same(labels, ['meta']) - - t.end() -}) - -tap.test('label: not "meta" when other top-level have been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'BUILDING.md', - 'README.md', - 'COLLABORATOR_GUIDE.md', - 'CONTRIBUTING.md', - 'configure' - ]) - - t.same(labels.indexOf('meta'), -1) - - t.end() -}) - -tap.test('label: "doc" when top-level .md files have changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'BUILDING.md', - 'README.md' - ]) - - t.same(labels, ['doc']) - - t.end() -}) - -tap.test('label: not "doc" when other top-level files have been changed', (t) => { - const labels = nodeLabels.resolveLabels([ - 'LICENSE', - 'configure', - '.mailmap' - ]) - - t.same(labels.indexOf('doc'), -1) - - t.end() -}) - -tap.test('label: version labels (old)', (t) => { - const labels = nodeLabels.resolveLabels([ - 'common.gypi' - ], 'v0.12') - - t.same(labels, ['build', 'v0.12']) - - t.end() -}) - -tap.test('label: version labels (old, staging)', (t) => { - const labels = nodeLabels.resolveLabels([ - 'common.gypi' - ], 'v0.12-staging') - - t.same(labels, ['build', 'v0.12']) - - t.end() -}) - -tap.test('label: version labels (new)', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/include/v8-version.h', - 'deps/v8/src/crankshaft/hydrogen.cc', - 'deps/v8/test/mjsunit/regress/regress-5033.js' - ], 'v6.x') - - t.same(labels, ['v8', 'v6.x']) - - t.end() -}) - -tap.test('label: version labels (new, staging)', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/include/v8-version.h', - 'deps/v8/src/crankshaft/hydrogen.cc', - 'deps/v8/test/mjsunit/regress/regress-5033.js' - ], 'v6.x-staging') - - t.same(labels, ['v8', 'v6.x']) - - t.end() -}) - -tap.test('label: no version labels (master)', (t) => { - const labels = nodeLabels.resolveLabels([ - 'deps/v8/include/v8-version.h', - 'deps/v8/src/crankshaft/hydrogen.cc', - 'deps/v8/test/mjsunit/regress/regress-5033.js' - ], 'master') - - t.same(labels, ['v8']) - - t.end() -}) - -tap.test('label: tools label', (t) => { - const labels = nodeLabels.resolveLabels([ - 'tools/doc/json.js' - ]) - - t.same(labels, ['tools']) - - t.end() -}) - -tap.test('label: build label (windows)', (t) => { - const labels = nodeLabels.resolveLabels([ - 'vcbuild.bat' - ]) - - t.same(labels, ['build']) - - t.end() -}) diff --git a/test/unit/node-owners.test.js b/test/unit/node-owners.test.js new file mode 100644 index 00000000..d9d68b73 --- /dev/null +++ b/test/unit/node-owners.test.js @@ -0,0 +1,87 @@ +import test from 'node:test' + +import { Owners } from '../../lib/node-owners.js' +import readFixture from '../read-fixture.js' + +const ownersFile = readFixture('CODEOWNERS') + +test('single file single team match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['file1']), + ['@nodejs/test1'] + ) + done() +}) + +test('double file single team match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['file1', 'file4']), + ['@nodejs/test1'] + ) + done() +}) + +test('double file double individual team match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['file1', 'file2']), + ['@nodejs/test1', '@nodejs/test2'] + ) + done() +}) + +test('single file double team match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['file3']), + ['@nodejs/test1', '@nodejs/test2'] + ) + done() +}) + +test('double file triple team match (1 + 2)', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['file5', 'file3']), + ['@nodejs/test1', '@nodejs/test2', '@nodejs/test3'] + ) + done() +}) + +test('folder match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['folder1/file5']), + ['@nodejs/test3'] + ) + done() +}) + +test('extension match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['folder2/file1.js']), + ['@nodejs/test4', '@nodejs/test5'] + ) + done() +}) + +test('no match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['unknown']), + [] + ) + done() +}) + +test('no match + single match', (t, done) => { + const owners = Owners.fromFile(ownersFile) + t.assert.deepStrictEqual( + owners.getOwnersForPaths(['unknown', 'file1']), + ['@nodejs/test1'] + ) + done() +}) diff --git a/test/unit/node-repo-owners.test.js b/test/unit/node-repo-owners.test.js new file mode 100644 index 00000000..c62f2c08 --- /dev/null +++ b/test/unit/node-repo-owners.test.js @@ -0,0 +1,265 @@ +import test from 'node:test' +import fetchMock from 'fetch-mock' +import nock from 'nock' + +import { _testExports, resolveOwnersThenPingPr } from '../../lib/node-repo.js' +import readFixture from '../read-fixture.js' + +const { + getCodeOwnersUrl, + listFiles, + getDefaultBranch, + getCodeOwnersFile, + pingOwners, + getCommentForOwners +} = _testExports + +fetchMock.mockGlobal() + +test('getCodeOwnersUrl', (t, done) => { + const owner = 'nodejs' + const repo = 'node-auto-test' + const defaultBranch = 'main' + + t.assert.strictEqual( + getCodeOwnersUrl(owner, repo, defaultBranch), + `https://raw.githubusercontent.com/${owner}/${repo}/${defaultBranch}/.github/CODEOWNERS` + ) + done() +}) + +test('listFiles success', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test', + prId: 12345, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const fixture = readFixture('pull-request-files.json') + const urlPattern = `https://api.github.com/repos/${options.owner}/${options.repo}/pulls/${options.prId}/files` + fetchMock.route(urlPattern, fixture) + + const files = await listFiles(options) + t.assert.deepStrictEqual(files, fixture.map(({ filename }) => filename)) + t.assert.strictEqual(fetchMock.callHistory.called(urlPattern), true) +}) + +test('listFiles fail', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test', + prId: 12346, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const urlPattern = `https://api.github.com/repos/${options.owner}/${options.repo}/pulls/${options.prId}/files` + fetchMock.route(urlPattern, 500) + + await t.assert.rejects(listFiles(options)) + t.assert.strictEqual(fetchMock.callHistory.called(urlPattern), true) +}) + +test('getDefaultBranch success', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-2', + prId: 12347, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const fixture = readFixture('get-repository.json') + const urlPattern = `https://api.github.com/repos/${options.owner}/${options.repo}` + fetchMock.route(urlPattern, fixture) + + const defaultBranch = await getDefaultBranch(options) + t.assert.deepStrictEqual(defaultBranch, fixture.default_branch) + t.assert.strictEqual(fetchMock.callHistory.called(urlPattern), true) +}) + +test('getDefaultBranch empty response', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-3', + prId: 12347, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const urlPattern = `https://api.github.com/repos/${options.owner}/${options.repo}` + + fetchMock.route(urlPattern, 200) + + await t.assert.rejects(getDefaultBranch(options)) + t.assert.strictEqual(fetchMock.callHistory.called(), true) +}) + +test('getDefaultBranch fail', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-4', + prId: 12347, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const urlPattern = `https://api.github.com/repos/${options.owner}/${options.repo}` + fetchMock.route(urlPattern, 500) + + await t.assert.rejects(getDefaultBranch(options)) + t.assert.strictEqual(fetchMock.callHistory.called(), true) +}) + +test('getCodeOwnersFile success', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-5', + prId: 12347, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const fixture = readFixture('CODEOWNERS') + const base = 'https://localhost' + const filePath = '/CODEOWNERS' + const url = `${base}${filePath}` + const scope = nock(base) + .get(filePath) + .reply(200, fixture) + + const file = await getCodeOwnersFile(url, options) + t.assert.deepStrictEqual(file, fixture) + scope.done() +}) + +test('getCodeOwnersFile fail', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-6', + prId: 12347, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const base = 'https://localhost' + const filePath = '/CODEOWNERS' + const url = `${base}${filePath}` + const scope = nock(base) + .get(filePath) + .reply(500) + + await t.assert.rejects(getCodeOwnersFile(url, options)) + scope.done() +}) + +test('pingOwners success', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-6', + prId: 12348, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const fixture = readFixture('pull-request-create-comment.json') + const owners = ['@owner1', '@owner2'] + const body = { body: getCommentForOwners(owners) } + const url = `https://api.github.com/repos/${options.owner}/${options.repo}/issues/${options.prId}/comments` + + fetchMock.route( + { + body, + method: 'POST', + url + }, + { + status: 201, + body: fixture + } + ) + + await pingOwners(options, owners) + fetchMock.callHistory.called(url) +}) + +test('pingOwners fail', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test-6', + prId: 12349, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const url = `https://api.github.com/repos/${options.owner}/${options.repo}/issues/${options.prId}/comments` + fetchMock.route({ url, method: 'POST' }, 500) + + await t.assert.rejects(pingOwners(options, [])) + fetchMock.callHistory.called(url) +}) + +test('resolveOwnersThenPingPr success', async (t) => { + const options = { + owner: 'nodejs', + repo: 'node-auto-test', + prId: 99999, + logger: { info: () => {}, error: () => {}, debug: () => {}, child: function () { return this } }, + retries: 1, + defaultBranch: 'main', + retryInterval: 10 + } + + const owners = ['@nodejs/team', '@nodejs/team2'] + + fetchMock.route( + `https://api.github.com/repos/${options.owner}/${options.repo}/pulls/${options.prId}/files`, + readFixture('pull-request-files.json') + ) + + fetchMock.route( + `https://api.github.com/repos/${options.owner}/${options.repo}`, + readFixture('get-repository.json') + ) + + const scope = nock('https://raw.githubusercontent.com') + .get(`/${options.owner}/${options.repo}/master/.github/CODEOWNERS`) + .reply(200, readFixture('CODEOWNERS')) + + fetchMock.route( + { + body: { body: getCommentForOwners(owners) }, + method: 'POST', + url: `https://api.github.com/repos/${options.owner}/${options.repo}/issues/${options.prId}/comments` + }, + { + status: 201, + body: readFixture('pull-request-create-comment.json') + } + ) + + await resolveOwnersThenPingPr(options, owners) + + t.assert.strictEqual(fetchMock.callHistory.called(), true) + scope.done() +}) diff --git a/test/unit/node-repo.test.js b/test/unit/node-repo.test.js index 6818cdf4..53128e30 100644 --- a/test/unit/node-repo.test.js +++ b/test/unit/node-repo.test.js @@ -1,94 +1,66 @@ -'use strict' +import test from 'node:test' +import fetchMock from 'fetch-mock' -const lolex = require('lolex') -const proxyquire = require('proxyquire') -const sinon = require('sinon') -const tap = require('tap') +import * as nodeRepo from '../../lib/node-repo.js' -const logger = require('../../lib/logger') -const githubClient = require('../../lib/github-client') -const readFixture = require('../read-fixture') +import logger from '../../lib/logger.js' +import readFixture from '../read-fixture.js' -tap.test('fetchExistingLabels(): caches existing repository labels', (t) => { - sinon.stub(githubClient.issues, 'getLabels').yields(null, []) - sinon.stub(githubClient, 'hasNextPage', () => false) - const nodeRepo = proxyquire('../../lib/node-repo', { - './github-client': githubClient - }) - - t.plan(1) - t.tearDown(() => { - githubClient.issues.getLabels.restore() - githubClient.hasNextPage.restore() - }) - - nodeRepo._fetchExistingLabels({ owner: 'nodejs', repo: 'node', logger }, () => { - nodeRepo._fetchExistingLabels({ owner: 'nodejs', repo: 'node', logger }, () => { - t.ok(githubClient.issues.getLabels.calledOnce) - }) - }) -}) +fetchMock.mockGlobal() -tap.test('fetchExistingLabels(): cache expires after one hour', (t) => { - const clock = lolex.install() - sinon.stub(githubClient.issues, 'getLabels').yields(null, []) - sinon.stub(githubClient, 'hasNextPage', () => false) - const nodeRepo = proxyquire('../../lib/node-repo', { - './github-client': githubClient - }) +test('getBotPrLabels(): returns labels added by nodejs-github-bot', (t, done) => { + const events = readFixture('pull-request-events.json') - t.plan(1) - t.tearDown(() => { - githubClient.issues.getLabels.restore() - githubClient.hasNextPage.restore() - clock.uninstall() - }) + const owner = 'nodejs' + const repo = 'node5' + const prId = '1' + const urlPattern = `glob:https://api.github.com/repos/${owner}/${repo}/issues/${prId}/events?*` - nodeRepo._fetchExistingLabels({ owner: 'nodejs', repo: 'node', logger }, () => { - // fetch labels again after 1 hour and 1 minute - clock.tick(1000 * 60 * 61) + fetchMock.route(urlPattern, events.data) + t.plan(2) - nodeRepo._fetchExistingLabels({ owner: 'nodejs', repo: 'node', logger }, () => { - t.equal(githubClient.issues.getLabels.callCount, 2) - }) + nodeRepo.getBotPrLabels({ owner, repo, prId }, (_, labels) => { + t.assert.deepStrictEqual(labels, ['testlabel']) + t.assert.strictEqual(fetchMock.callHistory.called(urlPattern), true) + done() }) }) -tap.test('fetchExistingLabels(): yields an array of existing label names', (t) => { - const labelsFixture = readFixture('repo-labels.json') - sinon.stub(githubClient.issues, 'getLabels').yields(null, labelsFixture) - sinon.stub(githubClient, 'hasNextPage', () => false) - const nodeRepo = proxyquire('../../lib/node-repo', { - './github-client': githubClient - }) +test('getBotPrLabels(): returns net labels added/removed by nodejs-github-bot', (t, done) => { + const events = readFixture('pull-request-events-2.json') + const owner = 'nodejs' + const repo = 'node6' + const prId = '2' + const urlPattern = `glob:https://api.github.com/repos/${owner}/${repo}/issues/${prId}/events?*` + + fetchMock.route( + urlPattern, + events.data + ) t.plan(2) - t.tearDown(() => { - githubClient.issues.getLabels.restore() - githubClient.hasNextPage.restore() - }) - nodeRepo._fetchExistingLabels({ owner: 'nodejs', repo: 'node', logger }, (err, existingLabels) => { - t.equal(err, null) - t.ok(existingLabels.includes('cluster')) + nodeRepo.getBotPrLabels({ owner, repo, prId }, (_, labels) => { + t.assert.deepStrictEqual(labels, []) + t.assert.strictEqual(fetchMock.callHistory.called(urlPattern), true) + done() }) }) -tap.test('fetchExistingLabels(): can retrieve more than 100 labels', (t) => { - const labelsFixturePage1 = readFixture('repo-labels.json') - const labelsFixturePage2 = readFixture('repo-labels-page-2.json') - sinon.stub(githubClient.issues, 'getLabels', (options, cb) => cb(null, options.page === 1 ? labelsFixturePage1 : labelsFixturePage2)) - sinon.stub(githubClient, 'hasNextPage', (listing) => listing === labelsFixturePage1) - const nodeRepo = proxyquire('../../lib/node-repo', {'./github-client': githubClient}) +test('removeLabelFromPR(): should remove label', async (t) => { + const owner = 'nodejs' + const repo = 'node7' + const prId = '3' + const label = '3' + const urlPattern = `https://api.github.com/repos/${owner}/${repo}/issues/${prId}/labels/${label}` - t.plan(3) - t.tearDown(() => { - githubClient.issues.getLabels.restore() - githubClient.hasNextPage.restore() - }) - nodeRepo._fetchExistingLabels({ owner: 'nodejs', repo: 'node', logger }, (err, existingLabels) => { - t.equal(err, null) - t.ok(existingLabels.includes('cluster')) - t.ok(existingLabels.includes('windows')) - }) + fetchMock.route( + urlPattern, + 200 + ) + t.plan(2) + + const response = await nodeRepo.removeLabelFromPR({ owner, repo, prId, logger }, label) + t.assert.deepStrictEqual(label, response) + t.assert.strictEqual(fetchMock.callHistory.called(urlPattern), true) }) diff --git a/test/unit/push-jenkins-update.test.js b/test/unit/push-jenkins-update.test.js new file mode 100644 index 00000000..0ef3f3f8 --- /dev/null +++ b/test/unit/push-jenkins-update.test.js @@ -0,0 +1,67 @@ +import test from 'node:test' + +import { findLatestCommitInPr } from '../../lib/push-jenkins-update.js' + +import fetchMock from 'fetch-mock' +import readFixture from '../read-fixture.js' + +test('findLatestCommitInPr: paginates results when more than 100 commits in a PR', async (t) => { + const commitsFixturePage1 = readFixture('pull-request-commits-page-1.json') + const commitsFixturePage2 = readFixture('pull-request-commits-page-2.json') + const commitsFixturePage3 = readFixture('pull-request-commits-page-3.json') + const commitsFixturePage4 = readFixture('pull-request-commits-page-4.json') + const owner = 'nodejs' + const repo = 'node' + const pr = 9745 + + fetchMock.mockGlobal() + + const firstPageScope = fetchMock.route( + `https://api.github.com/repos/${owner}/${repo}/pulls/${pr}/commits`, + { + body: commitsFixturePage1, + headers: { + link: '; rel="next", ; rel="last"' + } + } + ) + + const secondPageScope = fetchMock.route( + `https://api.github.com/repositories/27193779/pulls/${pr}/commits?page=2`, + { + body: commitsFixturePage2, + headers: { + link: '; rel="prev", ; rel="next", ; rel="last", ; rel="first"' + } + } + ) + + const thirdPageScope = fetchMock.route( + `https://api.github.com/repositories/27193779/pulls/${pr}/commits?page=3`, + { + body: commitsFixturePage3, + headers: { + link: '; rel="prev", ; rel="next", ; rel="last", ; rel="first"' + } + } + ) + + const fourthPageScope = fetchMock.route( + `https://api.github.com/repositories/27193779/pulls/${pr}/commits?page=4`, + { + body: commitsFixturePage4, + headers: { + link: '; rel="prev", ; rel="first"' + } + } + ) + + t.plan(1) + + const commit = await findLatestCommitInPr({ owner, repo, pr }) + t.assert.strictEqual(commit.sha, 'c1aa949064892dbe693750686c06f4ad5673e577') + firstPageScope.callHistory.called() + secondPageScope.callHistory.called() + thirdPageScope.callHistory.called() + fourthPageScope.callHistory.called() +})