vulcan 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. data/lib/vulcan/version.rb +1 -1
  2. data/server/Procfile +1 -0
  3. data/server/bin/make +39 -0
  4. data/server/lib/on.js +13 -0
  5. data/server/lib/spawner.js +101 -0
  6. data/server/node_modules/connect-form/History.md +28 -0
  7. data/server/node_modules/connect-form/LICENSE +22 -0
  8. data/server/node_modules/connect-form/Makefile +11 -0
  9. data/server/node_modules/connect-form/Readme.md +35 -0
  10. data/server/node_modules/connect-form/index.html +213 -0
  11. data/server/node_modules/connect-form/index.js +100 -0
  12. data/server/node_modules/connect-form/lib/connect-form.js +100 -0
  13. data/server/node_modules/connect-form/node_modules/formidable/Makefile +14 -0
  14. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +264 -0
  15. data/server/node_modules/connect-form/node_modules/formidable/TODO +3 -0
  16. data/server/node_modules/connect-form/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
  17. data/server/node_modules/connect-form/node_modules/formidable/example/post.js +43 -0
  18. data/server/node_modules/connect-form/node_modules/formidable/example/upload.js +48 -0
  19. data/server/node_modules/connect-form/node_modules/formidable/index.js +1 -0
  20. data/server/node_modules/connect-form/node_modules/formidable/lib/file.js +61 -0
  21. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +362 -0
  22. data/server/node_modules/connect-form/node_modules/formidable/lib/index.js +3 -0
  23. data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +301 -0
  24. data/server/node_modules/connect-form/node_modules/formidable/lib/querystring_parser.js +25 -0
  25. data/server/node_modules/connect-form/node_modules/formidable/lib/util.js +6 -0
  26. data/server/node_modules/connect-form/node_modules/formidable/package.json +19 -0
  27. data/server/node_modules/connect-form/node_modules/formidable/test/common.js +20 -0
  28. data/server/node_modules/connect-form/node_modules/formidable/test/fast/test-incoming-form.js +45 -0
  29. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/: // ? % * | /" < > . /342/230/203 ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt" +1 -0
  30. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
  31. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +36 -0
  32. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
  33. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
  34. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +33 -0
  35. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
  36. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
  37. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
  38. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
  39. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  40. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multipart.js +72 -0
  41. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/common.js +24 -0
  42. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
  43. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
  44. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
  45. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
  46. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
  47. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
  48. data/server/node_modules/connect-form/node_modules/formidable/test/run.js +7 -0
  49. data/server/node_modules/connect-form/node_modules/formidable/test/slow/test-fixtures.js +84 -0
  50. data/server/node_modules/connect-form/node_modules/formidable/tool/record.js +47 -0
  51. data/server/node_modules/connect-form/package.json +9 -0
  52. data/server/node_modules/connect-form/support/connect/History.md +120 -0
  53. data/server/node_modules/connect-form/support/connect/Makefile +85 -0
  54. data/server/node_modules/connect-form/support/connect/README.md +121 -0
  55. data/server/node_modules/connect-form/support/connect/benchmarks/graph +79 -0
  56. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/connect.js +19 -0
  57. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/node.js +16 -0
  58. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/rack.thin.ru +9 -0
  59. data/server/node_modules/connect-form/support/connect/benchmarks/hello-world/sinatra.thin.ru +10 -0
  60. data/server/node_modules/connect-form/support/connect/benchmarks/public/jquery.js +19 -0
  61. data/server/node_modules/connect-form/support/connect/benchmarks/run +60 -0
  62. data/server/node_modules/connect-form/support/connect/benchmarks/static/connect.js +10 -0
  63. data/server/node_modules/connect-form/support/connect/benchmarks/static/node.js +17 -0
  64. data/server/node_modules/connect-form/support/connect/benchmarks/static/sinatra.thin.ru +10 -0
  65. data/server/node_modules/connect-form/support/connect/docs/api.html +1973 -0
  66. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.1 +27 -0
  67. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.html +164 -0
  68. data/server/node_modules/connect-form/support/connect/docs/bodyDecoder.md +11 -0
  69. data/server/node_modules/connect-form/support/connect/docs/compiler.1 +66 -0
  70. data/server/node_modules/connect-form/support/connect/docs/compiler.html +193 -0
  71. data/server/node_modules/connect-form/support/connect/docs/compiler.md +32 -0
  72. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.1 +16 -0
  73. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.html +158 -0
  74. data/server/node_modules/connect-form/support/connect/docs/conditionalGet.md +7 -0
  75. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.1 +27 -0
  76. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.html +164 -0
  77. data/server/node_modules/connect-form/support/connect/docs/cookieDecoder.md +11 -0
  78. data/server/node_modules/connect-form/support/connect/docs/errorHandler.1 +58 -0
  79. data/server/node_modules/connect-form/support/connect/docs/errorHandler.html +181 -0
  80. data/server/node_modules/connect-form/support/connect/docs/errorHandler.md +28 -0
  81. data/server/node_modules/connect-form/support/connect/docs/format.1 +7 -0
  82. data/server/node_modules/connect-form/support/connect/docs/format.html +152 -0
  83. data/server/node_modules/connect-form/support/connect/docs/format.md +3 -0
  84. data/server/node_modules/connect-form/support/connect/docs/index.1 +260 -0
  85. data/server/node_modules/connect-form/support/connect/docs/index.html +332 -0
  86. data/server/node_modules/connect-form/support/connect/docs/index.md +171 -0
  87. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.1 +62 -0
  88. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.html +192 -0
  89. data/server/node_modules/connect-form/support/connect/docs/jsonrpc.md +39 -0
  90. data/server/node_modules/connect-form/support/connect/docs/layout/api.foot.html +3 -0
  91. data/server/node_modules/connect-form/support/connect/docs/layout/api.head.html +142 -0
  92. data/server/node_modules/connect-form/support/connect/docs/lint.1 +102 -0
  93. data/server/node_modules/connect-form/support/connect/docs/lint.html +232 -0
  94. data/server/node_modules/connect-form/support/connect/docs/lint.md +79 -0
  95. data/server/node_modules/connect-form/support/connect/docs/logger.1 +66 -0
  96. data/server/node_modules/connect-form/support/connect/docs/logger.html +184 -0
  97. data/server/node_modules/connect-form/support/connect/docs/logger.md +31 -0
  98. data/server/node_modules/connect-form/support/connect/docs/methodOverride.1 +31 -0
  99. data/server/node_modules/connect-form/support/connect/docs/methodOverride.html +171 -0
  100. data/server/node_modules/connect-form/support/connect/docs/methodOverride.md +17 -0
  101. data/server/node_modules/connect-form/support/connect/docs/responseTime.1 +7 -0
  102. data/server/node_modules/connect-form/support/connect/docs/responseTime.html +152 -0
  103. data/server/node_modules/connect-form/support/connect/docs/responseTime.md +3 -0
  104. data/server/node_modules/connect-form/support/connect/docs/router.1 +75 -0
  105. data/server/node_modules/connect-form/support/connect/docs/router.html +211 -0
  106. data/server/node_modules/connect-form/support/connect/docs/router.md +58 -0
  107. data/server/node_modules/connect-form/support/connect/docs/session.1 +115 -0
  108. data/server/node_modules/connect-form/support/connect/docs/session.html +214 -0
  109. data/server/node_modules/connect-form/support/connect/docs/session.md +55 -0
  110. data/server/node_modules/connect-form/support/connect/docs/staticProvider.1 +28 -0
  111. data/server/node_modules/connect-form/support/connect/docs/staticProvider.html +162 -0
  112. data/server/node_modules/connect-form/support/connect/docs/staticProvider.md +11 -0
  113. data/server/node_modules/connect-form/support/connect/examples/error/app.js +13 -0
  114. data/server/node_modules/connect-form/support/connect/examples/jsonrpc/app.js +38 -0
  115. data/server/node_modules/connect-form/support/connect/examples/less/app.js +21 -0
  116. data/server/node_modules/connect-form/support/connect/examples/less/public/index.html +8 -0
  117. data/server/node_modules/connect-form/support/connect/examples/less/public/style.less +8 -0
  118. data/server/node_modules/connect-form/support/connect/examples/lint/app.js +40 -0
  119. data/server/node_modules/connect-form/support/connect/examples/multitouch/app.js +61 -0
  120. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/client.js +73 -0
  121. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/favicon.ico +0 -0
  122. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/index.html +16 -0
  123. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/raphael.js +113 -0
  124. data/server/node_modules/connect-form/support/connect/examples/multitouch/public/style.css +23 -0
  125. data/server/node_modules/connect-form/support/connect/examples/router/app.js +63 -0
  126. data/server/node_modules/connect-form/support/connect/examples/sass/app.js +21 -0
  127. data/server/node_modules/connect-form/support/connect/examples/sass/public/index.html +8 -0
  128. data/server/node_modules/connect-form/support/connect/examples/sass/public/style.sass +4 -0
  129. data/server/node_modules/connect-form/support/connect/examples/session/app.js +60 -0
  130. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/app.js +15 -0
  131. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/hello.js +13 -0
  132. data/server/node_modules/connect-form/support/connect/examples/stack-middleware/world.js +13 -0
  133. data/server/node_modules/connect-form/support/connect/examples/static/app.js +10 -0
  134. data/server/node_modules/connect-form/support/connect/examples/static/public/style.css +3 -0
  135. data/server/node_modules/connect-form/support/connect/examples/url-rewrite/app.js +44 -0
  136. data/server/node_modules/connect-form/support/connect/examples/vhost/app.js +25 -0
  137. data/server/node_modules/connect-form/support/connect/install.sh +6 -0
  138. data/server/node_modules/connect-form/support/connect/lib/connect/index.js +309 -0
  139. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/bodyDecoder.js +69 -0
  140. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cache.js +142 -0
  141. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cacheManifest.js +71 -0
  142. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/compiler.js +150 -0
  143. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/conditionalGet.js +71 -0
  144. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/cookieDecoder.js +37 -0
  145. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/errorHandler.js +91 -0
  146. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/format.js +46 -0
  147. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-compress.js +79 -0
  148. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip-proc.js +73 -0
  149. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/gzip.js +8 -0
  150. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/jsonrpc.js +235 -0
  151. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/lint.js +136 -0
  152. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/logger.js +107 -0
  153. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/methodOverride.js +54 -0
  154. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/pubsub.js +107 -0
  155. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/repl.js +43 -0
  156. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/responseTime.js +28 -0
  157. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/router.js +158 -0
  158. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session.js +129 -0
  159. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/memory.js +141 -0
  160. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/session.js +71 -0
  161. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/session/store.js +59 -0
  162. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/staticProvider.js +144 -0
  163. data/server/node_modules/connect-form/support/connect/lib/connect/middleware/vhost.js +43 -0
  164. data/server/node_modules/connect-form/support/connect/lib/connect/public/error.html +13 -0
  165. data/server/node_modules/connect-form/support/connect/lib/connect/public/style.css +98 -0
  166. data/server/node_modules/connect-form/support/connect/lib/connect/response.js +56 -0
  167. data/server/node_modules/connect-form/support/connect/lib/connect/utils.js +428 -0
  168. data/server/node_modules/connect-form/support/connect/package.json +21 -0
  169. data/server/node_modules/connect-form/support/connect/support/highlight.js +26 -0
  170. data/server/node_modules/connect-form/support/connect/test/bodyDecoder.test.js +69 -0
  171. data/server/node_modules/connect-form/support/connect/test/compiler.test.js +23 -0
  172. data/server/node_modules/connect-form/support/connect/test/connect.test.js +187 -0
  173. data/server/node_modules/connect-form/support/connect/test/cookieDecoder.test.js +31 -0
  174. data/server/node_modules/connect-form/support/connect/test/errorHandler.test.js +60 -0
  175. data/server/node_modules/connect-form/support/connect/test/filters/uppercase.js +14 -0
  176. data/server/node_modules/connect-form/support/connect/test/fixtures/foo.bar.baz.sass +2 -0
  177. data/server/node_modules/connect-form/support/connect/test/fixtures/index.html +1 -0
  178. data/server/node_modules/connect-form/support/connect/test/fixtures/some text.txt +1 -0
  179. data/server/node_modules/connect-form/support/connect/test/fixtures/style.less +2 -0
  180. data/server/node_modules/connect-form/support/connect/test/fixtures/style.sass +3 -0
  181. data/server/node_modules/connect-form/support/connect/test/fixtures/user.json +4 -0
  182. data/server/node_modules/connect-form/support/connect/test/format.test.js +37 -0
  183. data/server/node_modules/connect-form/support/connect/test/gzip.test.js +55 -0
  184. data/server/node_modules/connect-form/support/connect/test/helpers/http.js +87 -0
  185. data/server/node_modules/connect-form/support/connect/test/helpers/index.js +12 -0
  186. data/server/node_modules/connect-form/support/connect/test/jsonrpc.test.js +225 -0
  187. data/server/node_modules/connect-form/support/connect/test/logger.test.js +52 -0
  188. data/server/node_modules/connect-form/support/connect/test/methodOverride.test.js +69 -0
  189. data/server/node_modules/connect-form/support/connect/test/providers/echo.js +10 -0
  190. data/server/node_modules/connect-form/support/connect/test/responseTime.test.js +29 -0
  191. data/server/node_modules/connect-form/support/connect/test/router.test.js +154 -0
  192. data/server/node_modules/connect-form/support/connect/test/session.test.js +127 -0
  193. data/server/node_modules/connect-form/support/connect/test/static.test.js +66 -0
  194. data/server/node_modules/connect-form/support/connect/test/utils.test.js +65 -0
  195. data/server/node_modules/connect-form/support/connect/test/vhost.test.js +46 -0
  196. data/server/node_modules/connect-form/support/expresso/History.md +54 -0
  197. data/server/node_modules/connect-form/support/expresso/Makefile +30 -0
  198. data/server/node_modules/connect-form/support/expresso/Readme.md +208 -0
  199. data/server/node_modules/connect-form/support/expresso/bin/expresso +647 -0
  200. data/server/node_modules/connect-form/support/expresso/lib/bar.js +4 -0
  201. data/server/node_modules/connect-form/support/expresso/lib/foo.js +16 -0
  202. data/server/node_modules/connect-form/support/expresso/package.json +9 -0
  203. data/server/node_modules/connect-form/support/expresso/seed.yml +6 -0
  204. data/server/node_modules/connect-form/support/expresso/test/assert.test.js +64 -0
  205. data/server/node_modules/connect-form/support/expresso/test/bar.test.js +12 -0
  206. data/server/node_modules/connect-form/support/expresso/test/foo.test.js +13 -0
  207. data/server/node_modules/connect-form/support/expresso/test/http.test.js +61 -0
  208. data/server/node_modules/connect-form/test/form.test.js +148 -0
  209. data/server/node_modules/cradle/LICENSE +20 -0
  210. data/server/node_modules/cradle/Makefile +10 -0
  211. data/server/node_modules/cradle/README.md +377 -0
  212. data/server/node_modules/cradle/lib/cradle.js +688 -0
  213. data/server/node_modules/cradle/lib/cradle/cache.js +102 -0
  214. data/server/node_modules/cradle/lib/cradle/response.js +127 -0
  215. data/server/node_modules/cradle/node_modules/vargs/LICENSE +20 -0
  216. data/server/node_modules/cradle/node_modules/vargs/README.md +34 -0
  217. data/server/node_modules/cradle/node_modules/vargs/lib/vargs.js +70 -0
  218. data/server/node_modules/cradle/node_modules/vargs/package.json +12 -0
  219. data/server/node_modules/cradle/node_modules/vows/LICENSE +20 -0
  220. data/server/node_modules/cradle/node_modules/vows/Makefile +7 -0
  221. data/server/node_modules/cradle/node_modules/vows/README.md +39 -0
  222. data/server/node_modules/cradle/node_modules/vows/bin/vows +515 -0
  223. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +27 -0
  224. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +215 -0
  225. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +77 -0
  226. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +193 -0
  227. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +131 -0
  228. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +55 -0
  229. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +29 -0
  230. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +2 -0
  231. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +61 -0
  232. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +54 -0
  233. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +54 -0
  234. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +38 -0
  235. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +28 -0
  236. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +67 -0
  237. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +16 -0
  238. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +8 -0
  239. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +44 -0
  240. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +39 -0
  241. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +90 -0
  242. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +319 -0
  243. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +20 -0
  244. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +4 -0
  245. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +72 -0
  246. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +233 -0
  247. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +14 -0
  248. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +55 -0
  249. data/server/node_modules/cradle/node_modules/vows/package.json +14 -0
  250. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +135 -0
  251. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +18 -0
  252. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +18 -0
  253. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +17 -0
  254. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +18 -0
  255. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +140 -0
  256. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +133 -0
  257. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +51 -0
  258. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +374 -0
  259. data/server/node_modules/cradle/package.json +14 -0
  260. data/server/node_modules/cradle/test/cache-test.js +102 -0
  261. data/server/node_modules/cradle/test/cradle-test.js +651 -0
  262. data/server/node_modules/cradle/test/fixtures/databases.json +25 -0
  263. data/server/node_modules/cradle/test/helpers/seed.js +56 -0
  264. data/server/node_modules/cradle/test/response-test.js +73 -0
  265. data/server/node_modules/express/History.md +743 -0
  266. data/server/node_modules/express/LICENSE +22 -0
  267. data/server/node_modules/express/Makefile +35 -0
  268. data/server/node_modules/express/Readme.md +143 -0
  269. data/server/node_modules/express/bin/express +417 -0
  270. data/server/node_modules/express/index.js +2 -0
  271. data/server/node_modules/express/lib/express.js +79 -0
  272. data/server/node_modules/express/lib/http.js +583 -0
  273. data/server/node_modules/express/lib/https.js +52 -0
  274. data/server/node_modules/express/lib/request.js +309 -0
  275. data/server/node_modules/express/lib/response.js +459 -0
  276. data/server/node_modules/express/lib/router/collection.js +53 -0
  277. data/server/node_modules/express/lib/router/index.js +398 -0
  278. data/server/node_modules/express/lib/router/methods.js +70 -0
  279. data/server/node_modules/express/lib/router/route.js +88 -0
  280. data/server/node_modules/express/lib/utils.js +139 -0
  281. data/server/node_modules/express/lib/view.js +457 -0
  282. data/server/node_modules/express/lib/view/partial.js +40 -0
  283. data/server/node_modules/express/lib/view/view.js +209 -0
  284. data/server/node_modules/express/node_modules/connect/LICENSE +24 -0
  285. data/server/node_modules/express/node_modules/connect/index.js +2 -0
  286. data/server/node_modules/express/node_modules/connect/lib/cache.js +81 -0
  287. data/server/node_modules/express/node_modules/connect/lib/connect.js +106 -0
  288. data/server/node_modules/express/node_modules/connect/lib/http.js +215 -0
  289. data/server/node_modules/express/node_modules/connect/lib/https.js +47 -0
  290. data/server/node_modules/express/node_modules/connect/lib/index.js +46 -0
  291. data/server/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js +93 -0
  292. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +92 -0
  293. data/server/node_modules/express/node_modules/connect/lib/middleware/compiler.js +163 -0
  294. data/server/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js +46 -0
  295. data/server/node_modules/express/node_modules/connect/lib/middleware/csrf.js +105 -0
  296. data/server/node_modules/express/node_modules/connect/lib/middleware/directory.js +222 -0
  297. data/server/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js +100 -0
  298. data/server/node_modules/express/node_modules/connect/lib/middleware/favicon.js +76 -0
  299. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +78 -0
  300. data/server/node_modules/express/node_modules/connect/lib/middleware/logger.js +299 -0
  301. data/server/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js +38 -0
  302. data/server/node_modules/express/node_modules/connect/lib/middleware/profiler.js +100 -0
  303. data/server/node_modules/express/node_modules/connect/lib/middleware/query.js +40 -0
  304. data/server/node_modules/express/node_modules/connect/lib/middleware/responseTime.js +34 -0
  305. data/server/node_modules/express/node_modules/connect/lib/middleware/router.js +379 -0
  306. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +346 -0
  307. data/server/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js +126 -0
  308. data/server/node_modules/express/node_modules/connect/lib/middleware/session/memory.js +131 -0
  309. data/server/node_modules/express/node_modules/connect/lib/middleware/session/session.js +137 -0
  310. data/server/node_modules/express/node_modules/connect/lib/middleware/session/store.js +87 -0
  311. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +220 -0
  312. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +122 -0
  313. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +44 -0
  314. data/server/node_modules/express/node_modules/connect/lib/patch.js +79 -0
  315. data/server/node_modules/express/node_modules/connect/lib/public/directory.html +75 -0
  316. data/server/node_modules/express/node_modules/connect/lib/public/error.html +13 -0
  317. data/server/node_modules/express/node_modules/connect/lib/public/favicon.ico +0 -0
  318. data/server/node_modules/express/node_modules/connect/lib/public/icons/page.png +0 -0
  319. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_add.png +0 -0
  320. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png +0 -0
  321. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_code.png +0 -0
  322. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png +0 -0
  323. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png +0 -0
  324. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png +0 -0
  325. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_error.png +0 -0
  326. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png +0 -0
  327. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_find.png +0 -0
  328. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png +0 -0
  329. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_go.png +0 -0
  330. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_green.png +0 -0
  331. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_key.png +0 -0
  332. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png +0 -0
  333. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_link.png +0 -0
  334. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png +0 -0
  335. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png +0 -0
  336. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_red.png +0 -0
  337. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png +0 -0
  338. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_save.png +0 -0
  339. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white.png +0 -0
  340. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png +0 -0
  341. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png +0 -0
  342. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png +0 -0
  343. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png +0 -0
  344. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png +0 -0
  345. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png +0 -0
  346. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png +0 -0
  347. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png +0 -0
  348. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png +0 -0
  349. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png +0 -0
  350. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png +0 -0
  351. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png +0 -0
  352. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png +0 -0
  353. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png +0 -0
  354. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png +0 -0
  355. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png +0 -0
  356. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png +0 -0
  357. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png +0 -0
  358. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png +0 -0
  359. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png +0 -0
  360. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png +0 -0
  361. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png +0 -0
  362. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png +0 -0
  363. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png +0 -0
  364. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png +0 -0
  365. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png +0 -0
  366. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png +0 -0
  367. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png +0 -0
  368. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png +0 -0
  369. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png +0 -0
  370. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png +0 -0
  371. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png +0 -0
  372. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png +0 -0
  373. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png +0 -0
  374. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png +0 -0
  375. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png +0 -0
  376. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png +0 -0
  377. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png +0 -0
  378. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png +0 -0
  379. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png +0 -0
  380. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png +0 -0
  381. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png +0 -0
  382. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png +0 -0
  383. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png +0 -0
  384. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png +0 -0
  385. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png +0 -0
  386. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png +0 -0
  387. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png +0 -0
  388. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png +0 -0
  389. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png +0 -0
  390. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png +0 -0
  391. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png +0 -0
  392. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png +0 -0
  393. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png +0 -0
  394. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png +0 -0
  395. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_word.png +0 -0
  396. data/server/node_modules/express/node_modules/connect/lib/public/icons/page_world.png +0 -0
  397. data/server/node_modules/express/node_modules/connect/lib/public/style.css +141 -0
  398. data/server/node_modules/express/node_modules/connect/lib/utils.js +444 -0
  399. data/server/node_modules/express/node_modules/connect/package.json +24 -0
  400. data/server/node_modules/express/node_modules/connect/test.js +39 -0
  401. data/server/node_modules/express/node_modules/mime/LICENSE +19 -0
  402. data/server/node_modules/express/node_modules/mime/README.md +50 -0
  403. data/server/node_modules/express/node_modules/mime/index.js +1 -0
  404. data/server/node_modules/express/node_modules/mime/mime.js +92 -0
  405. data/server/node_modules/express/node_modules/mime/mime.types +1479 -0
  406. data/server/node_modules/express/node_modules/mime/node.types +26 -0
  407. data/server/node_modules/express/node_modules/mime/package.json +11 -0
  408. data/server/node_modules/express/node_modules/mime/test.js +80 -0
  409. data/server/node_modules/express/node_modules/qs/History.md +52 -0
  410. data/server/node_modules/express/node_modules/qs/Makefile +7 -0
  411. data/server/node_modules/express/node_modules/qs/Readme.md +49 -0
  412. data/server/node_modules/express/node_modules/qs/benchmark.js +17 -0
  413. data/server/node_modules/express/node_modules/qs/examples.js +48 -0
  414. data/server/node_modules/express/node_modules/qs/index.js +2 -0
  415. data/server/node_modules/express/node_modules/qs/lib/querystring.js +236 -0
  416. data/server/node_modules/express/node_modules/qs/package.json +9 -0
  417. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +128 -0
  418. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +53 -0
  419. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +61 -0
  420. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +856 -0
  421. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +1080 -0
  422. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +377 -0
  423. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +290 -0
  424. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +3 -0
  425. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +42 -0
  426. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +4 -0
  427. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +16 -0
  428. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +12 -0
  429. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +91 -0
  430. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +12 -0
  431. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +13 -0
  432. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +14 -0
  433. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +146 -0
  434. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +39 -0
  435. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +48 -0
  436. data/server/node_modules/express/node_modules/qs/support/should/History.md +22 -0
  437. data/server/node_modules/express/node_modules/qs/support/should/Makefile +6 -0
  438. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +248 -0
  439. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +53 -0
  440. data/server/node_modules/express/node_modules/qs/support/should/index.js +2 -0
  441. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +91 -0
  442. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +548 -0
  443. data/server/node_modules/express/node_modules/qs/support/should/package.json +8 -0
  444. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +358 -0
  445. data/server/node_modules/express/node_modules/qs/test/parse.test.js +156 -0
  446. data/server/node_modules/express/node_modules/qs/test/stringify.test.js +95 -0
  447. data/server/node_modules/express/package.json +38 -0
  448. data/server/node_modules/knox/History.md +41 -0
  449. data/server/node_modules/knox/Makefile +21 -0
  450. data/server/node_modules/knox/Readme.md +144 -0
  451. data/server/node_modules/knox/index.html +483 -0
  452. data/server/node_modules/knox/index.js +2 -0
  453. data/server/node_modules/knox/lib/knox/auth.js +190 -0
  454. data/server/node_modules/knox/lib/knox/client.js +355 -0
  455. data/server/node_modules/knox/lib/knox/index.js +36 -0
  456. data/server/node_modules/knox/lib/knox/mime/README.md +19 -0
  457. data/server/node_modules/knox/lib/knox/mime/index.js +308 -0
  458. data/server/node_modules/knox/lib/knox/mime/mime.js +308 -0
  459. data/server/node_modules/knox/lib/knox/mime/package.json +12 -0
  460. data/server/node_modules/knox/lib/knox/mime/test.js +59 -0
  461. data/server/node_modules/knox/lib/knox/utils.js +55 -0
  462. data/server/node_modules/knox/package.json +13 -0
  463. data/server/node_modules/knox/support/expresso/History.md +87 -0
  464. data/server/node_modules/knox/support/expresso/Makefile +53 -0
  465. data/server/node_modules/knox/support/expresso/Readme.md +39 -0
  466. data/server/node_modules/knox/support/expresso/bin/expresso +835 -0
  467. data/server/node_modules/knox/support/expresso/docs/api.html +1048 -0
  468. data/server/node_modules/knox/support/expresso/docs/index.html +373 -0
  469. data/server/node_modules/knox/support/expresso/docs/index.md +290 -0
  470. data/server/node_modules/knox/support/expresso/docs/layout/foot.html +3 -0
  471. data/server/node_modules/knox/support/expresso/docs/layout/head.html +42 -0
  472. data/server/node_modules/knox/support/expresso/lib/bar.js +4 -0
  473. data/server/node_modules/knox/support/expresso/lib/foo.js +16 -0
  474. data/server/node_modules/knox/support/expresso/package.json +9 -0
  475. data/server/node_modules/knox/support/expresso/test/assert.test.js +84 -0
  476. data/server/node_modules/knox/support/expresso/test/async.test.js +6 -0
  477. data/server/node_modules/knox/support/expresso/test/bar.test.js +12 -0
  478. data/server/node_modules/knox/support/expresso/test/foo.test.js +13 -0
  479. data/server/node_modules/knox/support/expresso/test/http.test.js +76 -0
  480. data/server/node_modules/knox/support/expresso/test/serial/async.test.js +38 -0
  481. data/server/node_modules/knox/support/expresso/test/serial/http.test.js +47 -0
  482. data/server/node_modules/knox/test/auth.test.js +59 -0
  483. data/server/node_modules/knox/test/fixtures/user.json +1 -0
  484. data/server/node_modules/knox/test/knox.test.js +188 -0
  485. data/server/node_modules/knox/test/utils.test.js +17 -0
  486. data/server/node_modules/node-uuid/LICENSE.md +3 -0
  487. data/server/node_modules/node-uuid/README.md +100 -0
  488. data/server/node_modules/node-uuid/package.json +12 -0
  489. data/server/node_modules/node-uuid/test/benchmark-native.c +34 -0
  490. data/server/node_modules/node-uuid/test/benchmark.js +27 -0
  491. data/server/node_modules/node-uuid/test/test.html +14 -0
  492. data/server/node_modules/node-uuid/test/test.js +83 -0
  493. data/server/node_modules/node-uuid/uuid.js +80 -0
  494. data/server/node_modules/restler/MIT-LICENSE +20 -0
  495. data/server/node_modules/restler/README.md +147 -0
  496. data/server/node_modules/restler/bin/restler +23 -0
  497. data/server/node_modules/restler/index.js +1 -0
  498. data/server/node_modules/restler/lib/multipartform.js +202 -0
  499. data/server/node_modules/restler/lib/restler.js +300 -0
  500. data/server/node_modules/restler/package.json +10 -0
  501. data/server/node_modules/restler/test/all.js +1 -0
  502. data/server/node_modules/restler/test/restler.js +148 -0
  503. data/server/node_modules/restler/test/test_helper.js +144 -0
  504. data/server/package.json +12 -0
  505. data/server/vendor/gems/bin/restclient +19 -0
  506. data/server/vendor/gems/cache/couchrest-1.1.2.gem +0 -0
  507. data/server/vendor/gems/cache/mime-types-1.16.gem +0 -0
  508. data/server/vendor/gems/cache/multi_json-1.0.3.gem +0 -0
  509. data/server/vendor/gems/cache/rest-client-1.6.7.gem +0 -0
  510. data/server/vendor/gems/gems/couchrest-1.1.2/Gemfile +4 -0
  511. data/server/vendor/gems/gems/couchrest-1.1.2/LICENSE +176 -0
  512. data/server/vendor/gems/gems/couchrest-1.1.2/README.md +65 -0
  513. data/server/vendor/gems/gems/couchrest-1.1.2/Rakefile +38 -0
  514. data/server/vendor/gems/gems/couchrest-1.1.2/THANKS.md +21 -0
  515. data/server/vendor/gems/gems/couchrest-1.1.2/VERSION +1 -0
  516. data/server/vendor/gems/gems/couchrest-1.1.2/couchrest.gemspec +34 -0
  517. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/markov +38 -0
  518. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/chunked-map.js +3 -0
  519. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/books/united-map.js +1 -0
  520. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-map.js +6 -0
  521. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/markov/chain-reduce.js +7 -0
  522. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-map.js +6 -0
  523. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/views/word_count/count-reduce.js +3 -0
  524. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count.rb +46 -0
  525. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_query.rb +40 -0
  526. data/server/vendor/gems/gems/couchrest-1.1.2/examples/word_count/word_count_views.rb +26 -0
  527. data/server/vendor/gems/gems/couchrest-1.1.2/history.txt +194 -0
  528. data/server/vendor/gems/gems/couchrest-1.1.2/init.rb +1 -0
  529. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest.rb +134 -0
  530. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/attributes.rb +89 -0
  531. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/generate.rb +71 -0
  532. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/commands/push.rb +103 -0
  533. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/database.rb +396 -0
  534. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/design.rb +91 -0
  535. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/document.rb +105 -0
  536. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/attachments.rb +29 -0
  537. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/pager.rb +103 -0
  538. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/streamer.rb +58 -0
  539. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/helper/upgrade.rb +51 -0
  540. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/middlewares/logger.rb +263 -0
  541. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/monkeypatches.rb +25 -0
  542. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/rest_api.rb +159 -0
  543. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/server.rb +90 -0
  544. data/server/vendor/gems/gems/couchrest-1.1.2/lib/couchrest/support/inheritable_attributes.rb +107 -0
  545. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/couchrest_spec.rb +202 -0
  546. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/database_spec.rb +921 -0
  547. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/design_spec.rb +206 -0
  548. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/document_spec.rb +400 -0
  549. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/pager_spec.rb +115 -0
  550. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/helpers/streamer_spec.rb +59 -0
  551. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/rest_api_spec.rb +212 -0
  552. data/server/vendor/gems/gems/couchrest-1.1.2/spec/couchrest/server_spec.rb +35 -0
  553. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/README +3 -0
  554. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/couchdb.png +0 -0
  555. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/attachments/test.html +11 -0
  556. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/lib.js +3 -0
  557. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/lib.js +3 -0
  558. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/only-map.js +4 -0
  559. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-map.js +3 -0
  560. data/server/vendor/gems/gems/couchrest-1.1.2/spec/fixtures/views/test_view/test-reduce.js +3 -0
  561. data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec.opts +5 -0
  562. data/server/vendor/gems/gems/couchrest-1.1.2/spec/spec_helper.rb +46 -0
  563. data/server/vendor/gems/gems/couchrest-1.1.2/utils/remap.rb +27 -0
  564. data/server/vendor/gems/gems/couchrest-1.1.2/utils/subset.rb +30 -0
  565. data/server/vendor/gems/gems/mime-types-1.16/History.txt +107 -0
  566. data/server/vendor/gems/gems/mime-types-1.16/Install.txt +17 -0
  567. data/server/vendor/gems/gems/mime-types-1.16/Licence.txt +15 -0
  568. data/server/vendor/gems/gems/mime-types-1.16/Manifest.txt +12 -0
  569. data/server/vendor/gems/gems/mime-types-1.16/README.txt +28 -0
  570. data/server/vendor/gems/gems/mime-types-1.16/Rakefile +316 -0
  571. data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb +751 -0
  572. data/server/vendor/gems/gems/mime-types-1.16/lib/mime/types.rb.data +1324 -0
  573. data/server/vendor/gems/gems/mime-types-1.16/mime-types.gemspec +43 -0
  574. data/server/vendor/gems/gems/mime-types-1.16/setup.rb +1585 -0
  575. data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_type.rb +356 -0
  576. data/server/vendor/gems/gems/mime-types-1.16/test/test_mime_types.rb +122 -0
  577. data/server/vendor/gems/gems/multi_json-1.0.3/Gemfile +7 -0
  578. data/server/vendor/gems/gems/multi_json-1.0.3/LICENSE.md +20 -0
  579. data/server/vendor/gems/gems/multi_json-1.0.3/README.md +70 -0
  580. data/server/vendor/gems/gems/multi_json-1.0.3/Rakefile +23 -0
  581. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json.rb +74 -0
  582. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_gem.rb +21 -0
  583. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/json_pure.rb +21 -0
  584. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/ok_json.rb +48 -0
  585. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/engines/yajl.rb +18 -0
  586. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/vendor/ok_json.rb +581 -0
  587. data/server/vendor/gems/gems/multi_json-1.0.3/lib/multi_json/version.rb +3 -0
  588. data/server/vendor/gems/gems/multi_json-1.0.3/multi_json.gemspec +23 -0
  589. data/server/vendor/gems/gems/multi_json-1.0.3/spec/helper.rb +11 -0
  590. data/server/vendor/gems/gems/multi_json-1.0.3/spec/multi_json_spec.rb +134 -0
  591. data/server/vendor/gems/gems/rest-client-1.6.7/README.rdoc +285 -0
  592. data/server/vendor/gems/gems/rest-client-1.6.7/Rakefile +66 -0
  593. data/server/vendor/gems/gems/rest-client-1.6.7/VERSION +1 -0
  594. data/server/vendor/gems/gems/rest-client-1.6.7/bin/restclient +93 -0
  595. data/server/vendor/gems/gems/rest-client-1.6.7/history.md +134 -0
  596. data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest-client.rb +2 -0
  597. data/server/vendor/gems/gems/rest-client-1.6.7/lib/rest_client.rb +2 -0
  598. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient.rb +174 -0
  599. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb +106 -0
  600. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/exceptions.rb +193 -0
  601. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/net_http_ext.rb +55 -0
  602. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/payload.rb +235 -0
  603. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/raw_response.rb +34 -0
  604. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/request.rb +316 -0
  605. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/resource.rb +169 -0
  606. data/server/vendor/gems/gems/rest-client-1.6.7/lib/restclient/response.rb +24 -0
  607. data/server/vendor/gems/gems/rest-client-1.6.7/spec/abstract_response_spec.rb +85 -0
  608. data/server/vendor/gems/gems/rest-client-1.6.7/spec/base.rb +16 -0
  609. data/server/vendor/gems/gems/rest-client-1.6.7/spec/exceptions_spec.rb +98 -0
  610. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/equifax.crt +19 -0
  611. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/certs/verisign.crt +14 -0
  612. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration/request_spec.rb +25 -0
  613. data/server/vendor/gems/gems/rest-client-1.6.7/spec/integration_spec.rb +38 -0
  614. data/server/vendor/gems/gems/rest-client-1.6.7/spec/master_shake.jpg +0 -0
  615. data/server/vendor/gems/gems/rest-client-1.6.7/spec/payload_spec.rb +234 -0
  616. data/server/vendor/gems/gems/rest-client-1.6.7/spec/raw_response_spec.rb +17 -0
  617. data/server/vendor/gems/gems/rest-client-1.6.7/spec/request2_spec.rb +40 -0
  618. data/server/vendor/gems/gems/rest-client-1.6.7/spec/request_spec.rb +529 -0
  619. data/server/vendor/gems/gems/rest-client-1.6.7/spec/resource_spec.rb +134 -0
  620. data/server/vendor/gems/gems/rest-client-1.6.7/spec/response_spec.rb +169 -0
  621. data/server/vendor/gems/gems/rest-client-1.6.7/spec/restclient_spec.rb +73 -0
  622. data/server/vendor/gems/specifications/couchrest-1.1.2.gemspec +43 -0
  623. data/server/vendor/gems/specifications/mime-types-1.16.gemspec +42 -0
  624. data/server/vendor/gems/specifications/multi_json-1.0.3.gemspec +40 -0
  625. data/server/vendor/gems/specifications/rest-client-1.6.7.gemspec +37 -0
  626. data/server/web.js +93 -0
  627. metadata +633 -7
@@ -0,0 +1,95 @@
1
+
2
+ /**
3
+ * Module dependencies.
4
+ */
5
+
6
+ var qs = require('../')
7
+ , should = require('should')
8
+ , query_string_identities = {
9
+ 'basics': [
10
+ {query_string: 'foo=bar', parsed: {'foo' : 'bar'}},
11
+ {query_string: 'foo=%22bar%22', parsed: {'foo' : '\"bar\"'}},
12
+ {query_string: 'foo=', parsed: {'foo': ''}},
13
+ {query_string: 'foo=1&bar=2', parsed: {'foo' : '1', 'bar' : '2'}},
14
+ {query_string: 'my%20weird%20field=q1!2%22\'w%245%267%2Fz8)%3F', parsed: {'my weird field': "q1!2\"'w$5&7/z8)?"}},
15
+ {query_string: 'foo%3Dbaz=bar', parsed: {'foo=baz': 'bar'}},
16
+ {query_string: 'foo=bar&bar=baz', parsed: {foo: 'bar', bar: 'baz'}}
17
+ ],
18
+ 'escaping': [
19
+ {query_string: 'foo=foo%20bar', parsed: {foo: 'foo bar'}},
20
+ {query_string: 'cht=p3&chd=t%3A60%2C40&chs=250x100&chl=Hello%7CWorld', parsed: {
21
+ cht: 'p3'
22
+ , chd: 't:60,40'
23
+ , chs: '250x100'
24
+ , chl: 'Hello|World'
25
+ }}
26
+ ],
27
+ 'nested': [
28
+ {query_string: 'foo[]=bar&foo[]=quux', parsed: {'foo' : ['bar', 'quux']}},
29
+ {query_string: 'foo[]=bar', parsed: {foo: ['bar']}},
30
+ {query_string: 'foo[]=1&foo[]=2', parsed: {'foo' : ['1', '2']}},
31
+ {query_string: 'foo=bar&baz[]=1&baz[]=2&baz[]=3', parsed: {'foo' : 'bar', 'baz' : ['1', '2', '3']}},
32
+ {query_string: 'foo[]=bar&baz[]=1&baz[]=2&baz[]=3', parsed: {'foo' : ['bar'], 'baz' : ['1', '2', '3']}},
33
+ {query_string: 'x[y][z]=1', parsed: {'x' : {'y' : {'z' : '1'}}}},
34
+ {query_string: 'x[y][z][]=1', parsed: {'x' : {'y' : {'z' : ['1']}}}},
35
+ {query_string: 'x[y][z]=2', parsed: {'x' : {'y' : {'z' : '2'}}}},
36
+ {query_string: 'x[y][z][]=1&x[y][z][]=2', parsed: {'x' : {'y' : {'z' : ['1', '2']}}}},
37
+ {query_string: 'x[y][][z]=1', parsed: {'x' : {'y' : [{'z' : '1'}]}}},
38
+ {query_string: 'x[y][][z][]=1', parsed: {'x' : {'y' : [{'z' : ['1']}]}}},
39
+ {query_string: 'x[y][][z]=1&x[y][][w]=2', parsed: {'x' : {'y' : [{'z' : '1', 'w' : '2'}]}}},
40
+ {query_string: 'x[y][][v][w]=1', parsed: {'x' : {'y' : [{'v' : {'w' : '1'}}]}}},
41
+ {query_string: 'x[y][][z]=1&x[y][][v][w]=2', parsed: {'x' : {'y' : [{'z' : '1', 'v' : {'w' : '2'}}]}}},
42
+ {query_string: 'x[y][][z]=1&x[y][][z]=2', parsed: {'x' : {'y' : [{'z' : '1'}, {'z' : '2'}]}}},
43
+ {query_string: 'x[y][][z]=1&x[y][][w]=a&x[y][][z]=2&x[y][][w]=3', parsed: {'x' : {'y' : [{'z' : '1', 'w' : 'a'}, {'z' : '2', 'w' : '3'}]}}},
44
+ {query_string: 'user[name][first]=tj&user[name][last]=holowaychuk', parsed: { user: { name: { first: 'tj', last: 'holowaychuk' }}}}
45
+ ],
46
+ 'errors': [
47
+ { parsed: 'foo=bar', message: 'stringify expects an object' },
48
+ { parsed: ['foo', 'bar'], message: 'stringify expects an object' }
49
+ ]
50
+ };
51
+
52
+
53
+ // Assert error
54
+ function err(fn, msg){
55
+ var err;
56
+ try {
57
+ fn();
58
+ } catch (e) {
59
+ should.equal(e.message, msg);
60
+ return;
61
+ }
62
+ throw new Error('no exception thrown, expected "' + msg + '"');
63
+ }
64
+
65
+ function test(type) {
66
+ var str, obj;
67
+ for (var i = 0; i < query_string_identities[type].length; i++) {
68
+ str = query_string_identities[type][i].query_string;
69
+ obj = query_string_identities[type][i].parsed;
70
+ qs.stringify(obj).should.eql(str);
71
+ }
72
+ }
73
+
74
+ module.exports = {
75
+ 'test basics': function() {
76
+ test('basics');
77
+ },
78
+
79
+ 'test escaping': function() {
80
+ test('escaping');
81
+ },
82
+
83
+ 'test nested': function() {
84
+ test('nested');
85
+ },
86
+
87
+ 'test errors': function() {
88
+ var parsed, message;
89
+ for (var i = 0; i < query_string_identities['errors'].length; i++) {
90
+ message = query_string_identities['errors'][i].message;
91
+ parsed = query_string_identities['errors'][i].parsed;
92
+ err(function(){ qs.stringify(parsed) }, message);
93
+ }
94
+ }
95
+ };
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "express",
3
+ "description": "Sinatra inspired web development framework",
4
+ "version": "2.4.6",
5
+ "author": "TJ Holowaychuk <tj@vision-media.ca>",
6
+ "contributors": [
7
+ { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca" },
8
+ { "name": "Aaron Heckmann", "email": "aaron.heckmann+github@gmail.com" },
9
+ { "name": "Ciaran Jessup", "email": "ciaranj@gmail.com" },
10
+ { "name": "Guillermo Rauch", "email": "rauchg@gmail.com" }
11
+ ],
12
+ "dependencies": {
13
+ "connect": ">= 1.5.2 < 2.0.0",
14
+ "mime": ">= 0.0.1",
15
+ "qs": ">= 0.3.1"
16
+ },
17
+ "devDependencies": {
18
+ "connect-form": "0.2.1",
19
+ "ejs": "0.4.2",
20
+ "expresso": "0.7.2",
21
+ "hamljs": "0.5.1",
22
+ "jade": "0.11.0",
23
+ "stylus": "0.13.0",
24
+ "should": "0.2.1",
25
+ "express-messages": "0.0.2",
26
+ "node-markdown": ">= 0.0.1",
27
+ "connect-redis": ">= 0.0.1"
28
+ },
29
+ "keywords": ["framework", "sinatra", "web", "rest", "restful"],
30
+ "repository": "git://github.com/visionmedia/express",
31
+ "main": "index",
32
+ "bin": { "express": "./bin/express" },
33
+ "scripts": {
34
+ "test": "make test",
35
+ "prepublish" : "npm prune"
36
+ },
37
+ "engines": { "node": ">= 0.4.1 < 0.5.0" }
38
+ }
@@ -0,0 +1,41 @@
1
+
2
+ 0.0.9 / 2011-06-20
3
+ ==================
4
+
5
+ * Fixed signedUrl signature, needs encodeURIComponent() not escape() to prevent SignatureDoesNotMatch errors on signatures containing plus signs.
6
+
7
+ 0.0.8 / 2011-06-15
8
+ ==================
9
+
10
+ * Fixed bug introduced in refactor
11
+
12
+ 0.0.7 / 2011-06-14
13
+ ==================
14
+
15
+ * Fixed resource canonicalization
16
+
17
+ 0.0.6 / 2011-06-07
18
+ ==================
19
+
20
+ * Fixed; ignoring certain query params when preparing stringToSign. [Rajiv Navada]
21
+
22
+ 0.0.4 / 2011-05-20
23
+ ==================
24
+
25
+ * Added `Client#https?(filename)`
26
+
27
+ 0.0.3 / 2011-04-12
28
+ ==================
29
+
30
+ * 0.4.x support
31
+
32
+ 0.0.2 / 2011-01-10
33
+ ==================
34
+
35
+ * Removed `util` require
36
+ * Support for S3 presigned URLs
37
+
38
+ 0.0.1 / 2010-12-12
39
+ ==================
40
+
41
+ * Initial release
@@ -0,0 +1,21 @@
1
+
2
+ test:
3
+ @./support/expresso/bin/expresso test/*.test.js \
4
+ --timeout 8000 \
5
+ --serial \
6
+ -I lib
7
+
8
+ docs: index.html
9
+
10
+ index.html:
11
+ dox \
12
+ --title "Knox" \
13
+ --desc "Light-weight Amazon S3 client for [NodeJS](http://nodejs.org)." \
14
+ --ribbon "http://github.com/LearnBoost/knox" \
15
+ --private \
16
+ lib/knox/*.js > $@
17
+
18
+ docclean:
19
+ rm -f index.html
20
+
21
+ .PHONY: test docs docclean
@@ -0,0 +1,144 @@
1
+
2
+ # knox
3
+
4
+ Node Amazon S3 Client.
5
+
6
+ ## Features
7
+
8
+ - Not outdated :), developed for node 0.2.x
9
+ - RESTful api (`client.get()`, `client.put()`, etc)
10
+ - Uses node's crypto library (fast!, the others used native js)
11
+ - Very node-like low-level request api via `http.Client`
12
+ - Highly documented
13
+
14
+ ## Authors
15
+
16
+ - TJ Holowaychuk ([visionmedia](http://github.com/visionmedia))
17
+
18
+ ## Examples
19
+
20
+ The following examples demonstrate some capabilities of knox and the s3 REST API. First things first, create an s3 client:
21
+
22
+ var client = knox.createClient({
23
+ key: '<api-key-here>'
24
+ , secret: '<secret-here>'
25
+ , bucket: 'learnboost'
26
+ });
27
+
28
+ By default knox will send all requests to the global endpoint (bucket.s3.amazonaws.com).
29
+ This works regardless of the region where the bucket is. But if you want to manually set
30
+ the endpoint (for performance reasons) you can do it with the `endpoint` option.
31
+
32
+ ### PUT
33
+
34
+ Below we do several things, first we read _Readme.md_ into memory,
35
+ and initialize a client request via `client.put()`, passing the destination
36
+ filename as the first parameter (_/test/Readme.md_), and some headers. Then
37
+ we listen for the _response_ event, just as we would for any `http.Client` request, if we have a 200 response, great! output the destination url to stdout.
38
+
39
+ fs.readFile('Readme.md', function(err, buf){
40
+ var req = client.put('/test/Readme.md', {
41
+ 'Content-Length': buf.length
42
+ , 'Content-Type': 'text/plain'
43
+ });
44
+ req.on('response', function(res){
45
+ if (200 == res.statusCode) {
46
+ console.log('saved to %s', req.url);
47
+ }
48
+ });
49
+ req.end(buf);
50
+ });
51
+
52
+ By default the _x-amz-acl_ header is _public-read_, meaning anyone can __GET__ the file. To alter this simply pass this header to the client request method. Note that the field name __MUST__ be lowercase, do not use 'X-Amz-Acl' etc, as this will currently result in duplicate headers (although different case).
53
+
54
+ client.put('/test/Readme.md', { 'x-amz-acl': 'private' });
55
+
56
+ Each HTTP verb has an alternate method with the "File" suffix, for example `put()` also has a higher level method named `putFile()`, accepting a src filename and performs the dirty work shown above for you. Here is an example usage:
57
+
58
+ client.putFile('my.json', '/user.json', function(err, res){
59
+ // Logic
60
+ });
61
+
62
+ Another alternative is to stream via `Client#putStream()`, for example:
63
+
64
+ var stream = fs.createReadStream('data.json');
65
+ client.putStream(stream, '/some-data.json', function(err, res){
66
+ // Logic
67
+ });
68
+
69
+ An example of moving a file:
70
+
71
+ client.put('0/0/0.png', {
72
+ 'Content-Type': 'image/jpg',
73
+ 'Content-Length': '0',
74
+ 'x-amz-copy-source': '/test-tiles/0/0/0.png',
75
+ 'x-amz-metadata-directive': 'REPLACE'
76
+ }).on('response', function(res) {
77
+ // Logic
78
+ }).end();
79
+
80
+ ### GET
81
+
82
+ Below is an example __GET__ request on the file we just shoved at s3, and simply outputs the response status code, headers, and body.
83
+
84
+ client.get('/test/Readme.md').on('response', function(res){
85
+ console.log(res.statusCode);
86
+ console.log(res.headers);
87
+ res.setEncoding('utf8');
88
+ res.on('data', function(chunk){
89
+ console.log(chunk);
90
+ });
91
+ }).end();
92
+
93
+ ## DELETE
94
+
95
+ Delete our file:
96
+
97
+ client.del('/test/Readme.md').on('response', function(res){
98
+ console.log(res.statusCode);
99
+ console.log(res.headers);
100
+ }).end();
101
+
102
+ Likewise we also have `client.deleteFile()` as a more concise (yet less flexible) solution:
103
+
104
+ client.deleteFile('/test/Readme.md', function(err, res){
105
+ // Logic
106
+ });
107
+
108
+ ## Running Tests
109
+
110
+ To run the test suite you must first have an S3 account, and create
111
+ a file named _./auth_, which contains your credentials as json, for example:
112
+
113
+ {"key":"<api-key-here>",
114
+ "secret":"<secret-here>",
115
+ "bucket":"<your-bucket-name>"}
116
+
117
+ Then simply execute:
118
+
119
+ $ make test
120
+
121
+ ## License
122
+
123
+ (The MIT License)
124
+
125
+ Copyright (c) 2010 LearnBoost &lt;dev@learnboost.com&gt;
126
+
127
+ Permission is hereby granted, free of charge, to any person obtaining
128
+ a copy of this software and associated documentation files (the
129
+ 'Software'), to deal in the Software without restriction, including
130
+ without limitation the rights to use, copy, modify, merge, publish,
131
+ distribute, sublicense, and/or sell copies of the Software, and to
132
+ permit persons to whom the Software is furnished to do so, subject to
133
+ the following conditions:
134
+
135
+ The above copyright notice and this permission notice shall be
136
+ included in all copies or substantial portions of the Software.
137
+
138
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
139
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
140
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
141
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
142
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
143
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
144
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,483 @@
1
+ <a href="http://github.com/LearnBoost/knox"><img alt="Fork me on GitHub" id="ribbon" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a><html>
2
+ <head>
3
+ <title>Knox</title>
4
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
5
+ <style>body {
6
+ margin: 0;
7
+ padding: 0;
8
+ font: 14px/1.5 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
9
+ color: #252519;
10
+ }
11
+ a {
12
+ color: #252519;
13
+ }
14
+ a:hover {
15
+ text-decoration: underline;
16
+ color: #19469D;
17
+ }
18
+ p {
19
+ margin: 12px 0;
20
+ }
21
+ h1, h2, h3 {
22
+ margin: 0;
23
+ padding: 0;
24
+ }
25
+ table#source {
26
+ width: 100%;
27
+ border-collapse: collapse;
28
+ }
29
+ table#source td:first-child {
30
+ padding: 30px 40px 30px 40px;
31
+ vertical-align: top;
32
+ }
33
+ table#source td:first-child,
34
+ table#source td:first-child pre {
35
+ width: 450px;
36
+ }
37
+ table#source td:last-child {
38
+ padding: 30px 0 30px 40px;
39
+ border-left: 1px solid #E5E5EE;
40
+ background: #F5F5FF;
41
+ }
42
+ table#source tr {
43
+ border-bottom: 1px solid #E5E5EE;
44
+ }
45
+ table#source tr.filename {
46
+ padding-top: 40px;
47
+ border-top: 1px solid #E5E5EE;
48
+ }
49
+ table#source tr.filename td:first-child {
50
+ text-transform: capitalize;
51
+ }
52
+ table#source tr.filename td:last-child {
53
+ font-size: 12px;
54
+ }
55
+ table#source tr.filename h2 {
56
+ margin: 0;
57
+ padding: 0;
58
+ cursor: pointer;
59
+ }
60
+ table#source tr.code h1,
61
+ table#source tr.code h2,
62
+ table#source tr.code h3 {
63
+ margin-top: 30px;
64
+ font-family: "Lucida Grande", "Helvetica Nueue", Arial, sans-serif;
65
+ font-size: 18px;
66
+ }
67
+ table#source tr.code h2 {
68
+ font-size: 16px;
69
+ }
70
+ table#source tr.code h3 {
71
+ font-size: 14px;
72
+ }
73
+ table#source tr.code ul {
74
+ margin: 15px 0 15px 35px;
75
+ padding: 0;
76
+ }
77
+ table#source tr.code ul li {
78
+ margin: 0;
79
+ padding: 1px 0;
80
+ }
81
+ table#source tr.code ul li p {
82
+ margin: 0;
83
+ padding: 0;
84
+ }
85
+ table#source tr.code td:first-child pre {
86
+ padding: 20px;
87
+ }
88
+ #ribbon {
89
+ position: fixed;
90
+ top: 0;
91
+ right: 0;
92
+ }
93
+ code .string { color: #219161; }
94
+ code .regexp { color: #219161; }
95
+ code .keyword { color: #954121; }
96
+ code .number { color: #19469D; }
97
+ code .comment { color: #bbb; }
98
+ code .this { color: #19469D; }</style>
99
+ <script>
100
+ $(function(){
101
+ $('tr.code').hide();
102
+ $('tr.filename').toggle(function(){
103
+ $(this).nextUntil('.filename').fadeIn();
104
+ }, function(){
105
+ $(this).nextUntil('.filename').fadeOut();
106
+ });
107
+ });
108
+ </script>
109
+ </head>
110
+ <body>
111
+ <table id="source"><tbody><tr><td><h1>Knox</h1><p>Light-weight Amazon S3 client for <a href="http://nodejs.org">NodeJS</a>.</p></td><td></td></tr><tr class="filename"><td><h2 id="lib/knox/auth.js"><a href="#">auth</a></h2></td><td>lib/knox/auth.js</td></tr><tr class="code">
112
+ <td class="docs">
113
+ <p>Module dependencies.
114
+ </p>
115
+ </td>
116
+ <td class="code">
117
+ <pre><code><span class="keyword">var</span> <span class="variable">crypto</span> = <span class="variable">require</span>(<span class="string">'crypto'</span>);</code></pre>
118
+ </td>
119
+ </tr>
120
+ <tr class="code">
121
+ <td class="docs">
122
+ <p>Return an "Authorization" header value with the given <code>options</code>
123
+ in the form of "AWS &lt;key&gt;:&lt;signature&gt;"</p>
124
+
125
+ <h2></h2>
126
+
127
+ <ul><li><p><strong>param</strong>: <em>Object</em> options</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
128
+ </td>
129
+ <td class="code">
130
+ <pre><code><span class="variable">exports</span>.<span class="variable">authorization</span> = <span class="keyword">function</span>(<span class="variable">options</span>){
131
+ <span class="keyword">return</span> <span class="string">'AWS '</span> + <span class="variable">options</span>.<span class="variable">key</span> + <span class="string">':'</span> + <span class="variable">exports</span>.<span class="variable">sign</span>(<span class="variable">options</span>);
132
+ };</code></pre>
133
+ </td>
134
+ </tr>
135
+ <tr class="code">
136
+ <td class="docs">
137
+ <p>Create a base64 sha1 HMAC for <code>options</code>. </p>
138
+
139
+ <h2></h2>
140
+
141
+ <ul><li><p><strong>param</strong>: <em>Object</em> options</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
142
+ </td>
143
+ <td class="code">
144
+ <pre><code><span class="variable">exports</span>.<span class="variable">sign</span> = <span class="keyword">function</span>(<span class="variable">options</span>){
145
+ <span class="keyword">var</span> <span class="variable">str</span> = <span class="variable">exports</span>.<span class="variable">stringToSign</span>(<span class="variable">options</span>);
146
+ <span class="keyword">return</span> <span class="variable">crypto</span>.<span class="variable">createHmac</span>(<span class="string">'sha1'</span>, <span class="variable">options</span>.<span class="variable">secret</span>).<span class="variable">update</span>(<span class="variable">str</span>).<span class="variable">digest</span>(<span class="string">'base64'</span>);
147
+ };</code></pre>
148
+ </td>
149
+ </tr>
150
+ <tr class="code">
151
+ <td class="docs">
152
+ <p>Return a string for sign() with the given <code>options</code>.</p>
153
+
154
+ <h2>Spec</h2>
155
+
156
+ <p> &lt;verb&gt;\n
157
+ &lt;md5&gt;\n
158
+ &lt;content-type&gt;\n
159
+ &lt;date&gt;\n
160
+ [headers\n]
161
+ &lt;resource&gt;</p>
162
+
163
+ <h2></h2>
164
+
165
+ <ul><li><p><strong>param</strong>: <em>Object</em> options</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
166
+ </td>
167
+ <td class="code">
168
+ <pre><code><span class="variable">exports</span>.<span class="variable">stringToSign</span> = <span class="keyword">function</span>(<span class="variable">options</span>){
169
+ <span class="keyword">var</span> <span class="variable">headers</span> = <span class="variable">options</span>.<span class="variable">amazonHeaders</span> || <span class="string">''</span>;
170
+ <span class="keyword">if</span> (<span class="variable">headers</span>) <span class="variable">headers</span> += <span class="string">'\n'</span>;
171
+ <span class="keyword">return</span> [
172
+ <span class="variable">options</span>.<span class="variable">verb</span>
173
+ , <span class="variable">options</span>.<span class="variable">md5</span>
174
+ , <span class="variable">options</span>.<span class="variable">contentType</span>
175
+ , <span class="variable">options</span>.<span class="variable">date</span>.<span class="variable">toUTCString</span>()
176
+ , <span class="variable">headers</span> + <span class="variable">options</span>.<span class="variable">resource</span>
177
+ ].<span class="variable">join</span>(<span class="string">'\n'</span>);
178
+ };</code></pre>
179
+ </td>
180
+ </tr>
181
+ <tr class="code">
182
+ <td class="docs">
183
+ <p>Perform the following:</p>
184
+
185
+ <ul><li>ignore non-amazon headers</li><li>lowercase fields</li><li>sort lexicographically</li><li>trim whitespace between ":"</li><li>join with newline</li></ul>
186
+
187
+ <h2></h2>
188
+
189
+ <ul><li><p><strong>param</strong>: <em>Object</em> headers</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
190
+ </td>
191
+ <td class="code">
192
+ <pre><code><span class="variable">exports</span>.<span class="variable">canonicalizeHeaders</span> = <span class="keyword">function</span>(<span class="variable">headers</span>){
193
+ <span class="keyword">var</span> <span class="variable">buf</span> = []
194
+ , <span class="variable">fields</span> = <span class="class">Object</span>.<span class="variable">keys</span>(<span class="variable">headers</span>);
195
+ <span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">i</span> = <span class="number integer">0</span>, <span class="variable">len</span> = <span class="variable">fields</span>.<span class="variable">length</span>; <span class="variable">i</span> &<span class="variable">lt</span>; <span class="variable">len</span>; ++<span class="variable">i</span>) {
196
+ <span class="keyword">var</span> <span class="variable">field</span> = <span class="variable">fields</span>[<span class="variable">i</span>]
197
+ , <span class="variable">val</span> = <span class="variable">headers</span>[<span class="variable">field</span>]
198
+ , <span class="variable">field</span> = <span class="variable">field</span>.<span class="variable">toLowerCase</span>();
199
+ <span class="keyword">if</span> (<span class="number integer">0</span> !== <span class="variable">field</span>.<span class="variable">indexOf</span>(<span class="string">'x-amz'</span>)) <span class="keyword">continue</span>;
200
+ <span class="variable">buf</span>.<span class="variable">push</span>(<span class="variable">field</span> + <span class="string">':'</span> + <span class="variable">val</span>);
201
+ }
202
+ <span class="keyword">return</span> <span class="variable">buf</span>.<span class="variable">sort</span>().<span class="variable">join</span>(<span class="string">'\n'</span>);
203
+ };</code></pre>
204
+ </td>
205
+ </tr><tr class="filename"><td><h2 id="lib/knox/client.js"><a href="#">client</a></h2></td><td>lib/knox/client.js</td></tr><tr class="code">
206
+ <td class="docs">
207
+ <p>Module dependencies.
208
+ </p>
209
+ </td>
210
+ <td class="code">
211
+ <pre><code><span class="keyword">var</span> <span class="variable">utils</span> = <span class="variable">require</span>(<span class="string">'./utils'</span>)
212
+ , <span class="variable">auth</span> = <span class="variable">require</span>(<span class="string">'./auth'</span>)
213
+ , <span class="variable">http</span> = <span class="variable">require</span>(<span class="string">'http'</span>)
214
+ , <span class="variable">join</span> = <span class="variable">require</span>(<span class="string">'path'</span>).<span class="variable">join</span>;</code></pre>
215
+ </td>
216
+ </tr>
217
+ <tr class="code">
218
+ <td class="docs">
219
+ <p>Initialize a <code>Client</code> with the given <code>options</code>.</p>
220
+
221
+ <h2>Required</h2>
222
+
223
+ <ul><li><code>key</code> amazon api key</li><li><code>secret</code> amazon secret</li><li><code>bucket</code> bucket name string, ex: "learnboost"</li></ul>
224
+
225
+ <h2></h2>
226
+
227
+ <ul><li><p><strong>param</strong>: <em>Object</em> options</p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
228
+ </td>
229
+ <td class="code">
230
+ <pre><code><span class="keyword">var</span> <span class="class">Client</span> = <span class="variable">module</span>.<span class="variable">exports</span> = <span class="variable">exports</span> = <span class="keyword">function</span> <span class="class">Client</span>(<span class="variable">options</span>) {
231
+ <span class="this">this</span>.<span class="variable">host</span> = <span class="string">'s3.amazonaws.com'</span>;
232
+ <span class="variable">utils</span>.<span class="variable">merge</span>(<span class="this">this</span>, <span class="variable">options</span>);
233
+ <span class="keyword">if</span> (!<span class="this">this</span>.<span class="variable">key</span>) <span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'aws &quot;key&quot; required'</span>);
234
+ <span class="keyword">if</span> (!<span class="this">this</span>.<span class="variable">secret</span>) <span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'aws &quot;secret&quot; required'</span>);
235
+ <span class="keyword">if</span> (!<span class="this">this</span>.<span class="variable">bucket</span>) <span class="keyword">throw</span> <span class="keyword">new</span> <span class="class">Error</span>(<span class="string">'aws &quot;bucket&quot; required'</span>);
236
+ };</code></pre>
237
+ </td>
238
+ </tr>
239
+ <tr class="code">
240
+ <td class="docs">
241
+ <p>Request with <code>filename</code> the given <code>method</code>, and optional <code>headers</code>.</p>
242
+
243
+ <h2></h2>
244
+
245
+ <ul><li><p><strong>param</strong>: <em>String</em> method</p></li><li><p><strong>param</strong>: <em>String</em> filename</p></li><li><p><strong>param</strong>: <em>Object</em> headers</p></li><li><p><strong>return</strong>: <em>ClientRequest</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
246
+ </td>
247
+ <td class="code">
248
+ <pre><code><span class="class">Client</span>.<span class="variable">prototype</span>.<span class="variable">request</span> = <span class="keyword">function</span>(<span class="variable">method</span>, <span class="variable">filename</span>, <span class="variable">headers</span>){
249
+ <span class="keyword">var</span> <span class="variable">client</span> = <span class="variable">http</span>.<span class="variable">createClient</span>(<span class="number integer">80</span>, <span class="this">this</span>.<span class="variable">host</span>)
250
+ , <span class="variable">path</span> = <span class="variable">join</span>(<span class="string">'/'</span>, <span class="this">this</span>.<span class="variable">bucket</span>, <span class="variable">filename</span>)
251
+ , <span class="variable">date</span> = <span class="keyword">new</span> <span class="class">Date</span>
252
+ , <span class="variable">headers</span> = <span class="variable">headers</span> || {};
253
+
254
+ <span class="comment">// Default headers</span>
255
+ <span class="variable">utils</span>.<span class="variable">merge</span>(<span class="variable">headers</span>, {
256
+ <span class="class">Date</span>: <span class="variable">date</span>.<span class="variable">toUTCString</span>()
257
+ , <span class="class">Host</span>: <span class="this">this</span>.<span class="variable">host</span>
258
+ });
259
+
260
+ <span class="comment">// Authorization header</span>
261
+ <span class="variable">headers</span>.<span class="class">Authorization</span> = <span class="variable">auth</span>.<span class="variable">authorization</span>({
262
+ <span class="variable">key</span>: <span class="this">this</span>.<span class="variable">key</span>
263
+ , <span class="variable">secret</span>: <span class="this">this</span>.<span class="variable">secret</span>
264
+ , <span class="variable">verb</span>: <span class="variable">method</span>
265
+ , <span class="variable">date</span>: <span class="variable">date</span>
266
+ , <span class="variable">resource</span>: <span class="variable">path</span>
267
+ , <span class="variable">contentType</span>: <span class="variable">headers</span>[<span class="string">'Content-Type'</span>]
268
+ , <span class="variable">amazonHeaders</span>: <span class="variable">auth</span>.<span class="variable">canonicalizeHeaders</span>(<span class="variable">headers</span>)
269
+ });
270
+
271
+ <span class="keyword">var</span> <span class="variable">req</span> = <span class="variable">client</span>.<span class="variable">request</span>(<span class="variable">method</span>, <span class="variable">path</span>, <span class="variable">headers</span>);
272
+ <span class="variable">req</span>.<span class="variable">url</span> = <span class="this">this</span>.<span class="variable">url</span>(<span class="variable">filename</span>);
273
+ <span class="keyword">return</span> <span class="variable">req</span>;
274
+ };</code></pre>
275
+ </td>
276
+ </tr>
277
+ <tr class="code">
278
+ <td class="docs">
279
+ <p>PUT data to <code>filename</code> with optional <code>headers</code>.</p>
280
+
281
+ <h2>Example</h2>
282
+
283
+ <pre><code>// Fetch the size
284
+ fs.stat('Readme.md', function(err, stat){
285
+ // Create our request
286
+ var req = client.put('/test/Readme.md', {
287
+ 'Content-Length': stat.size
288
+ , 'Content-Type': 'text/plain'
289
+ });
290
+ fs.readFile('Readme.md', function(err, buf){
291
+ // Output response
292
+ req.on('response', function(res){
293
+ console.log(res.statusCode);
294
+ console.log(res.headers);
295
+ res.on('data', function(chunk){
296
+ console.log(chunk.toString());
297
+ });
298
+ });
299
+ // Send the request with the file's Buffer obj
300
+ req.end(buf);
301
+ });
302
+ });</code></pre>
303
+
304
+ <h2></h2>
305
+
306
+ <ul><li><p><strong>param</strong>: <em>String</em> filename</p></li><li><p><strong>param</strong>: <em>Object</em> headers</p></li><li><p><strong>return</strong>: <em>ClientRequest</em> </p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
307
+ </td>
308
+ <td class="code">
309
+ <pre><code><span class="class">Client</span>.<span class="variable">prototype</span>.<span class="variable">put</span> = <span class="keyword">function</span>(<span class="variable">filename</span>, <span class="variable">headers</span>){
310
+ <span class="variable">headers</span> = <span class="variable">utils</span>.<span class="variable">merge</span>({
311
+ <span class="class">Expect</span>: <span class="string">'100-continue'</span>
312
+ , <span class="string">'x-amz-acl'</span>: <span class="string">'public-read'</span>
313
+ }, <span class="variable">headers</span> || {});
314
+ <span class="keyword">return</span> <span class="this">this</span>.<span class="variable">request</span>(<span class="string">'PUT'</span>, <span class="variable">filename</span>, <span class="variable">headers</span>);
315
+ };</code></pre>
316
+ </td>
317
+ </tr>
318
+ <tr class="code">
319
+ <td class="docs">
320
+ <p>GET <code>filename</code> with optional <code>headers</code>.</p>
321
+
322
+ <h2></h2>
323
+
324
+ <ul><li><p><strong>param</strong>: <em>String</em> filename</p></li><li><p><strong>param</strong>: <em>Object</em> headers</p></li><li><p><strong>return</strong>: <em>ClientRequest</em> </p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
325
+ </td>
326
+ <td class="code">
327
+ <pre><code><span class="class">Client</span>.<span class="variable">prototype</span>.<span class="variable">get</span> = <span class="keyword">function</span>(<span class="variable">filename</span>, <span class="variable">headers</span>){
328
+ <span class="keyword">return</span> <span class="this">this</span>.<span class="variable">request</span>(<span class="string">'GET'</span>, <span class="variable">filename</span>, <span class="variable">headers</span>);
329
+ };</code></pre>
330
+ </td>
331
+ </tr>
332
+ <tr class="code">
333
+ <td class="docs">
334
+ <p>Issue a HEAD request on <code>filename</code> with optional `headers.</p>
335
+
336
+ <h2></h2>
337
+
338
+ <ul><li><p><strong>param</strong>: <em>String</em> filename</p></li><li><p><strong>param</strong>: <em>Object</em> headers</p></li><li><p><strong>return</strong>: <em>ClientRequest</em> </p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
339
+ </td>
340
+ <td class="code">
341
+ <pre><code><span class="class">Client</span>.<span class="variable">prototype</span>.<span class="variable">head</span> = <span class="keyword">function</span>(<span class="variable">filename</span>, <span class="variable">headers</span>){
342
+ <span class="keyword">return</span> <span class="this">this</span>.<span class="variable">request</span>(<span class="string">'HEAD'</span>, <span class="variable">filename</span>, <span class="variable">headers</span>);
343
+ };</code></pre>
344
+ </td>
345
+ </tr>
346
+ <tr class="code">
347
+ <td class="docs">
348
+ <p>DELETE <code>filename</code> with optional `headers.</p>
349
+
350
+ <h2></h2>
351
+
352
+ <ul><li><p><strong>param</strong>: <em>String</em> filename</p></li><li><p><strong>param</strong>: <em>Object</em> headers</p></li><li><p><strong>return</strong>: <em>ClientRequest</em> </p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
353
+ </td>
354
+ <td class="code">
355
+ <pre><code><span class="class">Client</span>.<span class="variable">prototype</span>.<span class="variable">del</span> = <span class="keyword">function</span>(<span class="variable">filename</span>, <span class="variable">headers</span>){
356
+ <span class="keyword">return</span> <span class="this">this</span>.<span class="variable">request</span>(<span class="string">'DELETE'</span>, <span class="variable">filename</span>, <span class="variable">headers</span>);
357
+ };</code></pre>
358
+ </td>
359
+ </tr>
360
+ <tr class="code">
361
+ <td class="docs">
362
+ <p>Return a url to the given <code>filename</code>.</p>
363
+
364
+ <h2></h2>
365
+
366
+ <ul><li><p><strong>param</strong>: <em>String</em> filename</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
367
+ </td>
368
+ <td class="code">
369
+ <pre><code><span class="class">Client</span>.<span class="variable">prototype</span>.<span class="variable">url</span> = <span class="keyword">function</span>(<span class="variable">filename</span>){
370
+ <span class="keyword">return</span> <span class="string">'http://'</span> + <span class="this">this</span>.<span class="variable">bucket</span> + <span class="string">'.'</span> + <span class="this">this</span>.<span class="variable">host</span> + <span class="variable">join</span>(<span class="string">'/'</span>, <span class="variable">filename</span>);
371
+ };</code></pre>
372
+ </td>
373
+ </tr>
374
+ <tr class="code">
375
+ <td class="docs">
376
+ <p>Shortcut for <code>new Client()</code>.</p>
377
+
378
+ <h2></h2>
379
+
380
+ <ul><li><p><strong>param</strong>: <em>Object</em> options</p></li><li><p><strong>see</strong>: <em>Client</em>
381
+ ()</p></li><li><p><strong>api</strong>: <em>public</em></p></li></ul>
382
+ </td>
383
+ <td class="code">
384
+ <pre><code><span class="variable">exports</span>.<span class="variable">createClient</span> = <span class="keyword">function</span>(<span class="variable">options</span>){
385
+ <span class="keyword">return</span> <span class="keyword">new</span> <span class="class">Client</span>(<span class="variable">options</span>);
386
+ };</code></pre>
387
+ </td>
388
+ </tr><tr class="filename"><td><h2 id="lib/knox/index.js"><a href="#">index</a></h2></td><td>lib/knox/index.js</td></tr><tr class="code">
389
+ <td class="docs">
390
+ <p>Client is the main export.
391
+ </p>
392
+ </td>
393
+ <td class="code">
394
+ <pre><code><span class="variable">exports</span> = <span class="variable">module</span>.<span class="variable">exports</span> = <span class="variable">require</span>(<span class="string">'./client'</span>);</code></pre>
395
+ </td>
396
+ </tr>
397
+ <tr class="code">
398
+ <td class="docs">
399
+ <p>Library version.</p>
400
+
401
+ <ul><li><p><strong>type</strong>: <em>String</em></p></li></ul>
402
+ </td>
403
+ <td class="code">
404
+ <pre><code><span class="variable">exports</span>.<span class="variable">version</span> = <span class="string">'0.0.1'</span>;</code></pre>
405
+ </td>
406
+ </tr>
407
+ <tr class="code">
408
+ <td class="docs">
409
+ <p>Expose utilities.</p>
410
+
411
+ <ul><li><p><strong>type</strong>: <em>Object</em></p></li></ul>
412
+ </td>
413
+ <td class="code">
414
+ <pre><code><span class="variable">exports</span>.<span class="variable">utils</span> = <span class="variable">require</span>(<span class="string">'./utils'</span>);</code></pre>
415
+ </td>
416
+ </tr>
417
+ <tr class="code">
418
+ <td class="docs">
419
+ <p>Expose auth utils.</p>
420
+
421
+ <ul><li><p><strong>type</strong>: <em>Object</em></p></li></ul>
422
+ </td>
423
+ <td class="code">
424
+ <pre><code><span class="variable">exports</span>.<span class="variable">auth</span> = <span class="variable">require</span>(<span class="string">'./auth'</span>);</code></pre>
425
+ </td>
426
+ </tr><tr class="filename"><td><h2 id="lib/knox/utils.js"><a href="#">utils</a></h2></td><td>lib/knox/utils.js</td></tr><tr class="code">
427
+ <td class="docs">
428
+ <p>Merge object <code>b</code> with object <code>a</code>.</p>
429
+
430
+ <h2></h2>
431
+
432
+ <ul><li><p><strong>param</strong>: <em>Object</em> a</p></li><li><p><strong>param</strong>: <em>Object</em> b</p></li><li><p><strong>return</strong>: <em>Object</em> a</p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
433
+ </td>
434
+ <td class="code">
435
+ <pre><code><span class="variable">exports</span>.<span class="variable">merge</span> = <span class="keyword">function</span>(<span class="variable">a</span>, <span class="variable">b</span>){
436
+ <span class="keyword">var</span> <span class="variable">keys</span> = <span class="class">Object</span>.<span class="variable">keys</span>(<span class="variable">b</span>);
437
+ <span class="keyword">for</span> (<span class="keyword">var</span> <span class="variable">i</span> = <span class="number integer">0</span>, <span class="variable">len</span> = <span class="variable">keys</span>.<span class="variable">length</span>; <span class="variable">i</span> &<span class="variable">lt</span>; <span class="variable">len</span>; ++<span class="variable">i</span>) {
438
+ <span class="keyword">var</span> <span class="variable">key</span> = <span class="variable">keys</span>[<span class="variable">i</span>];
439
+ <span class="variable">a</span>[<span class="variable">key</span>] = <span class="variable">b</span>[<span class="variable">key</span>]
440
+ }
441
+ <span class="keyword">return</span> <span class="variable">a</span>;
442
+ };</code></pre>
443
+ </td>
444
+ </tr>
445
+ <tr class="code">
446
+ <td class="docs">
447
+ <p>Base64.
448
+ </p>
449
+ </td>
450
+ <td class="code">
451
+ <pre><code><span class="variable">exports</span>.<span class="variable">base64</span> = {</code></pre>
452
+ </td>
453
+ </tr>
454
+ <tr class="code">
455
+ <td class="docs">
456
+ <p>Base64 encode the given <code>str</code>.</p>
457
+
458
+ <h2></h2>
459
+
460
+ <ul><li><p><strong>param</strong>: <em>String</em> str</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
461
+ </td>
462
+ <td class="code">
463
+ <pre><code><span class="variable">encode</span>: <span class="keyword">function</span>(<span class="variable">str</span>){
464
+ <span class="keyword">return</span> <span class="keyword">new</span> <span class="class">Buffer</span>(<span class="variable">str</span>).<span class="variable">toString</span>(<span class="string">'base64'</span>);
465
+ },</code></pre>
466
+ </td>
467
+ </tr>
468
+ <tr class="code">
469
+ <td class="docs">
470
+ <p>Base64 decode the given <code>str</code>.</p>
471
+
472
+ <h2></h2>
473
+
474
+ <ul><li><p><strong>param</strong>: <em>String</em> str</p></li><li><p><strong>return</strong>: <em>String</em> </p></li><li><p><strong>api</strong>: <em>private</em></p></li></ul>
475
+ </td>
476
+ <td class="code">
477
+ <pre><code><span class="variable">decode</span>: <span class="keyword">function</span>(<span class="variable">str</span>){
478
+ <span class="keyword">return</span> <span class="keyword">new</span> <span class="class">Buffer</span>(<span class="variable">str</span>, <span class="string">'base64'</span>).<span class="variable">toString</span>();
479
+ }
480
+ };</code></pre>
481
+ </td>
482
+ </tr> </body>
483
+ </html></tbody></table>