TheDesk Mio (15.9.1)
This commit is contained in:
parent
f1fd3f0197
commit
29f3d3af58
|
@ -66,7 +66,10 @@
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -25px;
|
top: -25px;
|
||||||
}
|
}
|
||||||
|
.trendtag{
|
||||||
|
overflow-y:scroll;
|
||||||
|
max-height:100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
<script type="text/javascript" src="./js/common/modal.js"></script>
|
<script type="text/javascript" src="./js/common/modal.js"></script>
|
||||||
<script type="text/javascript" src="./js/ui/jquery-ui.min.js"></script>
|
<script type="text/javascript" src="./js/ui/jquery-ui.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
var ver="Mio (15.9.0)";
|
var ver="Mio (15.9.1)";
|
||||||
//betaを入れるとバージョンチェックしない
|
//betaを入れるとバージョンチェックしない
|
||||||
//var ver="beta";
|
//var ver="beta";
|
||||||
var acct_id=0;
|
var acct_id=0;
|
||||||
|
|
|
@ -279,6 +279,9 @@ function getFilter(acct_id){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function getFilterType(json,type){
|
function getFilterType(json,type){
|
||||||
|
if(!json){
|
||||||
|
return [];
|
||||||
|
}
|
||||||
if(type=="local"){
|
if(type=="local"){
|
||||||
type="public";
|
type="public";
|
||||||
}else if(type=="list"){
|
}else if(type=="list"){
|
||||||
|
|
|
@ -186,7 +186,7 @@ function mixmore(tlid,type) {
|
||||||
todo("Integrated TL MoreLoading...(Local)");
|
todo("Integrated TL MoreLoading...(Local)");
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var domain = localStorage.getItem("domain_" + acct_id);
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||||
var sid = $("#timeline_" + tlid + " .cvo").last().attr("toot-id");
|
var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id");
|
||||||
|
|
||||||
|
|
||||||
var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id="+sid;
|
var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id="+sid;
|
||||||
|
|
|
@ -232,11 +232,13 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||||
var notice = '<i class="big-text fa '+rticon+'"></i>'+ dis_name + "(@" + toot.account.acct +
|
var notice = '<i class="big-text fa '+rticon+'"></i>'+ dis_name + "(@" + toot.account.acct +
|
||||||
")<br>";
|
")<br>";
|
||||||
var boostback = "shared";
|
var boostback = "shared";
|
||||||
|
var uniqueid=toot.id;
|
||||||
var toot = toot.reblog;
|
var toot = toot.reblog;
|
||||||
var dis_name=escapeHTML(toot.account.display_name);
|
var dis_name=escapeHTML(toot.account.display_name);
|
||||||
if(toot.account.emojis){
|
if(toot.account.emojis){
|
||||||
var actemojick = toot.account.emojis[0];
|
var actemojick = toot.account.emojis[0];
|
||||||
}else{
|
}else{
|
||||||
|
var uniqueid=toot.id;
|
||||||
var actemojick=false;
|
var actemojick=false;
|
||||||
}
|
}
|
||||||
//絵文字があれば
|
//絵文字があれば
|
||||||
|
@ -251,6 +253,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
var uniqueid=toot.id;
|
||||||
var notice = "";
|
var notice = "";
|
||||||
var boostback = "";
|
var boostback = "";
|
||||||
//ユーザー強調
|
//ユーザー強調
|
||||||
|
@ -513,7 +516,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||||
}
|
}
|
||||||
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
||||||
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
|
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
|
||||||
' ' + hasmedia + '" toot-id="' + id + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
|
' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
|
||||||
key].created_at, 'unix') + '" '+if_notf+' onmouseover="mov(\'' + toot.id + '\',\''+tlid+'\')" onmouseout="resetmv()">' +
|
key].created_at, 'unix') + '" '+if_notf+' onmouseover="mov(\'' + toot.id + '\',\''+tlid+'\')" onmouseout="resetmv()">' +
|
||||||
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
|
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
|
||||||
'</span></div>' +
|
'</span></div>' +
|
||||||
|
|
|
@ -89,7 +89,7 @@ function trendTag(){
|
||||||
Object.keys(json).forEach(function(tag) {
|
Object.keys(json).forEach(function(tag) {
|
||||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
||||||
});
|
});
|
||||||
$("#taglist").append('<span class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</span>');
|
$("#taglist").append('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
|
||||||
trendintervalset()
|
trendintervalset()
|
||||||
}else{
|
}else{
|
||||||
$("#taglist").html("");
|
$("#taglist").html("");
|
||||||
|
|
|
@ -224,7 +224,7 @@ function moreload(type, tlid) {
|
||||||
}else if(type=="list"){
|
}else if(type=="list"){
|
||||||
var data=obj[tlid].data;
|
var data=obj[tlid].data;
|
||||||
}
|
}
|
||||||
var sid = $("#timeline_" + tlid + " .cvo").last().attr("toot-id");
|
var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id");
|
||||||
if (localStorage.getItem("morelock") != sid) {
|
if (localStorage.getItem("morelock") != sid) {
|
||||||
localStorage.setItem("morelock", sid);
|
localStorage.setItem("morelock", sid);
|
||||||
if (type == "mix") {
|
if (type == "mix") {
|
||||||
|
|
1
app/node_modules/debug/.coveralls.yml
generated
vendored
Normal file
1
app/node_modules/debug/.coveralls.yml
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve
|
11
app/node_modules/debug/.eslintrc
generated
vendored
Normal file
11
app/node_modules/debug/.eslintrc
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"no-console": 0,
|
||||||
|
"no-empty": [1, { "allowEmptyCatch": true }]
|
||||||
|
},
|
||||||
|
"extends": "eslint:recommended"
|
||||||
|
}
|
9
app/node_modules/debug/.npmignore
generated
vendored
Normal file
9
app/node_modules/debug/.npmignore
generated
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
support
|
||||||
|
test
|
||||||
|
examples
|
||||||
|
example
|
||||||
|
*.sock
|
||||||
|
dist
|
||||||
|
yarn.lock
|
||||||
|
coverage
|
||||||
|
bower.json
|
14
app/node_modules/debug/.travis.yml
generated
vendored
Normal file
14
app/node_modules/debug/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- "6"
|
||||||
|
- "5"
|
||||||
|
- "4"
|
||||||
|
|
||||||
|
install:
|
||||||
|
- make node_modules
|
||||||
|
|
||||||
|
script:
|
||||||
|
- make lint
|
||||||
|
- make test
|
||||||
|
- make coveralls
|
362
app/node_modules/debug/CHANGELOG.md
generated
vendored
Normal file
362
app/node_modules/debug/CHANGELOG.md
generated
vendored
Normal file
|
@ -0,0 +1,362 @@
|
||||||
|
|
||||||
|
2.6.9 / 2017-09-22
|
||||||
|
==================
|
||||||
|
|
||||||
|
* remove ReDoS regexp in %o formatter (#504)
|
||||||
|
|
||||||
|
2.6.8 / 2017-05-18
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Check for undefined on browser globals (#462, @marbemac)
|
||||||
|
|
||||||
|
2.6.7 / 2017-05-16
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom)
|
||||||
|
* Fix: Inline extend function in node implementation (#452, @dougwilson)
|
||||||
|
* Docs: Fix typo (#455, @msasad)
|
||||||
|
|
||||||
|
2.6.5 / 2017-04-27
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek)
|
||||||
|
* Misc: clean up browser reference checks (#447, @thebigredgeek)
|
||||||
|
* Misc: add npm-debug.log to .gitignore (@thebigredgeek)
|
||||||
|
|
||||||
|
|
||||||
|
2.6.4 / 2017-04-20
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo)
|
||||||
|
* Chore: ignore bower.json in npm installations. (#437, @joaovieira)
|
||||||
|
* Misc: update "ms" to v0.7.3 (@tootallnate)
|
||||||
|
|
||||||
|
2.6.3 / 2017-03-13
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts)
|
||||||
|
* Docs: Changelog fix (@thebigredgeek)
|
||||||
|
|
||||||
|
2.6.2 / 2017-03-10
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin)
|
||||||
|
* Docs: Add backers and sponsors from Open Collective (#422, @piamancini)
|
||||||
|
* Docs: Add Slackin invite badge (@tootallnate)
|
||||||
|
|
||||||
|
2.6.1 / 2017-02-10
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error
|
||||||
|
* Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0)
|
||||||
|
* Fix: IE8 "Expected identifier" error (#414, @vgoma)
|
||||||
|
* Fix: Namespaces would not disable once enabled (#409, @musikov)
|
||||||
|
|
||||||
|
2.6.0 / 2016-12-28
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: added better null pointer checks for browser useColors (@thebigredgeek)
|
||||||
|
* Improvement: removed explicit `window.debug` export (#404, @tootallnate)
|
||||||
|
* Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate)
|
||||||
|
|
||||||
|
2.5.2 / 2016-12-25
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: reference error on window within webworkers (#393, @KlausTrainer)
|
||||||
|
* Docs: fixed README typo (#391, @lurch)
|
||||||
|
* Docs: added notice about v3 api discussion (@thebigredgeek)
|
||||||
|
|
||||||
|
2.5.1 / 2016-12-20
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: babel-core compatibility
|
||||||
|
|
||||||
|
2.5.0 / 2016-12-20
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: wrong reference in bower file (@thebigredgeek)
|
||||||
|
* Fix: webworker compatibility (@thebigredgeek)
|
||||||
|
* Fix: output formatting issue (#388, @kribblo)
|
||||||
|
* Fix: babel-loader compatibility (#383, @escwald)
|
||||||
|
* Misc: removed built asset from repo and publications (@thebigredgeek)
|
||||||
|
* Misc: moved source files to /src (#378, @yamikuronue)
|
||||||
|
* Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue)
|
||||||
|
* Test: coveralls integration (#378, @yamikuronue)
|
||||||
|
* Docs: simplified language in the opening paragraph (#373, @yamikuronue)
|
||||||
|
|
||||||
|
2.4.5 / 2016-12-17
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: `navigator` undefined in Rhino (#376, @jochenberger)
|
||||||
|
* Fix: custom log function (#379, @hsiliev)
|
||||||
|
* Improvement: bit of cleanup + linting fixes (@thebigredgeek)
|
||||||
|
* Improvement: rm non-maintainted `dist/` dir (#375, @freewil)
|
||||||
|
* Docs: simplified language in the opening paragraph. (#373, @yamikuronue)
|
||||||
|
|
||||||
|
2.4.4 / 2016-12-14
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts)
|
||||||
|
|
||||||
|
2.4.3 / 2016-12-14
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: navigation.userAgent error for react native (#364, @escwald)
|
||||||
|
|
||||||
|
2.4.2 / 2016-12-14
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: browser colors (#367, @tootallnate)
|
||||||
|
* Misc: travis ci integration (@thebigredgeek)
|
||||||
|
* Misc: added linting and testing boilerplate with sanity check (@thebigredgeek)
|
||||||
|
|
||||||
|
2.4.1 / 2016-12-13
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: typo that broke the package (#356)
|
||||||
|
|
||||||
|
2.4.0 / 2016-12-13
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: bower.json references unbuilt src entry point (#342, @justmatt)
|
||||||
|
* Fix: revert "handle regex special characters" (@tootallnate)
|
||||||
|
* Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate)
|
||||||
|
* Feature: %O`(big O) pretty-prints objects (#322, @tootallnate)
|
||||||
|
* Improvement: allow colors in workers (#335, @botverse)
|
||||||
|
* Improvement: use same color for same namespace. (#338, @lchenay)
|
||||||
|
|
||||||
|
2.3.3 / 2016-11-09
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne)
|
||||||
|
* Fix: Returning `localStorage` saved values (#331, Levi Thomason)
|
||||||
|
* Improvement: Don't create an empty object when no `process` (Nathan Rajlich)
|
||||||
|
|
||||||
|
2.3.2 / 2016-11-09
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: be super-safe in index.js as well (@TooTallNate)
|
||||||
|
* Fix: should check whether process exists (Tom Newby)
|
||||||
|
|
||||||
|
2.3.1 / 2016-11-09
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Added electron compatibility (#324, @paulcbetts)
|
||||||
|
* Improvement: Added performance optimizations (@tootallnate)
|
||||||
|
* Readme: Corrected PowerShell environment variable example (#252, @gimre)
|
||||||
|
* Misc: Removed yarn lock file from source control (#321, @fengmk2)
|
||||||
|
|
||||||
|
2.3.0 / 2016-11-07
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Fix: Consistent placement of ms diff at end of output (#215, @gorangajic)
|
||||||
|
* Fix: Escaping of regex special characters in namespace strings (#250, @zacronos)
|
||||||
|
* Fix: Fixed bug causing crash on react-native (#282, @vkarpov15)
|
||||||
|
* Feature: Enabled ES6+ compatible import via default export (#212 @bucaran)
|
||||||
|
* Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom)
|
||||||
|
* Package: Update "ms" to 0.7.2 (#315, @DevSide)
|
||||||
|
* Package: removed superfluous version property from bower.json (#207 @kkirsche)
|
||||||
|
* Readme: fix USE_COLORS to DEBUG_COLORS
|
||||||
|
* Readme: Doc fixes for format string sugar (#269, @mlucool)
|
||||||
|
* Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0)
|
||||||
|
* Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable)
|
||||||
|
* Readme: better docs for browser support (#224, @matthewmueller)
|
||||||
|
* Tooling: Added yarn integration for development (#317, @thebigredgeek)
|
||||||
|
* Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek)
|
||||||
|
* Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman)
|
||||||
|
* Misc: Updated contributors (@thebigredgeek)
|
||||||
|
|
||||||
|
2.2.0 / 2015-05-09
|
||||||
|
==================
|
||||||
|
|
||||||
|
* package: update "ms" to v0.7.1 (#202, @dougwilson)
|
||||||
|
* README: add logging to file example (#193, @DanielOchoa)
|
||||||
|
* README: fixed a typo (#191, @amir-s)
|
||||||
|
* browser: expose `storage` (#190, @stephenmathieson)
|
||||||
|
* Makefile: add a `distclean` target (#189, @stephenmathieson)
|
||||||
|
|
||||||
|
2.1.3 / 2015-03-13
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Updated stdout/stderr example (#186)
|
||||||
|
* Updated example/stdout.js to match debug current behaviour
|
||||||
|
* Renamed example/stderr.js to stdout.js
|
||||||
|
* Update Readme.md (#184)
|
||||||
|
* replace high intensity foreground color for bold (#182, #183)
|
||||||
|
|
||||||
|
2.1.2 / 2015-03-01
|
||||||
|
==================
|
||||||
|
|
||||||
|
* dist: recompile
|
||||||
|
* update "ms" to v0.7.0
|
||||||
|
* package: update "browserify" to v9.0.3
|
||||||
|
* component: fix "ms.js" repo location
|
||||||
|
* changed bower package name
|
||||||
|
* updated documentation about using debug in a browser
|
||||||
|
* fix: security error on safari (#167, #168, @yields)
|
||||||
|
|
||||||
|
2.1.1 / 2014-12-29
|
||||||
|
==================
|
||||||
|
|
||||||
|
* browser: use `typeof` to check for `console` existence
|
||||||
|
* browser: check for `console.log` truthiness (fix IE 8/9)
|
||||||
|
* browser: add support for Chrome apps
|
||||||
|
* Readme: added Windows usage remarks
|
||||||
|
* Add `bower.json` to properly support bower install
|
||||||
|
|
||||||
|
2.1.0 / 2014-10-15
|
||||||
|
==================
|
||||||
|
|
||||||
|
* node: implement `DEBUG_FD` env variable support
|
||||||
|
* package: update "browserify" to v6.1.0
|
||||||
|
* package: add "license" field to package.json (#135, @panuhorsmalahti)
|
||||||
|
|
||||||
|
2.0.0 / 2014-09-01
|
||||||
|
==================
|
||||||
|
|
||||||
|
* package: update "browserify" to v5.11.0
|
||||||
|
* node: use stderr rather than stdout for logging (#29, @stephenmathieson)
|
||||||
|
|
||||||
|
1.0.4 / 2014-07-15
|
||||||
|
==================
|
||||||
|
|
||||||
|
* dist: recompile
|
||||||
|
* example: remove `console.info()` log usage
|
||||||
|
* example: add "Content-Type" UTF-8 header to browser example
|
||||||
|
* browser: place %c marker after the space character
|
||||||
|
* browser: reset the "content" color via `color: inherit`
|
||||||
|
* browser: add colors support for Firefox >= v31
|
||||||
|
* debug: prefer an instance `log()` function over the global one (#119)
|
||||||
|
* Readme: update documentation about styled console logs for FF v31 (#116, @wryk)
|
||||||
|
|
||||||
|
1.0.3 / 2014-07-09
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Add support for multiple wildcards in namespaces (#122, @seegno)
|
||||||
|
* browser: fix lint
|
||||||
|
|
||||||
|
1.0.2 / 2014-06-10
|
||||||
|
==================
|
||||||
|
|
||||||
|
* browser: update color palette (#113, @gscottolson)
|
||||||
|
* common: make console logging function configurable (#108, @timoxley)
|
||||||
|
* node: fix %o colors on old node <= 0.8.x
|
||||||
|
* Makefile: find node path using shell/which (#109, @timoxley)
|
||||||
|
|
||||||
|
1.0.1 / 2014-06-06
|
||||||
|
==================
|
||||||
|
|
||||||
|
* browser: use `removeItem()` to clear localStorage
|
||||||
|
* browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777)
|
||||||
|
* package: add "contributors" section
|
||||||
|
* node: fix comment typo
|
||||||
|
* README: list authors
|
||||||
|
|
||||||
|
1.0.0 / 2014-06-04
|
||||||
|
==================
|
||||||
|
|
||||||
|
* make ms diff be global, not be scope
|
||||||
|
* debug: ignore empty strings in enable()
|
||||||
|
* node: make DEBUG_COLORS able to disable coloring
|
||||||
|
* *: export the `colors` array
|
||||||
|
* npmignore: don't publish the `dist` dir
|
||||||
|
* Makefile: refactor to use browserify
|
||||||
|
* package: add "browserify" as a dev dependency
|
||||||
|
* Readme: add Web Inspector Colors section
|
||||||
|
* node: reset terminal color for the debug content
|
||||||
|
* node: map "%o" to `util.inspect()`
|
||||||
|
* browser: map "%j" to `JSON.stringify()`
|
||||||
|
* debug: add custom "formatters"
|
||||||
|
* debug: use "ms" module for humanizing the diff
|
||||||
|
* Readme: add "bash" syntax highlighting
|
||||||
|
* browser: add Firebug color support
|
||||||
|
* browser: add colors for WebKit browsers
|
||||||
|
* node: apply log to `console`
|
||||||
|
* rewrite: abstract common logic for Node & browsers
|
||||||
|
* add .jshintrc file
|
||||||
|
|
||||||
|
0.8.1 / 2014-04-14
|
||||||
|
==================
|
||||||
|
|
||||||
|
* package: re-add the "component" section
|
||||||
|
|
||||||
|
0.8.0 / 2014-03-30
|
||||||
|
==================
|
||||||
|
|
||||||
|
* add `enable()` method for nodejs. Closes #27
|
||||||
|
* change from stderr to stdout
|
||||||
|
* remove unnecessary index.js file
|
||||||
|
|
||||||
|
0.7.4 / 2013-11-13
|
||||||
|
==================
|
||||||
|
|
||||||
|
* remove "browserify" key from package.json (fixes something in browserify)
|
||||||
|
|
||||||
|
0.7.3 / 2013-10-30
|
||||||
|
==================
|
||||||
|
|
||||||
|
* fix: catch localStorage security error when cookies are blocked (Chrome)
|
||||||
|
* add debug(err) support. Closes #46
|
||||||
|
* add .browser prop to package.json. Closes #42
|
||||||
|
|
||||||
|
0.7.2 / 2013-02-06
|
||||||
|
==================
|
||||||
|
|
||||||
|
* fix package.json
|
||||||
|
* fix: Mobile Safari (private mode) is broken with debug
|
||||||
|
* fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript
|
||||||
|
|
||||||
|
0.7.1 / 2013-02-05
|
||||||
|
==================
|
||||||
|
|
||||||
|
* add repository URL to package.json
|
||||||
|
* add DEBUG_COLORED to force colored output
|
||||||
|
* add browserify support
|
||||||
|
* fix component. Closes #24
|
||||||
|
|
||||||
|
0.7.0 / 2012-05-04
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added .component to package.json
|
||||||
|
* Added debug.component.js build
|
||||||
|
|
||||||
|
0.6.0 / 2012-03-16
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added support for "-" prefix in DEBUG [Vinay Pulim]
|
||||||
|
* Added `.enabled` flag to the node version [TooTallNate]
|
||||||
|
|
||||||
|
0.5.0 / 2012-02-02
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added: humanize diffs. Closes #8
|
||||||
|
* Added `debug.disable()` to the CS variant
|
||||||
|
* Removed padding. Closes #10
|
||||||
|
* Fixed: persist client-side variant again. Closes #9
|
||||||
|
|
||||||
|
0.4.0 / 2012-02-01
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added browser variant support for older browsers [TooTallNate]
|
||||||
|
* Added `debug.enable('project:*')` to browser variant [TooTallNate]
|
||||||
|
* Added padding to diff (moved it to the right)
|
||||||
|
|
||||||
|
0.3.0 / 2012-01-26
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added millisecond diff when isatty, otherwise UTC string
|
||||||
|
|
||||||
|
0.2.0 / 2012-01-22
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added wildcard support
|
||||||
|
|
||||||
|
0.1.0 / 2011-12-02
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Added: remove colors unless stderr isatty [TooTallNate]
|
||||||
|
|
||||||
|
0.0.1 / 2010-01-03
|
||||||
|
==================
|
||||||
|
|
||||||
|
* Initial release
|
19
app/node_modules/debug/LICENSE
generated
vendored
Normal file
19
app/node_modules/debug/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
(The MIT License)
|
||||||
|
|
||||||
|
Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||||
|
and associated documentation files (the 'Software'), to deal in the Software without restriction,
|
||||||
|
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||||
|
portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||||
|
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
50
app/node_modules/debug/Makefile
generated
vendored
Normal file
50
app/node_modules/debug/Makefile
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# get Makefile directory name: http://stackoverflow.com/a/5982798/376773
|
||||||
|
THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
|
||||||
|
THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)
|
||||||
|
|
||||||
|
# BIN directory
|
||||||
|
BIN := $(THIS_DIR)/node_modules/.bin
|
||||||
|
|
||||||
|
# Path
|
||||||
|
PATH := node_modules/.bin:$(PATH)
|
||||||
|
SHELL := /bin/bash
|
||||||
|
|
||||||
|
# applications
|
||||||
|
NODE ?= $(shell which node)
|
||||||
|
YARN ?= $(shell which yarn)
|
||||||
|
PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm))
|
||||||
|
BROWSERIFY ?= $(NODE) $(BIN)/browserify
|
||||||
|
|
||||||
|
.FORCE:
|
||||||
|
|
||||||
|
install: node_modules
|
||||||
|
|
||||||
|
node_modules: package.json
|
||||||
|
@NODE_ENV= $(PKG) install
|
||||||
|
@touch node_modules
|
||||||
|
|
||||||
|
lint: .FORCE
|
||||||
|
eslint browser.js debug.js index.js node.js
|
||||||
|
|
||||||
|
test-node: .FORCE
|
||||||
|
istanbul cover node_modules/mocha/bin/_mocha -- test/**.js
|
||||||
|
|
||||||
|
test-browser: .FORCE
|
||||||
|
mkdir -p dist
|
||||||
|
|
||||||
|
@$(BROWSERIFY) \
|
||||||
|
--standalone debug \
|
||||||
|
. > dist/debug.js
|
||||||
|
|
||||||
|
karma start --single-run
|
||||||
|
rimraf dist
|
||||||
|
|
||||||
|
test: .FORCE
|
||||||
|
concurrently \
|
||||||
|
"make test-node" \
|
||||||
|
"make test-browser"
|
||||||
|
|
||||||
|
coveralls:
|
||||||
|
cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
|
||||||
|
|
||||||
|
.PHONY: all install clean distclean
|
312
app/node_modules/debug/README.md
generated
vendored
Normal file
312
app/node_modules/debug/README.md
generated
vendored
Normal file
|
@ -0,0 +1,312 @@
|
||||||
|
# debug
|
||||||
|
[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers)
|
||||||
|
[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
A tiny node.js debugging utility modelled after node core's debugging technique.
|
||||||
|
|
||||||
|
**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)**
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm install debug
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
|
||||||
|
|
||||||
|
Example _app.js_:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var debug = require('debug')('http')
|
||||||
|
, http = require('http')
|
||||||
|
, name = 'My App';
|
||||||
|
|
||||||
|
// fake app
|
||||||
|
|
||||||
|
debug('booting %s', name);
|
||||||
|
|
||||||
|
http.createServer(function(req, res){
|
||||||
|
debug(req.method + ' ' + req.url);
|
||||||
|
res.end('hello\n');
|
||||||
|
}).listen(3000, function(){
|
||||||
|
debug('listening');
|
||||||
|
});
|
||||||
|
|
||||||
|
// fake worker of some kind
|
||||||
|
|
||||||
|
require('./worker');
|
||||||
|
```
|
||||||
|
|
||||||
|
Example _worker.js_:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var debug = require('debug')('worker');
|
||||||
|
|
||||||
|
setInterval(function(){
|
||||||
|
debug('doing some work');
|
||||||
|
}, 1000);
|
||||||
|
```
|
||||||
|
|
||||||
|
The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:
|
||||||
|
|
||||||
|
![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)
|
||||||
|
|
||||||
|
![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)
|
||||||
|
|
||||||
|
#### Windows note
|
||||||
|
|
||||||
|
On Windows the environment variable is set using the `set` command.
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
set DEBUG=*,-not_this
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that PowerShell uses different syntax to set environment variables.
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
$env:DEBUG = "*,-not_this"
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, run the program to be debugged as usual.
|
||||||
|
|
||||||
|
## Millisecond diff
|
||||||
|
|
||||||
|
When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls.
|
||||||
|
|
||||||
|
![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)
|
||||||
|
|
||||||
|
When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:
|
||||||
|
|
||||||
|
![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
|
||||||
|
If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser".
|
||||||
|
|
||||||
|
## Wildcards
|
||||||
|
|
||||||
|
The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.
|
||||||
|
|
||||||
|
You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:".
|
||||||
|
|
||||||
|
## Environment Variables
|
||||||
|
|
||||||
|
When running through Node.js, you can set a few environment variables that will
|
||||||
|
change the behavior of the debug logging:
|
||||||
|
|
||||||
|
| Name | Purpose |
|
||||||
|
|-----------|-------------------------------------------------|
|
||||||
|
| `DEBUG` | Enables/disables specific debugging namespaces. |
|
||||||
|
| `DEBUG_COLORS`| Whether or not to use colors in the debug output. |
|
||||||
|
| `DEBUG_DEPTH` | Object inspection depth. |
|
||||||
|
| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. |
|
||||||
|
|
||||||
|
|
||||||
|
__Note:__ The environment variables beginning with `DEBUG_` end up being
|
||||||
|
converted into an Options object that gets used with `%o`/`%O` formatters.
|
||||||
|
See the Node.js documentation for
|
||||||
|
[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options)
|
||||||
|
for the complete list.
|
||||||
|
|
||||||
|
## Formatters
|
||||||
|
|
||||||
|
|
||||||
|
Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters:
|
||||||
|
|
||||||
|
| Formatter | Representation |
|
||||||
|
|-----------|----------------|
|
||||||
|
| `%O` | Pretty-print an Object on multiple lines. |
|
||||||
|
| `%o` | Pretty-print an Object all on a single line. |
|
||||||
|
| `%s` | String. |
|
||||||
|
| `%d` | Number (both integer and float). |
|
||||||
|
| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. |
|
||||||
|
| `%%` | Single percent sign ('%'). This does not consume an argument. |
|
||||||
|
|
||||||
|
### Custom formatters
|
||||||
|
|
||||||
|
You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const createDebug = require('debug')
|
||||||
|
createDebug.formatters.h = (v) => {
|
||||||
|
return v.toString('hex')
|
||||||
|
}
|
||||||
|
|
||||||
|
// …elsewhere
|
||||||
|
const debug = createDebug('foo')
|
||||||
|
debug('this is hex: %h', new Buffer('hello world'))
|
||||||
|
// foo this is hex: 68656c6c6f20776f726c6421 +0ms
|
||||||
|
```
|
||||||
|
|
||||||
|
## Browser support
|
||||||
|
You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify),
|
||||||
|
or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest),
|
||||||
|
if you don't want to build it yourself.
|
||||||
|
|
||||||
|
Debug's enable state is currently persisted by `localStorage`.
|
||||||
|
Consider the situation shown below where you have `worker:a` and `worker:b`,
|
||||||
|
and wish to debug both. You can enable this using `localStorage.debug`:
|
||||||
|
|
||||||
|
```js
|
||||||
|
localStorage.debug = 'worker:*'
|
||||||
|
```
|
||||||
|
|
||||||
|
And then refresh the page.
|
||||||
|
|
||||||
|
```js
|
||||||
|
a = debug('worker:a');
|
||||||
|
b = debug('worker:b');
|
||||||
|
|
||||||
|
setInterval(function(){
|
||||||
|
a('doing some work');
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
setInterval(function(){
|
||||||
|
b('doing some work');
|
||||||
|
}, 1200);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Web Inspector Colors
|
||||||
|
|
||||||
|
Colors are also enabled on "Web Inspectors" that understand the `%c` formatting
|
||||||
|
option. These are WebKit web inspectors, Firefox ([since version
|
||||||
|
31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/))
|
||||||
|
and the Firebug plugin for Firefox (any version).
|
||||||
|
|
||||||
|
Colored output looks something like:
|
||||||
|
|
||||||
|
![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png)
|
||||||
|
|
||||||
|
|
||||||
|
## Output streams
|
||||||
|
|
||||||
|
By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method:
|
||||||
|
|
||||||
|
Example _stdout.js_:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var debug = require('debug');
|
||||||
|
var error = debug('app:error');
|
||||||
|
|
||||||
|
// by default stderr is used
|
||||||
|
error('goes to stderr!');
|
||||||
|
|
||||||
|
var log = debug('app:log');
|
||||||
|
// set this namespace to log via console.log
|
||||||
|
log.log = console.log.bind(console); // don't forget to bind to console!
|
||||||
|
log('goes to stdout');
|
||||||
|
error('still goes to stderr!');
|
||||||
|
|
||||||
|
// set all output to go via console.info
|
||||||
|
// overrides all per-namespace log settings
|
||||||
|
debug.log = console.info.bind(console);
|
||||||
|
error('now goes to stdout via console.info');
|
||||||
|
log('still goes to stdout, but via console.info now');
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
- TJ Holowaychuk
|
||||||
|
- Nathan Rajlich
|
||||||
|
- Andrew Rhyne
|
||||||
|
|
||||||
|
## Backers
|
||||||
|
|
||||||
|
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)]
|
||||||
|
|
||||||
|
<a href="https://opencollective.com/debug/backer/0/website" target="_blank"><img src="https://opencollective.com/debug/backer/0/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/1/website" target="_blank"><img src="https://opencollective.com/debug/backer/1/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/2/website" target="_blank"><img src="https://opencollective.com/debug/backer/2/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/3/website" target="_blank"><img src="https://opencollective.com/debug/backer/3/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/4/website" target="_blank"><img src="https://opencollective.com/debug/backer/4/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/5/website" target="_blank"><img src="https://opencollective.com/debug/backer/5/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/6/website" target="_blank"><img src="https://opencollective.com/debug/backer/6/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/7/website" target="_blank"><img src="https://opencollective.com/debug/backer/7/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/8/website" target="_blank"><img src="https://opencollective.com/debug/backer/8/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/9/website" target="_blank"><img src="https://opencollective.com/debug/backer/9/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/10/website" target="_blank"><img src="https://opencollective.com/debug/backer/10/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/11/website" target="_blank"><img src="https://opencollective.com/debug/backer/11/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/12/website" target="_blank"><img src="https://opencollective.com/debug/backer/12/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/13/website" target="_blank"><img src="https://opencollective.com/debug/backer/13/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/14/website" target="_blank"><img src="https://opencollective.com/debug/backer/14/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/15/website" target="_blank"><img src="https://opencollective.com/debug/backer/15/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/16/website" target="_blank"><img src="https://opencollective.com/debug/backer/16/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/17/website" target="_blank"><img src="https://opencollective.com/debug/backer/17/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/18/website" target="_blank"><img src="https://opencollective.com/debug/backer/18/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/19/website" target="_blank"><img src="https://opencollective.com/debug/backer/19/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/20/website" target="_blank"><img src="https://opencollective.com/debug/backer/20/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/21/website" target="_blank"><img src="https://opencollective.com/debug/backer/21/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/22/website" target="_blank"><img src="https://opencollective.com/debug/backer/22/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/23/website" target="_blank"><img src="https://opencollective.com/debug/backer/23/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/24/website" target="_blank"><img src="https://opencollective.com/debug/backer/24/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/25/website" target="_blank"><img src="https://opencollective.com/debug/backer/25/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/26/website" target="_blank"><img src="https://opencollective.com/debug/backer/26/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/27/website" target="_blank"><img src="https://opencollective.com/debug/backer/27/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/28/website" target="_blank"><img src="https://opencollective.com/debug/backer/28/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/backer/29/website" target="_blank"><img src="https://opencollective.com/debug/backer/29/avatar.svg"></a>
|
||||||
|
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)]
|
||||||
|
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/0/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/0/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/1/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/1/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/2/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/2/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/3/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/3/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/4/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/4/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/5/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/5/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/6/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/6/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/7/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/7/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/8/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/8/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/9/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/9/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/10/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/10/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/11/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/11/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/12/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/12/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/13/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/13/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/14/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/14/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/15/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/15/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/16/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/16/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/17/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/17/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/18/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/18/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/19/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/19/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/20/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/20/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/21/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/21/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/22/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/22/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/23/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/23/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/24/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/24/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/25/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/25/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/26/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/26/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/27/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/27/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/28/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/28/avatar.svg"></a>
|
||||||
|
<a href="https://opencollective.com/debug/sponsor/29/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/29/avatar.svg"></a>
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
(The MIT License)
|
||||||
|
|
||||||
|
Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
'Software'), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
app/node_modules/debug/component.json
generated
vendored
Normal file
19
app/node_modules/debug/component.json
generated
vendored
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"name": "debug",
|
||||||
|
"repo": "visionmedia/debug",
|
||||||
|
"description": "small debugging utility",
|
||||||
|
"version": "2.6.9",
|
||||||
|
"keywords": [
|
||||||
|
"debug",
|
||||||
|
"log",
|
||||||
|
"debugger"
|
||||||
|
],
|
||||||
|
"main": "src/browser.js",
|
||||||
|
"scripts": [
|
||||||
|
"src/browser.js",
|
||||||
|
"src/debug.js"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"rauchg/ms.js": "0.7.1"
|
||||||
|
}
|
||||||
|
}
|
70
app/node_modules/debug/karma.conf.js
generated
vendored
Normal file
70
app/node_modules/debug/karma.conf.js
generated
vendored
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
// Karma configuration
|
||||||
|
// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC)
|
||||||
|
|
||||||
|
module.exports = function(config) {
|
||||||
|
config.set({
|
||||||
|
|
||||||
|
// base path that will be used to resolve all patterns (eg. files, exclude)
|
||||||
|
basePath: '',
|
||||||
|
|
||||||
|
|
||||||
|
// frameworks to use
|
||||||
|
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
|
||||||
|
frameworks: ['mocha', 'chai', 'sinon'],
|
||||||
|
|
||||||
|
|
||||||
|
// list of files / patterns to load in the browser
|
||||||
|
files: [
|
||||||
|
'dist/debug.js',
|
||||||
|
'test/*spec.js'
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
// list of files to exclude
|
||||||
|
exclude: [
|
||||||
|
'src/node.js'
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
|
// preprocess matching files before serving them to the browser
|
||||||
|
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
|
||||||
|
preprocessors: {
|
||||||
|
},
|
||||||
|
|
||||||
|
// test results reporter to use
|
||||||
|
// possible values: 'dots', 'progress'
|
||||||
|
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
|
||||||
|
reporters: ['progress'],
|
||||||
|
|
||||||
|
|
||||||
|
// web server port
|
||||||
|
port: 9876,
|
||||||
|
|
||||||
|
|
||||||
|
// enable / disable colors in the output (reporters and logs)
|
||||||
|
colors: true,
|
||||||
|
|
||||||
|
|
||||||
|
// level of logging
|
||||||
|
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
||||||
|
logLevel: config.LOG_INFO,
|
||||||
|
|
||||||
|
|
||||||
|
// enable / disable watching file and executing tests whenever any file changes
|
||||||
|
autoWatch: true,
|
||||||
|
|
||||||
|
|
||||||
|
// start these browsers
|
||||||
|
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
|
||||||
|
browsers: ['PhantomJS'],
|
||||||
|
|
||||||
|
|
||||||
|
// Continuous Integration mode
|
||||||
|
// if true, Karma captures browsers, runs the tests and exits
|
||||||
|
singleRun: false,
|
||||||
|
|
||||||
|
// Concurrency level
|
||||||
|
// how many browser should be started simultaneous
|
||||||
|
concurrency: Infinity
|
||||||
|
})
|
||||||
|
}
|
1
app/node_modules/debug/node.js
generated
vendored
Normal file
1
app/node_modules/debug/node.js
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
module.exports = require('./src/node');
|
88
app/node_modules/debug/package.json
generated
vendored
Normal file
88
app/node_modules/debug/package.json
generated
vendored
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
"_from": "debug@^2.2.0",
|
||||||
|
"_id": "debug@2.6.9",
|
||||||
|
"_inBundle": false,
|
||||||
|
"_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"_location": "/debug",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"type": "range",
|
||||||
|
"registry": true,
|
||||||
|
"raw": "debug@^2.2.0",
|
||||||
|
"name": "debug",
|
||||||
|
"escapedName": "debug",
|
||||||
|
"rawSpec": "^2.2.0",
|
||||||
|
"saveSpec": null,
|
||||||
|
"fetchSpec": "^2.2.0"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/sumchecker"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"_shasum": "5d128515df134ff327e90a4c93f4e077a536341f",
|
||||||
|
"_spec": "debug@^2.2.0",
|
||||||
|
"_where": "C:\\Users\\ryuki\\TheDesk\\app\\node_modules\\sumchecker",
|
||||||
|
"author": {
|
||||||
|
"name": "TJ Holowaychuk",
|
||||||
|
"email": "tj@vision-media.ca"
|
||||||
|
},
|
||||||
|
"browser": "./src/browser.js",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/visionmedia/debug/issues"
|
||||||
|
},
|
||||||
|
"bundleDependencies": false,
|
||||||
|
"component": {
|
||||||
|
"scripts": {
|
||||||
|
"debug/index.js": "browser.js",
|
||||||
|
"debug/debug.js": "debug.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "Nathan Rajlich",
|
||||||
|
"email": "nathan@tootallnate.net",
|
||||||
|
"url": "http://n8.io"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andrew Rhyne",
|
||||||
|
"email": "rhyneandrew@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
},
|
||||||
|
"deprecated": false,
|
||||||
|
"description": "small debugging utility",
|
||||||
|
"devDependencies": {
|
||||||
|
"browserify": "9.0.3",
|
||||||
|
"chai": "^3.5.0",
|
||||||
|
"concurrently": "^3.1.0",
|
||||||
|
"coveralls": "^2.11.15",
|
||||||
|
"eslint": "^3.12.1",
|
||||||
|
"istanbul": "^0.4.5",
|
||||||
|
"karma": "^1.3.0",
|
||||||
|
"karma-chai": "^0.1.0",
|
||||||
|
"karma-mocha": "^1.3.0",
|
||||||
|
"karma-phantomjs-launcher": "^1.0.2",
|
||||||
|
"karma-sinon": "^1.0.5",
|
||||||
|
"mocha": "^3.2.0",
|
||||||
|
"mocha-lcov-reporter": "^1.2.0",
|
||||||
|
"rimraf": "^2.5.4",
|
||||||
|
"sinon": "^1.17.6",
|
||||||
|
"sinon-chai": "^2.8.0"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/visionmedia/debug#readme",
|
||||||
|
"keywords": [
|
||||||
|
"debug",
|
||||||
|
"log",
|
||||||
|
"debugger"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "./src/index.js",
|
||||||
|
"name": "debug",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git://github.com/visionmedia/debug.git"
|
||||||
|
},
|
||||||
|
"version": "2.6.9"
|
||||||
|
}
|
185
app/node_modules/debug/src/browser.js
generated
vendored
Normal file
185
app/node_modules/debug/src/browser.js
generated
vendored
Normal file
|
@ -0,0 +1,185 @@
|
||||||
|
/**
|
||||||
|
* This is the web browser implementation of `debug()`.
|
||||||
|
*
|
||||||
|
* Expose `debug()` as the module.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports = module.exports = require('./debug');
|
||||||
|
exports.log = log;
|
||||||
|
exports.formatArgs = formatArgs;
|
||||||
|
exports.save = save;
|
||||||
|
exports.load = load;
|
||||||
|
exports.useColors = useColors;
|
||||||
|
exports.storage = 'undefined' != typeof chrome
|
||||||
|
&& 'undefined' != typeof chrome.storage
|
||||||
|
? chrome.storage.local
|
||||||
|
: localstorage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.colors = [
|
||||||
|
'lightseagreen',
|
||||||
|
'forestgreen',
|
||||||
|
'goldenrod',
|
||||||
|
'dodgerblue',
|
||||||
|
'darkorchid',
|
||||||
|
'crimson'
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Currently only WebKit-based Web Inspectors, Firefox >= v31,
|
||||||
|
* and the Firebug extension (any Firefox version) are known
|
||||||
|
* to support "%c" CSS customizations.
|
||||||
|
*
|
||||||
|
* TODO: add a `localStorage` variable to explicitly enable/disable colors
|
||||||
|
*/
|
||||||
|
|
||||||
|
function useColors() {
|
||||||
|
// NB: In an Electron preload script, document will be defined but not fully
|
||||||
|
// initialized. Since we know we're in Chrome, we'll just detect this case
|
||||||
|
// explicitly
|
||||||
|
if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// is webkit? http://stackoverflow.com/a/16459606/376773
|
||||||
|
// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
|
||||||
|
return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
|
||||||
|
// is firebug? http://stackoverflow.com/a/398120/376773
|
||||||
|
(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
|
||||||
|
// is firefox >= v31?
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
|
||||||
|
(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
|
||||||
|
// double check webkit in userAgent just in case we are in a worker
|
||||||
|
(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.formatters.j = function(v) {
|
||||||
|
try {
|
||||||
|
return JSON.stringify(v);
|
||||||
|
} catch (err) {
|
||||||
|
return '[UnexpectedJSONParseError]: ' + err.message;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colorize log arguments if enabled.
|
||||||
|
*
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function formatArgs(args) {
|
||||||
|
var useColors = this.useColors;
|
||||||
|
|
||||||
|
args[0] = (useColors ? '%c' : '')
|
||||||
|
+ this.namespace
|
||||||
|
+ (useColors ? ' %c' : ' ')
|
||||||
|
+ args[0]
|
||||||
|
+ (useColors ? '%c ' : ' ')
|
||||||
|
+ '+' + exports.humanize(this.diff);
|
||||||
|
|
||||||
|
if (!useColors) return;
|
||||||
|
|
||||||
|
var c = 'color: ' + this.color;
|
||||||
|
args.splice(1, 0, c, 'color: inherit')
|
||||||
|
|
||||||
|
// the final "%c" is somewhat tricky, because there could be other
|
||||||
|
// arguments passed either before or after the %c, so we need to
|
||||||
|
// figure out the correct index to insert the CSS into
|
||||||
|
var index = 0;
|
||||||
|
var lastC = 0;
|
||||||
|
args[0].replace(/%[a-zA-Z%]/g, function(match) {
|
||||||
|
if ('%%' === match) return;
|
||||||
|
index++;
|
||||||
|
if ('%c' === match) {
|
||||||
|
// we only are interested in the *last* %c
|
||||||
|
// (the user may have provided their own)
|
||||||
|
lastC = index;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
args.splice(lastC, 0, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invokes `console.log()` when available.
|
||||||
|
* No-op when `console.log` is not a "function".
|
||||||
|
*
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function log() {
|
||||||
|
// this hackery is required for IE8/9, where
|
||||||
|
// the `console.log` function doesn't have 'apply'
|
||||||
|
return 'object' === typeof console
|
||||||
|
&& console.log
|
||||||
|
&& Function.prototype.apply.call(console.log, console, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save `namespaces`.
|
||||||
|
*
|
||||||
|
* @param {String} namespaces
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function save(namespaces) {
|
||||||
|
try {
|
||||||
|
if (null == namespaces) {
|
||||||
|
exports.storage.removeItem('debug');
|
||||||
|
} else {
|
||||||
|
exports.storage.debug = namespaces;
|
||||||
|
}
|
||||||
|
} catch(e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load `namespaces`.
|
||||||
|
*
|
||||||
|
* @return {String} returns the previously persisted debug modes
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function load() {
|
||||||
|
var r;
|
||||||
|
try {
|
||||||
|
r = exports.storage.debug;
|
||||||
|
} catch(e) {}
|
||||||
|
|
||||||
|
// If debug isn't set in LS, and we're in Electron, try to load $DEBUG
|
||||||
|
if (!r && typeof process !== 'undefined' && 'env' in process) {
|
||||||
|
r = process.env.DEBUG;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable namespaces listed in `localStorage.debug` initially.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.enable(load());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Localstorage attempts to return the localstorage.
|
||||||
|
*
|
||||||
|
* This is necessary because safari throws
|
||||||
|
* when a user disables cookies/localstorage
|
||||||
|
* and you attempt to access it.
|
||||||
|
*
|
||||||
|
* @return {LocalStorage}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function localstorage() {
|
||||||
|
try {
|
||||||
|
return window.localStorage;
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
202
app/node_modules/debug/src/debug.js
generated
vendored
Normal file
202
app/node_modules/debug/src/debug.js
generated
vendored
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the common logic for both the Node.js and web browser
|
||||||
|
* implementations of `debug()`.
|
||||||
|
*
|
||||||
|
* Expose `debug()` as the module.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
|
||||||
|
exports.coerce = coerce;
|
||||||
|
exports.disable = disable;
|
||||||
|
exports.enable = enable;
|
||||||
|
exports.enabled = enabled;
|
||||||
|
exports.humanize = require('ms');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The currently active debug mode names, and names to skip.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.names = [];
|
||||||
|
exports.skips = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map of special "%n" handling functions, for the debug "format" argument.
|
||||||
|
*
|
||||||
|
* Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.formatters = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Previous log timestamp.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var prevTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Select a color.
|
||||||
|
* @param {String} namespace
|
||||||
|
* @return {Number}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function selectColor(namespace) {
|
||||||
|
var hash = 0, i;
|
||||||
|
|
||||||
|
for (i in namespace) {
|
||||||
|
hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
|
||||||
|
hash |= 0; // Convert to 32bit integer
|
||||||
|
}
|
||||||
|
|
||||||
|
return exports.colors[Math.abs(hash) % exports.colors.length];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a debugger with the given `namespace`.
|
||||||
|
*
|
||||||
|
* @param {String} namespace
|
||||||
|
* @return {Function}
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function createDebug(namespace) {
|
||||||
|
|
||||||
|
function debug() {
|
||||||
|
// disabled?
|
||||||
|
if (!debug.enabled) return;
|
||||||
|
|
||||||
|
var self = debug;
|
||||||
|
|
||||||
|
// set `diff` timestamp
|
||||||
|
var curr = +new Date();
|
||||||
|
var ms = curr - (prevTime || curr);
|
||||||
|
self.diff = ms;
|
||||||
|
self.prev = prevTime;
|
||||||
|
self.curr = curr;
|
||||||
|
prevTime = curr;
|
||||||
|
|
||||||
|
// turn the `arguments` into a proper Array
|
||||||
|
var args = new Array(arguments.length);
|
||||||
|
for (var i = 0; i < args.length; i++) {
|
||||||
|
args[i] = arguments[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
args[0] = exports.coerce(args[0]);
|
||||||
|
|
||||||
|
if ('string' !== typeof args[0]) {
|
||||||
|
// anything else let's inspect with %O
|
||||||
|
args.unshift('%O');
|
||||||
|
}
|
||||||
|
|
||||||
|
// apply any `formatters` transformations
|
||||||
|
var index = 0;
|
||||||
|
args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
|
||||||
|
// if we encounter an escaped % then don't increase the array index
|
||||||
|
if (match === '%%') return match;
|
||||||
|
index++;
|
||||||
|
var formatter = exports.formatters[format];
|
||||||
|
if ('function' === typeof formatter) {
|
||||||
|
var val = args[index];
|
||||||
|
match = formatter.call(self, val);
|
||||||
|
|
||||||
|
// now we need to remove `args[index]` since it's inlined in the `format`
|
||||||
|
args.splice(index, 1);
|
||||||
|
index--;
|
||||||
|
}
|
||||||
|
return match;
|
||||||
|
});
|
||||||
|
|
||||||
|
// apply env-specific formatting (colors, etc.)
|
||||||
|
exports.formatArgs.call(self, args);
|
||||||
|
|
||||||
|
var logFn = debug.log || exports.log || console.log.bind(console);
|
||||||
|
logFn.apply(self, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
debug.namespace = namespace;
|
||||||
|
debug.enabled = exports.enabled(namespace);
|
||||||
|
debug.useColors = exports.useColors();
|
||||||
|
debug.color = selectColor(namespace);
|
||||||
|
|
||||||
|
// env-specific initialization logic for debug instances
|
||||||
|
if ('function' === typeof exports.init) {
|
||||||
|
exports.init(debug);
|
||||||
|
}
|
||||||
|
|
||||||
|
return debug;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables a debug mode by namespaces. This can include modes
|
||||||
|
* separated by a colon and wildcards.
|
||||||
|
*
|
||||||
|
* @param {String} namespaces
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function enable(namespaces) {
|
||||||
|
exports.save(namespaces);
|
||||||
|
|
||||||
|
exports.names = [];
|
||||||
|
exports.skips = [];
|
||||||
|
|
||||||
|
var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
|
||||||
|
var len = split.length;
|
||||||
|
|
||||||
|
for (var i = 0; i < len; i++) {
|
||||||
|
if (!split[i]) continue; // ignore empty strings
|
||||||
|
namespaces = split[i].replace(/\*/g, '.*?');
|
||||||
|
if (namespaces[0] === '-') {
|
||||||
|
exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
|
||||||
|
} else {
|
||||||
|
exports.names.push(new RegExp('^' + namespaces + '$'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable debug output.
|
||||||
|
*
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function disable() {
|
||||||
|
exports.enable('');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the given mode name is enabled, false otherwise.
|
||||||
|
*
|
||||||
|
* @param {String} name
|
||||||
|
* @return {Boolean}
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function enabled(name) {
|
||||||
|
var i, len;
|
||||||
|
for (i = 0, len = exports.skips.length; i < len; i++) {
|
||||||
|
if (exports.skips[i].test(name)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i = 0, len = exports.names.length; i < len; i++) {
|
||||||
|
if (exports.names[i].test(name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Coerce `val`.
|
||||||
|
*
|
||||||
|
* @param {Mixed} val
|
||||||
|
* @return {Mixed}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function coerce(val) {
|
||||||
|
if (val instanceof Error) return val.stack || val.message;
|
||||||
|
return val;
|
||||||
|
}
|
10
app/node_modules/debug/src/index.js
generated
vendored
Normal file
10
app/node_modules/debug/src/index.js
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
/**
|
||||||
|
* Detect Electron renderer process, which is node, but we should
|
||||||
|
* treat as a browser.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (typeof process !== 'undefined' && process.type === 'renderer') {
|
||||||
|
module.exports = require('./browser.js');
|
||||||
|
} else {
|
||||||
|
module.exports = require('./node.js');
|
||||||
|
}
|
15
app/node_modules/debug/src/inspector-log.js
generated
vendored
Normal file
15
app/node_modules/debug/src/inspector-log.js
generated
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
module.exports = inspectorLog;
|
||||||
|
|
||||||
|
// black hole
|
||||||
|
const nullStream = new (require('stream').Writable)();
|
||||||
|
nullStream._write = () => {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Outputs a `console.log()` to the Node.js Inspector console *only*.
|
||||||
|
*/
|
||||||
|
function inspectorLog() {
|
||||||
|
const stdout = console._stdout;
|
||||||
|
console._stdout = nullStream;
|
||||||
|
console.log.apply(console, arguments);
|
||||||
|
console._stdout = stdout;
|
||||||
|
}
|
248
app/node_modules/debug/src/node.js
generated
vendored
Normal file
248
app/node_modules/debug/src/node.js
generated
vendored
Normal file
|
@ -0,0 +1,248 @@
|
||||||
|
/**
|
||||||
|
* Module dependencies.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var tty = require('tty');
|
||||||
|
var util = require('util');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the Node.js implementation of `debug()`.
|
||||||
|
*
|
||||||
|
* Expose `debug()` as the module.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports = module.exports = require('./debug');
|
||||||
|
exports.init = init;
|
||||||
|
exports.log = log;
|
||||||
|
exports.formatArgs = formatArgs;
|
||||||
|
exports.save = save;
|
||||||
|
exports.load = load;
|
||||||
|
exports.useColors = useColors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Colors.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.colors = [6, 2, 3, 4, 5, 1];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build up the default `inspectOpts` object from the environment variables.
|
||||||
|
*
|
||||||
|
* $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.inspectOpts = Object.keys(process.env).filter(function (key) {
|
||||||
|
return /^debug_/i.test(key);
|
||||||
|
}).reduce(function (obj, key) {
|
||||||
|
// camel-case
|
||||||
|
var prop = key
|
||||||
|
.substring(6)
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });
|
||||||
|
|
||||||
|
// coerce string value into JS value
|
||||||
|
var val = process.env[key];
|
||||||
|
if (/^(yes|on|true|enabled)$/i.test(val)) val = true;
|
||||||
|
else if (/^(no|off|false|disabled)$/i.test(val)) val = false;
|
||||||
|
else if (val === 'null') val = null;
|
||||||
|
else val = Number(val);
|
||||||
|
|
||||||
|
obj[prop] = val;
|
||||||
|
return obj;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The file descriptor to write the `debug()` calls to.
|
||||||
|
* Set the `DEBUG_FD` env variable to override with another value. i.e.:
|
||||||
|
*
|
||||||
|
* $ DEBUG_FD=3 node script.js 3>debug.log
|
||||||
|
*/
|
||||||
|
|
||||||
|
var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
|
||||||
|
|
||||||
|
if (1 !== fd && 2 !== fd) {
|
||||||
|
util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()
|
||||||
|
}
|
||||||
|
|
||||||
|
var stream = 1 === fd ? process.stdout :
|
||||||
|
2 === fd ? process.stderr :
|
||||||
|
createWritableStdioStream(fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is stdout a TTY? Colored output is enabled when `true`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function useColors() {
|
||||||
|
return 'colors' in exports.inspectOpts
|
||||||
|
? Boolean(exports.inspectOpts.colors)
|
||||||
|
: tty.isatty(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map %o to `util.inspect()`, all on a single line.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.formatters.o = function(v) {
|
||||||
|
this.inspectOpts.colors = this.useColors;
|
||||||
|
return util.inspect(v, this.inspectOpts)
|
||||||
|
.split('\n').map(function(str) {
|
||||||
|
return str.trim()
|
||||||
|
}).join(' ');
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map %o to `util.inspect()`, allowing multiple lines if needed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.formatters.O = function(v) {
|
||||||
|
this.inspectOpts.colors = this.useColors;
|
||||||
|
return util.inspect(v, this.inspectOpts);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds ANSI color escape codes if enabled.
|
||||||
|
*
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function formatArgs(args) {
|
||||||
|
var name = this.namespace;
|
||||||
|
var useColors = this.useColors;
|
||||||
|
|
||||||
|
if (useColors) {
|
||||||
|
var c = this.color;
|
||||||
|
var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m';
|
||||||
|
|
||||||
|
args[0] = prefix + args[0].split('\n').join('\n' + prefix);
|
||||||
|
args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m');
|
||||||
|
} else {
|
||||||
|
args[0] = new Date().toUTCString()
|
||||||
|
+ ' ' + name + ' ' + args[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invokes `util.format()` with the specified arguments and writes to `stream`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function log() {
|
||||||
|
return stream.write(util.format.apply(util, arguments) + '\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save `namespaces`.
|
||||||
|
*
|
||||||
|
* @param {String} namespaces
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function save(namespaces) {
|
||||||
|
if (null == namespaces) {
|
||||||
|
// If you set a process.env field to null or undefined, it gets cast to the
|
||||||
|
// string 'null' or 'undefined'. Just delete instead.
|
||||||
|
delete process.env.DEBUG;
|
||||||
|
} else {
|
||||||
|
process.env.DEBUG = namespaces;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load `namespaces`.
|
||||||
|
*
|
||||||
|
* @return {String} returns the previously persisted debug modes
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function load() {
|
||||||
|
return process.env.DEBUG;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copied from `node/src/node.js`.
|
||||||
|
*
|
||||||
|
* XXX: It's lame that node doesn't expose this API out-of-the-box. It also
|
||||||
|
* relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function createWritableStdioStream (fd) {
|
||||||
|
var stream;
|
||||||
|
var tty_wrap = process.binding('tty_wrap');
|
||||||
|
|
||||||
|
// Note stream._type is used for test-module-load-list.js
|
||||||
|
|
||||||
|
switch (tty_wrap.guessHandleType(fd)) {
|
||||||
|
case 'TTY':
|
||||||
|
stream = new tty.WriteStream(fd);
|
||||||
|
stream._type = 'tty';
|
||||||
|
|
||||||
|
// Hack to have stream not keep the event loop alive.
|
||||||
|
// See https://github.com/joyent/node/issues/1726
|
||||||
|
if (stream._handle && stream._handle.unref) {
|
||||||
|
stream._handle.unref();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'FILE':
|
||||||
|
var fs = require('fs');
|
||||||
|
stream = new fs.SyncWriteStream(fd, { autoClose: false });
|
||||||
|
stream._type = 'fs';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'PIPE':
|
||||||
|
case 'TCP':
|
||||||
|
var net = require('net');
|
||||||
|
stream = new net.Socket({
|
||||||
|
fd: fd,
|
||||||
|
readable: false,
|
||||||
|
writable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
// FIXME Should probably have an option in net.Socket to create a
|
||||||
|
// stream from an existing fd which is writable only. But for now
|
||||||
|
// we'll just add this hack and set the `readable` member to false.
|
||||||
|
// Test: ./node test/fixtures/echo.js < /etc/passwd
|
||||||
|
stream.readable = false;
|
||||||
|
stream.read = null;
|
||||||
|
stream._type = 'pipe';
|
||||||
|
|
||||||
|
// FIXME Hack to have stream not keep the event loop alive.
|
||||||
|
// See https://github.com/joyent/node/issues/1726
|
||||||
|
if (stream._handle && stream._handle.unref) {
|
||||||
|
stream._handle.unref();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Probably an error on in uv_guess_handle()
|
||||||
|
throw new Error('Implement me. Unknown stream file type!');
|
||||||
|
}
|
||||||
|
|
||||||
|
// For supporting legacy API we put the FD here.
|
||||||
|
stream.fd = fd;
|
||||||
|
|
||||||
|
stream._isStdio = true;
|
||||||
|
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init logic for `debug` instances.
|
||||||
|
*
|
||||||
|
* Create a new `inspectOpts` object in case `useColors` is set
|
||||||
|
* differently for a particular `debug` instance.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function init (debug) {
|
||||||
|
debug.inspectOpts = {};
|
||||||
|
|
||||||
|
var keys = Object.keys(exports.inspectOpts);
|
||||||
|
for (var i = 0; i < keys.length; i++) {
|
||||||
|
debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable namespaces listed in `process.env.DEBUG` initially.
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.enable(load());
|
152
app/node_modules/ms/index.js
generated
vendored
Normal file
152
app/node_modules/ms/index.js
generated
vendored
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
/**
|
||||||
|
* Helpers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var s = 1000;
|
||||||
|
var m = s * 60;
|
||||||
|
var h = m * 60;
|
||||||
|
var d = h * 24;
|
||||||
|
var y = d * 365.25;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse or format the given `val`.
|
||||||
|
*
|
||||||
|
* Options:
|
||||||
|
*
|
||||||
|
* - `long` verbose formatting [false]
|
||||||
|
*
|
||||||
|
* @param {String|Number} val
|
||||||
|
* @param {Object} [options]
|
||||||
|
* @throws {Error} throw an error if val is not a non-empty string or a number
|
||||||
|
* @return {String|Number}
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = function(val, options) {
|
||||||
|
options = options || {};
|
||||||
|
var type = typeof val;
|
||||||
|
if (type === 'string' && val.length > 0) {
|
||||||
|
return parse(val);
|
||||||
|
} else if (type === 'number' && isNaN(val) === false) {
|
||||||
|
return options.long ? fmtLong(val) : fmtShort(val);
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
'val is not a non-empty string or a valid number. val=' +
|
||||||
|
JSON.stringify(val)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the given `str` and return milliseconds.
|
||||||
|
*
|
||||||
|
* @param {String} str
|
||||||
|
* @return {Number}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function parse(str) {
|
||||||
|
str = String(str);
|
||||||
|
if (str.length > 100) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
|
||||||
|
str
|
||||||
|
);
|
||||||
|
if (!match) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var n = parseFloat(match[1]);
|
||||||
|
var type = (match[2] || 'ms').toLowerCase();
|
||||||
|
switch (type) {
|
||||||
|
case 'years':
|
||||||
|
case 'year':
|
||||||
|
case 'yrs':
|
||||||
|
case 'yr':
|
||||||
|
case 'y':
|
||||||
|
return n * y;
|
||||||
|
case 'days':
|
||||||
|
case 'day':
|
||||||
|
case 'd':
|
||||||
|
return n * d;
|
||||||
|
case 'hours':
|
||||||
|
case 'hour':
|
||||||
|
case 'hrs':
|
||||||
|
case 'hr':
|
||||||
|
case 'h':
|
||||||
|
return n * h;
|
||||||
|
case 'minutes':
|
||||||
|
case 'minute':
|
||||||
|
case 'mins':
|
||||||
|
case 'min':
|
||||||
|
case 'm':
|
||||||
|
return n * m;
|
||||||
|
case 'seconds':
|
||||||
|
case 'second':
|
||||||
|
case 'secs':
|
||||||
|
case 'sec':
|
||||||
|
case 's':
|
||||||
|
return n * s;
|
||||||
|
case 'milliseconds':
|
||||||
|
case 'millisecond':
|
||||||
|
case 'msecs':
|
||||||
|
case 'msec':
|
||||||
|
case 'ms':
|
||||||
|
return n;
|
||||||
|
default:
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Short format for `ms`.
|
||||||
|
*
|
||||||
|
* @param {Number} ms
|
||||||
|
* @return {String}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function fmtShort(ms) {
|
||||||
|
if (ms >= d) {
|
||||||
|
return Math.round(ms / d) + 'd';
|
||||||
|
}
|
||||||
|
if (ms >= h) {
|
||||||
|
return Math.round(ms / h) + 'h';
|
||||||
|
}
|
||||||
|
if (ms >= m) {
|
||||||
|
return Math.round(ms / m) + 'm';
|
||||||
|
}
|
||||||
|
if (ms >= s) {
|
||||||
|
return Math.round(ms / s) + 's';
|
||||||
|
}
|
||||||
|
return ms + 'ms';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Long format for `ms`.
|
||||||
|
*
|
||||||
|
* @param {Number} ms
|
||||||
|
* @return {String}
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
|
||||||
|
function fmtLong(ms) {
|
||||||
|
return plural(ms, d, 'day') ||
|
||||||
|
plural(ms, h, 'hour') ||
|
||||||
|
plural(ms, m, 'minute') ||
|
||||||
|
plural(ms, s, 'second') ||
|
||||||
|
ms + ' ms';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pluralization helper.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function plural(ms, n, name) {
|
||||||
|
if (ms < n) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ms < n * 1.5) {
|
||||||
|
return Math.floor(ms / n) + ' ' + name;
|
||||||
|
}
|
||||||
|
return Math.ceil(ms / n) + ' ' + name + 's';
|
||||||
|
}
|
21
app/node_modules/ms/license.md
generated
vendored
Normal file
21
app/node_modules/ms/license.md
generated
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Zeit, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
69
app/node_modules/ms/package.json
generated
vendored
Normal file
69
app/node_modules/ms/package.json
generated
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
{
|
||||||
|
"_from": "ms@2.0.0",
|
||||||
|
"_id": "ms@2.0.0",
|
||||||
|
"_inBundle": false,
|
||||||
|
"_integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
||||||
|
"_location": "/ms",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"type": "version",
|
||||||
|
"registry": true,
|
||||||
|
"raw": "ms@2.0.0",
|
||||||
|
"name": "ms",
|
||||||
|
"escapedName": "ms",
|
||||||
|
"rawSpec": "2.0.0",
|
||||||
|
"saveSpec": null,
|
||||||
|
"fetchSpec": "2.0.0"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"/debug"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"_shasum": "5608aeadfc00be6c2901df5f9861788de0d597c8",
|
||||||
|
"_spec": "ms@2.0.0",
|
||||||
|
"_where": "C:\\Users\\ryuki\\TheDesk\\app\\node_modules\\debug",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/zeit/ms/issues"
|
||||||
|
},
|
||||||
|
"bundleDependencies": false,
|
||||||
|
"deprecated": false,
|
||||||
|
"description": "Tiny milisecond conversion utility",
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint": "3.19.0",
|
||||||
|
"expect.js": "0.3.1",
|
||||||
|
"husky": "0.13.3",
|
||||||
|
"lint-staged": "3.4.1",
|
||||||
|
"mocha": "3.4.1"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": "eslint:recommended",
|
||||||
|
"env": {
|
||||||
|
"node": true,
|
||||||
|
"es6": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"index.js"
|
||||||
|
],
|
||||||
|
"homepage": "https://github.com/zeit/ms#readme",
|
||||||
|
"license": "MIT",
|
||||||
|
"lint-staged": {
|
||||||
|
"*.js": [
|
||||||
|
"npm run lint",
|
||||||
|
"prettier --single-quote --write",
|
||||||
|
"git add"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"main": "./index",
|
||||||
|
"name": "ms",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/zeit/ms.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"lint": "eslint lib/* bin/*",
|
||||||
|
"precommit": "lint-staged",
|
||||||
|
"test": "mocha tests.js"
|
||||||
|
},
|
||||||
|
"version": "2.0.0"
|
||||||
|
}
|
51
app/node_modules/ms/readme.md
generated
vendored
Normal file
51
app/node_modules/ms/readme.md
generated
vendored
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
# ms
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/zeit/ms.svg?branch=master)](https://travis-ci.org/zeit/ms)
|
||||||
|
[![Slack Channel](http://zeit-slackin.now.sh/badge.svg)](https://zeit.chat/)
|
||||||
|
|
||||||
|
Use this package to easily convert various time formats to milliseconds.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
```js
|
||||||
|
ms('2 days') // 172800000
|
||||||
|
ms('1d') // 86400000
|
||||||
|
ms('10h') // 36000000
|
||||||
|
ms('2.5 hrs') // 9000000
|
||||||
|
ms('2h') // 7200000
|
||||||
|
ms('1m') // 60000
|
||||||
|
ms('5s') // 5000
|
||||||
|
ms('1y') // 31557600000
|
||||||
|
ms('100') // 100
|
||||||
|
```
|
||||||
|
|
||||||
|
### Convert from milliseconds
|
||||||
|
|
||||||
|
```js
|
||||||
|
ms(60000) // "1m"
|
||||||
|
ms(2 * 60000) // "2m"
|
||||||
|
ms(ms('10 hours')) // "10h"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Time format written-out
|
||||||
|
|
||||||
|
```js
|
||||||
|
ms(60000, { long: true }) // "1 minute"
|
||||||
|
ms(2 * 60000, { long: true }) // "2 minutes"
|
||||||
|
ms(ms('10 hours'), { long: true }) // "10 hours"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Works both in [node](https://nodejs.org) and in the browser.
|
||||||
|
- If a number is supplied to `ms`, a string with a unit is returned.
|
||||||
|
- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`).
|
||||||
|
- If you pass a string with a number and a valid unit, the number of equivalent ms is returned.
|
||||||
|
|
||||||
|
## Caught a bug?
|
||||||
|
|
||||||
|
1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
|
||||||
|
2. Link the package to the global module directory: `npm link`
|
||||||
|
3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, node will now use your clone of ms!
|
||||||
|
|
||||||
|
As always, you can run the tests using: `npm test`
|
202
app/node_modules/sumchecker/LICENSE
generated
vendored
Normal file
202
app/node_modules/sumchecker/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,202 @@
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
59
app/node_modules/sumchecker/NEWS.md
generated
vendored
Normal file
59
app/node_modules/sumchecker/NEWS.md
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
# Changes by Version
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
## [2.0.2] - 2017-03-11
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Node 8 support (#6)
|
||||||
|
|
||||||
|
## [2.0.1] - 2017-01-26
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Include `index.js` in the NPM package again
|
||||||
|
|
||||||
|
## [2.0.0] - 2017-01-26
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
* Support for Node 0.10 and 0.12 (#4)
|
||||||
|
|
||||||
|
## [1.3.1] - 2017-03-11
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Node 8 support (#6)
|
||||||
|
|
||||||
|
## [1.3.0] - 2016-12-05
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Human-readable messages for Errors (#2)
|
||||||
|
|
||||||
|
## [1.2.0] - 2016-09-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Support for Node 0.10 and 0.12 via Babel (#1)
|
||||||
|
|
||||||
|
## [1.1.0] - 2016-09-06
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* Optional `defaultTextEncoding` parameter in the `ChecksumValidator` constructor
|
||||||
|
* Access to the underlying `ChecksumValidator` class
|
||||||
|
|
||||||
|
## [1.0.0] - 2016-09-05
|
||||||
|
|
||||||
|
Initial release.
|
||||||
|
|
||||||
|
[2.0.2]: https://github.com/malept/sumchecker/compare/v2.0.1...v2.0.2
|
||||||
|
[2.0.1]: https://github.com/malept/sumchecker/compare/v2.0.0...v2.0.1
|
||||||
|
[2.0.0]: https://github.com/malept/sumchecker/compare/v1.3.0...v2.0.0
|
||||||
|
[1.3.1]: https://github.com/malept/sumchecker/compare/v1.3.0...v1.3.1
|
||||||
|
[1.3.0]: https://github.com/malept/sumchecker/compare/v1.2.0...v1.3.0
|
||||||
|
[1.2.0]: https://github.com/malept/sumchecker/compare/v1.1.0...v1.2.0
|
||||||
|
[1.1.0]: https://github.com/malept/sumchecker/compare/v1.0.0...v1.1.0
|
||||||
|
[1.0.0]: https://github.com/malept/sumchecker/releases/tag/v1.0.0
|
80
app/node_modules/sumchecker/README.md
generated
vendored
Normal file
80
app/node_modules/sumchecker/README.md
generated
vendored
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
# Sumchecker
|
||||||
|
|
||||||
|
[![Travis CI](https://travis-ci.org/malept/sumchecker.svg?branch=master)](https://travis-ci.org/malept/sumchecker)
|
||||||
|
[![AppVeyor CI](https://ci.appveyor.com/api/projects/status/wm4n2r11nlff8ify?svg=true)](https://ci.appveyor.com/project/malept/sumchecker)
|
||||||
|
[![Code Climate](https://codeclimate.com/github/malept/sumchecker/badges/gpa.svg)](https://codeclimate.com/github/malept/sumchecker)
|
||||||
|
[![Test Coverage](https://codeclimate.com/github/malept/sumchecker/badges/coverage.svg)](https://codeclimate.com/github/malept/sumchecker/coverage)
|
||||||
|
|
||||||
|
Sumchecker is a pure Node.js solution to validating files specified in a checksum file, which are
|
||||||
|
usually generated by programs such as [`sha256sum`](https://en.wikipedia.org/wiki/Sha256sum).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
sumchecker(algorithm, checksumFilename, baseDir, filesToCheck)
|
||||||
|
.then(() => {
|
||||||
|
console.log('All files validate!');
|
||||||
|
}, (error) => {
|
||||||
|
console.error('An error occurred', error);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns a [`Promise`](https://www.promisejs.org/). The promise is resolved when all files specified
|
||||||
|
in [`filesToCheck`](#filesToCheck) are validated. The promise is rejected otherwise.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
#### `algorithm`
|
||||||
|
|
||||||
|
`String` - The hash algorithm used in [`checksumFilename`](#checksumFilename). Corresponds to the
|
||||||
|
algorithms allowed by [`crypto.createHash()`].
|
||||||
|
|
||||||
|
#### `checksumFilename`
|
||||||
|
|
||||||
|
`String` - The path to the checksum file.
|
||||||
|
|
||||||
|
#### `baseDir`
|
||||||
|
|
||||||
|
`String` - The base directory for the files specified in [`filesToCheck`](#filesToCheck).
|
||||||
|
|
||||||
|
#### `filesToCheck`
|
||||||
|
|
||||||
|
`Array` or `String` - one or more paths of the files that will be validated, relative to
|
||||||
|
[`baseDir`](#baseDir).
|
||||||
|
|
||||||
|
### Errors
|
||||||
|
|
||||||
|
These are `sumchecker`-specific error classes that are passed to the promise's reject callback.
|
||||||
|
|
||||||
|
#### `sumchecker.ChecksumMismatchError`
|
||||||
|
|
||||||
|
When at least one of the files does not match its expected checksum.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
|
||||||
|
* `filename` (`String`) - a path to a file that did not match
|
||||||
|
|
||||||
|
#### `sumchecker.ChecksumParseError`
|
||||||
|
|
||||||
|
When the checksum file cannot be parsed (as in, it does not match the checksum file format).
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
|
||||||
|
* `lineNumber` (`Number`) - the line number that could not be parsed
|
||||||
|
* `line` (`String`) - the raw line data that could not be parsed, sans newline
|
||||||
|
|
||||||
|
#### `sumchecker.NoChecksumFoundError`
|
||||||
|
|
||||||
|
When at least one of the files specified to check is not listed in the checksum file.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
|
||||||
|
* `filename` (`String`)- a filename from [`filesToCheck`](#filesToCheck)
|
||||||
|
|
||||||
|
## Legal
|
||||||
|
|
||||||
|
This library is copyrighted under the terms of the [Apache 2.0 License].
|
||||||
|
|
||||||
|
[`crypto.createHash()`]: https://nodejs.org/dist/latest-v4.x/docs/api/crypto.html#crypto_crypto_createhash_algorithm
|
||||||
|
[`Promise.all`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
|
||||||
|
[Apache 2.0 License]: http://www.apache.org/licenses/LICENSE-2.0
|
232
app/node_modules/sumchecker/build.js
generated
vendored
Normal file
232
app/node_modules/sumchecker/build.js
generated
vendored
Normal file
|
@ -0,0 +1,232 @@
|
||||||
|
/*
|
||||||
|
Copyright 2016 Mark Lee
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||||
|
|
||||||
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||||
|
|
||||||
|
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||||
|
|
||||||
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||||
|
|
||||||
|
var debug = require('debug')('sumchecker');
|
||||||
|
var crypto = require('crypto');
|
||||||
|
var fs = require('fs');
|
||||||
|
var path = require('path');
|
||||||
|
var Promise = global.Promise || require('es6-promise').Promise;
|
||||||
|
|
||||||
|
var CHECKSUM_LINE = /^([\da-fA-F]+) ([ *])(.+)$/;
|
||||||
|
|
||||||
|
var ErrorWithFilename = function (_Error) {
|
||||||
|
_inherits(ErrorWithFilename, _Error);
|
||||||
|
|
||||||
|
function ErrorWithFilename(filename) {
|
||||||
|
_classCallCheck(this, ErrorWithFilename);
|
||||||
|
|
||||||
|
var _this = _possibleConstructorReturn(this, (ErrorWithFilename.__proto__ || Object.getPrototypeOf(ErrorWithFilename)).call(this));
|
||||||
|
|
||||||
|
_this.filename = filename;
|
||||||
|
return _this;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ErrorWithFilename;
|
||||||
|
}(Error);
|
||||||
|
|
||||||
|
var ChecksumMismatchError = function (_ErrorWithFilename) {
|
||||||
|
_inherits(ChecksumMismatchError, _ErrorWithFilename);
|
||||||
|
|
||||||
|
function ChecksumMismatchError(filename) {
|
||||||
|
_classCallCheck(this, ChecksumMismatchError);
|
||||||
|
|
||||||
|
var _this2 = _possibleConstructorReturn(this, (ChecksumMismatchError.__proto__ || Object.getPrototypeOf(ChecksumMismatchError)).call(this, filename));
|
||||||
|
|
||||||
|
_this2.message = 'Generated checksum for "' + filename + '" did not match expected checksum.';
|
||||||
|
return _this2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ChecksumMismatchError;
|
||||||
|
}(ErrorWithFilename);
|
||||||
|
|
||||||
|
var ChecksumParseError = function (_Error2) {
|
||||||
|
_inherits(ChecksumParseError, _Error2);
|
||||||
|
|
||||||
|
function ChecksumParseError(lineNumber, line) {
|
||||||
|
_classCallCheck(this, ChecksumParseError);
|
||||||
|
|
||||||
|
var _this3 = _possibleConstructorReturn(this, (ChecksumParseError.__proto__ || Object.getPrototypeOf(ChecksumParseError)).call(this));
|
||||||
|
|
||||||
|
_this3.lineNumber = lineNumber;
|
||||||
|
_this3.line = line;
|
||||||
|
_this3.message = 'Could not parse checksum file at line ' + lineNumber + ': ' + line;
|
||||||
|
return _this3;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ChecksumParseError;
|
||||||
|
}(Error);
|
||||||
|
|
||||||
|
var NoChecksumFoundError = function (_ErrorWithFilename2) {
|
||||||
|
_inherits(NoChecksumFoundError, _ErrorWithFilename2);
|
||||||
|
|
||||||
|
function NoChecksumFoundError(filename) {
|
||||||
|
_classCallCheck(this, NoChecksumFoundError);
|
||||||
|
|
||||||
|
var _this4 = _possibleConstructorReturn(this, (NoChecksumFoundError.__proto__ || Object.getPrototypeOf(NoChecksumFoundError)).call(this, filename));
|
||||||
|
|
||||||
|
_this4.message = 'No checksum found in checksum file for "' + filename + '".';
|
||||||
|
return _this4;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NoChecksumFoundError;
|
||||||
|
}(ErrorWithFilename);
|
||||||
|
|
||||||
|
var ChecksumValidator = function () {
|
||||||
|
function ChecksumValidator(algorithm, checksumFilename, options) {
|
||||||
|
_classCallCheck(this, ChecksumValidator);
|
||||||
|
|
||||||
|
this.algorithm = algorithm;
|
||||||
|
this.checksumFilename = checksumFilename;
|
||||||
|
this.checksums = null;
|
||||||
|
|
||||||
|
if (options && options.defaultTextEncoding) {
|
||||||
|
this.defaultTextEncoding = options.defaultTextEncoding;
|
||||||
|
} else {
|
||||||
|
this.defaultTextEncoding = 'utf8';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_createClass(ChecksumValidator, [{
|
||||||
|
key: 'encoding',
|
||||||
|
value: function encoding(binary) {
|
||||||
|
return binary ? 'binary' : this.defaultTextEncoding;
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'parseChecksumFile',
|
||||||
|
value: function parseChecksumFile(data) {
|
||||||
|
var that = this;
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
debug('Parsing checksum file');
|
||||||
|
that.checksums = {};
|
||||||
|
var lineNumber = 0;
|
||||||
|
data.trim().split(/[\r\n]+/).forEach(function (line) {
|
||||||
|
lineNumber += 1;
|
||||||
|
var result = CHECKSUM_LINE.exec(line);
|
||||||
|
if (result === null) {
|
||||||
|
debug('Could not parse line number ' + lineNumber);
|
||||||
|
reject(new ChecksumParseError(lineNumber, line));
|
||||||
|
} else {
|
||||||
|
// destructuring isn't available until Node 6
|
||||||
|
var filename = result[3];
|
||||||
|
var isBinary = result[2] === '*';
|
||||||
|
var checksum = result[1];
|
||||||
|
|
||||||
|
that.checksums[filename] = [checksum, isBinary];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
debug('Parsed checksums:', that.checksums);
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'readFile',
|
||||||
|
value: function readFile(filename, binary) {
|
||||||
|
var _this5 = this;
|
||||||
|
|
||||||
|
debug('Reading "' + filename + ' (binary mode: ' + binary + ')"');
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
fs.readFile(filename, _this5.encoding(binary), function (err, data) {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
} else {
|
||||||
|
resolve(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'validate',
|
||||||
|
value: function validate(baseDir, filesToCheck) {
|
||||||
|
var _this6 = this;
|
||||||
|
|
||||||
|
if (typeof filesToCheck === 'string') {
|
||||||
|
filesToCheck = [filesToCheck];
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.readFile(this.checksumFilename, false).then(this.parseChecksumFile.bind(this)).then(function () {
|
||||||
|
return _this6.validateFiles(baseDir, filesToCheck);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'validateFile',
|
||||||
|
value: function validateFile(baseDir, filename) {
|
||||||
|
var _this7 = this;
|
||||||
|
|
||||||
|
return new Promise(function (resolve, reject) {
|
||||||
|
debug('validateFile: ' + filename);
|
||||||
|
|
||||||
|
var metadata = _this7.checksums[filename];
|
||||||
|
if (!metadata) {
|
||||||
|
return reject(new NoChecksumFoundError(filename));
|
||||||
|
}
|
||||||
|
|
||||||
|
// destructuring isn't available until Node 6
|
||||||
|
var checksum = metadata[0];
|
||||||
|
var binary = metadata[1];
|
||||||
|
|
||||||
|
var fullPath = path.resolve(baseDir, filename);
|
||||||
|
debug('Reading file with "' + _this7.encoding(binary) + '" encoding');
|
||||||
|
var stream = fs.createReadStream(fullPath, { encoding: _this7.encoding(binary) });
|
||||||
|
var hasher = crypto.createHash(_this7.algorithm, { defaultEncoding: 'binary' });
|
||||||
|
hasher.on('readable', function () {
|
||||||
|
var data = hasher.read();
|
||||||
|
if (data) {
|
||||||
|
var calculated = data.toString('hex');
|
||||||
|
|
||||||
|
debug('Expected checksum: ' + checksum + '; Actual: ' + calculated);
|
||||||
|
if (calculated === checksum) {
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
reject(new ChecksumMismatchError(filename));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
stream.pipe(hasher);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
key: 'validateFiles',
|
||||||
|
value: function validateFiles(baseDir, filesToCheck) {
|
||||||
|
var that = this;
|
||||||
|
return Promise.all(filesToCheck.map(function (filename) {
|
||||||
|
return that.validateFile(baseDir, filename);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
return ChecksumValidator;
|
||||||
|
}();
|
||||||
|
|
||||||
|
var sumchecker = function sumchecker(algorithm, checksumFilename, baseDir, filesToCheck) {
|
||||||
|
return new ChecksumValidator(algorithm, checksumFilename).validate(baseDir, filesToCheck);
|
||||||
|
};
|
||||||
|
|
||||||
|
sumchecker.ChecksumMismatchError = ChecksumMismatchError;
|
||||||
|
sumchecker.ChecksumParseError = ChecksumParseError;
|
||||||
|
sumchecker.ChecksumValidator = ChecksumValidator;
|
||||||
|
sumchecker.NoChecksumFoundError = NoChecksumFoundError;
|
||||||
|
|
||||||
|
module.exports = sumchecker;
|
176
app/node_modules/sumchecker/index.js
generated
vendored
Normal file
176
app/node_modules/sumchecker/index.js
generated
vendored
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
/*
|
||||||
|
Copyright 2016 Mark Lee
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const debug = require('debug')('sumchecker')
|
||||||
|
const crypto = require('crypto')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const Promise = global.Promise || require('es6-promise').Promise
|
||||||
|
|
||||||
|
const CHECKSUM_LINE = /^([\da-fA-F]+) ([ *])(.+)$/
|
||||||
|
|
||||||
|
class ErrorWithFilename extends Error {
|
||||||
|
constructor (filename) {
|
||||||
|
super()
|
||||||
|
this.filename = filename
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ChecksumMismatchError extends ErrorWithFilename {
|
||||||
|
constructor (filename) {
|
||||||
|
super(filename)
|
||||||
|
this.message = `Generated checksum for "${filename}" did not match expected checksum.`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ChecksumParseError extends Error {
|
||||||
|
constructor (lineNumber, line) {
|
||||||
|
super()
|
||||||
|
this.lineNumber = lineNumber
|
||||||
|
this.line = line
|
||||||
|
this.message = `Could not parse checksum file at line ${lineNumber}: ${line}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class NoChecksumFoundError extends ErrorWithFilename {
|
||||||
|
constructor (filename) {
|
||||||
|
super(filename)
|
||||||
|
this.message = `No checksum found in checksum file for "${filename}".`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ChecksumValidator {
|
||||||
|
constructor (algorithm, checksumFilename, options) {
|
||||||
|
this.algorithm = algorithm
|
||||||
|
this.checksumFilename = checksumFilename
|
||||||
|
this.checksums = null
|
||||||
|
|
||||||
|
if (options && options.defaultTextEncoding) {
|
||||||
|
this.defaultTextEncoding = options.defaultTextEncoding
|
||||||
|
} else {
|
||||||
|
this.defaultTextEncoding = 'utf8'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
encoding (binary) {
|
||||||
|
return binary ? 'binary' : this.defaultTextEncoding
|
||||||
|
}
|
||||||
|
|
||||||
|
parseChecksumFile (data) {
|
||||||
|
let that = this
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
debug('Parsing checksum file')
|
||||||
|
that.checksums = {}
|
||||||
|
let lineNumber = 0
|
||||||
|
data.trim().split(/[\r\n]+/).forEach(line => {
|
||||||
|
lineNumber += 1
|
||||||
|
let result = CHECKSUM_LINE.exec(line)
|
||||||
|
if (result === null) {
|
||||||
|
debug(`Could not parse line number ${lineNumber}`)
|
||||||
|
reject(new ChecksumParseError(lineNumber, line))
|
||||||
|
} else {
|
||||||
|
// destructuring isn't available until Node 6
|
||||||
|
let filename = result[3]
|
||||||
|
let isBinary = result[2] === '*'
|
||||||
|
let checksum = result[1]
|
||||||
|
|
||||||
|
that.checksums[filename] = [checksum, isBinary]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
debug('Parsed checksums:', that.checksums)
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
readFile (filename, binary) {
|
||||||
|
debug(`Reading "${filename} (binary mode: ${binary})"`)
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
fs.readFile(filename, this.encoding(binary), (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err)
|
||||||
|
} else {
|
||||||
|
resolve(data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
validate (baseDir, filesToCheck) {
|
||||||
|
if (typeof filesToCheck === 'string') {
|
||||||
|
filesToCheck = [filesToCheck]
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.readFile(this.checksumFilename, false)
|
||||||
|
.then(this.parseChecksumFile.bind(this))
|
||||||
|
.then(() => {
|
||||||
|
return this.validateFiles(baseDir, filesToCheck)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
validateFile (baseDir, filename) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
debug(`validateFile: ${filename}`)
|
||||||
|
|
||||||
|
let metadata = this.checksums[filename]
|
||||||
|
if (!metadata) {
|
||||||
|
return reject(new NoChecksumFoundError(filename))
|
||||||
|
}
|
||||||
|
|
||||||
|
// destructuring isn't available until Node 6
|
||||||
|
let checksum = metadata[0]
|
||||||
|
let binary = metadata[1]
|
||||||
|
|
||||||
|
let fullPath = path.resolve(baseDir, filename)
|
||||||
|
debug(`Reading file with "${this.encoding(binary)}" encoding`)
|
||||||
|
let stream = fs.createReadStream(fullPath, {encoding: this.encoding(binary)})
|
||||||
|
let hasher = crypto.createHash(this.algorithm, {defaultEncoding: 'binary'})
|
||||||
|
hasher.on('readable', () => {
|
||||||
|
let data = hasher.read()
|
||||||
|
if (data) {
|
||||||
|
let calculated = data.toString('hex')
|
||||||
|
|
||||||
|
debug(`Expected checksum: ${checksum}; Actual: ${calculated}`)
|
||||||
|
if (calculated === checksum) {
|
||||||
|
resolve()
|
||||||
|
} else {
|
||||||
|
reject(new ChecksumMismatchError(filename))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
stream.pipe(hasher)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
validateFiles (baseDir, filesToCheck) {
|
||||||
|
let that = this
|
||||||
|
return Promise.all(filesToCheck.map((filename) => {
|
||||||
|
return that.validateFile(baseDir, filename)
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let sumchecker = function sumchecker (algorithm, checksumFilename, baseDir, filesToCheck) {
|
||||||
|
return new ChecksumValidator(algorithm, checksumFilename).validate(baseDir, filesToCheck)
|
||||||
|
}
|
||||||
|
|
||||||
|
sumchecker.ChecksumMismatchError = ChecksumMismatchError
|
||||||
|
sumchecker.ChecksumParseError = ChecksumParseError
|
||||||
|
sumchecker.ChecksumValidator = ChecksumValidator
|
||||||
|
sumchecker.NoChecksumFoundError = NoChecksumFoundError
|
||||||
|
|
||||||
|
module.exports = sumchecker
|
81
app/node_modules/sumchecker/package.json
generated
vendored
Normal file
81
app/node_modules/sumchecker/package.json
generated
vendored
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
"_from": "sumchecker",
|
||||||
|
"_id": "sumchecker@2.0.2",
|
||||||
|
"_inBundle": false,
|
||||||
|
"_integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
|
||||||
|
"_location": "/sumchecker",
|
||||||
|
"_phantomChildren": {},
|
||||||
|
"_requested": {
|
||||||
|
"type": "tag",
|
||||||
|
"registry": true,
|
||||||
|
"raw": "sumchecker",
|
||||||
|
"name": "sumchecker",
|
||||||
|
"escapedName": "sumchecker",
|
||||||
|
"rawSpec": "",
|
||||||
|
"saveSpec": null,
|
||||||
|
"fetchSpec": "latest"
|
||||||
|
},
|
||||||
|
"_requiredBy": [
|
||||||
|
"#USER",
|
||||||
|
"/"
|
||||||
|
],
|
||||||
|
"_resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
|
||||||
|
"_shasum": "0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e",
|
||||||
|
"_spec": "sumchecker",
|
||||||
|
"_where": "C:\\Users\\ryuki\\TheDesk\\app",
|
||||||
|
"author": {
|
||||||
|
"name": "Mark Lee"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/malept/sumchecker/issues"
|
||||||
|
},
|
||||||
|
"bundleDependencies": false,
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^2.2.0"
|
||||||
|
},
|
||||||
|
"deprecated": false,
|
||||||
|
"description": "Checksum validator",
|
||||||
|
"devDependencies": {
|
||||||
|
"codeclimate-test-reporter": "^0.4.0",
|
||||||
|
"eslint": "^3.3.1",
|
||||||
|
"eslint-config-standard": "^6.0.0-beta.3",
|
||||||
|
"eslint-plugin-promise": "^3.3.0",
|
||||||
|
"eslint-plugin-standard": "^2.0.0",
|
||||||
|
"intern": "^3.3.1",
|
||||||
|
"nyc": "^8.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4.0"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"env": {
|
||||||
|
"amd": true
|
||||||
|
},
|
||||||
|
"extends": "standard",
|
||||||
|
"parserOptions": {
|
||||||
|
"sourceType": "script"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"strict": [
|
||||||
|
"error"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/malept/sumchecker#readme",
|
||||||
|
"keywords": [
|
||||||
|
"checksum",
|
||||||
|
"hash"
|
||||||
|
],
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"main": "index.js",
|
||||||
|
"name": "sumchecker",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/malept/sumchecker.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"ci": "eslint . && intern-client config=tests/intern suites=tests/index reporters=Lcov reporters=Console && codeclimate-test-reporter < lcov.info",
|
||||||
|
"test": "eslint . && intern-client config=tests/intern suites=tests/index reporters=Pretty"
|
||||||
|
},
|
||||||
|
"version": "2.0.2"
|
||||||
|
}
|
23
app/package-lock.json
generated
23
app/package-lock.json
generated
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "TheDesk",
|
"name": "TheDesk",
|
||||||
"version": "15.5.0",
|
"version": "15.9.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -121,6 +121,14 @@
|
||||||
"assert-plus": "1.0.0"
|
"assert-plus": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"delayed-stream": {
|
"delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
@ -448,6 +456,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz",
|
||||||
"integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="
|
"integrity": "sha1-mi3sg4Bvuy2XXyK+7IWcoms5OqE="
|
||||||
},
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
|
},
|
||||||
"node-notifier": {
|
"node-notifier": {
|
||||||
"version": "5.2.1",
|
"version": "5.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz",
|
||||||
|
@ -646,6 +659,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
||||||
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
|
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
|
||||||
},
|
},
|
||||||
|
"sumchecker": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
|
||||||
|
"integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
|
||||||
|
"requires": {
|
||||||
|
"debug": "2.6.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
"tinycolor2": {
|
"tinycolor2": {
|
||||||
"version": "1.4.1",
|
"version": "1.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "TheDesk",
|
"name": "TheDesk",
|
||||||
"version": "15.9.0",
|
"version": "15.9.1",
|
||||||
"description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです",
|
"description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -12,7 +12,8 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"electron-dl": "^1.11.0",
|
"electron-dl": "^1.11.0",
|
||||||
"jimp": "^0.2.28",
|
"jimp": "^0.2.28",
|
||||||
"node-notifier": "^5.2.1"
|
"node-notifier": "^5.2.1",
|
||||||
|
"sumchecker": "^2.0.2"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"itunes-nowplaying-mac": "^0.2.3"
|
"itunes-nowplaying-mac": "^0.2.3"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user