<span style="font-family: Arial; font-size: 13px;"><pre>Package: annostring<br>Version: 0.2.2<br><br>Unable to `npm install annostring` on Ubuntu (Linux 3.11.0-12-generic):<br><br>0 info it worked if it ends with ok<br>1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'install', 'annostring' ]<br>2 info using npm@1.2.18<br>3 info using node@v0.10.15<br>4 verbose read json /home/my_app/my_node_stuff/package.json<br>6 verbose from cache /home/my_app/my_node_stuff/package.json<br>7 verbose readDependencies using package.json deps<br>8 verbose cache add [ 'annostring@~0.2.0', null ]<br>9 verbose cache add name=undefined spec="annostring@~0.2.0" args=["annostring@~0.2.0",null]<br>10 verbose parsed url { protocol: null,<br>10 verbose parsed url   slashes: null,<br>10 verbose parsed url   auth: null,<br>10 verbose parsed url   host: null,<br>10 verbose parsed url   port: null,<br>10 verbose parsed url   hostname: null,<br>10 verbose parsed url   hash: null,<br>10 verbose parsed url   search: null,<br>10 verbose parsed url   query: null,<br>10 verbose parsed url   pathname: 'annostring@~0.2.0',<br>10 verbose parsed url   path: 'annostring@~0.2.0',<br>10 verbose parsed url   href: 'annostring@~0.2.0' }<br>11 verbose cache add name="annostring" spec="~0.2.0" args=["annostring","~0.2.0"]<br>12 verbose parsed url { protocol: null,<br>12 verbose parsed url   slashes: null,<br>12 verbose parsed url   auth: null,<br>12 verbose parsed url   host: null,<br>12 verbose parsed url   port: null,<br>12 verbose parsed url   hostname: null,<br>12 verbose parsed url   hash: null,<br>12 verbose parsed url   search: null,<br>12 verbose parsed url   query: null,<br>12 verbose parsed url   pathname: '~0.2.0',<br>12 verbose parsed url   path: '~0.2.0',<br>12 verbose parsed url   href: '~0.2.0' }<br>13 verbose addNamed [ 'annostring', '~0.2.0' ]<br>14 verbose addNamed [ null, '>=0.2.0-0 <0.3.0-0' ]<br>15 silly lockFile 123b87ea-annostring-0-2-0 annostring@~0.2.0<br>16 verbose lock annostring@~0.2.0 /home/my_app/.npm/123b87ea-annostring-0-2-0.lock<br>17 silly addNameRange { name: 'annostring',<br>17 silly addNameRange   range: '>=0.2.0-0 <0.3.0-0',<br>17 silly addNameRange   hasData: false }<br>18 verbose url raw annostring<br>19 verbose url resolving [ 'https://registry.npmjs.org/', './annostring' ]<br>20 verbose url resolved <a href="https://registry.npmjs.org/annostring">https://registry.npmjs.org/annostring</a><br>21 info trying registry request attempt 1 at 23:19:05<br>22 verbose etag "ANGH29H655VCUSMD58IOJN3AZ"<br>23 http GET <a href="https://registry.npmjs.org/annostring">https://registry.npmjs.org/annostring</a><br>24 http 304 <a href="https://registry.npmjs.org/annostring">https://registry.npmjs.org/annostring</a><br>25 silly registry.get cb [ 304,<br>25 silly registry.get   { date: 'Mon, 30 Dec 2013 04:19:08 GMT',<br>25 silly registry.get     server: 'Apache',<br>25 silly registry.get     connection: 'Keep-Alive',<br>25 silly registry.get     'keep-alive': 'timeout=10, max=50',<br>25 silly registry.get     etag: '"ANGH29H655VCUSMD58IOJN3AZ"',<br>25 silly registry.get     vary: 'Accept' } ]<br>26 verbose etag annostring from cache<br>27 silly addNameRange number 2 { name: 'annostring',<br>27 silly addNameRange   range: '>=0.2.0-0 <0.3.0-0',<br>27 silly addNameRange   hasData: true }<br>28 silly addNameRange versions [ 'annostring', [ '0.2.0', '0.2.1', '0.2.2' ] ]<br>29 verbose addNamed [ 'annostring', '0.2.2' ]<br>30 verbose addNamed [ '0.2.2', '0.2.2' ]<br>31 silly lockFile 9947d395-annostring-0-2-2 annostring@0.2.2<br>32 verbose lock annostring@0.2.2 /home/my_app/.npm/9947d395-annostring-0-2-2.lock<br>33 verbose read json /home/my_app/.npm/annostring/0.2.2/package/package.json<br>34 silly lockFile 9947d395-annostring-0-2-2 annostring@0.2.2<br>35 silly lockFile 9947d395-annostring-0-2-2 annostring@0.2.2<br>36 silly lockFile 123b87ea-annostring-0-2-0 annostring@~0.2.0<br>37 silly lockFile 123b87ea-annostring-0-2-0 annostring@~0.2.0<br>38 silly resolved [ { name: 'annostring',<br>38 silly resolved     description: 'Annotated string utilities for JavaScript',<br>38 silly resolved     author: { name: 'Juho Vepsalainen', email: 'bebraw@gmail.com' },<br>38 silly resolved     version: '0.2.2',<br>38 silly resolved     dependencies: { annois: '0.3.0', annotate: '0.7.0', 'require-dir': '~0.1.0' },<br>38 silly resolved     devDependencies: { annogenerate: '0.6.2', annofuzz: '~0.3.1' },<br>38 silly resolved     scripts: { test: 'node ./tests' },<br>38 silly resolved     main: './lib',<br>38 silly resolved     repository: { type: 'git', url: 'git@github.com:annojs/string.git' },<br>38 silly resolved     directories: { lib: './lib' },<br>38 silly resolved     homepage: 'https://github.com/annojs/string',<br>38 silly resolved     bugs: { url: 'https://github.com/annojs/string/issues' },<br>38 silly resolved     keywords: [ 'string', 'utilities' ],<br>38 silly resolved     licenses: [ [Object] ],<br>38 silly resolved     readme: '[![build status](<a href="https://secure.travis-ci.org/annojs/string.png)](http://travis-ci.org/annojs/string)\n#">https://secure.travis-ci.org/annojs/string.png)](http://travis-ci.org/annojs/string)\n#</a> annostring- String Utilities for JavaScript\n\n`annostring` provides a set of string utilities for JavaScript. The functions have been [annotated](<a href="https://github.com/annojs/annotate">https://github.com/annojs/annotate</a>) and provide nice runtime errors. This might have a slight effect on performance, though, but I believe the convenience is worth it.\n\n## License\n\n`annostring` is available under MIT. See LICENSE for more details.\n',<br>38 silly resolved     readmeFilename: 'README.md',<br>38 silly resolved     _id: 'annostring@0.2.2',<br>38 silly resolved     _from: 'annostring@~0.2.0' } ]<br>39 info install annostring@0.2.2 into /home/my_app/my_node_stuff<br>40 info installOne annostring@0.2.2<br>41 verbose from cache /home/my_app/.npm/annostring/0.2.2/package/package.json<br>42 info /home/my_app/my_node_stuff/node_modules/annostring unbuild<br>43 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/package.json<br>44 verbose tar unpack /home/my_app/.npm/annostring/0.2.2/package.tgz<br>45 silly lockFile d0db6f49-itbergen-node-modules-annostring /home/my_app/my_node_stuff/node_modules/annostring<br>46 verbose lock /home/my_app/my_node_stuff/node_modules/annostring /home/my_app/.npm/d0db6f49-itbergen-node-modules-annostring.lock<br>47 silly lockFile d714a711-npm-annostring-0-2-2-package-tgz /home/my_app/.npm/annostring/0.2.2/package.tgz<br>48 verbose lock /home/my_app/.npm/annostring/0.2.2/package.tgz /home/my_app/.npm/d714a711-npm-annostring-0-2-2-package-tgz.lock<br>49 silly gunzTarPerm modes [ '755', '644' ]<br>50 silly gunzTarPerm extractEntry package.json<br>51 silly gunzTarPerm extractEntry .npmignore<br>52 silly gunzTarPerm extractEntry README.md<br>53 silly gunzTarPerm extractEntry LICENSE<br>54 silly gunzTarPerm extractEntry .travis.yml<br>55 silly gunzTarPerm extractEntry lib/atoi.js<br>56 silly gunzTarPerm extractEntry lib/index.js<br>57 silly gunzTarPerm extractEntry lib/itoa.js<br>58 silly gunzTarPerm extractEntry lib/lower.js<br>59 silly gunzTarPerm extractEntry lib/fill.js<br>60 silly gunzTarPerm extractEntry lib/partition.js<br>61 silly gunzTarPerm extractEntry lib/reverse.js<br>62 silly gunzTarPerm extractEntry lib/rtrim.js<br>63 silly gunzTarPerm extractEntry lib/split.js<br>64 silly gunzTarPerm extractEntry lib/title.js<br>65 silly gunzTarPerm extractEntry lib/extract.js<br>66 silly gunzTarPerm extractEntry lib/trim.js<br>67 silly gunzTarPerm extractEntry lib/capitalize.js<br>68 silly gunzTarPerm extractEntry lib/upper.js<br>69 silly gunzTarPerm extractEntry lib/ltrim.js<br>70 silly gunzTarPerm extractEntry tests/atoi.js<br>71 silly gunzTarPerm extractEntry tests/index.js<br>72 silly gunzTarPerm extractEntry tests/itoa.js<br>73 silly gunzTarPerm extractEntry tests/lower.js<br>74 silly gunzTarPerm extractEntry tests/fill.js<br>75 silly gunzTarPerm extractEntry tests/partition.js<br>76 silly gunzTarPerm extractEntry tests/reverse.js<br>77 silly gunzTarPerm extractEntry tests/rtrim.js<br>78 silly gunzTarPerm extractEntry tests/split.js<br>79 silly gunzTarPerm extractEntry tests/title.js<br>80 silly gunzTarPerm extractEntry tests/extract.js<br>81 silly gunzTarPerm extractEntry tests/trim.js<br>82 silly gunzTarPerm extractEntry tests/capitalize.js<br>83 silly gunzTarPerm extractEntry tests/upper.js<br>84 silly gunzTarPerm extractEntry tests/ltrim.js<br>85 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/package.json<br>86 silly lockFile d0db6f49-itbergen-node-modules-annostring /home/my_app/my_node_stuff/node_modules/annostring<br>87 silly lockFile d0db6f49-itbergen-node-modules-annostring /home/my_app/my_node_stuff/node_modules/annostring<br>88 silly lockFile d714a711-npm-annostring-0-2-2-package-tgz /home/my_app/.npm/annostring/0.2.2/package.tgz<br>89 silly lockFile d714a711-npm-annostring-0-2-2-package-tgz /home/my_app/.npm/annostring/0.2.2/package.tgz<br>90 info preinstall annostring@0.2.2<br>91 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/package.json<br>92 verbose readDependencies using package.json deps<br>93 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/package.json<br>94 verbose readDependencies using package.json deps<br>95 verbose cache add [ 'annois@0.3.0', null ]<br>96 verbose cache add name=undefined spec="annois@0.3.0" args=["annois@0.3.0",null]<br>97 verbose parsed url { protocol: null,<br>97 verbose parsed url   slashes: null,<br>97 verbose parsed url   auth: null,<br>97 verbose parsed url   host: null,<br>97 verbose parsed url   port: null,<br>97 verbose parsed url   hostname: null,<br>97 verbose parsed url   hash: null,<br>97 verbose parsed url   search: null,<br>97 verbose parsed url   query: null,<br>97 verbose parsed url   pathname: 'annois@0.3.0',<br>97 verbose parsed url   path: 'annois@0.3.0',<br>97 verbose parsed url   href: 'annois@0.3.0' }<br>98 verbose cache add name="annois" spec="0.3.0" args=["annois","0.3.0"]<br>99 verbose parsed url { protocol: null,<br>99 verbose parsed url   slashes: null,<br>99 verbose parsed url   auth: null,<br>99 verbose parsed url   host: null,<br>99 verbose parsed url   port: null,<br>99 verbose parsed url   hostname: null,<br>99 verbose parsed url   hash: null,<br>99 verbose parsed url   search: null,<br>99 verbose parsed url   query: null,<br>99 verbose parsed url   pathname: '0.3.0',<br>99 verbose parsed url   path: '0.3.0',<br>99 verbose parsed url   href: '0.3.0' }<br>100 verbose addNamed [ 'annois', '0.3.0' ]<br>101 verbose addNamed [ '0.3.0', '0.3.0' ]<br>102 silly lockFile 4a315d21-annois-0-3-0 annois@0.3.0<br>103 verbose lock annois@0.3.0 /home/my_app/.npm/4a315d21-annois-0-3-0.lock<br>104 verbose cache add [ 'annotate@0.7.0', null ]<br>105 verbose cache add name=undefined spec="annotate@0.7.0" args=["annotate@0.7.0",null]<br>106 verbose parsed url { protocol: null,<br>106 verbose parsed url   slashes: null,<br>106 verbose parsed url   auth: null,<br>106 verbose parsed url   host: null,<br>106 verbose parsed url   port: null,<br>106 verbose parsed url   hostname: null,<br>106 verbose parsed url   hash: null,<br>106 verbose parsed url   search: null,<br>106 verbose parsed url   query: null,<br>106 verbose parsed url   pathname: 'annotate@0.7.0',<br>106 verbose parsed url   path: 'annotate@0.7.0',<br>106 verbose parsed url   href: 'annotate@0.7.0' }<br>107 verbose cache add name="annotate" spec="0.7.0" args=["annotate","0.7.0"]<br>108 verbose parsed url { protocol: null,<br>108 verbose parsed url   slashes: null,<br>108 verbose parsed url   auth: null,<br>108 verbose parsed url   host: null,<br>108 verbose parsed url   port: null,<br>108 verbose parsed url   hostname: null,<br>108 verbose parsed url   hash: null,<br>108 verbose parsed url   search: null,<br>108 verbose parsed url   query: null,<br>108 verbose parsed url   pathname: '0.7.0',<br>108 verbose parsed url   path: '0.7.0',<br>108 verbose parsed url   href: '0.7.0' }<br>109 verbose addNamed [ 'annotate', '0.7.0' ]<br>110 verbose addNamed [ '0.7.0', '0.7.0' ]<br>111 silly lockFile 8b69fdcd-annotate-0-7-0 annotate@0.7.0<br>112 verbose lock annotate@0.7.0 /home/my_app/.npm/8b69fdcd-annotate-0-7-0.lock<br>113 verbose cache add [ 'require-dir@~0.1.0', null ]<br>114 verbose cache add name=undefined spec="require-dir@~0.1.0" args=["require-dir@~0.1.0",null]<br>115 verbose parsed url { protocol: null,<br>115 verbose parsed url   slashes: null,<br>115 verbose parsed url   auth: null,<br>115 verbose parsed url   host: null,<br>115 verbose parsed url   port: null,<br>115 verbose parsed url   hostname: null,<br>115 verbose parsed url   hash: null,<br>115 verbose parsed url   search: null,<br>115 verbose parsed url   query: null,<br>115 verbose parsed url   pathname: 'require-dir@~0.1.0',<br>115 verbose parsed url   path: 'require-dir@~0.1.0',<br>115 verbose parsed url   href: 'require-dir@~0.1.0' }<br>116 verbose cache add name="require-dir" spec="~0.1.0" args=["require-dir","~0.1.0"]<br>117 verbose parsed url { protocol: null,<br>117 verbose parsed url   slashes: null,<br>117 verbose parsed url   auth: null,<br>117 verbose parsed url   host: null,<br>117 verbose parsed url   port: null,<br>117 verbose parsed url   hostname: null,<br>117 verbose parsed url   hash: null,<br>117 verbose parsed url   search: null,<br>117 verbose parsed url   query: null,<br>117 verbose parsed url   pathname: '~0.1.0',<br>117 verbose parsed url   path: '~0.1.0',<br>117 verbose parsed url   href: '~0.1.0' }<br>118 verbose addNamed [ 'require-dir', '~0.1.0' ]<br>119 verbose addNamed [ null, '>=0.1.0-0 <0.2.0-0' ]<br>120 silly lockFile 04e34c9b-require-dir-0-1-0 require-dir@~0.1.0<br>121 verbose lock require-dir@~0.1.0 /home/my_app/.npm/04e34c9b-require-dir-0-1-0.lock<br>122 silly addNameRange { name: 'require-dir',<br>122 silly addNameRange   range: '>=0.1.0-0 <0.2.0-0',<br>122 silly addNameRange   hasData: false }<br>123 verbose url raw annois/0.3.0<br>124 verbose url resolving [ 'https://registry.npmjs.org/', './annois/0.3.0' ]<br>125 verbose url resolved <a href="https://registry.npmjs.org/annois/0.3.0">https://registry.npmjs.org/annois/0.3.0</a><br>126 info trying registry request attempt 1 at 23:19:06<br>127 verbose etag "4QB6PWXD048LQO2HFRNKH8TE4"<br>128 http GET <a href="https://registry.npmjs.org/annois/0.3.0">https://registry.npmjs.org/annois/0.3.0</a><br>129 verbose url raw annotate/0.7.0<br>130 verbose url resolving [ 'https://registry.npmjs.org/', './annotate/0.7.0' ]<br>131 verbose url resolved <a href="https://registry.npmjs.org/annotate/0.7.0">https://registry.npmjs.org/annotate/0.7.0</a><br>132 info trying registry request attempt 1 at 23:19:06<br>133 verbose etag "2ACZK0KCH55ISJHZF6G5EMLMF"<br>134 http GET <a href="https://registry.npmjs.org/annotate/0.7.0">https://registry.npmjs.org/annotate/0.7.0</a><br>135 verbose url raw require-dir<br>136 verbose url resolving [ 'https://registry.npmjs.org/', './require-dir' ]<br>137 verbose url resolved <a href="https://registry.npmjs.org/require-dir">https://registry.npmjs.org/require-dir</a><br>138 info trying registry request attempt 1 at 23:19:06<br>139 verbose etag "9I4HMIJG3BDAOKXQE1ASFMLT4"<br>140 http GET <a href="https://registry.npmjs.org/require-dir">https://registry.npmjs.org/require-dir</a><br>141 http 304 <a href="https://registry.npmjs.org/annois/0.3.0">https://registry.npmjs.org/annois/0.3.0</a><br>142 silly registry.get cb [ 304,<br>142 silly registry.get   { date: 'Mon, 30 Dec 2013 04:19:09 GMT',<br>142 silly registry.get     server: 'Apache',<br>142 silly registry.get     connection: 'Keep-Alive',<br>142 silly registry.get     'keep-alive': 'timeout=10, max=50',<br>142 silly registry.get     etag: '"4QB6PWXD048LQO2HFRNKH8TE4"',<br>142 silly registry.get     vary: 'Accept' } ]<br>143 verbose etag annois/0.3.0 from cache<br>144 http 304 <a href="https://registry.npmjs.org/annotate/0.7.0">https://registry.npmjs.org/annotate/0.7.0</a><br>145 silly registry.get cb [ 304,<br>145 silly registry.get   { date: 'Mon, 30 Dec 2013 04:19:09 GMT',<br>145 silly registry.get     server: 'Apache',<br>145 silly registry.get     connection: 'Keep-Alive',<br>145 silly registry.get     'keep-alive': 'timeout=10, max=50',<br>145 silly registry.get     etag: '"2ACZK0KCH55ISJHZF6G5EMLMF"',<br>145 silly registry.get     vary: 'Accept' } ]<br>146 verbose etag annotate/0.7.0 from cache<br>147 verbose read json /home/my_app/.npm/annois/0.3.0/package/package.json<br>148 verbose read json /home/my_app/.npm/annotate/0.7.0/package/package.json<br>149 silly lockFile 4a315d21-annois-0-3-0 annois@0.3.0<br>150 silly lockFile 4a315d21-annois-0-3-0 annois@0.3.0<br>151 silly lockFile 8b69fdcd-annotate-0-7-0 annotate@0.7.0<br>152 silly lockFile 8b69fdcd-annotate-0-7-0 annotate@0.7.0<br>153 http 304 <a href="https://registry.npmjs.org/require-dir">https://registry.npmjs.org/require-dir</a><br>154 silly registry.get cb [ 304,<br>154 silly registry.get   { date: 'Mon, 30 Dec 2013 04:19:09 GMT',<br>154 silly registry.get     server: 'Apache',<br>154 silly registry.get     connection: 'Keep-Alive',<br>154 silly registry.get     'keep-alive': 'timeout=10, max=50',<br>154 silly registry.get     etag: '"9I4HMIJG3BDAOKXQE1ASFMLT4"',<br>154 silly registry.get     vary: 'Accept' } ]<br>155 verbose etag require-dir from cache<br>156 silly addNameRange number 2 { name: 'require-dir',<br>156 silly addNameRange   range: '>=0.1.0-0 <0.2.0-0',<br>156 silly addNameRange   hasData: true }<br>157 silly addNameRange versions [ 'require-dir', [ '0.1.0' ] ]<br>158 verbose addNamed [ 'require-dir', '0.1.0' ]<br>159 verbose addNamed [ '0.1.0', '0.1.0' ]<br>160 silly lockFile 26856f6d-require-dir-0-1-0 require-dir@0.1.0<br>161 verbose lock require-dir@0.1.0 /home/my_app/.npm/26856f6d-require-dir-0-1-0.lock<br>162 verbose read json /home/my_app/.npm/require-dir/0.1.0/package/package.json<br>163 silly lockFile 26856f6d-require-dir-0-1-0 require-dir@0.1.0<br>164 silly lockFile 26856f6d-require-dir-0-1-0 require-dir@0.1.0<br>165 silly lockFile 04e34c9b-require-dir-0-1-0 require-dir@~0.1.0<br>166 silly lockFile 04e34c9b-require-dir-0-1-0 require-dir@~0.1.0<br>167 silly resolved [ { name: 'annois',<br>167 silly resolved     description: 'Generative type checkers for JavaScript',<br>167 silly resolved     author: { name: 'Juho Vepsalainen', email: 'bebraw@gmail.com' },<br>167 silly resolved     version: '0.3.0',<br>167 silly resolved     devDependencies: { 'suite.js': '0.6.0' },<br>167 silly resolved     scripts: { test: 'node ./lib/tests.js' },<br>167 silly resolved     main: './lib/annois.js',<br>167 silly resolved     repository: { type: 'git', url: 'git@github.com:annojs/is.git' },<br>167 silly resolved     directories: { lib: './lib' },<br>167 silly resolved     homepage: 'https://github.com/annojs/is',<br>167 silly resolved     bugs: { url: 'https://github.com//annojs/is/issues' },<br>167 silly resolved     keywords: [ 'testing', 'utilities' ],<br>167 silly resolved     licenses: [ [Object] ],<br>167 silly resolved     readme: '# annois - Type checkers for JavaScript\n\n`annois` provides an alternative to [is.js](<a href="https://github.com/scottrabin/is-js">https://github.com/scottrabin/is-js</a>). Its API is compatible with [generators.js](<a href="https://github.com/bebraw/generators.js">https://github.com/bebraw/generators.js</a>). This can be handy for `generative testing`.\n\n## License\n\n`annois` is available under MIT. See LICENSE for more details.\n',<br>167 silly resolved     readmeFilename: 'README.md',<br>167 silly resolved     _id: 'annois@0.3.0',<br>167 silly resolved     _from: 'annois@0.3.0' },<br>167 silly resolved   { name: 'annotate',<br>167 silly resolved     description: 'Asserts your function invariants',<br>167 silly resolved     author: { name: 'Juho Vepsalainen', email: 'bebraw@gmail.com' },<br>167 silly resolved     version: '0.7.0',<br>167 silly resolved     dependencies: { 'is-js': '== 0.1.1' },<br>167 silly resolved     devDependencies: { 'suite.js': '== 0.6.0', funkit: '== 0.7.7' },<br>167 silly resolved     scripts: { test: 'node ./lib/tests.js' },<br>167 silly resolved     main: './lib/annotate.js',<br>167 silly resolved     repository: { type: 'git', url: 'git@github.com:annojs/annotate.git' },<br>167 silly resolved     directories: { lib: './lib' },<br>167 silly resolved     homepage: 'https://github.com/annojs/annotate',<br>167 silly resolved     bugs: { url: 'https://github.com/annojs/annotate/issues' },<br>167 silly resolved     keywords: [ 'testing', 'utilities' ],<br>167 silly resolved     licenses: [ [Object] ],<br>167 silly resolved     readme: '# annotate - Annotate your JavaScript function definitions\n\n`annotate` allows you to ... guess what ... annotate your functions. For\ninstance you could document invariants of your function. Or attach a\ndescription to it. It is possible to access this data later on.\n\nThis metadata can be used by tools such as [suite.js](<a href="https://github.com/bebraw/suite.js)\nin">https://github.com/bebraw/suite.js)\nin</a> order to generate tests. In addition you can access the metadata via REPL.\n\nThe usage is quite simple as the following example illustrates:\n\n```javascript\n// let\'s define some function to annotate\nfunction add(a, b) {\n    return a + b;\n}\n\n// type checkers from is-js (<a href="https://npmjs.org/package/is-js)\nvar">https://npmjs.org/package/is-js)\nvar</a> addNumbers = annotate(\'addNumbers\', \'Adds numbers\')\n    .on(is.number, is.number, add);\nvar addStrings = annotate(\'addStrings\', \'Adds strings\')\n    .on(is.string, is.string, add);\n\n// you can assert invariants too\nvar addPositive = annotate(\'addPositive\', \'Adds positive\')\n    .on(isPositive, isPositive, add)\n    .satisfies(isPositive); // postcondition\n\n// it is possible to chain guards\nvar fib = annotate(\'fib\', \'Calculates Fibonacci numbers\')\n    .on(0, 0).on(1, 1)\n    .on(is.number, function(n) {\n        return fib(n - 1) + fib(n - 2);\n    });\n\n// invariants may depend on each other\nvar clamp = annotate(\'clamp\', \'Clamps given number between given bounds\')\n    .on(is.number, is.number, function(a, args) {\n        return is.number(a) && args[1] <= a;\n    }, function(a, min, max) {\n        return Math.max(Math.min(a, max), min);\n    });\n\n// furthermore it is possible to pass a variable amount of args\nvar min = annotate(\'min\', \'Returns minimum of the given numbers\')\n    .on([is.number], Math.min);\n\nfunction isPositive(a) {\n    return a >= 0;\n}\n```\n\nThe `annotate` function will create a new function that contains the metadata as\nproperties `_name`, `_doc`, `_preconditions` and `_postconditions`. In case\nsome pre- or postcondition doesn\'t pass it won\'t return and gives a warning\ninstead.\n\n## Related Projects\n\n* [suite.js](<a href="https://github.com/bebraw/suite.js">https://github.com/bebraw/suite.js</a>) - Constructs tests based on invariant data (fuzzing)\n* [funkit](<a href="https://github.com/bebraw/funkit">https://github.com/bebraw/funkit</a>) - Collection of utilities tested using `annotate.js` and `suite.js`\n\n## Acknowledgements\n\n* [Kris Jordan](<a href="http://krisjordan.com/)\">http://krisjordan.com/)\</a>'s [multimethod.js](<a href="http://krisjordan.com/multimethod-js">http://krisjordan.com/multimethod-js</a>) - Provided inspiration for the API\n\n## License\n\n`annotate` is available under MIT. See LICENSE for more details.\n\n',<br>167 silly resolved     readmeFilename: 'README.md',<br>167 silly resolved     _id: 'annotate@0.7.0',<br>167 silly resolved     _from: 'annotate@0.7.0' },<br>167 silly resolved   { name: 'require-dir',<br>167 silly resolved     description: 'Helper to require() directories.',<br>167 silly resolved     version: '0.1.0',<br>167 silly resolved     author: { name: 'Aseem Kishore', email: 'aseem.kishore@gmail.com' },<br>167 silly resolved     dependencies: {},<br>167 silly resolved     devDependencies: { 'coffee-script': '~1.3.3' },<br>167 silly resolved     engines: { node: '*' },<br>167 silly resolved     scripts: { test: 'node test' },<br>167 silly resolved     homepage: 'https://github.com/aseemk/requireDir',<br>167 silly resolved     repository: { type: 'git', url: 'git://github.com/aseemk/requireDir.git' },<br>167 silly resolved     readme: '# requireDir()\n\nNode helper to `require()` directories. The directory\'s files are examined,\nand each one that can be `require()`\'d is `require()`\'d and returned as part\nof a hash from that file\'s basename to its exported contents.\n\n## Example\n\nGiven this directory structure:\n\n```\ndir\n+ a.js\n+ b.json\n+ c.coffee\n+ d.txt\n```\n\n`requireDir(\'./dir\')` will return the equivalent of:\n\n```js\n{ a: require(\'./dir/a.js\')\n, b: require(\'./dir/b.json\')\n}\n```\n\nAnd if CoffeeScript was registered, `c.coffee` will also be returned.\n\n## Installation\n\n```\nnpm install require-dir\n```\n\nNote that this package is *not* `requireDir` — turns out that\'s already\n[taken](<a href="https://github.com/JamesEggers1/node-requiredir">https://github.com/JamesEggers1/node-requiredir</a>)! ;)\n\n## Usage\n\nBasic usage that examines only directories\' immediate files:\n\n```js\nvar requireDir = require(\'require-dir\');\nvar dir = requireDir(\'./path/to/dir\');\n```\n\nYou can optionally customize the behavior by passing an extra options object:\n\n```js\nvar dir = requireDir(\'./path/to/dir\', {recurse: true});\n```\n\n## Options\n\n`recurse`: Whether to recursively `require()` subdirectories too.\nDefault is false.\n\n`duplicates`: By default, if multiple files share the same basename, only the\nhighest priority one is `require()`\'d and returned. (Priority is determined by\nthe order of `require.extensions` keys, with directories taking precedence\nover files if `recurse` is true.) Specifying this option `require()`\'s all\nfiles and returns full filename keys in addition to basename keys.\nDefault is false.\n\nE.g. in the example above, if there were also an `a.json`, the behavior would\nbe the same by default, but specifying `duplicates: true` would yield:\n\n```js\n{ a: require(\'./dir/a.js\')\n, \'a.js\': require(\'./dir/a.js\')\n, \'a.json\': require(\'./dir/a.json\')\n, b: require(\'./dir/b.json\')\n, \'b.json\': require(\'./dir/b.json\')\n}\n```\n\nThere might be more options in the future. ;)\n\n## Tips\n\nIf you want to `require()` the same directory in multiple places, you can do\nthis in the directory itself! Just make an `index.js` file with the following:\n\n```js\nmodule.exports = require(\'require-dir\')();   // defaults to \'.\'\n```\n\nAnd don\'t worry, the calling file is always ignored to prevent infinite loops.\n\n## TODO\n\nIt\'d be awesome if this could work with the regular `require()`, e.g. like a\nregular `require()` hook. Not sure that\'s possible though; directories are\nalready special-cased to look for an `index` file or `package.json`.\n\nAn `ignore` option would be nice: a string or regex, or an array of either or\nboth, of paths, relative to the directory, to ignore. String paths can be\nextensionless to ignore all extensions for that path. Supporting shell-style\nglobs in string paths would be nice.\n\nCurrently, basenames are derived for directories too — e.g. a directory named\n`a.txt` will be returned as `a` when recursing — but should that be the case?\nMaybe directories should always be returned by their full name, and/or maybe\nthis behavior should be customizable. This is hopefully an edge case.\n\n## License\n\nMIT. &copy; 2012 Aseem Kishore.\n',<br>167 silly resolved     readmeFilename: 'README.md',<br>167 silly resolved     _id: 'require-dir@0.1.0',<br>167 silly resolved     _from: 'require-dir@~0.1.0' } ]<br>168 info install annois@0.3.0 into /home/my_app/my_node_stuff/node_modules/annostring<br>169 info install annotate@0.7.0 into /home/my_app/my_node_stuff/node_modules/annostring<br>170 info install require-dir@0.1.0 into /home/my_app/my_node_stuff/node_modules/annostring<br>171 info installOne annois@0.3.0<br>172 info installOne annotate@0.7.0<br>173 info installOne require-dir@0.1.0<br>174 verbose from cache /home/my_app/.npm/annois/0.3.0/package/package.json<br>175 info /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois unbuild<br>176 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois/package.json<br>177 verbose from cache /home/my_app/.npm/annotate/0.7.0/package/package.json<br>178 info /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate unbuild<br>179 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate/package.json<br>180 verbose from cache /home/my_app/.npm/require-dir/0.1.0/package/package.json<br>181 info /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir unbuild<br>182 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir/package.json<br>183 verbose tar unpack /home/my_app/.npm/annois/0.3.0/package.tgz<br>184 silly lockFile f24c9c92-s-annostring-node-modules-annois /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois<br>185 verbose lock /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois /home/my_app/.npm/f24c9c92-s-annostring-node-modules-annois.lock<br>186 silly lockFile f4b86c94-gen-npm-annois-0-3-0-package-tgz /home/my_app/.npm/annois/0.3.0/package.tgz<br>187 verbose lock /home/my_app/.npm/annois/0.3.0/package.tgz /home/my_app/.npm/f4b86c94-gen-npm-annois-0-3-0-package-tgz.lock<br>188 verbose tar unpack /home/my_app/.npm/annotate/0.7.0/package.tgz<br>189 silly lockFile 2db93adf-annostring-node-modules-annotate /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate<br>190 verbose lock /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate /home/my_app/.npm/2db93adf-annostring-node-modules-annotate.lock<br>191 silly lockFile cf99abc4-n-npm-annotate-0-7-0-package-tgz /home/my_app/.npm/annotate/0.7.0/package.tgz<br>192 verbose lock /home/my_app/.npm/annotate/0.7.0/package.tgz /home/my_app/.npm/cf99abc4-n-npm-annotate-0-7-0-package-tgz.lock<br>193 verbose tar unpack /home/my_app/.npm/require-dir/0.1.0/package.tgz<br>194 silly lockFile 3753894c-ostring-node-modules-require-dir /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir<br>195 verbose lock /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir /home/my_app/.npm/3753894c-ostring-node-modules-require-dir.lock<br>196 silly lockFile 06c0e772-pm-require-dir-0-1-0-package-tgz /home/my_app/.npm/require-dir/0.1.0/package.tgz<br>197 verbose lock /home/my_app/.npm/require-dir/0.1.0/package.tgz /home/my_app/.npm/06c0e772-pm-require-dir-0-1-0-package-tgz.lock<br>198 silly gunzTarPerm modes [ '755', '644' ]<br>199 silly gunzTarPerm modes [ '755', '644' ]<br>200 silly gunzTarPerm modes [ '755', '644' ]<br>201 silly gunzTarPerm extractEntry package.json<br>202 silly gunzTarPerm extractEntry package.json<br>203 silly gunzTarPerm extractEntry package.json<br>204 silly gunzTarPerm extractEntry .npmignore<br>205 silly gunzTarPerm extractEntry README.md<br>206 silly gunzTarPerm extractEntry .npmignore<br>207 silly gunzTarPerm extractEntry README.md<br>208 silly gunzTarPerm extractEntry .npmignore<br>209 silly gunzTarPerm extractEntry README.md<br>210 silly gunzTarPerm extractEntry LICENSE<br>211 silly gunzTarPerm extractEntry lib/annois.js<br>212 silly gunzTarPerm extractEntry index.js<br>213 silly gunzTarPerm extractEntry test/duplicates.js<br>214 silly gunzTarPerm extractEntry LICENSE<br>215 silly gunzTarPerm extractEntry component.json<br>216 silly gunzTarPerm extractEntry lib/tests.js<br>217 silly gunzTarPerm extractEntry test/index.js<br>218 silly gunzTarPerm extractEntry test/recurse.js<br>219 silly gunzTarPerm extractEntry lib/annotate.js<br>220 silly gunzTarPerm extractEntry lib/tests.js<br>221 silly gunzTarPerm extractEntry test/simple.js<br>222 silly gunzTarPerm extractEntry test/duplicates/a.js<br>223 silly gunzTarPerm extractEntry test/duplicates/d.js<br>224 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois/package.json<br>225 silly gunzTarPerm extractEntry test/duplicates/b/1.js<br>226 silly gunzTarPerm extractEntry test/duplicates/b/2.js<br>227 silly gunzTarPerm extractEntry test/duplicates/b/1.txt<br>228 silly gunzTarPerm extractEntry test/duplicates/b/2.json<br>229 silly lockFile f24c9c92-s-annostring-node-modules-annois /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois<br>230 silly lockFile f24c9c92-s-annostring-node-modules-annois /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois<br>231 silly lockFile f4b86c94-gen-npm-annois-0-3-0-package-tgz /home/my_app/.npm/annois/0.3.0/package.tgz<br>232 silly lockFile f4b86c94-gen-npm-annois-0-3-0-package-tgz /home/my_app/.npm/annois/0.3.0/package.tgz<br>233 info preinstall annois@0.3.0<br>234 silly gunzTarPerm extractEntry test/duplicates/b.json<br>235 silly gunzTarPerm extractEntry test/duplicates/c/3.json<br>236 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois/package.json<br>237 verbose readDependencies using package.json deps<br>238 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois/package.json<br>239 verbose readDependencies using package.json deps<br>240 silly resolved []<br>241 verbose about to build /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois<br>242 info build /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois<br>243 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annois/package.json<br>244 verbose linkStuff [ false,<br>244 verbose linkStuff   false,<br>244 verbose linkStuff   false,<br>244 verbose linkStuff   '/home/my_app/my_node_stuff/node_modules/annostring/node_modules' ]<br>245 info linkStuff annois@0.3.0<br>246 verbose linkBins annois@0.3.0<br>247 verbose linkMans annois@0.3.0<br>248 verbose rebuildBundles annois@0.3.0<br>249 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate/package.json<br>250 info install annois@0.3.0<br>251 info postinstall annois@0.3.0<br>252 silly gunzTarPerm extractEntry test/duplicates/c.txt<br>253 silly gunzTarPerm extractEntry test/duplicates/d.json<br>254 silly lockFile 2db93adf-annostring-node-modules-annotate /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate<br>255 silly lockFile 2db93adf-annostring-node-modules-annotate /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate<br>256 silly lockFile cf99abc4-n-npm-annotate-0-7-0-package-tgz /home/my_app/.npm/annotate/0.7.0/package.tgz<br>257 silly lockFile cf99abc4-n-npm-annotate-0-7-0-package-tgz /home/my_app/.npm/annotate/0.7.0/package.tgz<br>258 silly gunzTarPerm extractEntry test/recurse/a.js<br>259 silly gunzTarPerm extractEntry test/recurse/b/1/foo.js<br>260 info preinstall annotate@0.7.0<br>261 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate/package.json<br>262 verbose readDependencies using package.json deps<br>263 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate/package.json<br>264 silly gunzTarPerm extractEntry test/recurse/b/1/bar.json<br>265 silly gunzTarPerm extractEntry test/recurse/b/2/baz.txt<br>266 verbose readDependencies using package.json deps<br>267 verbose cache add [ 'is-js@== 0.1.1', null ]<br>268 verbose cache add name=undefined spec="is-js@== 0.1.1" args=["is-js@== 0.1.1",null]<br>269 verbose parsed url { protocol: null,<br>269 verbose parsed url   slashes: null,<br>269 verbose parsed url   auth: null,<br>269 verbose parsed url   host: null,<br>269 verbose parsed url   port: null,<br>269 verbose parsed url   hostname: null,<br>269 verbose parsed url   hash: null,<br>269 verbose parsed url   search: null,<br>269 verbose parsed url   query: null,<br>269 verbose parsed url   pathname: 'is-js@==%200.1.1',<br>269 verbose parsed url   path: 'is-js@==%200.1.1',<br>269 verbose parsed url   href: 'is-js@==%200.1.1' }<br>270 verbose cache add name="is-js" spec="== 0.1.1" args=["is-js","== 0.1.1"]<br>271 verbose parsed url { protocol: null,<br>271 verbose parsed url   slashes: null,<br>271 verbose parsed url   auth: null,<br>271 verbose parsed url   host: null,<br>271 verbose parsed url   port: null,<br>271 verbose parsed url   hostname: null,<br>271 verbose parsed url   hash: null,<br>271 verbose parsed url   search: null,<br>271 verbose parsed url   query: null,<br>271 verbose parsed url   pathname: '==%200.1.1',<br>271 verbose parsed url   path: '==%200.1.1',<br>271 verbose parsed url   href: '==%200.1.1' }<br>272 verbose addNamed [ 'is-js', '== 0.1.1' ]<br>273 verbose addNamed [ null, null ]<br>274 silly lockFile 390fb54b-is-js-0-1-1 is-js@== 0.1.1<br>275 verbose lock is-js@== 0.1.1 /home/my_app/.npm/390fb54b-is-js-0-1-1.lock<br>276 info addNameTag [ 'is-js', '== 0.1.1' ]<br>277 silly gunzTarPerm extractEntry test/recurse/c/3.json<br>278 silly gunzTarPerm extractEntry test/simple/a.js<br>279 verbose url raw is-js<br>280 verbose url resolving [ 'https://registry.npmjs.org/', './is-js' ]<br>281 verbose url resolved <a href="https://registry.npmjs.org/is-js">https://registry.npmjs.org/is-js</a><br>282 info trying registry request attempt 1 at 23:19:06<br>283 verbose etag "4XWW8MXJCYJS7DX4ML4EZAAB"<br>284 http GET <a href="https://registry.npmjs.org/is-js">https://registry.npmjs.org/is-js</a><br>285 silly gunzTarPerm extractEntry test/simple/b.json<br>286 silly gunzTarPerm extractEntry test/simple/c.coffee<br>287 silly gunzTarPerm extractEntry test/simple/d.txt<br>288 verbose read json /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir/package.json<br>289 silly lockFile 3753894c-ostring-node-modules-require-dir /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir<br>290 silly lockFile 3753894c-ostring-node-modules-require-dir /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir<br>291 silly lockFile 06c0e772-pm-require-dir-0-1-0-package-tgz /home/my_app/.npm/require-dir/0.1.0/package.tgz<br>292 silly lockFile 06c0e772-pm-require-dir-0-1-0-package-tgz /home/my_app/.npm/require-dir/0.1.0/package.tgz<br>293 info preinstall require-dir@0.1.0<br>294 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir/package.json<br>295 verbose readDependencies using package.json deps<br>296 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir/package.json<br>297 verbose readDependencies using package.json deps<br>298 silly resolved []<br>299 verbose about to build /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir<br>300 info build /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir<br>301 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/require-dir/package.json<br>302 verbose linkStuff [ false,<br>302 verbose linkStuff   false,<br>302 verbose linkStuff   false,<br>302 verbose linkStuff   '/home/my_app/my_node_stuff/node_modules/annostring/node_modules' ]<br>303 info linkStuff require-dir@0.1.0<br>304 verbose linkBins require-dir@0.1.0<br>305 verbose linkMans require-dir@0.1.0<br>306 verbose rebuildBundles require-dir@0.1.0<br>307 info install require-dir@0.1.0<br>308 info postinstall require-dir@0.1.0<br>309 http 304 <a href="https://registry.npmjs.org/is-js">https://registry.npmjs.org/is-js</a><br>310 silly registry.get cb [ 304,<br>310 silly registry.get   { date: 'Mon, 30 Dec 2013 04:19:09 GMT',<br>310 silly registry.get     server: 'Apache',<br>310 silly registry.get     connection: 'Keep-Alive',<br>310 silly registry.get     'keep-alive': 'timeout=10, max=50',<br>310 silly registry.get     etag: '"4XWW8MXJCYJS7DX4ML4EZAAB"',<br>310 silly registry.get     vary: 'Accept' } ]<br>311 verbose etag is-js from cache<br>312 silly lockFile 390fb54b-is-js-0-1-1 is-js@== 0.1.1<br>313 silly lockFile 390fb54b-is-js-0-1-1 is-js@== 0.1.1<br>314 verbose about to build /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate<br>315 info /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate unbuild<br>316 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/node_modules/annotate/package.json<br>317 info preuninstall annotate@0.7.0<br>318 info uninstall annotate@0.7.0<br>319 verbose false,/home/my_app/my_node_stuff/node_modules,/home/my_app/my_node_stuff/node_modules/annostring/node_modules unbuild annotate@0.7.0<br>320 info postuninstall annotate@0.7.0<br>321 verbose about to build /home/my_app/my_node_stuff/node_modules/annostring<br>322 info /home/my_app/my_node_stuff/node_modules/annostring unbuild<br>323 verbose from cache /home/my_app/my_node_stuff/node_modules/annostring/package.json<br>324 info preuninstall annostring@0.2.2<br>325 info uninstall annostring@0.2.2<br>326 verbose true,/home/my_app/my_node_stuff/node_modules,/home/my_app/my_node_stuff/node_modules unbuild annostring@0.2.2<br>327 info postuninstall annostring@0.2.2<br>328 error Error: No compatible version found: is-js@'== 0.1.1'<br>328 error Valid install targets:<br>328 error ["0.1.0","0.1.1"]<br>328 error     at installTargetsError (/usr/share/npm/lib/cache.js:685:10)<br>328 error     at /usr/share/npm/lib/cache.js:607:10<br>328 error     at saved (/usr/share/npm/node_modules/npm-registry-client/lib/get.js:138:7)<br>328 error     at /usr/lib/nodejs/graceful-fs/polyfills.js:133:7<br>328 error     at Object.oncomplete (fs.js:107:15)<br>329 error If you need help, you may report this log at:<br>329 error     <<a href="http://bugs.debian.org/npm&gt">http://bugs.debian.org/npm&gt</a>;<br>329 error or use<br>329 error     reportbug --attach /home/my_app/my_node_stuff/npm-debug.log npm<br>330 error System Linux 3.11.0-12-generic<br>331 error command "/usr/bin/nodejs" "/usr/bin/npm" "install" "annostring"<br>332 error cwd /home/my_app/my_node_stuff<br>333 error node -v v0.10.15<br>334 error npm -v 1.2.18<br>335 verbose exit [ 1, true ]<br><br>Thanks!<br><br>O.D.<br></pre></span>