Browse Source

fine tuning

develop v1.0.0
Carmine De Rosa 7 years ago
parent
commit
042ab03616
  1. BIN
      TMP/COZe - Negozio Livelli.pdf
  2. BIN
      TMP/g42072.png
  3. BIN
      TMP/g42973.png
  4. BIN
      TMP/g43100.png
  5. BIN
      TMP/g45216-4.png
  6. BIN
      TMP/review coze per carmine.pptx
  7. BIN
      TMP/use41625.png
  8. BIN
      TMP/use41627.png
  9. 166
      css/styles.css
  10. BIN
      images/people/fabio.png
  11. BIN
      images/people/luca.png
  12. BIN
      images/people/lucaSel.png
  13. BIN
      images/people/lucia.png
  14. BIN
      images/people/maria.png
  15. BIN
      images/people/mariaSel.png
  16. BIN
      images/people/paolo.png
  17. BIN
      images/people/paoloSel.png
  18. BIN
      images/people/sarah.png
  19. BIN
      images/people/sarahSel.png
  20. BIN
      images/photo-compare.jpg
  21. BIN
      images/photo-compare2.jpg
  22. 4
      js/monitoring-intern.js
  23. 33
      js/monitoring-seller.js
  24. 5
      js/plans.js
  25. 32
      js/scripts.js
  26. 4
      js/training-pull.js
  27. 11
      js/training-push.js
  28. 1
      node_modules/.bin/mime
  29. 212
      node_modules/accepts/HISTORY.md
  30. 23
      node_modules/accepts/LICENSE
  31. 135
      node_modules/accepts/README.md
  32. 231
      node_modules/accepts/index.js
  33. 77
      node_modules/accepts/package.json
  34. 2
      node_modules/after/.npmignore
  35. 12
      node_modules/after/.travis.yml
  36. 19
      node_modules/after/LICENCE
  37. 115
      node_modules/after/README.md
  38. 28
      node_modules/after/index.js
  39. 63
      node_modules/after/package.json
  40. 120
      node_modules/after/test/after-test.js
  41. 21
      node_modules/array-flatten/LICENSE
  42. 43
      node_modules/array-flatten/README.md
  43. 64
      node_modules/array-flatten/array-flatten.js
  44. 64
      node_modules/array-flatten/package.json
  45. 17
      node_modules/arraybuffer.slice/.npmignore
  46. 18
      node_modules/arraybuffer.slice/LICENCE
  47. 8
      node_modules/arraybuffer.slice/Makefile
  48. 17
      node_modules/arraybuffer.slice/README.md
  49. 29
      node_modules/arraybuffer.slice/index.js
  50. 44
      node_modules/arraybuffer.slice/package.json
  51. 227
      node_modules/arraybuffer.slice/test/slice-buffer.js
  52. 7
      node_modules/async-limiter/.travis.yml
  53. 8
      node_modules/async-limiter/LICENSE
  54. 1
      node_modules/async-limiter/coverage/coverage.json
  55. 73
      node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html
  56. 246
      node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html
  57. 182
      node_modules/async-limiter/coverage/lcov-report/base.css
  58. 73
      node_modules/async-limiter/coverage/lcov-report/index.html
  59. 1
      node_modules/async-limiter/coverage/lcov-report/prettify.css
  60. 1
      node_modules/async-limiter/coverage/lcov-report/prettify.js
  61. BIN
      node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png
  62. 156
      node_modules/async-limiter/coverage/lcov-report/sorter.js
  63. 74
      node_modules/async-limiter/coverage/lcov.info
  64. 67
      node_modules/async-limiter/index.js
  65. 69
      node_modules/async-limiter/package.json
  66. 132
      node_modules/async-limiter/readme.md
  67. 1
      node_modules/backo2/.npmignore
  68. 12
      node_modules/backo2/History.md
  69. 8
      node_modules/backo2/Makefile
  70. 34
      node_modules/backo2/Readme.md
  71. 11
      node_modules/backo2/component.json
  72. 85
      node_modules/backo2/index.js
  73. 47
      node_modules/backo2/package.json
  74. 18
      node_modules/backo2/test/index.js
  75. 3
      node_modules/base64-arraybuffer/.npmignore
  76. 19
      node_modules/base64-arraybuffer/.travis.yml
  77. 22
      node_modules/base64-arraybuffer/LICENSE-MIT
  78. 20
      node_modules/base64-arraybuffer/README.md
  79. 67
      node_modules/base64-arraybuffer/lib/base64-arraybuffer.js
  80. 65
      node_modules/base64-arraybuffer/package.json
  81. 3
      node_modules/base64id/.npmignore
  82. 22
      node_modules/base64id/LICENSE
  83. 18
      node_modules/base64id/README.md
  84. 103
      node_modules/base64id/lib/base64id.js
  85. 47
      node_modules/base64id/package.json
  86. 4
      node_modules/better-assert/.npmignore
  87. 15
      node_modules/better-assert/History.md
  88. 5
      node_modules/better-assert/Makefile
  89. 61
      node_modules/better-assert/Readme.md
  90. 10
      node_modules/better-assert/example.js
  91. 38
      node_modules/better-assert/index.js
  92. 65
      node_modules/better-assert/package.json
  93. 2
      node_modules/blob/.npmignore
  94. 14
      node_modules/blob/.zuul.yml
  95. 14
      node_modules/blob/Makefile
  96. 14
      node_modules/blob/README.md
  97. 96
      node_modules/blob/index.js
  98. 48
      node_modules/blob/package.json
  99. 94
      node_modules/blob/test/index.js
  100. 568
      node_modules/body-parser/HISTORY.md

BIN
TMP/COZe - Negozio Livelli.pdf

Binary file not shown.

BIN
TMP/g42072.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

BIN
TMP/g42973.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

BIN
TMP/g43100.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
TMP/g45216-4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

BIN
TMP/review coze per carmine.pptx

Binary file not shown.

BIN
TMP/use41625.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
TMP/use41627.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

166
css/styles.css

@ -14556,12 +14556,13 @@ a:hover {
/* line 81, global.scss */ /* line 81, global.scss */
#MainContent { #MainContent {
top: 50px;
padding-top: 30px;
z-index: 0; z-index: 0;
overflow: hidden; overflow: hidden;
height: 100vh;
} }
/* line 87, global.scss */
/* line 88, global.scss */
#map { #map {
width: 100%; width: 100%;
border-radius: 3px; border-radius: 3px;
@ -14569,7 +14570,7 @@ a:hover {
padding: 10px; padding: 10px;
} }
/* line 96, global.scss */
/* line 97, global.scss */
#dropLoading { #dropLoading {
display: none; display: none;
position: fixed; position: fixed;
@ -14580,7 +14581,7 @@ a:hover {
background: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8);
overflow: hidden; overflow: hidden;
} }
/* line 107, global.scss */
/* line 108, global.scss */
#dropLoading .box { #dropLoading .box {
position: fixed; position: fixed;
height: 220px; height: 220px;
@ -14589,7 +14590,7 @@ a:hover {
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
/* line 115, global.scss */
/* line 116, global.scss */
#dropLoading .box div { #dropLoading .box div {
position: fixed; position: fixed;
top: 50%; top: 50%;
@ -14597,15 +14598,15 @@ a:hover {
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
animation: fade 7s linear 0s 1 normal; animation: fade 7s linear 0s 1 normal;
} }
/* line 123, global.scss */
/* line 124, global.scss */
#dropLoading .box .anim { #dropLoading .box .anim {
animation: pop-up 7s ease-in 0s 1 normal; animation: pop-up 7s ease-in 0s 1 normal;
} }
/* line 127, global.scss */
/* line 128, global.scss */
#dropLoading .box .count { #dropLoading .box .count {
color: white; color: white;
} }
/* line 130, global.scss */
/* line 131, global.scss */
#dropLoading .box .text { #dropLoading .box .text {
width: 100vw; width: 100vw;
color: white; color: white;
@ -14614,14 +14615,14 @@ a:hover {
top: calc(50% + 140px); top: calc(50% + 140px);
} }
/* line 142, global.scss */
/* line 143, global.scss */
.next { .next {
position: absolute; position: absolute;
bottom: 10px; bottom: 10px;
right: 10px; right: 10px;
} }
/* line 150, global.scss */
/* line 151, global.scss */
.login { .login {
position: fixed; position: fixed;
top: 0; top: 0;
@ -14630,7 +14631,7 @@ a:hover {
width: 100%; width: 100%;
z-index: 200; z-index: 200;
} }
/* line 158, global.scss */
/* line 159, global.scss */
.login .head { .login .head {
background: #bf0f3d; background: #bf0f3d;
background-image: url(../images/logo.png); background-image: url(../images/logo.png);
@ -14640,7 +14641,7 @@ a:hover {
height: 25vh; height: 25vh;
width: 100%; width: 100%;
} }
/* line 168, global.scss */
/* line 169, global.scss */
.login .content { .login .content {
position: relative; position: relative;
width: 100%; width: 100%;
@ -14749,6 +14750,13 @@ button.discard,
background: black; background: black;
} }
/* line 54, forms.scss */ /* line 54, forms.scss */
input[type=button].grey,
input[type=submit].grey,
button.grey,
.button.grey {
background: #2f2f2f;
}
/* line 57, forms.scss */
input[type=button].dotted, input[type=button].dotted,
input[type=submit].dotted, input[type=submit].dotted,
button.dotted, button.dotted,
@ -14820,15 +14828,17 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
/* line 2, sections/modules.scss */ /* line 2, sections/modules.scss */
.modules { .modules {
min-height: calc(100vh - 50px);
/* min-height: calc(100vh - 50px); */
height: 100vh;
width: 100%; width: 100%;
} }
/* line 6, sections/modules.scss */
/* line 7, sections/modules.scss */
.modules .sidebar { .modules .sidebar {
min-height: calc(100vh - 50px);
/* min-height: calc(100vh - 50px); */
height: 100vh;
padding: 50px; padding: 50px;
} }
/* line 10, sections/modules.scss */
/* line 12, sections/modules.scss */
.modules .sidebar .div-drag-container { .modules .sidebar .div-drag-container {
width: 100%; width: 100%;
height: 40px; height: 40px;
@ -14840,7 +14850,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
text-align: center; text-align: center;
font-size: 0.75rem; font-size: 0.75rem;
} }
/* line 20, sections/modules.scss */
/* line 22, sections/modules.scss */
.modules .sidebar .div-drag-container .div-drag { .modules .sidebar .div-drag-container .div-drag {
width: 100%; width: 100%;
height: 40px; height: 40px;
@ -14852,24 +14862,24 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
border-radius: 8px; border-radius: 8px;
cursor: grab; cursor: grab;
} }
/* line 34, sections/modules.scss */
/* line 36, sections/modules.scss */
.modules .content { .modules .content {
background: #f2f2f2; background: #f2f2f2;
padding: 50px; padding: 50px;
} }
/* line 39, sections/modules.scss */
/* line 41, sections/modules.scss */
.modules .content .drop-action { .modules .content .drop-action {
transition: .4s; transition: .4s;
} }
/* line 41, sections/modules.scss */
/* line 43, sections/modules.scss */
.modules .content .drop-action.drop-inactive { .modules .content .drop-action.drop-inactive {
opacity: .3; opacity: .3;
} }
/* line 45, sections/modules.scss */
/* line 47, sections/modules.scss */
.modules .content .drop-action.droppable.drop-active { .modules .content .drop-action.droppable.drop-active {
border: 2px solid #bf0f3d; border: 2px solid #bf0f3d;
} }
/* line 51, sections/modules.scss */
/* line 53, sections/modules.scss */
.modules .content .dropdown { .modules .content .dropdown {
height: 40px; height: 40px;
line-height: 36px; line-height: 36px;
@ -14880,13 +14890,13 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
position: relative; position: relative;
transition: .4s; transition: .4s;
} }
/* line 61, sections/modules.scss */
/* line 63, sections/modules.scss */
.modules .content .dropdown .label { .modules .content .dropdown .label {
font-size: 0.75rem; font-size: 0.75rem;
font-weight: bold; font-weight: bold;
color: black; color: black;
} }
/* line 67, sections/modules.scss */
/* line 69, sections/modules.scss */
.modules .content .dropdown .data { .modules .content .dropdown .data {
position: absolute; position: absolute;
font-size: 0.625rem; font-size: 0.625rem;
@ -14895,7 +14905,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
right: 10px; right: 10px;
top: 0; top: 0;
} }
/* line 76, sections/modules.scss */
/* line 78, sections/modules.scss */
.modules .content .dropdown:after { .modules .content .dropdown:after {
content: '\f107'; content: '\f107';
font-family: "FontAwesome"; font-family: "FontAwesome";
@ -14905,31 +14915,31 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
top: 0; top: 0;
right: -25px; right: -25px;
} }
/* line 86, sections/modules.scss */
/* line 88, sections/modules.scss */
.modules .content .dropdown.active { .modules .content .dropdown.active {
border: 2px solid #ccc; border: 2px solid #ccc;
} }
/* line 88, sections/modules.scss */
/* line 90, sections/modules.scss */
.modules .content .dropdown.active:after { .modules .content .dropdown.active:after {
color: #ccc; color: #ccc;
} }
/* line 97, sections/modules.scss */
/* line 99, sections/modules.scss */
.modules .content .dropdown-links .link { .modules .content .dropdown-links .link {
width: 100%; width: 100%;
height: 20px; height: 20px;
border-top: 1px solid #ccc; border-top: 1px solid #ccc;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
} }
/* line 102, sections/modules.scss */
/* line 104, sections/modules.scss */
.modules .content .dropdown-links .link:first-child { .modules .content .dropdown-links .link:first-child {
border-left: 1px solid #ccc; border-left: 1px solid #ccc;
} }
/* line 106, sections/modules.scss */
/* line 108, sections/modules.scss */
.modules .content .dropdown-links .link.source { .modules .content .dropdown-links .link.source {
border: 0; border: 0;
position: relative; position: relative;
} }
/* line 109, sections/modules.scss */
/* line 111, sections/modules.scss */
.modules .content .dropdown-links .link.source:before { .modules .content .dropdown-links .link.source:before {
content: ''; content: '';
position: absolute; position: absolute;
@ -14937,7 +14947,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
height: 100%; height: 100%;
border-left: 1px solid #ccc; border-left: 1px solid #ccc;
} }
/* line 120, sections/modules.scss */
/* line 122, sections/modules.scss */
.modules .content .div-drop { .modules .content .div-drop {
width: 100px; width: 100px;
padding: 10px; padding: 10px;
@ -14948,7 +14958,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
font-size: 0.75rem; font-size: 0.75rem;
border-radius: 8px; border-radius: 8px;
} }
/* line 133, sections/modules.scss */
/* line 135, sections/modules.scss */
.modules .content .user-sheet { .modules .content .user-sheet {
position: relative; position: relative;
background: white; background: white;
@ -14956,13 +14966,13 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
border-radius: 6px; border-radius: 6px;
padding: 90px 15px 15px 15px; padding: 90px 15px 15px 15px;
} }
/* line 140, sections/modules.scss */
/* line 142, sections/modules.scss */
.modules .content .user-sheet .fa { .modules .content .user-sheet .fa {
position: absolute; position: absolute;
left: 15px; left: 15px;
top: 15px; top: 15px;
} }
/* line 145, sections/modules.scss */
/* line 147, sections/modules.scss */
.modules .content .user-sheet .name { .modules .content .user-sheet .name {
position: absolute; position: absolute;
left: 35px; left: 35px;
@ -14970,14 +14980,14 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
font-size: 0.75rem; font-size: 0.75rem;
font-weight: 700; font-weight: 700;
} }
/* line 152, sections/modules.scss */
/* line 154, sections/modules.scss */
.modules .content .user-sheet .rule { .modules .content .user-sheet .rule {
position: absolute; position: absolute;
left: 35px; left: 35px;
top: 35px; top: 35px;
font-size: 0.625rem; font-size: 0.625rem;
} }
/* line 158, sections/modules.scss */
/* line 160, sections/modules.scss */
.modules .content .user-sheet .avatar { .modules .content .user-sheet .avatar {
position: absolute; position: absolute;
right: 15px; right: 15px;
@ -14985,17 +14995,17 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
height: 60px; height: 60px;
width: 60px; width: 60px;
} }
/* line 164, sections/modules.scss */
/* line 166, sections/modules.scss */
.modules .content .user-sheet .avatar img { .modules .content .user-sheet .avatar img {
height: 60px; height: 60px;
width: 60px; width: 60px;
} }
/* line 170, sections/modules.scss */
/* line 172, sections/modules.scss */
.modules .content .user-sheet .modules-title { .modules .content .user-sheet .modules-title {
font-size: 0.5rem; font-size: 0.5rem;
text-transform: uppercase; text-transform: uppercase;
} }
/* line 176, sections/modules.scss */
/* line 178, sections/modules.scss */
.modules .content .user-sheet .modules-container .div-drag { .modules .content .user-sheet .modules-container .div-drag {
width: 100%; width: 100%;
height: 40px; height: 40px;
@ -15007,7 +15017,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
font-size: 0.75rem; font-size: 0.75rem;
border-radius: 8px; border-radius: 8px;
} }
/* line 189, sections/modules.scss */
/* line 191, sections/modules.scss */
.modules .content .user-sheet .modules-empty { .modules .content .user-sheet .modules-empty {
width: 100%; width: 100%;
height: 40px; height: 40px;
@ -15021,7 +15031,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
border-radius: 8px; border-radius: 8px;
} }
/* line 208, sections/modules.scss */
/* line 210, sections/modules.scss */
#dropConfirm { #dropConfirm {
display: none; display: none;
position: fixed; position: fixed;
@ -15032,7 +15042,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
background: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8);
overflow: hidden; overflow: hidden;
} }
/* line 218, sections/modules.scss */
/* line 220, sections/modules.scss */
#dropConfirm .alert { #dropConfirm .alert {
position: fixed; position: fixed;
top: 50%; top: 50%;
@ -15043,7 +15053,7 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
border-radius: 4px; border-radius: 4px;
padding: 30px 80px; padding: 30px 80px;
} }
/* line 229, sections/modules.scss */
/* line 231, sections/modules.scss */
#dropConfirm .alert .title { #dropConfirm .alert .title {
margin: 10px 0 20px 0; margin: 10px 0 20px 0;
font-size: 0.75rem; font-size: 0.75rem;
@ -15052,19 +15062,20 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
/* line 2, sections/compatibility.scss */ /* line 2, sections/compatibility.scss */
.compatibility { .compatibility {
min-height: calc(100vh - 50px);
/* min-height: calc(100vh - 50px); */
height: 100vh;
width: 100%; width: 100%;
} }
/* line 6, sections/compatibility.scss */
/* line 7, sections/compatibility.scss */
.compatibility .content { .compatibility .content {
padding: 0 50px; padding: 0 50px;
} }
/* line 10, sections/compatibility.scss */
/* line 11, sections/compatibility.scss */
.compatibility .content .user-sheet { .compatibility .content .user-sheet {
position: relative; position: relative;
padding-top: 80px; padding-top: 80px;
} }
/* line 13, sections/compatibility.scss */
/* line 14, sections/compatibility.scss */
.compatibility .content .user-sheet .avatar { .compatibility .content .user-sheet .avatar {
position: absolute; position: absolute;
top: 0; top: 0;
@ -15072,12 +15083,12 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
height: 60px; height: 60px;
width: 60px; width: 60px;
} }
/* line 19, sections/compatibility.scss */
/* line 20, sections/compatibility.scss */
.compatibility .content .user-sheet .avatar img { .compatibility .content .user-sheet .avatar img {
height: 60px; height: 60px;
width: 60px; width: 60px;
} }
/* line 24, sections/compatibility.scss */
/* line 25, sections/compatibility.scss */
.compatibility .content .user-sheet .name { .compatibility .content .user-sheet .name {
position: absolute; position: absolute;
left: 85px; left: 85px;
@ -15085,26 +15096,26 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
font-size: 0.75rem; font-size: 0.75rem;
font-weight: 700; font-weight: 700;
} }
/* line 31, sections/compatibility.scss */
/* line 32, sections/compatibility.scss */
.compatibility .content .user-sheet .rule { .compatibility .content .user-sheet .rule {
position: absolute; position: absolute;
left: 85px; left: 85px;
top: 30px; top: 30px;
font-size: 0.625rem; font-size: 0.625rem;
} }
/* line 37, sections/compatibility.scss */
/* line 38, sections/compatibility.scss */
.compatibility .content .user-sheet .sheet-title { .compatibility .content .user-sheet .sheet-title {
font-size: 0.75rem; font-size: 0.75rem;
font-weight: 700; font-weight: 700;
} }
/* line 42, sections/compatibility.scss */
/* line 43, sections/compatibility.scss */
.compatibility .content .user-sheet .sheet-container .value { .compatibility .content .user-sheet .sheet-container .value {
width: 90%; width: 90%;
height: 25px; height: 25px;
background: #ccc; background: #ccc;
margin-bottom: 10px; margin-bottom: 10px;
} }
/* line 47, sections/compatibility.scss */
/* line 48, sections/compatibility.scss */
.compatibility .content .user-sheet .sheet-container .value .percent { .compatibility .content .user-sheet .sheet-container .value .percent {
width: 0%; width: 0%;
height: 25px; height: 25px;
@ -15255,20 +15266,21 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
height: 20px; height: 20px;
width: 20px; width: 20px;
cursor: pointer; cursor: pointer;
z-index: 10;
} }
/* line 136, sections/plans.scss */
/* line 137, sections/plans.scss */
.plans .phone .content .video .video-close:after { .plans .phone .content .video .video-close:after {
content: '\f00d'; content: '\f00d';
font-family: "FontAwesome"; font-family: "FontAwesome";
font-size: 1.25rem; font-size: 1.25rem;
color: white; color: white;
} }
/* line 143, sections/plans.scss */
/* line 144, sections/plans.scss */
.plans .phone .content .video video { .plans .phone .content .video video {
height: 371px; height: 371px;
width: 223px; width: 223px;
} }
/* line 150, sections/plans.scss */
/* line 151, sections/plans.scss */
.plans .phone .input { .plans .phone .input {
position: absolute; position: absolute;
top: 516px; top: 516px;
@ -15446,29 +15458,37 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
width: 50px; width: 50px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: contain; background-size: contain;
background-position: center;
background-position: center bottom;
} }
/* line 164, sections/training.scss */ /* line 164, sections/training.scss */
.training .store .people.luca { .training .store .people.luca {
background-image: url(../images/people/luca.png);
background-image: url(../images/people/lucaSel.png);
} }
/* line 165, sections/training.scss */ /* line 165, sections/training.scss */
.training .store .people.sarah { .training .store .people.sarah {
background-image: url(../images/people/sarah.png);
background-image: url(../images/people/sarahSel.png);
} }
/* line 166, sections/training.scss */ /* line 166, sections/training.scss */
.training .store .people.mariaSel {
background-image: url(../images/people/mariaSel.png);
}
/* line 167, sections/training.scss */
.training .store .people.maria { .training .store .people.maria {
background-image: url(../images/people/maria.png); background-image: url(../images/people/maria.png);
} }
/* line 167, sections/training.scss */
/* line 168, sections/training.scss */
.training .store .people.fabio { .training .store .people.fabio {
background-image: url(../images/people/fabio.png); background-image: url(../images/people/fabio.png);
} }
/* line 168, sections/training.scss */
/* line 169, sections/training.scss */
.training .store .people.lucia { .training .store .people.lucia {
background-image: url(../images/people/lucia.png); background-image: url(../images/people/lucia.png);
} }
/* line 169, sections/training.scss */
/* line 170, sections/training.scss */
.training .store .people.paoloSel {
background-image: url(../images/people/paoloSel.png);
}
/* line 171, sections/training.scss */
.training .store .people.paolo { .training .store .people.paolo {
background-image: url(../images/people/paolo.png); background-image: url(../images/people/paolo.png);
} }
@ -15652,29 +15672,37 @@ header .container .row .menu ul li.active a:hover, header .container .row .menu
width: 50px; width: 50px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: contain; background-size: contain;
background-position: center;
background-position: center bottom;
} }
/* line 162, sections/monitoring.scss */ /* line 162, sections/monitoring.scss */
.monitoring .store .people.luca { .monitoring .store .people.luca {
background-image: url(../images/people/luca.png);
background-image: url(../images/people/lucaSel.png);
} }
/* line 163, sections/monitoring.scss */ /* line 163, sections/monitoring.scss */
.monitoring .store .people.sarah { .monitoring .store .people.sarah {
background-image: url(../images/people/sarah.png);
background-image: url(../images/people/sarahSel.png);
} }
/* line 164, sections/monitoring.scss */ /* line 164, sections/monitoring.scss */
.monitoring .store .people.mariaSel {
background-image: url(../images/people/mariaSel.png);
}
/* line 165, sections/monitoring.scss */
.monitoring .store .people.maria { .monitoring .store .people.maria {
background-image: url(../images/people/maria.png); background-image: url(../images/people/maria.png);
} }
/* line 165, sections/monitoring.scss */
/* line 166, sections/monitoring.scss */
.monitoring .store .people.fabio { .monitoring .store .people.fabio {
background-image: url(../images/people/fabio.png); background-image: url(../images/people/fabio.png);
} }
/* line 166, sections/monitoring.scss */
/* line 167, sections/monitoring.scss */
.monitoring .store .people.lucia { .monitoring .store .people.lucia {
background-image: url(../images/people/lucia.png); background-image: url(../images/people/lucia.png);
} }
/* line 167, sections/monitoring.scss */
/* line 168, sections/monitoring.scss */
.monitoring .store .people.paoloSel {
background-image: url(../images/people/paoloSel.png);
}
/* line 169, sections/monitoring.scss */
.monitoring .store .people.paolo { .monitoring .store .people.paolo {
background-image: url(../images/people/paolo.png); background-image: url(../images/people/paolo.png);
} }

BIN
images/people/fabio.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
images/people/luca.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
images/people/lucaSel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

BIN
images/people/lucia.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
images/people/maria.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
images/people/mariaSel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
images/people/paolo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
images/people/paoloSel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
images/people/sarah.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

BIN
images/people/sarahSel.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
images/photo-compare.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 KiB

BIN
images/photo-compare2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

4
js/monitoring-intern.js

@ -15,9 +15,9 @@ $(document).ready(()=>{
const luca = monitoring.find('.people.luca') const luca = monitoring.find('.people.luca')
const sarah = monitoring.find('.people.sarah') const sarah = monitoring.find('.people.sarah')
const fabio = monitoring.find('.people.fabio') const fabio = monitoring.find('.people.fabio')
const maria = monitoring.find('.people.maria')
const maria = monitoring.find('.people.mariaSel')
const lucia = monitoring.find('.people.lucia') const lucia = monitoring.find('.people.lucia')
const paolo = monitoring.find('.people.paolo')
const paolo = monitoring.find('.people.paoloSel')
luca.css({'top': '425px','left': '370px'}).fadeIn(400) luca.css({'top': '425px','left': '370px'}).fadeIn(400)
sarah.css({'top': '415px','left': '390px'}) sarah.css({'top': '415px','left': '390px'})

33
js/monitoring-seller.js

@ -2,9 +2,10 @@
$(document).ready(()=>{ $(document).ready(()=>{
const monitoring = $('.monitoring') const monitoring = $('.monitoring')
const smartwatch = monitoring.find('.smartwatch')
const phone = monitoring.find('.phone')
const clouds = monitoring.find('.cloud') const clouds = monitoring.find('.cloud')
const content = smartwatch.find('.content')
const content = phone.find('.content')
const action = content.find('.button')
const firstChild = content.find('.cloud').first() const firstChild = content.find('.cloud').first()
const delay = 1200 const delay = 1200
@ -39,16 +40,36 @@ $(document).ready(()=>{
}, delay*3) }, delay*3)
setTimeout(()=>{ setTimeout(()=>{
clouds.fadeIn()
$('#notify1')[0].play()
clouds.each((index,elem)=>{
const el = $(elem)
if(!el.hasClass('scroll')){
$('#notify1')[0].play()
el.fadeIn(500)
}
})
}, delay*6) }, delay*6)
action.on('click', (e)=>{
const elem = $(e.currentTarget)
const show = $('#' + elem.data('cloud'))
let offset = 0
$('#notify1')[0].play()
show.fadeIn(400,()=>{
if(show.hasClass('scroll')){
offset = show.offset().top - content.offset().top - 20
firstChild.animate({'margin-top': '-' + offset},400)
}
})
$('.next').on('click',()=> {
window.location = 'monitoring-seller'
}) })
}) })

5
js/plans.js

@ -82,5 +82,10 @@ $(document).ready(()=>{
}) })
$('.next').on('click',()=> {
window.location = 'training-pull'
})
}) })

32
js/scripts.js

@ -15,3 +15,35 @@ function timeout_trigger(){
} }
$(document).ready(()=>{
for(let i=0; i<5; i++){
setTimeout(()=>{
$('header.red .text-white').fadeOut(200,()=>{
$('header.red .text-white').fadeIn(500)
})
},i*1000)
}
$(document).keydown((event)=> {
// event.preventDefault()
const content = $('.phone .content.focus')
const firstChild = content.find('.cloud').first()
let top = parseInt(firstChild.css('margin-top'))
if(event.key == "ArrowUp"){
top+=70
}
if(event.key == "ArrowDown"){
top-=70
}
firstChild.animate({'margin-top':top})
})
$('.phone .content').on('click',(e)=>{
$('.phone .content').removeClass('focus')
$(e.currentTarget).addClass('focus')
})
})

4
js/training-pull.js

@ -16,9 +16,9 @@ $(document).ready(()=>{
const luca = training.find('.people.luca') const luca = training.find('.people.luca')
const sarah = training.find('.people.sarah') const sarah = training.find('.people.sarah')
const fabio = training.find('.people.fabio') const fabio = training.find('.people.fabio')
const maria = training.find('.people.maria')
const maria = training.find('.people.mariaSel')
const lucia = training.find('.people.lucia') const lucia = training.find('.people.lucia')
const paolo = training.find('.people.paolo')
const paolo = training.find('.people.paoloSel')
luca.css({'top': '425px','left': '370px'}).fadeIn(400) luca.css({'top': '425px','left': '370px'}).fadeIn(400)
sarah.css({'top': '415px','left': '390px'}) sarah.css({'top': '415px','left': '390px'})

11
js/training-push.js

@ -66,18 +66,11 @@ $(document).ready(()=>{
switch(cloudCount){ switch(cloudCount){
case 1: case 1:
newCloud = $('<div class="cloud left">Uomo, Donna, Bambino.</div>')
newCloud = $('<div class="cloud left">Prendisole 192, Shirt 744.</div>')
content.append(newCloud) content.append(newCloud)
newCloud.fadeIn(400) newCloud.fadeIn(400)
/*
newCloud.fadeIn(400,()=>{
offset = newCloud.offset().top - content.offset().top - 20
firstChild.animate({'margin-top': '-' + offset},400)
})
*/
$('#notify1')[0].play()
$('.page-title').text('Richiesta informazioni')
$('#notify1')[0].play()
break; break;

1
node_modules/.bin/mime

@ -0,0 +1 @@
../mime/cli.js

212
node_modules/accepts/HISTORY.md

@ -0,0 +1,212 @@
1.3.3 / 2016-05-02
==================
* deps: mime-types@~2.1.11
- deps: mime-db@~1.23.0
* deps: negotiator@0.6.1
- perf: improve `Accept` parsing speed
- perf: improve `Accept-Charset` parsing speed
- perf: improve `Accept-Encoding` parsing speed
- perf: improve `Accept-Language` parsing speed
1.3.2 / 2016-03-08
==================
* deps: mime-types@~2.1.10
- Fix extension of `application/dash+xml`
- Update primary extension for `audio/mp4`
- deps: mime-db@~1.22.0
1.3.1 / 2016-01-19
==================
* deps: mime-types@~2.1.9
- deps: mime-db@~1.21.0
1.3.0 / 2015-09-29
==================
* deps: mime-types@~2.1.7
- deps: mime-db@~1.19.0
* deps: negotiator@0.6.0
- Fix including type extensions in parameters in `Accept` parsing
- Fix parsing `Accept` parameters with quoted equals
- Fix parsing `Accept` parameters with quoted semicolons
- Lazy-load modules from main entry point
- perf: delay type concatenation until needed
- perf: enable strict mode
- perf: hoist regular expressions
- perf: remove closures getting spec properties
- perf: remove a closure from media type parsing
- perf: remove property delete from media type parsing
1.2.13 / 2015-09-06
===================
* deps: mime-types@~2.1.6
- deps: mime-db@~1.18.0
1.2.12 / 2015-07-30
===================
* deps: mime-types@~2.1.4
- deps: mime-db@~1.16.0
1.2.11 / 2015-07-16
===================
* deps: mime-types@~2.1.3
- deps: mime-db@~1.15.0
1.2.10 / 2015-07-01
===================
* deps: mime-types@~2.1.2
- deps: mime-db@~1.14.0
1.2.9 / 2015-06-08
==================
* deps: mime-types@~2.1.1
- perf: fix deopt during mapping
1.2.8 / 2015-06-07
==================
* deps: mime-types@~2.1.0
- deps: mime-db@~1.13.0
* perf: avoid argument reassignment & argument slice
* perf: avoid negotiator recursive construction
* perf: enable strict mode
* perf: remove unnecessary bitwise operator
1.2.7 / 2015-05-10
==================
* deps: negotiator@0.5.3
- Fix media type parameter matching to be case-insensitive
1.2.6 / 2015-05-07
==================
* deps: mime-types@~2.0.11
- deps: mime-db@~1.9.1
* deps: negotiator@0.5.2
- Fix comparing media types with quoted values
- Fix splitting media types with quoted commas
1.2.5 / 2015-03-13
==================
* deps: mime-types@~2.0.10
- deps: mime-db@~1.8.0
1.2.4 / 2015-02-14
==================
* Support Node.js 0.6
* deps: mime-types@~2.0.9
- deps: mime-db@~1.7.0
* deps: negotiator@0.5.1
- Fix preference sorting to be stable for long acceptable lists
1.2.3 / 2015-01-31
==================
* deps: mime-types@~2.0.8
- deps: mime-db@~1.6.0
1.2.2 / 2014-12-30
==================
* deps: mime-types@~2.0.7
- deps: mime-db@~1.5.0
1.2.1 / 2014-12-30
==================
* deps: mime-types@~2.0.5
- deps: mime-db@~1.3.1
1.2.0 / 2014-12-19
==================
* deps: negotiator@0.5.0
- Fix list return order when large accepted list
- Fix missing identity encoding when q=0 exists
- Remove dynamic building of Negotiator class
1.1.4 / 2014-12-10
==================
* deps: mime-types@~2.0.4
- deps: mime-db@~1.3.0
1.1.3 / 2014-11-09
==================
* deps: mime-types@~2.0.3
- deps: mime-db@~1.2.0
1.1.2 / 2014-10-14
==================
* deps: negotiator@0.4.9
- Fix error when media type has invalid parameter
1.1.1 / 2014-09-28
==================
* deps: mime-types@~2.0.2
- deps: mime-db@~1.1.0
* deps: negotiator@0.4.8
- Fix all negotiations to be case-insensitive
- Stable sort preferences of same quality according to client order
1.1.0 / 2014-09-02
==================
* update `mime-types`
1.0.7 / 2014-07-04
==================
* Fix wrong type returned from `type` when match after unknown extension
1.0.6 / 2014-06-24
==================
* deps: negotiator@0.4.7
1.0.5 / 2014-06-20
==================
* fix crash when unknown extension given
1.0.4 / 2014-06-19
==================
* use `mime-types`
1.0.3 / 2014-06-11
==================
* deps: negotiator@0.4.6
- Order by specificity when quality is the same
1.0.2 / 2014-05-29
==================
* Fix interpretation when header not in request
* deps: pin negotiator@0.4.5
1.0.1 / 2014-01-18
==================
* Identity encoding isn't always acceptable
* deps: negotiator@~0.4.0
1.0.0 / 2013-12-27
==================
* Genesis

23
node_modules/accepts/LICENSE

@ -0,0 +1,23 @@
(The MIT License)
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
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.

135
node_modules/accepts/README.md

@ -0,0 +1,135 @@
# accepts
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Node.js Version][node-version-image]][node-version-url]
[![Build Status][travis-image]][travis-url]
[![Test Coverage][coveralls-image]][coveralls-url]
Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
In addition to negotiator, it allows:
- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`.
- Allows type shorthands such as `json`.
- Returns `false` when no types match
- Treats non-existent headers as `*`
## Installation
```sh
npm install accepts
```
## API
```js
var accepts = require('accepts')
```
### accepts(req)
Create a new `Accepts` object for the given `req`.
#### .charset(charsets)
Return the first accepted charset. If nothing in `charsets` is accepted,
then `false` is returned.
#### .charsets()
Return the charsets that the request accepts, in the order of the client's
preference (most preferred first).
#### .encoding(encodings)
Return the first accepted encoding. If nothing in `encodings` is accepted,
then `false` is returned.
#### .encodings()
Return the encodings that the request accepts, in the order of the client's
preference (most preferred first).
#### .language(languages)
Return the first accepted language. If nothing in `languages` is accepted,
then `false` is returned.
#### .languages()
Return the languages that the request accepts, in the order of the client's
preference (most preferred first).
#### .type(types)
Return the first accepted type (and it is returned as the same text as what
appears in the `types` array). If nothing in `types` is accepted, then `false`
is returned.
The `types` array can contain full MIME types or file extensions. Any value
that is not a full MIME types is passed to `require('mime-types').lookup`.
#### .types()
Return the types that the request accepts, in the order of the client's
preference (most preferred first).
## Examples
### Simple type negotiation
This simple example shows how to use `accepts` to return a different typed
respond body based on what the client wants to accept. The server lists it's
preferences in order and will get back the best match between the client and
server.
```js
var accepts = require('accepts')
var http = require('http')
function app(req, res) {
var accept = accepts(req)
// the order of this list is significant; should be server preferred order
switch(accept.type(['json', 'html'])) {
case 'json':
res.setHeader('Content-Type', 'application/json')
res.write('{"hello":"world!"}')
break
case 'html':
res.setHeader('Content-Type', 'text/html')
res.write('<b>hello, world!</b>')
break
default:
// the fallback is text/plain, so no need to specify it above
res.setHeader('Content-Type', 'text/plain')
res.write('hello, world!')
break
}
res.end()
}
http.createServer(app).listen(3000)
```
You can test this out with the cURL program:
```sh
curl -I -H'Accept: text/html' http://localhost:3000/
```
## License
[MIT](LICENSE)
[npm-image]: https://img.shields.io/npm/v/accepts.svg
[npm-url]: https://npmjs.org/package/accepts
[node-version-image]: https://img.shields.io/node/v/accepts.svg
[node-version-url]: http://nodejs.org/download/
[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg
[travis-url]: https://travis-ci.org/jshttp/accepts
[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg
[coveralls-url]: https://coveralls.io/r/jshttp/accepts
[downloads-image]: https://img.shields.io/npm/dm/accepts.svg
[downloads-url]: https://npmjs.org/package/accepts

231
node_modules/accepts/index.js

@ -0,0 +1,231 @@
/*!
* accepts
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
'use strict'
/**
* Module dependencies.
* @private
*/
var Negotiator = require('negotiator')
var mime = require('mime-types')
/**
* Module exports.
* @public
*/
module.exports = Accepts
/**
* Create a new Accepts object for the given req.
*
* @param {object} req
* @public
*/
function Accepts(req) {
if (!(this instanceof Accepts))
return new Accepts(req)
this.headers = req.headers
this.negotiator = new Negotiator(req)
}
/**
* Check if the given `type(s)` is acceptable, returning
* the best match when true, otherwise `undefined`, in which
* case you should respond with 406 "Not Acceptable".
*
* The `type` value may be a single mime type string
* such as "application/json", the extension name
* such as "json" or an array `["json", "html", "text/plain"]`. When a list
* or array is given the _best_ match, if any is returned.
*
* Examples:
*
* // Accept: text/html
* this.types('html');
* // => "html"
*
* // Accept: text/*, application/json
* this.types('html');
* // => "html"
* this.types('text/html');
* // => "text/html"
* this.types('json', 'text');
* // => "json"
* this.types('application/json');
* // => "application/json"
*
* // Accept: text/*, application/json
* this.types('image/png');
* this.types('png');
* // => undefined
*
* // Accept: text/*;q=.5, application/json
* this.types(['html', 'json']);
* this.types('html', 'json');
* // => "json"
*
* @param {String|Array} types...
* @return {String|Array|Boolean}
* @public
*/
Accepts.prototype.type =
Accepts.prototype.types = function (types_) {
var types = types_
// support flattened arguments
if (types && !Array.isArray(types)) {
types = new Array(arguments.length)
for (var i = 0; i < types.length; i++) {
types[i] = arguments[i]
}
}
// no types, return all requested types
if (!types || types.length === 0) {
return this.negotiator.mediaTypes()
}
if (!this.headers.accept) return types[0];
var mimes = types.map(extToMime);
var accepts = this.negotiator.mediaTypes(mimes.filter(validMime));
var first = accepts[0];
if (!first) return false;
return types[mimes.indexOf(first)];
}
/**
* Return accepted encodings or best fit based on `encodings`.
*
* Given `Accept-Encoding: gzip, deflate`
* an array sorted by quality is returned:
*
* ['gzip', 'deflate']
*
* @param {String|Array} encodings...
* @return {String|Array}
* @public
*/
Accepts.prototype.encoding =
Accepts.prototype.encodings = function (encodings_) {
var encodings = encodings_
// support flattened arguments
if (encodings && !Array.isArray(encodings)) {
encodings = new Array(arguments.length)
for (var i = 0; i < encodings.length; i++) {
encodings[i] = arguments[i]
}
}
// no encodings, return all requested encodings
if (!encodings || encodings.length === 0) {
return this.negotiator.encodings()
}
return this.negotiator.encodings(encodings)[0] || false
}
/**
* Return accepted charsets or best fit based on `charsets`.
*
* Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
* an array sorted by quality is returned:
*
* ['utf-8', 'utf-7', 'iso-8859-1']
*
* @param {String|Array} charsets...
* @return {String|Array}
* @public
*/
Accepts.prototype.charset =
Accepts.prototype.charsets = function (charsets_) {
var charsets = charsets_
// support flattened arguments
if (charsets && !Array.isArray(charsets)) {
charsets = new Array(arguments.length)
for (var i = 0; i < charsets.length; i++) {
charsets[i] = arguments[i]
}
}
// no charsets, return all requested charsets
if (!charsets || charsets.length === 0) {
return this.negotiator.charsets()
}
return this.negotiator.charsets(charsets)[0] || false
}
/**
* Return accepted languages or best fit based on `langs`.
*
* Given `Accept-Language: en;q=0.8, es, pt`
* an array sorted by quality is returned:
*
* ['es', 'pt', 'en']
*
* @param {String|Array} langs...
* @return {Array|String}
* @public
*/
Accepts.prototype.lang =
Accepts.prototype.langs =
Accepts.prototype.language =
Accepts.prototype.languages = function (languages_) {
var languages = languages_
// support flattened arguments
if (languages && !Array.isArray(languages)) {
languages = new Array(arguments.length)
for (var i = 0; i < languages.length; i++) {
languages[i] = arguments[i]
}
}
// no languages, return all requested languages
if (!languages || languages.length === 0) {
return this.negotiator.languages()
}
return this.negotiator.languages(languages)[0] || false
}
/**
* Convert extnames to mime.
*
* @param {String} type
* @return {String}
* @private
*/
function extToMime(type) {
return type.indexOf('/') === -1
? mime.lookup(type)
: type
}
/**
* Check if mime is valid.
*
* @param {String} type
* @return {String}
* @private
*/
function validMime(type) {
return typeof type === 'string';
}

77
node_modules/accepts/package.json

@ -0,0 +1,77 @@
{
"_from": "accepts@1.3.3",
"_id": "accepts@1.3.3",
"_inBundle": false,
"_integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
"_location": "/accepts",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "accepts@1.3.3",
"name": "accepts",
"escapedName": "accepts",
"rawSpec": "1.3.3",
"saveSpec": null,
"fetchSpec": "1.3.3"
},
"_requiredBy": [
"/engine.io"
],
"_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
"_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca",
"_spec": "accepts@1.3.3",
"_where": "/var/www/htdocs/coze/node_modules/engine.io",
"bugs": {
"url": "https://github.com/jshttp/accepts/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Douglas Christopher Wilson",
"email": "doug@somethingdoug.com"
},
{
"name": "Jonathan Ong",
"email": "me@jongleberry.com",
"url": "http://jongleberry.com"
}
],
"dependencies": {
"mime-types": "~2.1.11",
"negotiator": "0.6.1"
},
"deprecated": false,
"description": "Higher-level content negotiation",
"devDependencies": {
"istanbul": "0.4.3",
"mocha": "~1.21.5"
},
"engines": {
"node": ">= 0.6"
},
"files": [
"LICENSE",
"HISTORY.md",
"index.js"
],
"homepage": "https://github.com/jshttp/accepts#readme",
"keywords": [
"content",
"negotiation",
"accept",
"accepts"
],
"license": "MIT",
"name": "accepts",
"repository": {
"type": "git",
"url": "git+https://github.com/jshttp/accepts.git"
},
"scripts": {
"test": "mocha --reporter spec --check-leaks --bail test/",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
},
"version": "1.3.3"
}

2
node_modules/after/.npmignore

@ -0,0 +1,2 @@
node_modules
.monitor

12
node_modules/after/.travis.yml

@ -0,0 +1,12 @@
language: node_js
node_js:
- 0.6
- 0.8
- 0.9
- 0.10
- 0.12
- 4.2.4
- 5.4.1
- iojs-1
- iojs-2
- iojs-3

19
node_modules/after/LICENCE

@ -0,0 +1,19 @@
Copyright (c) 2011 Raynos.
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.

115
node_modules/after/README.md

@ -0,0 +1,115 @@
# After [![Build Status][1]][2]
Invoke callback after n calls
## Status: production ready
## Example
```js
var after = require("after")
var db = require("./db") // some db.
var updateUser = function (req, res) {
// use after to run two tasks in parallel,
// namely get request body and get session
// then run updateUser with the results
var next = after(2, updateUser)
var results = {}
getJSONBody(req, res, function (err, body) {
if (err) return next(err)
results.body = body
next(null, results)
})
getSessionUser(req, res, function (err, user) {
if (err) return next(err)
results.user = user
next(null, results)
})
// now do the thing!
function updateUser(err, result) {
if (err) {
res.statusCode = 500
return res.end("Unexpected Error")
}
if (!result.user || result.user.role !== "admin") {
res.statusCode = 403
return res.end("Permission Denied")
}
db.put("users:" + req.params.userId, result.body, function (err) {
if (err) {
res.statusCode = 500
return res.end("Unexpected Error")
}
res.statusCode = 200
res.end("Ok")
})
}
}
```
## Naive Example
```js
var after = require("after")
, next = after(3, logItWorks)
next()
next()
next() // it works
function logItWorks() {
console.log("it works!")
}
```
## Example with error handling
```js
var after = require("after")
, next = after(3, logError)
next()
next(new Error("oops")) // logs oops
next() // does nothing
// This callback is only called once.
// If there is an error the callback gets called immediately
// this avoids the situation where errors get lost.
function logError(err) {
console.log(err)
}
```
## Installation
`npm install after`
## Tests
`npm test`
## Contributors
- Raynos
- defunctzombie
## MIT Licenced
[1]: https://secure.travis-ci.org/Raynos/after.png
[2]: http://travis-ci.org/Raynos/after
[3]: http://raynos.org/blog/2/Flow-control-in-node.js
[4]: http://stackoverflow.com/questions/6852059/determining-the-end-of-asynchronous-operations-javascript/6852307#6852307
[5]: http://stackoverflow.com/questions/6869872/in-javascript-what-are-best-practices-for-executing-multiple-asynchronous-functi/6870031#6870031
[6]: http://stackoverflow.com/questions/6864397/javascript-performance-long-running-tasks/6889419#6889419
[7]: http://stackoverflow.com/questions/6597493/synchronous-database-queries-with-node-js/6620091#6620091
[8]: http://github.com/Raynos/iterators
[9]: http://github.com/Raynos/composite

28
node_modules/after/index.js

@ -0,0 +1,28 @@
module.exports = after
function after(count, callback, err_cb) {
var bail = false
err_cb = err_cb || noop
proxy.count = count
return (count === 0) ? callback() : proxy
function proxy(err, result) {
if (proxy.count <= 0) {
throw new Error('after called too many times')
}
--proxy.count
// after first error, rest are passed to err_cb
if (err) {
bail = true
callback(err)
// future error callbacks will go to error handler
callback = err_cb
} else if (proxy.count === 0 && !bail) {
callback(null, result)
}
}
}
function noop() {}

63
node_modules/after/package.json

@ -0,0 +1,63 @@
{
"_from": "after@0.8.2",
"_id": "after@0.8.2",
"_inBundle": false,
"_integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
"_location": "/after",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "after@0.8.2",
"name": "after",
"escapedName": "after",
"rawSpec": "0.8.2",
"saveSpec": null,
"fetchSpec": "0.8.2"
},
"_requiredBy": [
"/engine.io-parser"
],
"_resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
"_shasum": "fedb394f9f0e02aa9768e702bda23b505fae7e1f",
"_spec": "after@0.8.2",
"_where": "/var/www/htdocs/coze/node_modules/engine.io-parser",
"author": {
"name": "Raynos",
"email": "raynos2@gmail.com"
},
"bugs": {
"url": "https://github.com/Raynos/after/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Raynos",
"email": "raynos2@gmail.com",
"url": "http://raynos.org"
}
],
"deprecated": false,
"description": "after - tiny flow control",
"devDependencies": {
"mocha": "~1.8.1"
},
"homepage": "https://github.com/Raynos/after#readme",
"keywords": [
"flowcontrol",
"after",
"flow",
"control",
"arch"
],
"license": "MIT",
"name": "after",
"repository": {
"type": "git",
"url": "git://github.com/Raynos/after.git"
},
"scripts": {
"test": "mocha --ui tdd --reporter spec test/*.js"
},
"version": "0.8.2"
}

120
node_modules/after/test/after-test.js

@ -0,0 +1,120 @@
/*global suite, test*/
var assert = require("assert")
, after = require("../")
test("exists", function () {
assert(typeof after === "function", "after is not a function")
})
test("after when called with 0 invokes", function (done) {
after(0, done)
});
test("after 1", function (done) {
var next = after(1, done)
next()
})
test("after 5", function (done) {
var next = after(5, done)
, i = 5
while (i--) {
next()
}
})
test("manipulate count", function (done) {
var next = after(1, done)
, i = 5
next.count = i
while (i--) {
next()
}
})
test("after terminates on error", function (done) {
var next = after(2, function(err) {
assert.equal(err.message, 'test');
done();
})
next(new Error('test'))
next(new Error('test2'))
})
test('gee', function(done) {
done = after(2, done)
function cb(err) {
assert.equal(err.message, 1);
done()
}
var next = after(3, cb, function(err) {
assert.equal(err.message, 2)
done()
});
next()
next(new Error(1))
next(new Error(2))
})
test('eee', function(done) {
done = after(3, done)
function cb(err) {
assert.equal(err.message, 1);
done()
}
var next = after(3, cb, function(err) {
assert.equal(err.message, 2)
done()
});
next(new Error(1))
next(new Error(2))
next(new Error(2))
})
test('gge', function(done) {
function cb(err) {
assert.equal(err.message, 1);
done()
}
var next = after(3, cb, function(err) {
// should not happen
assert.ok(false);
});
next()
next()
next(new Error(1))
})
test('egg', function(done) {
function cb(err) {
assert.equal(err.message, 1);
done()
}
var next = after(3, cb, function(err) {
// should not happen
assert.ok(false);
});
next(new Error(1))
next()
next()
})
test('throws on too many calls', function(done) {
var next = after(1, done);
next()
assert.throws(next, /after called too many times/);
});

21
node_modules/array-flatten/LICENSE

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
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.

43
node_modules/array-flatten/README.md

@ -0,0 +1,43 @@
# Array Flatten
[![NPM version][npm-image]][npm-url]
[![NPM downloads][downloads-image]][downloads-url]
[![Build status][travis-image]][travis-url]
[![Test coverage][coveralls-image]][coveralls-url]
> Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
## Installation
```
npm install array-flatten --save
```
## Usage
```javascript
var flatten = require('array-flatten')
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
(function () {
flatten(arguments) //=> [1, 2, 3]
})(1, [2, 3])
```
## License
MIT
[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
[npm-url]: https://npmjs.org/package/array-flatten
[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
[downloads-url]: https://npmjs.org/package/array-flatten
[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
[travis-url]: https://travis-ci.org/blakeembrey/array-flatten
[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master

64
node_modules/array-flatten/array-flatten.js

@ -0,0 +1,64 @@
'use strict'
/**
* Expose `arrayFlatten`.
*/
module.exports = arrayFlatten
/**
* Recursive flatten function with depth.
*
* @param {Array} array
* @param {Array} result
* @param {Number} depth
* @return {Array}
*/
function flattenWithDepth (array, result, depth) {
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (depth > 0 && Array.isArray(value)) {
flattenWithDepth(value, result, depth - 1)
} else {
result.push(value)
}
}
return result
}
/**
* Recursive flatten function. Omitting depth is slightly faster.
*
* @param {Array} array
* @param {Array} result
* @return {Array}
*/
function flattenForever (array, result) {
for (var i = 0; i < array.length; i++) {
var value = array[i]
if (Array.isArray(value)) {
flattenForever(value, result)
} else {
result.push(value)
}
}
return result
}
/**
* Flatten an array, with the ability to define a depth.
*
* @param {Array} array
* @param {Number} depth
* @return {Array}
*/
function arrayFlatten (array, depth) {
if (depth == null) {
return flattenForever(array, [])
}
return flattenWithDepth(array, [], depth)
}

64
node_modules/array-flatten/package.json

@ -0,0 +1,64 @@
{
"_from": "array-flatten@1.1.1",
"_id": "array-flatten@1.1.1",
"_inBundle": false,
"_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
"_location": "/array-flatten",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "array-flatten@1.1.1",
"name": "array-flatten",
"escapedName": "array-flatten",
"rawSpec": "1.1.1",
"saveSpec": null,
"fetchSpec": "1.1.1"
},
"_requiredBy": [
"/express"
],
"_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
"_spec": "array-flatten@1.1.1",
"_where": "/var/www/htdocs/coze/node_modules/express",
"author": {
"name": "Blake Embrey",
"email": "hello@blakeembrey.com",
"url": "http://blakeembrey.me"
},
"bugs": {
"url": "https://github.com/blakeembrey/array-flatten/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "Flatten an array of nested arrays into a single flat array",
"devDependencies": {
"istanbul": "^0.3.13",
"mocha": "^2.2.4",
"pre-commit": "^1.0.7",
"standard": "^3.7.3"
},
"files": [
"array-flatten.js",
"LICENSE"
],
"homepage": "https://github.com/blakeembrey/array-flatten",
"keywords": [
"array",
"flatten",
"arguments",
"depth"
],
"license": "MIT",
"main": "array-flatten.js",
"name": "array-flatten",
"repository": {
"type": "git",
"url": "git://github.com/blakeembrey/array-flatten.git"
},
"scripts": {
"test": "istanbul cover _mocha -- -R spec"
},
"version": "1.1.1"
}

17
node_modules/arraybuffer.slice/.npmignore

@ -0,0 +1,17 @@
lib-cov
lcov.info
*.seed
*.log
*.csv
*.dat
*.out
*.pid
*.gz
pids
logs
results
build
.grunt
node_modules

18
node_modules/arraybuffer.slice/LICENCE

@ -0,0 +1,18 @@
Copyright (C) 2013 Rase-
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.

8
node_modules/arraybuffer.slice/Makefile

@ -0,0 +1,8 @@
REPORTER = dot
test:
@./node_modules/.bin/mocha \
--reporter $(REPORTER)
.PHONY: test

17
node_modules/arraybuffer.slice/README.md

@ -0,0 +1,17 @@
# How to
```javascript
var sliceBuffer = require('arraybuffer.slice');
var ab = (new Int8Array(5)).buffer;
var sliced = sliceBuffer(ab, 1, 3);
sliced = sliceBuffer(ab, 1);
```
# Licence (MIT)
Copyright (C) 2013 Rase-
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.

29
node_modules/arraybuffer.slice/index.js

@ -0,0 +1,29 @@
/**
* An abstraction for slicing an arraybuffer even when
* ArrayBuffer.prototype.slice is not supported
*
* @api public
*/
module.exports = function(arraybuffer, start, end) {
var bytes = arraybuffer.byteLength;
start = start || 0;
end = end || bytes;
if (arraybuffer.slice) { return arraybuffer.slice(start, end); }
if (start < 0) { start += bytes; }
if (end < 0) { end += bytes; }
if (end > bytes) { end = bytes; }
if (start >= bytes || start >= end || bytes === 0) {
return new ArrayBuffer(0);
}
var abv = new Uint8Array(arraybuffer);
var result = new Uint8Array(end - start);
for (var i = start, ii = 0; i < end; i++, ii++) {
result[ii] = abv[i];
}
return result.buffer;
};

44
node_modules/arraybuffer.slice/package.json

@ -0,0 +1,44 @@
{
"_from": "arraybuffer.slice@~0.0.7",
"_id": "arraybuffer.slice@0.0.7",
"_inBundle": false,
"_integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
"_location": "/arraybuffer.slice",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "arraybuffer.slice@~0.0.7",
"name": "arraybuffer.slice",
"escapedName": "arraybuffer.slice",
"rawSpec": "~0.0.7",
"saveSpec": null,
"fetchSpec": "~0.0.7"
},
"_requiredBy": [
"/engine.io-parser"
],
"_resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
"_shasum": "3bbc4275dd584cc1b10809b89d4e8b63a69e7675",
"_spec": "arraybuffer.slice@~0.0.7",
"_where": "/var/www/htdocs/coze/node_modules/engine.io-parser",
"bugs": {
"url": "https://github.com/rase-/arraybuffer.slice/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Exports a function for slicing ArrayBuffers (no polyfilling)",
"devDependencies": {
"expect.js": "0.2.0",
"mocha": "1.17.1"
},
"homepage": "https://github.com/rase-/arraybuffer.slice",
"license": "MIT",
"name": "arraybuffer.slice",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/rase-/arraybuffer.slice.git"
},
"version": "0.0.7"
}

227
node_modules/arraybuffer.slice/test/slice-buffer.js

@ -0,0 +1,227 @@
/*
* Test dependencies
*/
var sliceBuffer = require('../index.js');
var expect = require('expect.js');
/**
* Tests
*/
describe('sliceBuffer', function() {
describe('using standard slice', function() {
it('should slice correctly with only start provided', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, 3);
var sabv = new Uint8Array(sliced);
for (var i = 3, ii = 0; i < abv.length; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with start and end provided', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, 3, 8);
var sabv = new Uint8Array(sliced);
for (var i = 3, ii = 0; i < 8; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with negative start', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, -3);
var sabv = new Uint8Array(sliced);
for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with negative end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, 0, -3);
var sabv = new Uint8Array(sliced);
for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with negative start and end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, -6, -3);
var sabv = new Uint8Array(sliced);
for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with equal start and end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, 1, 1);
expect(sliced.byteLength).to.equal(0);
});
it('should slice correctly when end larger than buffer', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, 0, 100);
expect(new Uint8Array(sliced)).to.eql(abv);
});
it('shoud slice correctly when start larger than end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var sliced = sliceBuffer(abv.buffer, 6, 5);
expect(sliced.byteLength).to.equal(0);
});
});
describe('using fallback', function() {
it('should slice correctly with only start provided', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, 3);
var sabv = new Uint8Array(sliced);
for (var i = 3, ii = 0; i < abv.length; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with start and end provided', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, 3, 8);
var sabv = new Uint8Array(sliced);
for (var i = 3, ii = 0; i < 8; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with negative start', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, -3);
var sabv = new Uint8Array(sliced);
for (var i = abv.length - 3, ii = 0; i < abv.length; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with negative end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, 0, -3);
var sabv = new Uint8Array(sliced);
for (var i = 0, ii = 0; i < abv.length - 3; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with negative start and end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, -6, -3);
var sabv = new Uint8Array(sliced);
for (var i = abv.length - 6, ii = 0; i < abv.length - 3; i++, ii++) {
expect(abv[i]).to.equal(sabv[ii]);
}
});
it('should slice correctly with equal start and end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, 1, 1);
expect(sliced.byteLength).to.equal(0);
});
it('should slice correctly when end larger than buffer', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, 0, 100);
var sabv = new Uint8Array(sliced);
for (var i = 0; i < abv.length; i++) {
expect(abv[i]).to.equal(sabv[i]);
}
});
it('shoud slice correctly when start larger than end', function() {
var abv = new Uint8Array(10);
for (var i = 0; i < abv.length; i++) {
abv[i] = i;
}
var ab = abv.buffer;
ab.slice = undefined;
var sliced = sliceBuffer(ab, 6, 5);
expect(sliced.byteLength).to.equal(0);
});
});
});

7
node_modules/async-limiter/.travis.yml

@ -0,0 +1,7 @@
language: node_js
node_js:
- "6"
- "node"
script: npm run travis
cache:
yarn: true

8
node_modules/async-limiter/LICENSE

@ -0,0 +1,8 @@
The MIT License (MIT)
Copyright (c) 2017 Samuel Reed <samuel.trace.reed@gmail.com>
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.

1
node_modules/async-limiter/coverage/coverage.json

@ -0,0 +1 @@
{"/Users/samuelreed/git/forks/async-throttle/index.js":{"path":"/Users/samuelreed/git/forks/async-throttle/index.js","s":{"1":1,"2":7,"3":1,"4":6,"5":6,"6":6,"7":6,"8":6,"9":6,"10":1,"11":1,"12":3,"13":13,"14":13,"15":13,"16":1,"17":19,"18":1,"19":45,"20":6,"21":39,"22":13,"23":13,"24":13,"25":13,"26":39,"27":18,"28":6,"29":6,"30":1,"31":6,"32":6,"33":6,"34":1,"35":13,"36":13,"37":1},"b":{"1":[1,6],"2":[6,5],"3":[6,5],"4":[6,39],"5":[13,26],"6":[18,21],"7":[6,0]},"f":{"1":7,"2":3,"3":13,"4":19,"5":45,"6":6,"7":13},"fnMap":{"1":{"name":"Queue","line":3,"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}}},"2":{"name":"(anonymous_2)","line":22,"loc":{"start":{"line":22,"column":24},"end":{"line":22,"column":41}}},"3":{"name":"(anonymous_3)","line":23,"loc":{"start":{"line":23,"column":28},"end":{"line":23,"column":39}}},"4":{"name":"(anonymous_4)","line":31,"loc":{"start":{"line":31,"column":7},"end":{"line":31,"column":18}}},"5":{"name":"(anonymous_5)","line":36,"loc":{"start":{"line":36,"column":23},"end":{"line":36,"column":34}}},"6":{"name":"(anonymous_6)","line":55,"loc":{"start":{"line":55,"column":25},"end":{"line":55,"column":38}}},"7":{"name":"done","line":62,"loc":{"start":{"line":62,"column":0},"end":{"line":62,"column":16}}}},"statementMap":{"1":{"start":{"line":3,"column":0},"end":{"line":14,"column":1}},"2":{"start":{"line":4,"column":2},"end":{"line":6,"column":3}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":30}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":26}},"5":{"start":{"line":9,"column":2},"end":{"line":9,"column":53}},"6":{"start":{"line":10,"column":2},"end":{"line":10,"column":19}},"7":{"start":{"line":11,"column":2},"end":{"line":11,"column":17}},"8":{"start":{"line":12,"column":2},"end":{"line":12,"column":16}},"9":{"start":{"line":13,"column":2},"end":{"line":13,"column":31}},"10":{"start":{"line":16,"column":0},"end":{"line":20,"column":2}},"11":{"start":{"line":22,"column":0},"end":{"line":28,"column":3}},"12":{"start":{"line":23,"column":2},"end":{"line":27,"column":4}},"13":{"start":{"line":24,"column":4},"end":{"line":24,"column":75}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":16}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"16":{"start":{"line":30,"column":0},"end":{"line":34,"column":3}},"17":{"start":{"line":32,"column":4},"end":{"line":32,"column":43}},"18":{"start":{"line":36,"column":0},"end":{"line":53,"column":2}},"19":{"start":{"line":37,"column":2},"end":{"line":39,"column":3}},"20":{"start":{"line":38,"column":4},"end":{"line":38,"column":11}},"21":{"start":{"line":40,"column":2},"end":{"line":45,"column":3}},"22":{"start":{"line":41,"column":4},"end":{"line":41,"column":32}},"23":{"start":{"line":42,"column":4},"end":{"line":42,"column":19}},"24":{"start":{"line":43,"column":4},"end":{"line":43,"column":20}},"25":{"start":{"line":44,"column":4},"end":{"line":44,"column":16}},"26":{"start":{"line":47,"column":2},"end":{"line":52,"column":3}},"27":{"start":{"line":48,"column":4},"end":{"line":51,"column":5}},"28":{"start":{"line":49,"column":6},"end":{"line":49,"column":30}},"29":{"start":{"line":50,"column":6},"end":{"line":50,"column":27}},"30":{"start":{"line":55,"column":0},"end":{"line":60,"column":2}},"31":{"start":{"line":56,"column":2},"end":{"line":59,"column":3}},"32":{"start":{"line":57,"column":4},"end":{"line":57,"column":22}},"33":{"start":{"line":58,"column":4},"end":{"line":58,"column":16}},"34":{"start":{"line":62,"column":0},"end":{"line":65,"column":1}},"35":{"start":{"line":63,"column":2},"end":{"line":63,"column":17}},"36":{"start":{"line":64,"column":2},"end":{"line":64,"column":14}},"37":{"start":{"line":67,"column":0},"end":{"line":67,"column":23}}},"branchMap":{"1":{"line":4,"type":"if","locations":[{"start":{"line":4,"column":2},"end":{"line":4,"column":2}},{"start":{"line":4,"column":2},"end":{"line":4,"column":2}}]},"2":{"line":8,"type":"binary-expr","locations":[{"start":{"line":8,"column":12},"end":{"line":8,"column":19}},{"start":{"line":8,"column":23},"end":{"line":8,"column":25}}]},"3":{"line":9,"type":"binary-expr","locations":[{"start":{"line":9,"column":21},"end":{"line":9,"column":40}},{"start":{"line":9,"column":44},"end":{"line":9,"column":52}}]},"4":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":2},"end":{"line":37,"column":2}},{"start":{"line":37,"column":2},"end":{"line":37,"column":2}}]},"5":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":2},"end":{"line":40,"column":2}},{"start":{"line":40,"column":2},"end":{"line":40,"column":2}}]},"6":{"line":47,"type":"if","locations":[{"start":{"line":47,"column":2},"end":{"line":47,"column":2}},{"start":{"line":47,"column":2},"end":{"line":47,"column":2}}]},"7":{"line":56,"type":"if","locations":[{"start":{"line":56,"column":2},"end":{"line":56,"column":2}},{"start":{"line":56,"column":2},"end":{"line":56,"column":2}}]}}}}

73
node_modules/async-limiter/coverage/lcov-report/async-throttle/index.html

@ -0,0 +1,73 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for async-throttle/</title>
<meta charset="utf-8">
<link rel="stylesheet" href="../prettify.css">
<link rel="stylesheet" href="../base.css">
<style type='text/css'>
div.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class="header high">
<h1>Code coverage report for <span class="entity">async-throttle/</span></h1>
<h2>
Statements: <span class="metric">100% <small>(37 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Branches: <span class="metric">92.86% <small>(13 / 14)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Functions: <span class="metric">100% <small>(7 / 7)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Lines: <span class="metric">100% <small>(37 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
</h2>
<div class="path"><a href="../index.html">All files</a> &#187; async-throttle/</div>
</div>
<div class="body">
<div class="coverage-summary">
<table>
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
<td data-value="100" class="pct high">100%</td>
<td data-value="37" class="abs high">(37&nbsp;/&nbsp;37)</td>
<td data-value="92.86" class="pct high">92.86%</td>
<td data-value="14" class="abs high">(13&nbsp;/&nbsp;14)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">(7&nbsp;/&nbsp;7)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="37" class="abs high">(37&nbsp;/&nbsp;37)</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Sep 11 2017 11:14:14 GMT-0500 (CDT)</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="../sorter.js"></script>
</body>
</html>

246
node_modules/async-limiter/coverage/lcov-report/async-throttle/index.js.html

@ -0,0 +1,246 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for async-throttle/index.js</title>
<meta charset="utf-8">
<link rel="stylesheet" href="../prettify.css">
<link rel="stylesheet" href="../base.css">
<style type='text/css'>
div.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class="header high">
<h1>Code coverage report for <span class="entity">async-throttle/index.js</span></h1>
<h2>
Statements: <span class="metric">100% <small>(37 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Branches: <span class="metric">92.86% <small>(13 / 14)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Functions: <span class="metric">100% <small>(7 / 7)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Lines: <span class="metric">100% <small>(37 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
</h2>
<div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">async-throttle/</a> &#187; index.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">45</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">39</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">39</span>
<span class="cline-any cline-yes">18</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
&nbsp;
function Queue(options) {
if (!(this instanceof Queue)) {
return new Queue(options);
}
&nbsp;
options = options || {};
this.concurrency = options.concurrency || Infinity;
this.pending = 0;
this.jobs = [];
this.cbs = [];
this._done = done.bind(this);
}
&nbsp;
var arrayAddMethods = [
'push',
'unshift',
'splice'
];
&nbsp;
arrayAddMethods.forEach(function(method) {
Queue.prototype[method] = function() {
var methodResult = Array.prototype[method].apply(this.jobs, arguments);
this._run();
return methodResult;
};
});
&nbsp;
Object.defineProperty(Queue.prototype, 'length', {
get: function() {
return this.pending + this.jobs.length;
}
});
&nbsp;
Queue.prototype._run = function() {
if (this.pending === this.concurrency) {
return;
}
if (this.jobs.length) {
var job = this.jobs.shift();
this.pending++;
job(this._done);
this._run();
}
&nbsp;
if (this.pending === 0) {
while (this.cbs.length !== 0) {
var cb = this.cbs.pop();
process.nextTick(cb);
}
}
};
&nbsp;
Queue.prototype.onDone = function(cb) {
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof cb === 'function') {
this.cbs.push(cb);
this._run();
}
};
&nbsp;
function done() {
this.pending--;
this._run();
}
&nbsp;
module.exports = Queue;
&nbsp;</pre></td></tr>
</table></pre>
</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Sep 11 2017 11:14:14 GMT-0500 (CDT)</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="../sorter.js"></script>
</body>
</html>

182
node_modules/async-limiter/coverage/lcov-report/base.css

@ -0,0 +1,182 @@
body, html {
margin:0; padding: 0;
}
body {
font-family: Helvetica Neue, Helvetica,Arial;
font-size: 10pt;
}
div.header, div.footer {
background: #eee;
padding: 1em;
}
div.header {
z-index: 100;
position: fixed;
top: 0;
border-bottom: 1px solid #666;
width: 100%;
}
div.footer {
border-top: 1px solid #666;
}
div.body {
margin-top: 10em;
}
div.meta {
font-size: 90%;
text-align: center;
}
h1, h2, h3 {
font-weight: normal;
}
h1 {
font-size: 12pt;
}
h2 {
font-size: 10pt;
}
pre {
font-family: Consolas, Menlo, Monaco, monospace;
margin: 0;
padding: 0;
line-height: 1.3;
font-size: 14px;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
div.path { font-size: 110%; }
div.path a:link, div.path a:visited { color: #000; }
table.coverage { border-collapse: collapse; margin:0; padding: 0 }
table.coverage td {
margin: 0;
padding: 0;
color: #111;
vertical-align: top;
}
table.coverage td.line-count {
width: 50px;
text-align: right;
padding-right: 5px;
}
table.coverage td.line-coverage {
color: #777 !important;
text-align: right;
border-left: 1px solid #666;
border-right: 1px solid #666;
}
table.coverage td.text {
}
table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 40px;
}
table.coverage td span.cline-neutral {
background: #eee;
}
table.coverage td span.cline-yes {
background: #b5d592;
color: #999;
}
table.coverage td span.cline-no {
background: #fc8c84;
}
.cstat-yes { color: #111; }
.cstat-no { background: #fc8c84; color: #111; }
.fstat-no { background: #ffc520; color: #111 !important; }
.cbranch-no { background: yellow !important; color: #111; }
.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }
.missing-if-branch {
display: inline-block;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: black;
color: yellow;
}
.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.entity, .metric { font-weight: bold; }
.metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
.metric small { font-size: 80%; font-weight: normal; color: #666; }
div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
div.coverage-summary th.file { border-right: none !important; }
div.coverage-summary th.pic { border-left: none !important; text-align: right; }
div.coverage-summary th.pct { border-right: none !important; }
div.coverage-summary th.abs { border-left: none !important; text-align: right; }
div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
div.coverage-summary td.file { border-left: 1px solid #666; white-space: nowrap; }
div.coverage-summary td.pic { min-width: 120px !important; }
div.coverage-summary a:link { text-decoration: none; color: #000; }
div.coverage-summary a:visited { text-decoration: none; color: #777; }
div.coverage-summary a:hover { text-decoration: underline; }
div.coverage-summary tfoot td { border-top: 1px solid #666; }
div.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
div.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
div.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.high { background: #b5d592 !important; }
.medium { background: #ffe87c !important; }
.low { background: #fc8c84 !important; }
span.cover-fill, span.cover-empty {
display:inline-block;
border:1px solid #444;
background: white;
height: 12px;
}
span.cover-fill {
background: #ccc;
border-right: 1px solid #444;
}
span.cover-empty {
background: white;
border-left: none;
}
span.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }

73
node_modules/async-limiter/coverage/lcov-report/index.html

@ -0,0 +1,73 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8">
<link rel="stylesheet" href="prettify.css">
<link rel="stylesheet" href="base.css">
<style type='text/css'>
div.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class="header high">
<h1>Code coverage report for <span class="entity">All files</span></h1>
<h2>
Statements: <span class="metric">100% <small>(37 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Branches: <span class="metric">92.86% <small>(13 / 14)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Functions: <span class="metric">100% <small>(7 / 7)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Lines: <span class="metric">100% <small>(37 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
</h2>
<div class="path"></div>
</div>
<div class="body">
<div class="coverage-summary">
<table>
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="async-throttle/"><a href="async-throttle/index.html">async-throttle/</a></td>
<td data-value="100" class="pic high"><span class="cover-fill cover-full" style="width: 100px;"></span><span class="cover-empty" style="width:0px;"></span></td>
<td data-value="100" class="pct high">100%</td>
<td data-value="37" class="abs high">(37&nbsp;/&nbsp;37)</td>
<td data-value="92.86" class="pct high">92.86%</td>
<td data-value="14" class="abs high">(13&nbsp;/&nbsp;14)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">(7&nbsp;/&nbsp;7)</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="37" class="abs high">(37&nbsp;/&nbsp;37)</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="footer">
<div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Sep 11 2017 11:14:14 GMT-0500 (CDT)</div>
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="sorter.js"></script>
</body>
</html>

1
node_modules/async-limiter/coverage/lcov-report/prettify.css

@ -0,0 +1 @@
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}

1
node_modules/async-limiter/coverage/lcov-report/prettify.js

File diff suppressed because one or more lines are too long

BIN
node_modules/async-limiter/coverage/lcov-report/sort-arrow-sprite.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

156
node_modules/async-limiter/coverage/lcov-report/sorter.js

@ -0,0 +1,156 @@
var addSorting = (function () {
"use strict";
var cols,
currentSort = {
index: 0,
desc: false
};
// returns the summary table element
function getTable() { return document.querySelector('.coverage-summary table'); }
// returns the thead element of the summary table
function getTableHeader() { return getTable().querySelector('thead tr'); }
// returns the tbody element of the summary table
function getTableBody() { return getTable().querySelector('tbody'); }
// returns the th element for nth column
function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
// loads all columns
function loadColumns() {
var colNodes = getTableHeader().querySelectorAll('th'),
colNode,
cols = [],
col,
i;
for (i = 0; i < colNodes.length; i += 1) {
colNode = colNodes[i];
col = {
key: colNode.getAttribute('data-col'),
sortable: !colNode.getAttribute('data-nosort'),
type: colNode.getAttribute('data-type') || 'string'
};
cols.push(col);
if (col.sortable) {
col.defaultDescSort = col.type === 'number';
colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>';
}
}
return cols;
}
// attaches a data attribute to every tr element with an object
// of data values keyed by column name
function loadRowData(tableRow) {
var tableCols = tableRow.querySelectorAll('td'),
colNode,
col,
data = {},
i,
val;
for (i = 0; i < tableCols.length; i += 1) {
colNode = tableCols[i];
col = cols[i];
val = colNode.getAttribute('data-value');
if (col.type === 'number') {
val = Number(val);
}
data[col.key] = val;
}
return data;
}
// loads all row data
function loadData() {
var rows = getTableBody().querySelectorAll('tr'),
i;
for (i = 0; i < rows.length; i += 1) {
rows[i].data = loadRowData(rows[i]);
}
}
// sorts the table using the data for the ith column
function sortByIndex(index, desc) {
var key = cols[index].key,
sorter = function (a, b) {
a = a.data[key];
b = b.data[key];
return a < b ? -1 : a > b ? 1 : 0;
},
finalSorter = sorter,
tableBody = document.querySelector('.coverage-summary tbody'),
rowNodes = tableBody.querySelectorAll('tr'),
rows = [],
i;
if (desc) {
finalSorter = function (a, b) {
return -1 * sorter(a, b);
};
}
for (i = 0; i < rowNodes.length; i += 1) {
rows.push(rowNodes[i]);
tableBody.removeChild(rowNodes[i]);
}
rows.sort(finalSorter);
for (i = 0; i < rows.length; i += 1) {
tableBody.appendChild(rows[i]);
}
}
// removes sort indicators for current column being sorted
function removeSortIndicators() {
var col = getNthColumn(currentSort.index),
cls = col.className;
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
col.className = cls;
}
// adds sort indicators for current column being sorted
function addSortIndicators() {
getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
}
// adds event listeners for all sorter widgets
function enableUI() {
var i,
el,
ithSorter = function ithSorter(i) {
var col = cols[i];
return function () {
var desc = col.defaultDescSort;
if (currentSort.index === i) {
desc = !currentSort.desc;
}
sortByIndex(i, desc);
removeSortIndicators();
currentSort.index = i;
currentSort.desc = desc;
addSortIndicators();
};
};
for (i =0 ; i < cols.length; i += 1) {
if (cols[i].sortable) {
el = getNthColumn(i).querySelector('.sorter');
if (el.addEventListener) {
el.addEventListener('click', ithSorter(i));
} else {
el.attachEvent('onclick', ithSorter(i));
}
}
}
}
// adds sorting functionality to the UI
return function () {
if (!getTable()) {
return;
}
cols = loadColumns();
loadData(cols);
addSortIndicators();
enableUI();
};
})();
window.addEventListener('load', addSorting);

74
node_modules/async-limiter/coverage/lcov.info

@ -0,0 +1,74 @@
TN:
SF:/Users/samuelreed/git/forks/async-throttle/index.js
FN:3,Queue
FN:22,(anonymous_2)
FN:23,(anonymous_3)
FN:31,(anonymous_4)
FN:36,(anonymous_5)
FN:55,(anonymous_6)
FN:62,done
FNF:7
FNH:7
FNDA:7,Queue
FNDA:3,(anonymous_2)
FNDA:13,(anonymous_3)
FNDA:19,(anonymous_4)
FNDA:45,(anonymous_5)
FNDA:6,(anonymous_6)
FNDA:13,done
DA:3,1
DA:4,7
DA:5,1
DA:8,6
DA:9,6
DA:10,6
DA:11,6
DA:12,6
DA:13,6
DA:16,1
DA:22,1
DA:23,3
DA:24,13
DA:25,13
DA:26,13
DA:30,1
DA:32,19
DA:36,1
DA:37,45
DA:38,6
DA:40,39
DA:41,13
DA:42,13
DA:43,13
DA:44,13
DA:47,39
DA:48,18
DA:49,6
DA:50,6
DA:55,1
DA:56,6
DA:57,6
DA:58,6
DA:62,1
DA:63,13
DA:64,13
DA:67,1
LF:37
LH:37
BRDA:4,1,0,1
BRDA:4,1,1,6
BRDA:8,2,0,6
BRDA:8,2,1,5
BRDA:9,3,0,6
BRDA:9,3,1,5
BRDA:37,4,0,6
BRDA:37,4,1,39
BRDA:40,5,0,13
BRDA:40,5,1,26
BRDA:47,6,0,18
BRDA:47,6,1,21
BRDA:56,7,0,6
BRDA:56,7,1,0
BRF:14
BRH:13
end_of_record

67
node_modules/async-limiter/index.js

@ -0,0 +1,67 @@
'use strict';
function Queue(options) {
if (!(this instanceof Queue)) {
return new Queue(options);
}
options = options || {};
this.concurrency = options.concurrency || Infinity;
this.pending = 0;
this.jobs = [];
this.cbs = [];
this._done = done.bind(this);
}
var arrayAddMethods = [
'push',
'unshift',
'splice'
];
arrayAddMethods.forEach(function(method) {
Queue.prototype[method] = function() {
var methodResult = Array.prototype[method].apply(this.jobs, arguments);
this._run();
return methodResult;
};
});
Object.defineProperty(Queue.prototype, 'length', {
get: function() {
return this.pending + this.jobs.length;
}
});
Queue.prototype._run = function() {
if (this.pending === this.concurrency) {
return;
}
if (this.jobs.length) {
var job = this.jobs.shift();
this.pending++;
job(this._done);
this._run();
}
if (this.pending === 0) {
while (this.cbs.length !== 0) {
var cb = this.cbs.pop();
process.nextTick(cb);
}
}
};
Queue.prototype.onDone = function(cb) {
if (typeof cb === 'function') {
this.cbs.push(cb);
this._run();
}
};
function done() {
this.pending--;
this._run();
}
module.exports = Queue;

69
node_modules/async-limiter/package.json

@ -0,0 +1,69 @@
{
"_from": "async-limiter@~1.0.0",
"_id": "async-limiter@1.0.0",
"_inBundle": false,
"_integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
"_location": "/async-limiter",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "async-limiter@~1.0.0",
"name": "async-limiter",
"escapedName": "async-limiter",
"rawSpec": "~1.0.0",
"saveSpec": null,
"fetchSpec": "~1.0.0"
},
"_requiredBy": [
"/ws"
],
"_resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"_shasum": "78faed8c3d074ab81f22b4e985d79e8738f720f8",
"_spec": "async-limiter@~1.0.0",
"_where": "/var/www/htdocs/coze/node_modules/ws",
"author": {
"name": "Samuel Reed"
},
"bugs": {
"url": "https://github.com/strml/async-limiter/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "asynchronous function queue with adjustable concurrency",
"devDependencies": {
"coveralls": "^2.11.2",
"eslint": "^4.6.1",
"eslint-plugin-mocha": "^4.11.0",
"intelli-espower-loader": "^1.0.1",
"istanbul": "^0.3.2",
"mocha": "^3.5.2",
"power-assert": "^1.4.4"
},
"homepage": "https://github.com/strml/async-limiter#readme",
"keywords": [
"throttle",
"async",
"limiter",
"asynchronous",
"job",
"task",
"concurrency",
"concurrent"
],
"license": "MIT",
"name": "async-limiter",
"repository": {
"type": "git",
"url": "git+https://github.com/strml/async-limiter.git"
},
"scripts": {
"coverage": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls",
"example": "node example",
"lint": "eslint .",
"test": "mocha --R intelli-espower-loader test/",
"travis": "npm run lint && npm run coverage"
},
"version": "1.0.0"
}

132
node_modules/async-limiter/readme.md

@ -0,0 +1,132 @@
# Async-Limiter
A module for limiting concurrent asynchronous actions in flight. Forked from [queue](https://github.com/jessetane/queue).
[![npm](http://img.shields.io/npm/v/async-limiter.svg?style=flat-square)](http://www.npmjs.org/async-limiter)
[![tests](https://img.shields.io/travis/STRML/async-limiter.svg?style=flat-square&branch=master)](https://travis-ci.org/STRML/async-limiter)
[![coverage](https://img.shields.io/coveralls/STRML/async-limiter.svg?style=flat-square&branch=master)](https://coveralls.io/r/STRML/async-limiter)
This module exports a class `Limiter` that implements some of the `Array` API.
Pass async functions (ones that accept a callback or return a promise) to an instance's additive array methods.
## Motivation
Certain functions, like `zlib`, have [undesirable behavior](https://github.com/nodejs/node/issues/8871#issuecomment-250915913) when
run at infinite concurrency.
In this case, it is actually faster, and takes far less memory, to limit concurrency.
This module should do the absolute minimum work necessary to queue up functions. PRs are welcome that would
make this module faster or lighter, but new functionality is not desired.
Style should confirm to nodejs/node style.
## Example
``` javascript
var Limiter = require('async-limiter')
var t = new Limiter({concurrency: 2});
var results = []
// add jobs using the familiar Array API
t.push(function (cb) {
results.push('two')
cb()
})
t.push(
function (cb) {
results.push('four')
cb()
},
function (cb) {
results.push('five')
cb()
}
)
t.unshift(function (cb) {
results.push('one')
cb()
})
t.splice(2, 0, function (cb) {
results.push('three')
cb()
})
// Jobs run automatically. If you want a callback when all are done,
// call 'onDone()'.
t.onDone(function () {
console.log('all done:', results)
})
```
## Zlib Example
```js
const zlib = require('zlib');
const Limiter = require('async-limiter');
const message = {some: "data"};
const payload = new Buffer(JSON.stringify(message));
// Try with different concurrency values to see how this actually
// slows significantly with higher concurrency!
//
// 5: 1398.607ms
// 10: 1375.668ms
// Infinity: 4423.300ms
//
const t = new Limiter({concurrency: 5});
function deflate(payload, cb) {
t.push(function(done) {
zlib.deflate(payload, function(err, buffer) {
done();
cb(err, buffer);
});
});
}
console.time('deflate');
for(let i = 0; i < 30000; ++i) {
deflate(payload, function (err, buffer) {});
}
q.onDone(function() {
console.timeEnd('deflate');
});
```
## Install
`npm install async-limiter`
## Test
`npm test`
## API
### `var t = new Limiter([opts])`
Constructor. `opts` may contain inital values for:
* `q.concurrency`
## Instance methods
### `q.onDone(fn)`
`fn` will be called once and only once, when the queue is empty.
## Instance methods mixed in from `Array`
Mozilla has docs on how these methods work [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array).
### `q.push(element1, ..., elementN)`
### `q.unshift(element1, ..., elementN)`
### `q.splice(index , howMany[, element1[, ...[, elementN]]])`
## Properties
### `q.concurrency`
Max number of jobs the queue should process concurrently, defaults to `Infinity`.
### `q.length`
Jobs pending + jobs to process (readonly).

1
node_modules/backo2/.npmignore

@ -0,0 +1 @@
node_modules/

12
node_modules/backo2/History.md

@ -0,0 +1,12 @@
1.0.1 / 2014-02-17
==================
* go away decimal point
* history
1.0.0 / 2014-02-17
==================
* add jitter option
* Initial commit

8
node_modules/backo2/Makefile

@ -0,0 +1,8 @@
test:
@./node_modules/.bin/mocha \
--require should \
--reporter dot \
--bail
.PHONY: test

34
node_modules/backo2/Readme.md

@ -0,0 +1,34 @@
# backo
Simple exponential backoff because the others seem to have weird abstractions.
## Installation
```
$ npm install backo
```
## Options
- `min` initial timeout in milliseconds [100]
- `max` max timeout [10000]
- `jitter` [0]
- `factor` [2]
## Example
```js
var Backoff = require('backo');
var backoff = new Backoff({ min: 100, max: 20000 });
setTimeout(function(){
something.reconnect();
}, backoff.duration());
// later when something works
backoff.reset()
```
# License
MIT

11
node_modules/backo2/component.json

@ -0,0 +1,11 @@
{
"name": "backo",
"repo": "segmentio/backo",
"dependencies": {},
"version": "1.0.1",
"description": "simple backoff without the weird abstractions",
"keywords": ["backoff"],
"license": "MIT",
"scripts": ["index.js"],
"main": "index.js"
}

85
node_modules/backo2/index.js

@ -0,0 +1,85 @@
/**
* Expose `Backoff`.
*/
module.exports = Backoff;
/**
* Initialize backoff timer with `opts`.
*
* - `min` initial timeout in milliseconds [100]
* - `max` max timeout [10000]
* - `jitter` [0]
* - `factor` [2]
*
* @param {Object} opts
* @api public
*/
function Backoff(opts) {
opts = opts || {};
this.ms = opts.min || 100;
this.max = opts.max || 10000;
this.factor = opts.factor || 2;
this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
this.attempts = 0;
}
/**
* Return the backoff duration.
*
* @return {Number}
* @api public
*/
Backoff.prototype.duration = function(){
var ms = this.ms * Math.pow(this.factor, this.attempts++);
if (this.jitter) {
var rand = Math.random();
var deviation = Math.floor(rand * this.jitter * ms);
ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
}
return Math.min(ms, this.max) | 0;
};
/**
* Reset the number of attempts.
*
* @api public
*/
Backoff.prototype.reset = function(){
this.attempts = 0;
};
/**
* Set the minimum duration
*
* @api public
*/
Backoff.prototype.setMin = function(min){
this.ms = min;
};
/**
* Set the maximum duration
*
* @api public
*/
Backoff.prototype.setMax = function(max){
this.max = max;
};
/**
* Set the jitter
*
* @api public
*/
Backoff.prototype.setJitter = function(jitter){
this.jitter = jitter;
};

47
node_modules/backo2/package.json

@ -0,0 +1,47 @@
{
"_from": "backo2@1.0.2",
"_id": "backo2@1.0.2",
"_inBundle": false,
"_integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
"_location": "/backo2",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "backo2@1.0.2",
"name": "backo2",
"escapedName": "backo2",
"rawSpec": "1.0.2",
"saveSpec": null,
"fetchSpec": "1.0.2"
},
"_requiredBy": [
"/socket.io-client"
],
"_resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
"_shasum": "31ab1ac8b129363463e35b3ebb69f4dfcfba7947",
"_spec": "backo2@1.0.2",
"_where": "/var/www/htdocs/coze/node_modules/socket.io-client",
"bugs": {
"url": "https://github.com/mokesmokes/backo/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "simple backoff based on segmentio/backo",
"devDependencies": {
"mocha": "*",
"should": "*"
},
"homepage": "https://github.com/mokesmokes/backo#readme",
"keywords": [
"backoff"
],
"license": "MIT",
"name": "backo2",
"repository": {
"type": "git",
"url": "git+https://github.com/mokesmokes/backo.git"
},
"version": "1.0.2"
}

18
node_modules/backo2/test/index.js

@ -0,0 +1,18 @@
var Backoff = require('..');
var assert = require('assert');
describe('.duration()', function(){
it('should increase the backoff', function(){
var b = new Backoff;
assert(100 == b.duration());
assert(200 == b.duration());
assert(400 == b.duration());
assert(800 == b.duration());
b.reset();
assert(100 == b.duration());
assert(200 == b.duration());
})
})

3
node_modules/base64-arraybuffer/.npmignore

@ -0,0 +1,3 @@
/node_modules/
Gruntfile.js
/test/

19
node_modules/base64-arraybuffer/.travis.yml

@ -0,0 +1,19 @@
language: node_js
node_js:
- '0.12'
- iojs-1
- iojs-2
- iojs-3
- '4.1'
before_script:
- npm install
before_install: npm install -g npm@'>=2.13.5'
deploy:
provider: npm
email: niklasvh@gmail.com
api_key:
secure: oHV9ArprTj5WOk7MP1UF7QMJ70huXw+y7xXb5wF4+V2H8Hyfa5TfE0DiOmqrube1WXTeH1FLgq54shp/sJWi47Hkg/GyeoB5NnsPhYEaJkaON9UG5blML+ODiNVsEnq/1kNBQ8e0+0JItMPLGySKyFmuZ3yflulXKS8O88mfINo=
on:
tags: true
branch: master
repo: niklasvh/base64-arraybuffer

22
node_modules/base64-arraybuffer/LICENSE-MIT

@ -0,0 +1,22 @@
Copyright (c) 2012 Niklas von Hertzen
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.

20
node_modules/base64-arraybuffer/README.md

@ -0,0 +1,20 @@
# base64-arraybuffer
[![Build Status](https://travis-ci.org/niklasvh/base64-arraybuffer.png)](https://travis-ci.org/niklasvh/base64-arraybuffer)
[![NPM Downloads](https://img.shields.io/npm/dm/base64-arraybuffer.svg)](https://www.npmjs.org/package/base64-arraybuffer)
[![NPM Version](https://img.shields.io/npm/v/base64-arraybuffer.svg)](https://www.npmjs.org/package/base64-arraybuffer)
Encode/decode base64 data into ArrayBuffers
## Getting Started
Install the module with: `npm install base64-arraybuffer`
## API
The library encodes and decodes base64 to and from ArrayBuffers
- __encode(buffer)__ - Encodes `ArrayBuffer` into base64 string
- __decode(str)__ - Decodes base64 string to `ArrayBuffer`
## License
Copyright (c) 2012 Niklas von Hertzen
Licensed under the MIT license.

67
node_modules/base64-arraybuffer/lib/base64-arraybuffer.js

@ -0,0 +1,67 @@
/*
* base64-arraybuffer
* https://github.com/niklasvh/base64-arraybuffer
*
* Copyright (c) 2012 Niklas von Hertzen
* Licensed under the MIT license.
*/
(function(){
"use strict";
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
// Use a lookup table to find the index.
var lookup = new Uint8Array(256);
for (var i = 0; i < chars.length; i++) {
lookup[chars.charCodeAt(i)] = i;
}
exports.encode = function(arraybuffer) {
var bytes = new Uint8Array(arraybuffer),
i, len = bytes.length, base64 = "";
for (i = 0; i < len; i+=3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if ((len % 3) === 2) {
base64 = base64.substring(0, base64.length - 1) + "=";
} else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + "==";
}
return base64;
};
exports.decode = function(base64) {
var bufferLength = base64.length * 0.75,
len = base64.length, i, p = 0,
encoded1, encoded2, encoded3, encoded4;
if (base64[base64.length - 1] === "=") {
bufferLength--;
if (base64[base64.length - 2] === "=") {
bufferLength--;
}
}
var arraybuffer = new ArrayBuffer(bufferLength),
bytes = new Uint8Array(arraybuffer);
for (i = 0; i < len; i+=4) {
encoded1 = lookup[base64.charCodeAt(i)];
encoded2 = lookup[base64.charCodeAt(i+1)];
encoded3 = lookup[base64.charCodeAt(i+2)];
encoded4 = lookup[base64.charCodeAt(i+3)];
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
}
return arraybuffer;
};
})();

65
node_modules/base64-arraybuffer/package.json

@ -0,0 +1,65 @@
{
"_from": "base64-arraybuffer@0.1.5",
"_id": "base64-arraybuffer@0.1.5",
"_inBundle": false,
"_integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
"_location": "/base64-arraybuffer",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "base64-arraybuffer@0.1.5",
"name": "base64-arraybuffer",
"escapedName": "base64-arraybuffer",
"rawSpec": "0.1.5",
"saveSpec": null,
"fetchSpec": "0.1.5"
},
"_requiredBy": [
"/engine.io-parser",
"/socket.io-client"
],
"_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
"_shasum": "73926771923b5a19747ad666aa5cd4bf9c6e9ce8",
"_spec": "base64-arraybuffer@0.1.5",
"_where": "/var/www/htdocs/coze/node_modules/engine.io-parser",
"author": {
"name": "Niklas von Hertzen",
"email": "niklasvh@gmail.com",
"url": "http://hertzen.com"
},
"bugs": {
"url": "https://github.com/niklasvh/base64-arraybuffer/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "Encode/decode base64 data into ArrayBuffers",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-cli": "^0.1.13",
"grunt-contrib-jshint": "^0.11.2",
"grunt-contrib-nodeunit": "^0.4.1",
"grunt-contrib-watch": "^0.6.1"
},
"engines": {
"node": ">= 0.6.0"
},
"homepage": "https://github.com/niklasvh/base64-arraybuffer",
"keywords": [],
"licenses": [
{
"type": "MIT",
"url": "https://github.com/niklasvh/base64-arraybuffer/blob/master/LICENSE-MIT"
}
],
"main": "lib/base64-arraybuffer",
"name": "base64-arraybuffer",
"repository": {
"type": "git",
"url": "git+https://github.com/niklasvh/base64-arraybuffer.git"
},
"scripts": {
"test": "grunt nodeunit"
},
"version": "0.1.5"
}

3
node_modules/base64id/.npmignore

@ -0,0 +1,3 @@
support
test
examples

22
node_modules/base64id/LICENSE

@ -0,0 +1,22 @@
(The MIT License)
Copyright (c) 2012-2016 Kristian Faeldt <faeldt_kristian@cyberagent.co.jp>
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.

18
node_modules/base64id/README.md

@ -0,0 +1,18 @@
base64id
========
Node.js module that generates a base64 id.
Uses crypto.randomBytes when available, falls back to unsafe methods for node.js <= 0.4.
To increase performance, random bytes are buffered to minimize the number of synchronous calls to crypto.randomBytes.
## Installation
$ npm install base64id
## Usage
var base64id = require('base64id');
var id = base64id.generateId();

103
node_modules/base64id/lib/base64id.js

@ -0,0 +1,103 @@
/*!
* base64id v0.1.0
*/
/**
* Module dependencies
*/
var crypto = require('crypto');
/**
* Constructor
*/
var Base64Id = function() { };
/**
* Get random bytes
*
* Uses a buffer if available, falls back to crypto.randomBytes
*/
Base64Id.prototype.getRandomBytes = function(bytes) {
var BUFFER_SIZE = 4096
var self = this;
bytes = bytes || 12;
if (bytes > BUFFER_SIZE) {
return crypto.randomBytes(bytes);
}
var bytesInBuffer = parseInt(BUFFER_SIZE/bytes);
var threshold = parseInt(bytesInBuffer*0.85);
if (!threshold) {
return crypto.randomBytes(bytes);
}
if (this.bytesBufferIndex == null) {
this.bytesBufferIndex = -1;
}
if (this.bytesBufferIndex == bytesInBuffer) {
this.bytesBuffer = null;
this.bytesBufferIndex = -1;
}
// No buffered bytes available or index above threshold
if (this.bytesBufferIndex == -1 || this.bytesBufferIndex > threshold) {
if (!this.isGeneratingBytes) {
this.isGeneratingBytes = true;
crypto.randomBytes(BUFFER_SIZE, function(err, bytes) {
self.bytesBuffer = bytes;
self.bytesBufferIndex = 0;
self.isGeneratingBytes = false;
});
}
// Fall back to sync call when no buffered bytes are available
if (this.bytesBufferIndex == -1) {
return crypto.randomBytes(bytes);
}
}
var result = this.bytesBuffer.slice(bytes*this.bytesBufferIndex, bytes*(this.bytesBufferIndex+1));
this.bytesBufferIndex++;
return result;
}
/**
* Generates a base64 id
*
* (Original version from socket.io <http://socket.io>)
*/
Base64Id.prototype.generateId = function () {
var rand = new Buffer(15); // multiple of 3 for base64
if (!rand.writeInt32BE) {
return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString()
+ Math.abs(Math.random() * Math.random() * Date.now() | 0).toString();
}
this.sequenceNumber = (this.sequenceNumber + 1) | 0;
rand.writeInt32BE(this.sequenceNumber, 11);
if (crypto.randomBytes) {
this.getRandomBytes(12).copy(rand);
} else {
// not secure for node 0.4
[0, 4, 8].forEach(function(i) {
rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i);
});
}
return rand.toString('base64').replace(/\//g, '_').replace(/\+/g, '-');
};
/**
* Export
*/
exports = module.exports = new Base64Id();

47
node_modules/base64id/package.json

@ -0,0 +1,47 @@
{
"_from": "base64id@1.0.0",
"_id": "base64id@1.0.0",
"_inBundle": false,
"_integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
"_location": "/base64id",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "base64id@1.0.0",
"name": "base64id",
"escapedName": "base64id",
"rawSpec": "1.0.0",
"saveSpec": null,
"fetchSpec": "1.0.0"
},
"_requiredBy": [
"/engine.io"
],
"_resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
"_shasum": "47688cb99bb6804f0e06d3e763b1c32e57d8e6b6",
"_spec": "base64id@1.0.0",
"_where": "/var/www/htdocs/coze/node_modules/engine.io",
"author": {
"name": "Kristian Faeldt",
"email": "faeldt_kristian@cyberagent.co.jp"
},
"bugs": {
"url": "https://github.com/faeldt/base64id/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "Generates a base64 id",
"engines": {
"node": ">= 0.4.0"
},
"homepage": "https://github.com/faeldt/base64id#readme",
"license": "MIT",
"main": "./lib/base64id.js",
"name": "base64id",
"repository": {
"type": "git",
"url": "git+https://github.com/faeldt/base64id.git"
},
"version": "1.0.0"
}

4
node_modules/better-assert/.npmignore

@ -0,0 +1,4 @@
support
test
examples
*.sock

15
node_modules/better-assert/History.md

@ -0,0 +1,15 @@
1.0.0 / 2013-02-03
==================
* Stop using the removed magic __stack global getter
0.1.0 / 2012-10-04
==================
* add throwing of AssertionError for test frameworks etc
0.0.1 / 2010-01-03
==================
* Initial release

5
node_modules/better-assert/Makefile

@ -0,0 +1,5 @@
test:
@echo "populate me"
.PHONY: test

61
node_modules/better-assert/Readme.md

@ -0,0 +1,61 @@
# better-assert
Better c-style assertions using [callsite](https://github.com/visionmedia/callsite) for
self-documenting failure messages.
## Installation
$ npm install better-assert
## Example
By default assertions are enabled, however the __NO_ASSERT__ environment variable
will deactivate them when truthy.
```js
var assert = require('better-assert');
test();
function test() {
var user = { name: 'tobi' };
assert('tobi' == user.name);
assert('number' == typeof user.age);
}
AssertionError: 'number' == typeof user.age
at test (/Users/tj/projects/better-assert/example.js:9:3)
at Object.<anonymous> (/Users/tj/projects/better-assert/example.js:4:1)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
```
## License
(The MIT License)
Copyright (c) 2012 TJ Holowaychuk &lt;tj@vision-media.ca&gt;
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.

10
node_modules/better-assert/example.js

@ -0,0 +1,10 @@
var assert = require('./');
test();
function test() {
var user = { name: 'tobi' };
assert('tobi' == user.name);
assert('number' == typeof user.age);
}

38
node_modules/better-assert/index.js

@ -0,0 +1,38 @@
/**
* Module dependencies.
*/
var AssertionError = require('assert').AssertionError
, callsite = require('callsite')
, fs = require('fs')
/**
* Expose `assert`.
*/
module.exports = process.env.NO_ASSERT
? function(){}
: assert;
/**
* Assert the given `expr`.
*/
function assert(expr) {
if (expr) return;
var stack = callsite();
var call = stack[1];
var file = call.getFileName();
var lineno = call.getLineNumber();
var src = fs.readFileSync(file, 'utf8');
var line = src.split('\n')[lineno-1];
var src = line.match(/assert\((.*)\)/)[1];
var err = new AssertionError({
message: src,
stackStartFunction: stack[0].getFunction()
});
throw err;
}

65
node_modules/better-assert/package.json

@ -0,0 +1,65 @@
{
"_from": "better-assert@~1.0.0",
"_id": "better-assert@1.0.2",
"_inBundle": false,
"_integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
"_location": "/better-assert",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "better-assert@~1.0.0",
"name": "better-assert",
"escapedName": "better-assert",
"rawSpec": "~1.0.0",
"saveSpec": null,
"fetchSpec": "~1.0.0"
},
"_requiredBy": [
"/parseqs",
"/parseuri"
],
"_resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
"_shasum": "40866b9e1b9e0b55b481894311e68faffaebc522",
"_spec": "better-assert@~1.0.0",
"_where": "/var/www/htdocs/coze/node_modules/parseqs",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"
},
"bugs": {
"url": "https://github.com/visionmedia/better-assert/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "TonyHe",
"email": "coolhzb@163.com"
},
{
"name": "ForbesLindesay"
}
],
"dependencies": {
"callsite": "1.0.0"
},
"deprecated": false,
"description": "Better assertions for node, reporting the expr, filename, lineno etc",
"engines": {
"node": "*"
},
"homepage": "https://github.com/visionmedia/better-assert#readme",
"keywords": [
"assert",
"stack",
"trace",
"debug"
],
"main": "index",
"name": "better-assert",
"repository": {
"type": "git",
"url": "git+https://github.com/visionmedia/better-assert.git"
},
"version": "1.0.2"
}

2
node_modules/blob/.npmignore

@ -0,0 +1,2 @@
node_modules
blob.js

14
node_modules/blob/.zuul.yml

@ -0,0 +1,14 @@
ui: mocha-bdd
browsers:
- name: chrome
version: 8..latest
- name: firefox
version: 7..latest
- name: safari
version: 6..latest
- name: opera
version: 12.1..latest
- name: ie
version: 10..latest
- name: android
version: latest

14
node_modules/blob/Makefile

@ -0,0 +1,14 @@
REPORTER = dot
build: blob.js
blob.js:
@./node_modules/.bin/browserify --standalone blob index.js > blob.js
test:
@./node_modules/.bin/zuul -- test/index.js
clean:
rm blob.js
.PHONY: test blob.js

14
node_modules/blob/README.md

@ -0,0 +1,14 @@
Blob
====
A module that exports a constructor that uses window.Blob when available, and a BlobBuilder with any vendor prefix in other cases. If neither is available, it exports undefined.
Usage:
```javascript
var Blob = require('blob');
var b = new Blob(['hi', 'constructing', 'a', 'blob']);
```
## Licence
MIT

96
node_modules/blob/index.js

@ -0,0 +1,96 @@
/**
* Create a blob builder even when vendor prefixes exist
*/
var BlobBuilder = global.BlobBuilder
|| global.WebKitBlobBuilder
|| global.MSBlobBuilder
|| global.MozBlobBuilder;
/**
* Check if Blob constructor is supported
*/
var blobSupported = (function() {
try {
var a = new Blob(['hi']);
return a.size === 2;
} catch(e) {
return false;
}
})();
/**
* Check if Blob constructor supports ArrayBufferViews
* Fails in Safari 6, so we need to map to ArrayBuffers there.
*/
var blobSupportsArrayBufferView = blobSupported && (function() {
try {
var b = new Blob([new Uint8Array([1,2])]);
return b.size === 2;
} catch(e) {
return false;
}
})();
/**
* Check if BlobBuilder is supported
*/
var blobBuilderSupported = BlobBuilder
&& BlobBuilder.prototype.append
&& BlobBuilder.prototype.getBlob;
/**
* Helper function that maps ArrayBufferViews to ArrayBuffers
* Used by BlobBuilder constructor and old browsers that didn't
* support it in the Blob constructor.
*/
function mapArrayBufferViews(ary) {
for (var i = 0; i < ary.length; i++) {
var chunk = ary[i];
if (chunk.buffer instanceof ArrayBuffer) {
var buf = chunk.buffer;
// if this is a subarray, make a copy so we only
// include the subarray region from the underlying buffer
if (chunk.byteLength !== buf.byteLength) {
var copy = new Uint8Array(chunk.byteLength);
copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));
buf = copy.buffer;
}
ary[i] = buf;
}
}
}
function BlobBuilderConstructor(ary, options) {
options = options || {};
var bb = new BlobBuilder();
mapArrayBufferViews(ary);
for (var i = 0; i < ary.length; i++) {
bb.append(ary[i]);
}
return (options.type) ? bb.getBlob(options.type) : bb.getBlob();
};
function BlobConstructor(ary, options) {
mapArrayBufferViews(ary);
return new Blob(ary, options || {});
};
module.exports = (function() {
if (blobSupported) {
return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;
} else if (blobBuilderSupported) {
return BlobBuilderConstructor;
} else {
return undefined;
}
})();

48
node_modules/blob/package.json

@ -0,0 +1,48 @@
{
"_from": "blob@0.0.4",
"_id": "blob@0.0.4",
"_inBundle": false,
"_integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
"_location": "/blob",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "blob@0.0.4",
"name": "blob",
"escapedName": "blob",
"rawSpec": "0.0.4",
"saveSpec": null,
"fetchSpec": "0.0.4"
},
"_requiredBy": [
"/engine.io-parser"
],
"_resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
"_shasum": "bcf13052ca54463f30f9fc7e95b9a47630a94921",
"_spec": "blob@0.0.4",
"_where": "/var/www/htdocs/coze/node_modules/engine.io-parser",
"bugs": {
"url": "https://github.com/rase-/blob/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Abstracts out Blob and uses BlobBulder in cases where it is supported with any vendor prefix.",
"devDependencies": {
"browserify": "3.30.1",
"expect.js": "0.2.0",
"mocha": "1.17.1",
"zuul": "1.5.4"
},
"homepage": "https://github.com/rase-/blob",
"name": "blob",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/rase-/blob.git"
},
"scripts": {
"test": "make test"
},
"version": "0.0.4"
}

94
node_modules/blob/test/index.js

@ -0,0 +1,94 @@
var Blob = require('../');
var expect = require('expect.js');
describe('blob', function() {
if (!Blob) {
it('should not have a blob or a blob builder in the global namespace, or blob should not be a constructor function if the module exports false', function() {
try {
var ab = (new Uint8Array(5)).buffer;
global.Blob([ab]);
expect().fail('Blob shouldn\'t be constructable');
} catch (e) {}
var BlobBuilder = global.BlobBuilder
|| global.WebKitBlobBuilder
|| global.MSBlobBuilder
|| global.MozBlobBuilder;
expect(BlobBuilder).to.be(undefined);
});
} else {
it('should encode a proper sized blob when given a string argument', function() {
var b = new Blob(['hi']);
expect(b.size).to.be(2);
});
it('should encode a blob with proper size when given two strings as arguments', function() {
var b = new Blob(['hi', 'hello']);
expect(b.size).to.be(7);
});
it('should encode arraybuffers with right content', function(done) {
var ary = new Uint8Array(5);
for (var i = 0; i < 5; i++) ary[i] = i;
var b = new Blob([ary.buffer]);
var fr = new FileReader();
fr.onload = function() {
var newAry = new Uint8Array(this.result);
for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i);
done();
};
fr.readAsArrayBuffer(b);
});
it('should encode typed arrays with right content', function(done) {
var ary = new Uint8Array(5);
for (var i = 0; i < 5; i++) ary[i] = i;
var b = new Blob([ary]);
var fr = new FileReader();
fr.onload = function() {
var newAry = new Uint8Array(this.result);
for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i);
done();
};
fr.readAsArrayBuffer(b);
});
it('should encode sliced typed arrays with right content', function(done) {
var ary = new Uint8Array(5);
for (var i = 0; i < 5; i++) ary[i] = i;
var b = new Blob([ary.subarray(2)]);
var fr = new FileReader();
fr.onload = function() {
var newAry = new Uint8Array(this.result);
for (var i = 0; i < 3; i++) expect(newAry[i]).to.be(i + 2);
done();
};
fr.readAsArrayBuffer(b);
});
it('should encode with blobs', function(done) {
var ary = new Uint8Array(5);
for (var i = 0; i < 5; i++) ary[i] = i;
var b = new Blob([new Blob([ary.buffer])]);
var fr = new FileReader();
fr.onload = function() {
var newAry = new Uint8Array(this.result);
for (var i = 0; i < 5; i++) expect(newAry[i]).to.be(i);
done();
};
fr.readAsArrayBuffer(b);
});
it('should enode mixed contents to right size', function() {
var ary = new Uint8Array(5);
for (var i = 0; i < 5; i++) ary[i] = i;
var b = new Blob([ary.buffer, 'hello']);
expect(b.size).to.be(10);
});
it('should accept mime type', function() {
var b = new Blob(['hi', 'hello'], { type: 'text/html' });
expect(b.type).to.be('text/html');
});
}
});

568
node_modules/body-parser/HISTORY.md

@ -0,0 +1,568 @@
1.18.2 / 2017-09-22
===================
* deps: debug@2.6.9
* perf: remove argument reassignment
1.18.1 / 2017-09-12
===================
* deps: content-type@~1.0.4
- perf: remove argument reassignment
- perf: skip parameter parsing when no parameters
* deps: iconv-lite@0.4.19
- Fix ISO-8859-1 regression
- Update Windows-1255
* deps: qs@6.5.1
- Fix parsing & compacting very deep objects
* deps: raw-body@2.3.2
- deps: iconv-lite@0.4.19
1.18.0 / 2017-09-08
===================
* Fix JSON strict violation error to match native parse error
* Include the `body` property on verify errors
* Include the `type` property on all generated errors
* Use `http-errors` to set status code on errors
* deps: bytes@3.0.0
* deps: debug@2.6.8
* deps: depd@~1.1.1
- Remove unnecessary `Buffer` loading
* deps: http-errors@~1.6.2
- deps: depd@1.1.1
* deps: iconv-lite@0.4.18
- Add support for React Native
- Add a warning if not loaded as utf-8
- Fix CESU-8 decoding in Node.js 8
- Improve speed of ISO-8859-1 encoding
* deps: qs@6.5.0
* deps: raw-body@2.3.1
- Use `http-errors` for standard emitted errors
- deps: bytes@3.0.0
- deps: iconv-lite@0.4.18
- perf: skip buffer decoding on overage chunk
* perf: prevent internal `throw` when missing charset
1.17.2 / 2017-05-17
===================
* deps: debug@2.6.7
- Fix `DEBUG_MAX_ARRAY_LENGTH`
- deps: ms@2.0.0
* deps: type-is@~1.6.15
- deps: mime-types@~2.1.15
1.17.1 / 2017-03-06
===================
* deps: qs@6.4.0
- Fix regression parsing keys starting with `[`
1.17.0 / 2017-03-01
===================
* deps: http-errors@~1.6.1
- Make `message` property enumerable for `HttpError`s
- deps: setprototypeof@1.0.3
* deps: qs@6.3.1
- Fix compacting nested arrays
1.16.1 / 2017-02-10
===================
* deps: debug@2.6.1
- Fix deprecation messages in WebStorm and other editors
- Undeprecate `DEBUG_FD` set to `1` or `2`
1.16.0 / 2017-01-17
===================
* deps: debug@2.6.0
- Allow colors in workers
- Deprecated `DEBUG_FD` environment variable
- Fix error when running under React Native
- Use same color for same namespace
- deps: ms@0.7.2
* deps: http-errors@~1.5.1
- deps: inherits@2.0.3
- deps: setprototypeof@1.0.2
- deps: statuses@'>= 1.3.1 < 2'
* deps: iconv-lite@0.4.15
- Added encoding MS-31J
- Added encoding MS-932
- Added encoding MS-936
- Added encoding MS-949
- Added encoding MS-950
- Fix GBK/GB18030 handling of Euro character
* deps: qs@6.2.1
- Fix array parsing from skipping empty values
* deps: raw-body@~2.2.0
- deps: iconv-lite@0.4.15
* deps: type-is@~1.6.14
- deps: mime-types@~2.1.13
1.15.2 / 2016-06-19
===================
* deps: bytes@2.4.0
* deps: content-type@~1.0.2
- perf: enable strict mode
* deps: http-errors@~1.5.0
- Use `setprototypeof` module to replace `__proto__` setting
- deps: statuses@'>= 1.3.0 < 2'
- perf: enable strict mode
* deps: qs@6.2.0
* deps: raw-body@~2.1.7
- deps: bytes@2.4.0
- perf: remove double-cleanup on happy path
* deps: type-is@~1.6.13
- deps: mime-types@~2.1.11
1.15.1 / 2016-05-05
===================
* deps: bytes@2.3.0
- Drop partial bytes on all parsed units
- Fix parsing byte string that looks like hex
* deps: raw-body@~2.1.6
- deps: bytes@2.3.0
* deps: type-is@~1.6.12
- deps: mime-types@~2.1.10
1.15.0 / 2016-02-10
===================
* deps: http-errors@~1.4.0
- Add `HttpError` export, for `err instanceof createError.HttpError`
- deps: inherits@2.0.1
- deps: statuses@'>= 1.2.1 < 2'
* deps: qs@6.1.0
* deps: type-is@~1.6.11
- deps: mime-types@~2.1.9
1.14.2 / 2015-12-16
===================
* deps: bytes@2.2.0
* deps: iconv-lite@0.4.13
* deps: qs@5.2.0
* deps: raw-body@~2.1.5
- deps: bytes@2.2.0
- deps: iconv-lite@0.4.13
* deps: type-is@~1.6.10
- deps: mime-types@~2.1.8
1.14.1 / 2015-09-27
===================
* Fix issue where invalid charset results in 400 when `verify` used
* deps: iconv-lite@0.4.12
- Fix CESU-8 decoding in Node.js 4.x
* deps: raw-body@~2.1.4
- Fix masking critical errors from `iconv-lite`
- deps: iconv-lite@0.4.12
* deps: type-is@~1.6.9
- deps: mime-types@~2.1.7
1.14.0 / 2015-09-16
===================
* Fix JSON strict parse error to match syntax errors
* Provide static `require` analysis in `urlencoded` parser
* deps: depd@~1.1.0
- Support web browser loading
* deps: qs@5.1.0
* deps: raw-body@~2.1.3
- Fix sync callback when attaching data listener causes sync read
* deps: type-is@~1.6.8
- Fix type error when given invalid type to match against
- deps: mime-types@~2.1.6
1.13.3 / 2015-07-31
===================
* deps: type-is@~1.6.6
- deps: mime-types@~2.1.4
1.13.2 / 2015-07-05
===================
* deps: iconv-lite@0.4.11
* deps: qs@4.0.0
- Fix dropping parameters like `hasOwnProperty`
- Fix user-visible incompatibilities from 3.1.0
- Fix various parsing edge cases
* deps: raw-body@~2.1.2
- Fix error stack traces to skip `makeError`
- deps: iconv-lite@0.4.11
* deps: type-is@~1.6.4
- deps: mime-types@~2.1.2
- perf: enable strict mode
- perf: remove argument reassignment
1.13.1 / 2015-06-16
===================
* deps: qs@2.4.2
- Downgraded from 3.1.0 because of user-visible incompatibilities
1.13.0 / 2015-06-14
===================
* Add `statusCode` property on `Error`s, in addition to `status`
* Change `type` default to `application/json` for JSON parser
* Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser
* Provide static `require` analysis
* Use the `http-errors` module to generate errors
* deps: bytes@2.1.0
- Slight optimizations
* deps: iconv-lite@0.4.10
- The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails
- Leading BOM is now removed when decoding
* deps: on-finished@~2.3.0
- Add defined behavior for HTTP `CONNECT` requests
- Add defined behavior for HTTP `Upgrade` requests
- deps: ee-first@1.1.1
* deps: qs@3.1.0
- Fix dropping parameters like `hasOwnProperty`
- Fix various parsing edge cases
- Parsed object now has `null` prototype
* deps: raw-body@~2.1.1
- Use `unpipe` module for unpiping requests
- deps: iconv-lite@0.4.10
* deps: type-is@~1.6.3
- deps: mime-types@~2.1.1
- perf: reduce try block size
- perf: remove bitwise operations
* perf: enable strict mode
* perf: remove argument reassignment
* perf: remove delete call
1.12.4 / 2015-05-10
===================
* deps: debug@~2.2.0
* deps: qs@2.4.2
- Fix allowing parameters like `constructor`
* deps: on-finished@~2.2.1
* deps: raw-body@~2.0.1
- Fix a false-positive when unpiping in Node.js 0.8
- deps: bytes@2.0.1
* deps: type-is@~1.6.2
- deps: mime-types@~2.0.11
1.12.3 / 2015-04-15
===================
* Slight efficiency improvement when not debugging
* deps: depd@~1.0.1
* deps: iconv-lite@0.4.8
- Add encoding alias UNICODE-1-1-UTF-7
* deps: raw-body@1.3.4
- Fix hanging callback if request aborts during read
- deps: iconv-lite@0.4.8
1.12.2 / 2015-03-16
===================
* deps: qs@2.4.1
- Fix error when parameter `hasOwnProperty` is present
1.12.1 / 2015-03-15
===================
* deps: debug@~2.1.3
- Fix high intensity foreground color for bold
- deps: ms@0.7.0
* deps: type-is@~1.6.1
- deps: mime-types@~2.0.10
1.12.0 / 2015-02-13
===================
* add `debug` messages
* accept a function for the `type` option
* use `content-type` to parse `Content-Type` headers
* deps: iconv-lite@0.4.7
- Gracefully support enumerables on `Object.prototype`
* deps: raw-body@1.3.3
- deps: iconv-lite@0.4.7
* deps: type-is@~1.6.0
- fix argument reassignment
- fix false-positives in `hasBody` `Transfer-Encoding` check
- support wildcard for both type and subtype (`*/*`)
- deps: mime-types@~2.0.9
1.11.0 / 2015-01-30
===================
* make internal `extended: true` depth limit infinity
* deps: type-is@~1.5.6
- deps: mime-types@~2.0.8
1.10.2 / 2015-01-20
===================
* deps: iconv-lite@0.4.6
- Fix rare aliases of single-byte encodings
* deps: raw-body@1.3.2
- deps: iconv-lite@0.4.6
1.10.1 / 2015-01-01
===================
* deps: on-finished@~2.2.0
* deps: type-is@~1.5.5
- deps: mime-types@~2.0.7
1.10.0 / 2014-12-02
===================
* make internal `extended: true` array limit dynamic
1.9.3 / 2014-11-21
==================
* deps: iconv-lite@0.4.5
- Fix Windows-31J and X-SJIS encoding support
* deps: qs@2.3.3
- Fix `arrayLimit` behavior
* deps: raw-body@1.3.1
- deps: iconv-lite@0.4.5
* deps: type-is@~1.5.3
- deps: mime-types@~2.0.3
1.9.2 / 2014-10-27
==================
* deps: qs@2.3.2
- Fix parsing of mixed objects and values
1.9.1 / 2014-10-22
==================
* deps: on-finished@~2.1.1
- Fix handling of pipelined requests
* deps: qs@2.3.0
- Fix parsing of mixed implicit and explicit arrays
* deps: type-is@~1.5.2
- deps: mime-types@~2.0.2
1.9.0 / 2014-09-24
==================
* include the charset in "unsupported charset" error message
* include the encoding in "unsupported content encoding" error message
* deps: depd@~1.0.0
1.8.4 / 2014-09-23
==================
* fix content encoding to be case-insensitive
1.8.3 / 2014-09-19
==================
* deps: qs@2.2.4
- Fix issue with object keys starting with numbers truncated
1.8.2 / 2014-09-15
==================
* deps: depd@0.4.5
1.8.1 / 2014-09-07
==================
* deps: media-typer@0.3.0
* deps: type-is@~1.5.1
1.8.0 / 2014-09-05
==================
* make empty-body-handling consistent between chunked requests
- empty `json` produces `{}`
- empty `raw` produces `new Buffer(0)`
- empty `text` produces `''`
- empty `urlencoded` produces `{}`
* deps: qs@2.2.3
- Fix issue where first empty value in array is discarded
* deps: type-is@~1.5.0
- fix `hasbody` to be true for `content-length: 0`
1.7.0 / 2014-09-01
==================
* add `parameterLimit` option to `urlencoded` parser
* change `urlencoded` extended array limit to 100
* respond with 413 when over `parameterLimit` in `urlencoded`
1.6.7 / 2014-08-29
==================
* deps: qs@2.2.2
- Remove unnecessary cloning
1.6.6 / 2014-08-27
==================
* deps: qs@2.2.0
- Array parsing fix
- Performance improvements
1.6.5 / 2014-08-16
==================
* deps: on-finished@2.1.0
1.6.4 / 2014-08-14
==================
* deps: qs@1.2.2
1.6.3 / 2014-08-10
==================
* deps: qs@1.2.1
1.6.2 / 2014-08-07
==================
* deps: qs@1.2.0
- Fix parsing array of objects
1.6.1 / 2014-08-06
==================
* deps: qs@1.1.0
- Accept urlencoded square brackets
- Accept empty values in implicit array notation
1.6.0 / 2014-08-05
==================
* deps: qs@1.0.2
- Complete rewrite
- Limits array length to 20
- Limits object depth to 5
- Limits parameters to 1,000
1.5.2 / 2014-07-27
==================
* deps: depd@0.4.4
- Work-around v8 generating empty stack traces
1.5.1 / 2014-07-26
==================
* deps: depd@0.4.3
- Fix exception when global `Error.stackTraceLimit` is too low
1.5.0 / 2014-07-20
==================
* deps: depd@0.4.2
- Add `TRACE_DEPRECATION` environment variable
- Remove non-standard grey color from color output
- Support `--no-deprecation` argument
- Support `--trace-deprecation` argument
* deps: iconv-lite@0.4.4
- Added encoding UTF-7
* deps: raw-body@1.3.0
- deps: iconv-lite@0.4.4
- Added encoding UTF-7
- Fix `Cannot switch to old mode now` error on Node.js 0.10+
* deps: type-is@~1.3.2
1.4.3 / 2014-06-19
==================
* deps: type-is@1.3.1
- fix global variable leak
1.4.2 / 2014-06-19
==================
* deps: type-is@1.3.0
- improve type parsing
1.4.1 / 2014-06-19
==================
* fix urlencoded extended deprecation message
1.4.0 / 2014-06-19
==================
* add `text` parser
* add `raw` parser
* check accepted charset in content-type (accepts utf-8)
* check accepted encoding in content-encoding (accepts identity)
* deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed
* deprecate `urlencoded()` without provided `extended` option
* lazy-load urlencoded parsers
* parsers split into files for reduced mem usage
* support gzip and deflate bodies
- set `inflate: false` to turn off
* deps: raw-body@1.2.2
- Support all encodings from `iconv-lite`
1.3.1 / 2014-06-11
==================
* deps: type-is@1.2.1
- Switch dependency from mime to mime-types@1.0.0
1.3.0 / 2014-05-31
==================
* add `extended` option to urlencoded parser
1.2.2 / 2014-05-27
==================
* deps: raw-body@1.1.6
- assert stream encoding on node.js 0.8
- assert stream encoding on node.js < 0.10.6
- deps: bytes@1
1.2.1 / 2014-05-26
==================
* invoke `next(err)` after request fully read
- prevents hung responses and socket hang ups
1.2.0 / 2014-05-11
==================
* add `verify` option
* deps: type-is@1.2.0
- support suffix matching
1.1.2 / 2014-05-11
==================
* improve json parser speed
1.1.1 / 2014-05-11
==================
* fix repeated limit parsing with every request
1.1.0 / 2014-05-10
==================
* add `type` option
* deps: pin for safety and consistency
1.0.2 / 2014-04-14
==================
* use `type-is` module
1.0.1 / 2014-03-20
==================
* lower default limits to 100kb

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save