{"action":"closed","number":10,"pull_request":{"url":"https://api.github.com/repos/rvagg/bole/pulls/10","id":74194931,"html_url":"https://github.com/rvagg/bole/pull/10","diff_url":"https://github.com/rvagg/bole/pull/10.diff","patch_url":"https://github.com/rvagg/bole/pull/10.patch","issue_url":"https://api.github.com/repos/rvagg/bole/issues/10","number":10,"state":"closed","locked":false,"title":"perf improvements","user":{"login":"rvagg","id":495647,"avatar_url":"https://avatars.githubusercontent.com/u/495647?v=3","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},"body":"Using [pino](https://github.com/mcollina/pino)'s own benchmark suite to add some perf improvements .. some are kind of crazy (there's a good reason I made a separate file called format.js). Mostly it's not down to the speed of pino, but it's at least competitive now.\r\n\r\nAPI hasn't really changed, except now it's limited to 16 arguments on a call to a log function, I think this is more than reasonable but still it's technically a breaking change. There's also a new `bole.setFastTime()` function to switch to `Date.now()` which is the pino default (personally I hate logs that use epoch time but it is quite fast so we can give the option at least).\r\n\r\nIt's also very possible that there is accidental breakage in the API here given all of the shuffling of logic so bumping semver-major if we go ahead with this is probably wise regardless.\r\n\r\nBelow are benchmarks comparing old and new bole as well as bole with `fastTime` enabled. The benchmarks were run with: ```for i in `ls ../pino/benchmarks/`; do echo $i; node ../pino/benchmarks/$i ; done``` having checked pino out, done an `npm install` and linked bole into pino's node_modules. The `fastTime` ones were done by adding `.setFastTime(true)` to all of the bole setup sections in the files.\r\n\r\nHappy to hear of more crazy ways we can speed this up! I'm not sold on pino's \"extreme\" mode fwiw, too much hairy logic to get that right.\r\n\r\n/cc @yoshuawuyts \r\n\r\n\r\n```\r\nbasic.js\r\nbenchBunyan*10000:     1608.165ms\r\nbenchWinston*10000:    2582.654ms\r\nbenchOldBole*10000:    1774.625ms\r\nbenchNewBole*10000:    585.776ms\r\nbenchNewestBole*10000: 372.713ms\r\nbenchDebug*10000:      545.641ms\r\nbenchLogLevel*10000:   437.950ms\r\nbenchPino*10000:       370.170ms\r\nbenchPinoExreme*10000: 142.827ms\r\nbenchBunyan*10000:     1627.781ms\r\nbenchWinston*10000:    2638.942ms\r\nbenchOldBole*10000:    1637.006ms\r\nbenchNewBole*10000:    574.749ms\r\nbenchNewestBole*10000: 352.200ms\r\nbenchDebug*10000:      527.688ms\r\nbenchLogLevel*10000:   394.412ms\r\nbenchPino*10000:       324.713ms\r\nbenchPinoExreme*10000: 134.498ms\r\n\r\n\r\nchild.js\r\nbenchBunyanChild*10000:      1717.793ms\r\nbenchOldBoleChild*10000:     1625.616ms\r\nbenchNewBoleChild*10000:     616.279ms\r\nbenchNewestBoleChild*10000:  458.978ms\r\nbenchPinoChild*10000:        421.797ms\r\nbenchPinoExtremeChild*10000: 190.450ms\r\nbenchBunyanChild*10000:      1735.584ms\r\nbenchNewBoleChild*10000:     596.083ms\r\nbenchNewestBoleChild*10000:  439.364ms\r\nbenchPinoChild*10000:        405.750ms\r\nbenchPinoExtremeChild*10000: 174.887ms\r\n\r\n\r\nchildCreation.js\r\nbenchBunyanCreation*10000:      1912.047ms\r\nbenchNewBoleCreation*10000:     674.235ms\r\nbenchNewestBoleCreation*10000:  473.900ms\r\nbenchPinoCreation*10000:        455.381ms\r\nbenchPinoExtremeCreation*10000: 222.714ms\r\nbenchBunyanCreation*10000:      1958.595ms\r\nbenchOldBoleChild*10000:        1597.697ms\r\nbenchNewBoleCreation*10000:     636.196ms\r\nbenchNewestBoleCreation*10000:  443.747ms\r\nbenchPinoCreation*10000:        454.718ms\r\nbenchPinoExtremeCreation*10000: 204.472ms\r\n\r\n\r\ndeep-object.js\r\nbenchBunyanDeepObj*10000:            9922.489ms\r\nbenchWinstonDeepObj*10000:           20467.637ms\r\nbenchOldBoleDeepObj*10000:           22942.288ms\r\nbenchNewBoleDeepObj*10000:           5334.259ms\r\nbenchNewestBoleDeepObj*10000:        5976.224ms\r\nbenchLogLevelDeepObj*10000:          51442.827ms\r\nbenchPinoDeepObj*10000:              5829.747ms\r\nbenchPinoUnsafeDeepObj*10000:        4346.752ms\r\nbenchPinoExtremeDeepObj*10000:       5941.517ms\r\nbenchPinoUnsafeExtremeDeepObj*10000: 4320.007ms\r\nbenchBunyanDeepObj*10000:            10368.592ms\r\nbenchWinstonDeepObj*10000:           20480.133ms\r\nbenchOldBoleDeepObj*10000:           23617.181ms\r\nbenchNewBoleDeepObj*10000:           5171.666ms\r\nbenchNewestBoleDeepObj*10000:        5913.482ms\r\nbenchLogLevelDeepObj*10000:          51737.796ms\r\nbenchPinoDeepObj*10000:              5708.446ms\r\nbenchPinoUnsafeDeepObj*10000:        4365.840ms\r\nbenchPinoExtremeDeepObj*10000:       5984.172ms\r\nbenchPinoUnsafeExtremeDeepObj*10000: 4188.128ms\r\n\r\n\r\nmultiArg.js\r\nbenchBunyanMulti*10000:                       1515.135ms\r\nbenchWinstonMulti*10000:                      2647.043ms\r\nbenchOldBoleMulti*10000:                      1856.140ms\r\nbenchNewBoleMulti*10000:                      594.838ms\r\nbenchNewestBoleMulti*10000:                   377.063ms\r\nbenchLogLevelMulti*10000:                     444.528ms\r\nbenchDebugMulti*10000:                        516.222ms\r\nbenchPinoMulti*10000:                         360.566ms\r\nbenchPinoExtremeMulti*10000:                  150.123ms\r\nbenchDebugInterpolate*10000:                  665.639ms\r\nbenchBunyanInterpolate*10000:                 1533.101ms\r\nbenchWinstonInterpolate*10000:                2809.965ms\r\nbenchOldBoleInterpolate*10000:                1845.031ms\r\nbenchNewBoleInterpolate*10000:                588.014ms\r\nbenchNewestBoleInterpolate*10000:             366.402ms\r\nbenchPinoInterpolate*10000:                   491.378ms\r\nbenchPinoExtremeInterpolate*10000:            192.419ms\r\nbenchBunyanInterpolateAll*10000:              1780.023ms\r\nbenchDebugInterpolateAll*10000:               803.718ms\r\nbenchWinstonInterpolateAll*10000:             2956.432ms\r\nbenchOldBoleInterpolateAll*10000:             2055.106ms\r\nbenchNewBoleInterpolateAll*10000:             686.849ms\r\nbenchNewestBoleInterpolateAll*10000:          454.530ms\r\nbenchLogLevelInterpolateAll*10000:            623.155ms\r\nbenchPinoInterpolateAll*10000:                547.891ms\r\nbenchPinoExtremeInterpolateAll*10000:         303.352ms\r\nbenchPinoUnsafeInterpolateAll*10000:          565.622ms\r\nbenchPinoUnsafeExtremeInterpolateAll*10000:   309.048ms\r\nbenchDebugInterpolateExtra*10000:             807.428ms\r\nbenchBunyanInterpolateExtra*10000:            3179.967ms\r\nbenchWinstonInterpolateExtra*10000:           3169.942ms\r\nbenchOldBoleInterpolateExtra*10000:           3736.959ms\r\nbenchNewBoleInterpolateExtra*10000:           1926.395ms\r\nbenchNewestBoleInterpolateExtra*10000:        1548.289ms\r\nbenchLogLevelInterpolateExtra*10000:          1759.567ms\r\nbenchPinoInterpolateExtra*10000:              620.915ms\r\nbenchPinoUnsafeInterpolateExtra*10000:        628.565ms\r\nbenchPinoExtremeInterpolateExtra*10000:       397.313ms\r\nbenchPinoUnsafeExtremeInterpolateExtra*10000: 375.254ms\r\nbenchDebugInterpolateDeep*10000:              663.052ms\r\nbenchBunyanInterpolateDeep*10000:             6041.667ms\r\nbenchWinstonInterpolateDeep*10000:            22134.751ms\r\nbenchOldBoleInterpolateDeep*10000:            6587.924ms\r\nbenchNewBoleInterpolateDeep*10000:            4741.358ms\r\nbenchNewestBoleInterpolateDeep*10000:         4217.562ms\r\nbenchLogLevelInterpolateDeep*10000:           3323.441ms\r\nbenchPinoInterpolateDeep*10000:               6017.806ms\r\nbenchPinoUnsafeInterpolateDeep*10000:         4708.956ms\r\nbenchPinoExtremeInterpolateDeep*10000:        6533.090ms\r\nbenchPinoUnsafeExtremeInterpolateDeep*10000:  4726.833ms\r\nbenchBunyanMulti*10000:                       1556.186ms\r\nbenchWinstonMulti*10000:                      2641.214ms\r\nbenchOldBoleMulti*10000:                      1873.938ms\r\nbenchNewBoleMulti*10000:                      583.086ms\r\nbenchNewestBoleMulti*10000:                   355.907ms\r\nbenchLogLevelMulti*10000:                     470.015ms\r\nbenchDebugMulti*10000:                        518.127ms\r\nbenchPinoMulti*10000:                         358.284ms\r\nbenchPinoExtremeMulti*10000:                  150.430ms\r\nbenchDebugInterpolate*10000:                  666.039ms\r\nbenchBunyanInterpolate*10000:                 1544.669ms\r\nbenchWinstonInterpolate*10000:                2633.577ms\r\nbenchOldBoleInterpolate*10000:                1803.603ms\r\nbenchNewBoleInterpolate*10000:                579.716ms\r\nbenchNewestBoleInterpolate*10000:             368.567ms\r\nbenchPinoInterpolate*10000:                   400.438ms\r\nbenchPinoExtremeInterpolate*10000:            179.811ms\r\nbenchBunyanInterpolateAll*10000:              1734.928ms\r\nbenchDebugInterpolateAll*10000:               830.598ms\r\nbenchWinstonInterpolateAll*10000:             2914.816ms\r\nbenchOldBoleInterpolateAll*10000:             2108.744ms\r\nbenchNewBoleInterpolateAll*10000:             668.581ms\r\nbenchNewestBoleInterpolateAll*10000:          459.191ms\r\nbenchLogLevelInterpolateAll*10000:            564.736ms\r\nbenchPinoInterpolateAll*10000:                566.521ms\r\nbenchPinoExtremeInterpolateAll*10000:         314.738ms\r\nbenchPinoUnsafeInterpolateAll*10000:          552.270ms\r\nbenchPinoUnsafeExtremeInterpolateAll*10000:   299.188ms\r\nbenchDebugInterpolateExtra*10000:             805.610ms\r\nbenchBunyanInterpolateExtra*10000:            3229.008ms\r\nbenchWinstonInterpolateExtra*10000:           3169.397ms\r\nbenchOldBoleInterpolateExtra*10000:           3462.622ms\r\nbenchNewBoleInterpolateExtra*10000:           1865.117ms\r\nbenchNewestBoleInterpolateExtra*10000:        1549.994ms\r\nbenchLogLevelInterpolateExtra*10000:          1897.569ms\r\nbenchPinoInterpolateExtra*10000:              642.484ms\r\nbenchPinoUnsafeInterpolateExtra*10000:        623.055ms\r\nbenchPinoExtremeInterpolateExtra*10000:       394.064ms\r\nbenchPinoUnsafeExtremeInterpolateExtra*10000: 365.378ms\r\nbenchDebugInterpolateDeep*10000:              667.786ms\r\nbenchBunyanInterpolateDeep*10000:             6059.128ms\r\nbenchWinstonInterpolateDeep*10000:            22247.574ms\r\nbenchOldBoleInterpolateDeep*10000:            6609.189ms\r\nbenchNewBoleInterpolateDeep*10000:            4562.093ms\r\nbenchNewestBoleInterpolateDeep*10000:         4262.331ms\r\nbenchLogLevelInterpolateDeep*10000:           3293.833ms\r\nbenchPinoInterpolateDeep*10000:               6101.653ms\r\nbenchPinoUnsafeInterpolateDeep*10000:         4854.862ms\r\nbenchPinoExtremeInterpolateDeep*10000:        7011.338ms\r\nbenchPinoUnsafeExtremeInterpolateDeep*10000:  4695.801ms\r\n\r\n\r\nobject.js\r\nbenchBunyanObj*10000:                         1678.507ms\r\nbenchWinstonObj*10000:                        2656.642ms\r\nbenchOldBoleObj*10000:                        1588.992ms\r\nbenchNewBoleObj*10000:                        597.381ms\r\nbenchNewestBoleObj*10000:                     415.290ms\r\nbenchLogLevelObject*10000:                    1862.047ms\r\nbenchPinoObj*10000:                           398.471ms\r\nbenchPinoUnsafeObj*10000:                     461.343ms\r\nbenchPinoExtremeObj*10000:                    205.798ms\r\nbenchPinoUnsafeExtremeObj*10000:              191.235ms\r\nbenchBunyanObj*10000:                         1687.752ms\r\nbenchWinstonObj*10000:                        2791.879ms\r\nbenchOldBoleObj*10000:                        1562.442ms\r\nbenchNewBoleObj*10000:                        586.917ms\r\nbenchNewestBoleObj*10000:                     380.834ms\r\nbenchLogLevelObject*10000:                    1945.977ms\r\nbenchPinoObj*10000:                           368.611ms\r\nbenchPinoUnsafeObj*10000:                     476.259ms\r\nbenchPinoExtremeObj*10000:                    238.516ms\r\nbenchPinoUnsafeExtremeObj*10000:              200.529ms\r\n```","created_at":"2016-06-17T06:33:41Z","updated_at":"2016-06-19T03:28:21Z","closed_at":"2016-06-19T03:28:20Z","merged_at":null,"merge_commit_sha":"77aa6ab59df1868f422f4c15f398aa44b22bdc46","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rvagg/bole/pulls/10/commits","review_comments_url":"https://api.github.com/repos/rvagg/bole/pulls/10/comments","review_comment_url":"https://api.github.com/repos/rvagg/bole/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rvagg/bole/issues/10/comments","statuses_url":"https://api.github.com/repos/rvagg/bole/statuses/ef86ad9e2b093eb299c57c477716932f1ef58ceb","head":{"label":"rvagg:bench","ref":"bench","sha":"ef86ad9e2b093eb299c57c477716932f1ef58ceb","user":{"login":"rvagg","id":495647,"avatar_url":"https://avatars.githubusercontent.com/u/495647?v=3","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},"repo":{"id":19924332,"name":"bole","full_name":"rvagg/bole","owner":{"login":"rvagg","id":495647,"avatar_url":"https://avatars.githubusercontent.com/u/495647?v=3","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},"private":false,"html_url":"https://github.com/rvagg/bole","description":"A tiny JSON logger","fork":false,"url":"https://api.github.com/repos/rvagg/bole","forks_url":"https://api.github.com/repos/rvagg/bole/forks","keys_url":"https://api.github.com/repos/rvagg/bole/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rvagg/bole/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rvagg/bole/teams","hooks_url":"https://api.github.com/repos/rvagg/bole/hooks","issue_events_url":"https://api.github.com/repos/rvagg/bole/issues/events{/number}","events_url":"https://api.github.com/repos/rvagg/bole/events","assignees_url":"https://api.github.com/repos/rvagg/bole/assignees{/user}","branches_url":"https://api.github.com/repos/rvagg/bole/branches{/branch}","tags_url":"https://api.github.com/repos/rvagg/bole/tags","blobs_url":"https://api.github.com/repos/rvagg/bole/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rvagg/bole/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rvagg/bole/git/refs{/sha}","trees_url":"https://api.github.com/repos/rvagg/bole/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rvagg/bole/statuses/{sha}","languages_url":"https://api.github.com/repos/rvagg/bole/languages","stargazers_url":"https://api.github.com/repos/rvagg/bole/stargazers","contributors_url":"https://api.github.com/repos/rvagg/bole/contributors","subscribers_url":"https://api.github.com/repos/rvagg/bole/subscribers","subscription_url":"https://api.github.com/repos/rvagg/bole/subscription","commits_url":"https://api.github.com/repos/rvagg/bole/commits{/sha}","git_commits_url":"https://api.github.com/repos/rvagg/bole/git/commits{/sha}","comments_url":"https://api.github.com/repos/rvagg/bole/comments{/number}","issue_comment_url":"https://api.github.com/repos/rvagg/bole/issues/comments{/number}","contents_url":"https://api.github.com/repos/rvagg/bole/contents/{+path}","compare_url":"https://api.github.com/repos/rvagg/bole/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rvagg/bole/merges","archive_url":"https://api.github.com/repos/rvagg/bole/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rvagg/bole/downloads","issues_url":"https://api.github.com/repos/rvagg/bole/issues{/number}","pulls_url":"https://api.github.com/repos/rvagg/bole/pulls{/number}","milestones_url":"https://api.github.com/repos/rvagg/bole/milestones{/number}","notifications_url":"https://api.github.com/repos/rvagg/bole/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rvagg/bole/labels{/name}","releases_url":"https://api.github.com/repos/rvagg/bole/releases{/id}","deployments_url":"https://api.github.com/repos/rvagg/bole/deployments","created_at":"2014-05-19T00:14:44Z","updated_at":"2016-06-16T03:10:08Z","pushed_at":"2016-06-19T03:28:20Z","git_url":"git://github.com/rvagg/bole.git","ssh_url":"git@github.com:rvagg/bole.git","clone_url":"https://github.com/rvagg/bole.git","svn_url":"https://github.com/rvagg/bole","homepage":null,"size":27,"stargazers_count":124,"watchers_count":124,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":3,"forks":5,"open_issues":3,"watchers":124,"default_branch":"master"}},"base":{"label":"rvagg:master","ref":"master","sha":"4e44735d3087253a4d474d71d703098d58797c18","user":{"login":"rvagg","id":495647,"avatar_url":"https://avatars.githubusercontent.com/u/495647?v=3","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},"repo":{"id":19924332,"name":"bole","full_name":"rvagg/bole","owner":{"login":"rvagg","id":495647,"avatar_url":"https://avatars.githubusercontent.com/u/495647?v=3","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},"private":false,"html_url":"https://github.com/rvagg/bole","description":"A tiny JSON logger","fork":false,"url":"https://api.github.com/repos/rvagg/bole","forks_url":"https://api.github.com/repos/rvagg/bole/forks","keys_url":"https://api.github.com/repos/rvagg/bole/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rvagg/bole/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rvagg/bole/teams","hooks_url":"https://api.github.com/repos/rvagg/bole/hooks","issue_events_url":"https://api.github.com/repos/rvagg/bole/issues/events{/number}","events_url":"https://api.github.com/repos/rvagg/bole/events","assignees_url":"https://api.github.com/repos/rvagg/bole/assignees{/user}","branches_url":"https://api.github.com/repos/rvagg/bole/branches{/branch}","tags_url":"https://api.github.com/repos/rvagg/bole/tags","blobs_url":"https://api.github.com/repos/rvagg/bole/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rvagg/bole/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rvagg/bole/git/refs{/sha}","trees_url":"https://api.github.com/repos/rvagg/bole/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rvagg/bole/statuses/{sha}","languages_url":"https://api.github.com/repos/rvagg/bole/languages","stargazers_url":"https://api.github.com/repos/rvagg/bole/stargazers","contributors_url":"https://api.github.com/repos/rvagg/bole/contributors","subscribers_url":"https://api.github.com/repos/rvagg/bole/subscribers","subscription_url":"https://api.github.com/repos/rvagg/bole/subscription","commits_url":"https://api.github.com/repos/rvagg/bole/commits{/sha}","git_commits_url":"https://api.github.com/repos/rvagg/bole/git/commits{/sha}","comments_url":"https://api.github.com/repos/rvagg/bole/comments{/number}","issue_comment_url":"https://api.github.com/repos/rvagg/bole/issues/comments{/number}","contents_url":"https://api.github.com/repos/rvagg/bole/contents/{+path}","compare_url":"https://api.github.com/repos/rvagg/bole/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rvagg/bole/merges","archive_url":"https://api.github.com/repos/rvagg/bole/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rvagg/bole/downloads","issues_url":"https://api.github.com/repos/rvagg/bole/issues{/number}","pulls_url":"https://api.github.com/repos/rvagg/bole/pulls{/number}","milestones_url":"https://api.github.com/repos/rvagg/bole/milestones{/number}","notifications_url":"https://api.github.com/repos/rvagg/bole/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rvagg/bole/labels{/name}","releases_url":"https://api.github.com/repos/rvagg/bole/releases{/id}","deployments_url":"https://api.github.com/repos/rvagg/bole/deployments","created_at":"2014-05-19T00:14:44Z","updated_at":"2016-06-16T03:10:08Z","pushed_at":"2016-06-19T03:28:20Z","git_url":"git://github.com/rvagg/bole.git","ssh_url":"git@github.com:rvagg/bole.git","clone_url":"https://github.com/rvagg/bole.git","svn_url":"https://github.com/rvagg/bole","homepage":null,"size":27,"stargazers_count":124,"watchers_count":124,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":3,"forks":5,"open_issues":3,"watchers":124,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rvagg/bole/pulls/10"},"html":{"href":"https://github.com/rvagg/bole/pull/10"},"issue":{"href":"https://api.github.com/repos/rvagg/bole/issues/10"},"comments":{"href":"https://api.github.com/repos/rvagg/bole/issues/10/comments"},"review_comments":{"href":"https://api.github.com/repos/rvagg/bole/pulls/10/comments"},"review_comment":{"href":"https://api.github.com/repos/rvagg/bole/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rvagg/bole/pulls/10/commits"},"statuses":{"href":"https://api.github.com/repos/rvagg/bole/statuses/ef86ad9e2b093eb299c57c477716932f1ef58ceb"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":9,"review_comments":8,"commits":7,"additions":248,"deletions":76,"changed_files":5}}
{"actor":{"display_login":"rvagg"}}