vulcan 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. data/lib/vulcan/cli.rb +20 -10
  2. data/lib/vulcan/version.rb +1 -1
  3. data/server/Procfile +1 -1
  4. data/server/bin/web +10 -0
  5. data/server/lib/cloudant.coffee +20 -0
  6. data/server/lib/logger.coffee +17 -0
  7. data/server/lib/on.coffee +10 -0
  8. data/server/lib/spawner.coffee +65 -0
  9. data/server/node_modules/coffee-script/CNAME +1 -0
  10. data/server/node_modules/coffee-script/LICENSE +22 -0
  11. data/server/node_modules/coffee-script/README +51 -0
  12. data/server/node_modules/coffee-script/Rakefile +78 -0
  13. data/server/node_modules/coffee-script/bin/cake +7 -0
  14. data/server/node_modules/coffee-script/bin/coffee +7 -0
  15. data/server/node_modules/coffee-script/extras/jsl.conf +44 -0
  16. data/server/node_modules/coffee-script/lib/coffee-script/browser.js +92 -0
  17. data/server/node_modules/coffee-script/lib/coffee-script/cake.js +111 -0
  18. data/server/node_modules/coffee-script/lib/coffee-script/coffee-script.js +167 -0
  19. data/server/node_modules/coffee-script/lib/coffee-script/command.js +500 -0
  20. data/server/node_modules/coffee-script/lib/coffee-script/grammar.js +606 -0
  21. data/server/node_modules/coffee-script/lib/coffee-script/helpers.js +77 -0
  22. data/server/node_modules/coffee-script/lib/coffee-script/index.js +11 -0
  23. data/server/node_modules/coffee-script/lib/coffee-script/lexer.js +788 -0
  24. data/server/node_modules/coffee-script/lib/coffee-script/nodes.js +2986 -0
  25. data/server/node_modules/coffee-script/lib/coffee-script/optparse.js +138 -0
  26. data/server/node_modules/coffee-script/lib/coffee-script/parser.js +683 -0
  27. data/server/node_modules/coffee-script/lib/coffee-script/repl.js +261 -0
  28. data/server/node_modules/coffee-script/lib/coffee-script/rewriter.js +349 -0
  29. data/server/node_modules/coffee-script/lib/coffee-script/scope.js +146 -0
  30. data/server/node_modules/coffee-script/package.json +55 -0
  31. data/server/node_modules/connect-form/History.md +0 -6
  32. data/server/node_modules/connect-form/lib/connect-form.js +2 -4
  33. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +64 -36
  34. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +5 -1
  35. data/server/node_modules/connect-form/node_modules/formidable/package.json +20 -6
  36. data/server/node_modules/connect-form/node_modules/formidable/test/common.js +5 -6
  37. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/funkyfilename.txt +1 -0
  38. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +1 -1
  39. data/server/node_modules/connect-form/node_modules/formidable/test/{slow → integration}/test-fixtures.js +38 -33
  40. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-incoming-form.js +11 -0
  41. data/server/node_modules/connect-form/node_modules/formidable/test/run.js +1 -6
  42. data/server/node_modules/connect-form/node_modules/formidable/test/unit/test-incoming-form.js +63 -0
  43. data/server/node_modules/connect-form/package.json +27 -5
  44. data/server/node_modules/cradle/README.md +10 -10
  45. data/server/node_modules/cradle/lib/cradle.js +117 -523
  46. data/server/node_modules/cradle/lib/cradle/database/attachments.js +120 -0
  47. data/server/node_modules/cradle/lib/cradle/database/changes.js +56 -0
  48. data/server/node_modules/cradle/lib/cradle/database/documents.js +215 -0
  49. data/server/node_modules/cradle/lib/cradle/database/index.js +65 -0
  50. data/server/node_modules/cradle/lib/cradle/database/views.js +125 -0
  51. data/server/node_modules/cradle/node_modules/follow/LICENSE +202 -0
  52. data/server/node_modules/cradle/node_modules/follow/README.md +164 -0
  53. data/server/node_modules/cradle/node_modules/follow/Rakefile +54 -0
  54. data/server/node_modules/cradle/node_modules/follow/api.js +35 -0
  55. data/server/node_modules/cradle/node_modules/follow/browser/eventemitter2.js +453 -0
  56. data/server/node_modules/cradle/node_modules/follow/browser/export.js +78 -0
  57. data/server/node_modules/cradle/node_modules/follow/browser/index.html +14 -0
  58. data/server/node_modules/cradle/node_modules/follow/browser/jquery-1.6.1.min.js +18 -0
  59. data/server/node_modules/cradle/node_modules/follow/browser/log4js.js +46 -0
  60. data/server/node_modules/cradle/node_modules/follow/browser/main.js +92 -0
  61. data/server/node_modules/cradle/node_modules/follow/browser/querystring.js +28 -0
  62. data/server/node_modules/cradle/node_modules/follow/browser/request.jquery.js +237 -0
  63. data/server/node_modules/cradle/node_modules/follow/browser/require.js +33 -0
  64. data/server/node_modules/cradle/node_modules/follow/browser/util.js +28 -0
  65. data/server/node_modules/cradle/node_modules/follow/cli.js +101 -0
  66. data/server/node_modules/cradle/node_modules/follow/lib/feed.js +556 -0
  67. data/server/node_modules/cradle/node_modules/follow/lib/index.js +66 -0
  68. data/server/node_modules/cradle/node_modules/follow/lib/stream.js +305 -0
  69. data/server/node_modules/cradle/node_modules/follow/node_modules/request/LICENSE +55 -0
  70. data/server/node_modules/cradle/node_modules/follow/node_modules/request/README.md +285 -0
  71. data/server/node_modules/cradle/node_modules/follow/node_modules/request/main.js +618 -0
  72. data/server/node_modules/cradle/node_modules/follow/node_modules/request/mimetypes.js +146 -0
  73. data/server/node_modules/cradle/node_modules/follow/node_modules/request/oauth.js +34 -0
  74. data/server/node_modules/cradle/node_modules/follow/node_modules/request/package.json +42 -0
  75. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/googledoodle.png +0 -0
  76. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/run.sh +6 -0
  77. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/server.js +57 -0
  78. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-body.js +90 -0
  79. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-cookie.js +29 -0
  80. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-cookiejar.js +90 -0
  81. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-errors.js +30 -0
  82. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-oauth.js +109 -0
  83. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-pipes.js +167 -0
  84. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-proxy.js +39 -0
  85. data/server/node_modules/cradle/node_modules/follow/node_modules/request/tests/test-timeout.js +87 -0
  86. data/server/node_modules/cradle/node_modules/follow/node_modules/request/uuid.js +19 -0
  87. data/server/node_modules/cradle/node_modules/follow/node_modules/request/vendor/cookie/index.js +55 -0
  88. data/server/node_modules/cradle/node_modules/follow/node_modules/request/vendor/cookie/jar.js +72 -0
  89. data/server/node_modules/cradle/node_modules/follow/package.json +45 -0
  90. data/server/node_modules/cradle/node_modules/follow/test/couch.js +153 -0
  91. data/server/node_modules/cradle/node_modules/follow/test/follow.js +136 -0
  92. data/server/node_modules/cradle/node_modules/follow/test/issues.js +178 -0
  93. data/server/node_modules/cradle/node_modules/follow/test/issues/10.js +24 -0
  94. data/server/node_modules/cradle/node_modules/follow/test/stream.js +493 -0
  95. data/server/node_modules/cradle/node_modules/request/LICENSE +55 -0
  96. data/server/node_modules/cradle/node_modules/request/README.md +287 -0
  97. data/server/node_modules/cradle/node_modules/request/forever.js +103 -0
  98. data/server/node_modules/cradle/node_modules/request/main.js +913 -0
  99. data/server/node_modules/cradle/node_modules/request/mimetypes.js +152 -0
  100. data/server/node_modules/cradle/node_modules/request/oauth.js +34 -0
  101. data/server/node_modules/cradle/node_modules/request/package.json +42 -0
  102. data/server/node_modules/cradle/node_modules/request/tests/googledoodle.png +0 -0
  103. data/server/node_modules/cradle/node_modules/request/tests/run.js +38 -0
  104. data/server/node_modules/cradle/node_modules/request/tests/server.js +82 -0
  105. data/server/node_modules/cradle/node_modules/request/tests/squid.conf +77 -0
  106. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/ca.cnf +20 -0
  107. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/ca.crl +0 -0
  108. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/ca.crt +17 -0
  109. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/ca.csr +13 -0
  110. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/ca.key +18 -0
  111. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/ca.srl +1 -0
  112. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/server.cnf +19 -0
  113. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/server.crt +16 -0
  114. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/server.csr +11 -0
  115. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/server.js +28 -0
  116. data/server/node_modules/cradle/node_modules/request/tests/ssl/ca/server.key +9 -0
  117. data/server/node_modules/cradle/node_modules/request/tests/ssl/npm-ca.crt +16 -0
  118. data/server/node_modules/cradle/node_modules/request/tests/ssl/test.crt +15 -0
  119. data/server/node_modules/cradle/node_modules/request/tests/ssl/test.key +15 -0
  120. data/server/node_modules/cradle/node_modules/request/tests/test-body.js +95 -0
  121. data/server/node_modules/cradle/node_modules/request/tests/test-cookie.js +29 -0
  122. data/server/node_modules/cradle/node_modules/request/tests/test-cookiejar.js +90 -0
  123. data/server/node_modules/cradle/node_modules/request/tests/test-defaults.js +68 -0
  124. data/server/node_modules/cradle/node_modules/request/tests/test-errors.js +37 -0
  125. data/server/node_modules/cradle/node_modules/request/tests/test-headers.js +52 -0
  126. data/server/node_modules/cradle/node_modules/request/tests/test-httpModule.js +94 -0
  127. data/server/node_modules/cradle/node_modules/request/tests/test-https-strict.js +97 -0
  128. data/server/node_modules/cradle/node_modules/request/tests/test-https.js +86 -0
  129. data/server/node_modules/cradle/node_modules/request/tests/test-oauth.js +117 -0
  130. data/server/node_modules/cradle/node_modules/request/tests/test-params.js +92 -0
  131. data/server/node_modules/cradle/node_modules/request/tests/test-pipes.js +202 -0
  132. data/server/node_modules/cradle/node_modules/request/tests/test-proxy.js +39 -0
  133. data/server/node_modules/cradle/node_modules/request/tests/test-qs.js +28 -0
  134. data/server/node_modules/cradle/node_modules/request/tests/test-redirect.js +154 -0
  135. data/server/node_modules/cradle/node_modules/request/tests/test-timeout.js +87 -0
  136. data/server/node_modules/cradle/node_modules/request/tests/test-toJSON.js +14 -0
  137. data/server/node_modules/cradle/node_modules/request/tests/test-tunnel.js +61 -0
  138. data/server/node_modules/cradle/node_modules/request/tunnel.js +229 -0
  139. data/server/node_modules/cradle/node_modules/request/uuid.js +19 -0
  140. data/server/node_modules/cradle/node_modules/request/vendor/cookie/index.js +65 -0
  141. data/server/node_modules/cradle/node_modules/request/vendor/cookie/jar.js +72 -0
  142. data/server/node_modules/cradle/node_modules/vargs/package.json +33 -10
  143. data/server/node_modules/cradle/package.json +50 -12
  144. data/server/node_modules/cradle/test/cache-test.js +1 -4
  145. data/server/node_modules/cradle/test/connection-test.js +179 -0
  146. data/server/node_modules/cradle/test/database-attachment-test.js +344 -0
  147. data/server/node_modules/cradle/test/database-cache-test.js +132 -0
  148. data/server/node_modules/cradle/test/database-test.js +219 -0
  149. data/server/node_modules/cradle/test/database-view-test.js +141 -0
  150. data/server/node_modules/cradle/test/fixtures/databases.json +28 -1
  151. data/server/node_modules/cradle/test/helpers/seed.js +14 -5
  152. data/server/node_modules/cradle/test/response-test.js +1 -1
  153. data/server/node_modules/express/History.md +16 -0
  154. data/server/node_modules/express/bin/express +7 -6
  155. data/server/node_modules/express/lib-cov/application.js +510 -0
  156. data/server/node_modules/express/lib-cov/express.js +65 -0
  157. data/server/node_modules/express/lib-cov/middleware.js +54 -0
  158. data/server/node_modules/express/lib-cov/request.js +225 -0
  159. data/server/node_modules/express/lib-cov/response.js +611 -0
  160. data/server/node_modules/express/lib-cov/router/collection.js +40 -0
  161. data/server/node_modules/express/lib-cov/router/index.js +515 -0
  162. data/server/node_modules/express/lib-cov/router/methods.js +9 -0
  163. data/server/node_modules/express/lib-cov/router/route.js +68 -0
  164. data/server/node_modules/express/lib-cov/utils.js +151 -0
  165. data/server/node_modules/express/lib-cov/view.js +81 -0
  166. data/server/node_modules/express/lib/express.js +1 -1
  167. data/server/node_modules/express/lib/http.js +1 -2
  168. data/server/node_modules/express/lib/request.js +2 -2
  169. data/server/node_modules/express/lib/router/methods.js +10 -1
  170. data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
  171. data/server/node_modules/express/node_modules/connect/lib/http.js +3 -2
  172. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +0 -2
  173. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +1 -2
  174. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +42 -25
  175. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +1 -0
  176. data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +14 -3
  177. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +11 -0
  178. data/server/node_modules/express/node_modules/connect/package.json +35 -7
  179. data/server/node_modules/express/node_modules/mime/package.json +30 -8
  180. data/server/node_modules/express/node_modules/mkdirp/README.markdown +35 -2
  181. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +1 -1
  182. data/server/node_modules/express/node_modules/mkdirp/index.js +72 -13
  183. data/server/node_modules/express/node_modules/mkdirp/package.json +39 -21
  184. data/server/node_modules/express/node_modules/mkdirp/test/chmod.js +38 -0
  185. data/server/node_modules/express/node_modules/mkdirp/test/clobber.js +37 -0
  186. data/server/node_modules/express/node_modules/mkdirp/test/perm.js +32 -0
  187. data/server/node_modules/express/node_modules/mkdirp/test/perm_sync.js +39 -0
  188. data/server/node_modules/express/node_modules/mkdirp/test/sync.js +27 -0
  189. data/server/node_modules/express/node_modules/mkdirp/test/umask.js +28 -0
  190. data/server/node_modules/express/node_modules/mkdirp/test/umask_sync.js +27 -0
  191. data/server/node_modules/express/node_modules/qs/History.md +10 -0
  192. data/server/node_modules/express/node_modules/qs/Readme.md +9 -2
  193. data/server/node_modules/express/node_modules/qs/examples.js +3 -0
  194. data/server/node_modules/express/node_modules/qs/lib/querystring.js +8 -6
  195. data/server/node_modules/express/node_modules/qs/package.json +26 -8
  196. data/server/node_modules/express/node_modules/qs/test/parse.js +13 -1
  197. data/server/node_modules/express/node_modules/qs/test/stringify.js +45 -37
  198. data/server/node_modules/express/package.json +55 -16
  199. data/server/node_modules/express/test.js +41 -0
  200. data/server/node_modules/knox/package.json +26 -4
  201. data/server/node_modules/node-uuid/package.json +40 -11
  202. data/server/node_modules/node-uuid/test/test.js +1 -1
  203. data/server/node_modules/nodemon/README.md +120 -0
  204. data/server/node_modules/nodemon/nodemon.js +518 -0
  205. data/server/node_modules/nodemon/nodemonignore.example +11 -0
  206. data/server/node_modules/nodemon/package.json +49 -0
  207. data/server/node_modules/restler/README.md +144 -94
  208. data/server/node_modules/restler/lib/multipartform.js +2 -0
  209. data/server/node_modules/restler/lib/restler.js +218 -61
  210. data/server/node_modules/restler/package.json +35 -8
  211. data/server/node_modules/restler/test/all.js +6 -1
  212. data/server/node_modules/restler/test/restler.js +624 -118
  213. data/server/package.json +14 -10
  214. data/server/web.coffee +64 -0
  215. data/server/web.js +15 -3
  216. metadata +170 -57
  217. data/server/index.js +0 -14
  218. data/server/node_modules/connect-form/LICENSE +0 -22
  219. data/server/node_modules/connect-form/index.js +0 -100
  220. data/server/node_modules/connect-form/node_modules/formidable/test/fast/test-incoming-form.js +0 -45
  221. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
  222. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
  223. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +0 -24
  224. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
  225. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
  226. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
  227. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
  228. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
  229. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  230. data/server/node_modules/cradle/Makefile +0 -10
  231. data/server/node_modules/cradle/test/cradle-test.js +0 -650
  232. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +0 -13
  233. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -26
  234. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +0 -24
  235. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +0 -23
  236. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -24
  237. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +0 -22
  238. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +0 -22
  239. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +0 -22
  240. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  241. data/server/node_modules/express/node_modules/connect/test.js +0 -52
  242. data/server/node_modules/express/testing/foo/app.js +0 -35
  243. data/server/node_modules/express/testing/foo/package.json +0 -9
  244. data/server/node_modules/express/testing/foo/public/stylesheets/style.css +0 -8
  245. data/server/node_modules/express/testing/foo/routes/index.js +0 -10
  246. data/server/node_modules/express/testing/foo/views/index.jade +0 -2
  247. data/server/node_modules/express/testing/foo/views/layout.jade +0 -6
  248. data/server/node_modules/express/testing/index.js +0 -43
  249. data/server/node_modules/express/testing/public/test.txt +0 -2971
  250. data/server/node_modules/express/testing/views/page.html +0 -1
  251. data/server/node_modules/express/testing/views/page.jade +0 -3
  252. data/server/node_modules/express/testing/views/test.md +0 -1
  253. data/server/node_modules/express/testing/views/user/index.jade +0 -1
  254. data/server/node_modules/express/testing/views/user/list.jade +0 -1
  255. data/server/node_modules/knox/lib/knox/mime/index.js +0 -308
  256. data/server/node_modules/knox/lib/knox/mime/test.js +0 -59
  257. data/server/node_modules/node-uuid/test/benchmark-native +0 -0
  258. data/server/node_modules/on/index.js +0 -13
  259. data/server/node_modules/restler/test/test_helper.js +0 -163
  260. data/server/node_modules/spawner/index.js +0 -106
@@ -0,0 +1,54 @@
1
+ require 'json'
2
+
3
+ LIBRARY = [ "api.js", "feed.js", "lib.js", "cli.js" ]
4
+ BROWSER_TOOLS = Dir.glob("browser/*").select{|x| x != "browser/export.js" }
5
+
6
+ task :default => :export
7
+
8
+ desc 'Export Follow for use in web browsers'
9
+ task :export => ([:clean, "cli.js"] + LIBRARY + BROWSER_TOOLS) do |task|
10
+ build = "./build"
11
+ target = "#{build}/follow"
12
+
13
+ sh "mkdir", "-p", target
14
+ LIBRARY.each do |js|
15
+ sh "node", "browser/export.js", js, "#{target}/#{js}"
16
+ end
17
+
18
+ BROWSER_TOOLS.each do |file|
19
+ sh "cp", file, build
20
+ end
21
+
22
+ # EventEmitter2 needs wrapping.
23
+ sh "node", "browser/export.js", "browser/eventemitter2.js", "#{build}/eventemitter2.js"
24
+
25
+ File.open("#{build}/boot.js", 'w') do |boot|
26
+ requirejs_paths = { 'request' => 'request.jquery',
27
+ 'events' => 'eventemitter2',
28
+ # 'foo' => 'bar', etc.
29
+ }
30
+
31
+ opts = { # 'baseUrl' => "follow",
32
+ 'paths' => requirejs_paths,
33
+ }
34
+
35
+ main_js = "main.js"
36
+
37
+ boot.write([ 'require(',
38
+ '// Options',
39
+ opts.to_json() + ',',
40
+ '',
41
+ '// Modules',
42
+ [main_js].to_json() + ',',
43
+ '',
44
+ '// Code to run when ready',
45
+ 'function(main) { return main(); }',
46
+ ');'
47
+ ].join("\n"));
48
+ end
49
+ end
50
+
51
+ desc 'Clean up build files'
52
+ task :clean do
53
+ sh "rm", "-rf", "./build"
54
+ end
@@ -0,0 +1,35 @@
1
+ // The changes_couchdb API
2
+ //
3
+ // Copyright 2011 Iris Couch
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+
17
+ var feed = require('./lib/feed')
18
+ , stream = require('./lib/stream')
19
+
20
+ function follow_feed(opts, cb) {
21
+ var ch_feed = new feed.Feed(opts);
22
+ ch_feed.on('error' , function(er) { return cb && cb.call(ch_feed, er) });
23
+ ch_feed.on('change', function(ch) { return cb && cb.call(ch_feed, null, ch) });
24
+
25
+ // Give the caller a chance to hook into any events.
26
+ process.nextTick(function() {
27
+ ch_feed.follow();
28
+ })
29
+
30
+ return ch_feed;
31
+ }
32
+
33
+ module.exports = follow_feed;
34
+ module.exports.Feed = feed.Feed;
35
+ module.exports.Changes = stream.Changes
@@ -0,0 +1,453 @@
1
+
2
+ ;!function(exports, undefined) {
3
+
4
+ var isArray = Array.isArray;
5
+ var defaultMaxListeners = 10;
6
+
7
+ function init() {
8
+ this._events = new Object;
9
+ }
10
+
11
+ function configure(conf) {
12
+
13
+ if (conf) {
14
+ this.wildcard = conf.wildcard;
15
+ this.delimiter = conf.delimiter || '.';
16
+
17
+ if (this.wildcard) {
18
+ this.listenerTree = new Object;
19
+ }
20
+ }
21
+ }
22
+
23
+ function EventEmitter(conf) {
24
+ this._events = new Object;
25
+ configure.call(this, conf);
26
+ }
27
+
28
+ function searchListenerTree(handlers, type, tree, i) {
29
+ if (!tree) {
30
+ return;
31
+ }
32
+
33
+ var listeners;
34
+
35
+ if (i === type.length && tree._listeners) {
36
+ //
37
+ // If at the end of the event(s) list and the tree has listeners
38
+ // invoke those listeners.
39
+ //
40
+ if (typeof tree._listeners === 'function') {
41
+ handlers && handlers.push(tree._listeners);
42
+ return tree;
43
+ } else {
44
+ for (var leaf = 0, len = tree._listeners.length; leaf < len; leaf++) {
45
+ handlers && handlers.push(tree._listeners[leaf]);
46
+ }
47
+ return tree;
48
+ }
49
+ }
50
+
51
+ if (type[i] === '*' || tree[type[i]]) {
52
+ //
53
+ // If the event emitted is '*' at this part
54
+ // or there is a concrete match at this patch
55
+ //
56
+ if (type[i] === '*') {
57
+ for (var branch in tree) {
58
+ if (branch !== '_listeners' && tree.hasOwnProperty(branch)) {
59
+ listeners = searchListenerTree(handlers, type, tree[branch], i+1);
60
+ }
61
+ }
62
+ return listeners;
63
+ }
64
+
65
+ listeners = searchListenerTree(handlers, type, tree[type[i]], i+1);
66
+ }
67
+
68
+
69
+ if (tree['*']) {
70
+ //
71
+ // If the listener tree will allow any match for this part,
72
+ // then recursively explore all branches of the tree
73
+ //
74
+ searchListenerTree(handlers, type, tree['*'], i+1);
75
+ }
76
+
77
+ return listeners;
78
+ };
79
+
80
+ function growListenerTree(type, listener) {
81
+
82
+ type = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
83
+
84
+ var tree = this.listenerTree;
85
+ var name = type.shift();
86
+
87
+ while (name) {
88
+
89
+ if (!tree[name]) {
90
+ tree[name] = new Object;
91
+ }
92
+
93
+ tree = tree[name];
94
+
95
+ if (type.length === 0) {
96
+
97
+ if (!tree._listeners) {
98
+ tree._listeners = listener;
99
+ }
100
+ else if(typeof tree._listeners === 'function') {
101
+ tree._listeners = [tree._listeners, listener];
102
+ }
103
+ else if (isArray(tree._listeners)) {
104
+
105
+ tree._listeners.push(listener);
106
+
107
+ if (!tree._listeners.warned) {
108
+
109
+ var m = defaultMaxListeners;
110
+
111
+ if (m > 0 && tree._listeners.length > m) {
112
+
113
+ tree._listeners.warned = true;
114
+ console.error('(node) warning: possible EventEmitter memory ' +
115
+ 'leak detected. %d listeners added. ' +
116
+ 'Use emitter.setMaxListeners() to increase limit.',
117
+ tree._listeners.length);
118
+ console.trace();
119
+ }
120
+ }
121
+ }
122
+ return true;
123
+ }
124
+ name = type.shift();
125
+ }
126
+ return true;
127
+ };
128
+
129
+ // By default EventEmitters will print a warning if more than
130
+ // 10 listeners are added to it. This is a useful default which
131
+ // helps finding memory leaks.
132
+ //
133
+ // Obviously not all Emitters should be limited to 10. This function allows
134
+ // that to be increased. Set to zero for unlimited.
135
+
136
+ EventEmitter.prototype.setMaxListeners = function(n) {
137
+ this._events || init.call(this);
138
+ this._events.maxListeners = n;
139
+ };
140
+
141
+ EventEmitter.prototype.event = '';
142
+
143
+ EventEmitter.prototype.once = function(event, fn) {
144
+ this.many(event, 1, fn);
145
+ return this;
146
+ };
147
+
148
+ EventEmitter.prototype.many = function(event, ttl, fn) {
149
+ var self = this;
150
+
151
+ if (typeof fn !== 'function') {
152
+ throw new Error('many only accepts instances of Function');
153
+ }
154
+
155
+ function listener() {
156
+ if (--ttl === 0) {
157
+ self.off(event, listener);
158
+ }
159
+ fn.apply(null, arguments);
160
+ };
161
+
162
+ listener._origin = fn;
163
+
164
+ this.on(event, listener);
165
+
166
+ return self;
167
+ };
168
+
169
+ EventEmitter.prototype.emit = function() {
170
+ this._events || init.call(this);
171
+
172
+ var type = arguments[0];
173
+
174
+ if (type === 'newListener') {
175
+ if (!this._events.newListener) { return false; }
176
+ }
177
+
178
+ // Loop through the *_all* functions and invoke them.
179
+ if (this._all) {
180
+ var l = arguments.length;
181
+ var args = new Array(l - 1);
182
+ for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
183
+ for (i = 0, l = this._all.length; i < l; i++) {
184
+ this.event = type;
185
+ this._all[i].apply(this, args);
186
+ }
187
+ }
188
+
189
+ // If there is no 'error' event listener then throw.
190
+ if (type === 'error') {
191
+
192
+ if (!this._all &&
193
+ !this._events.error &&
194
+ !(this.wildcard && this.listenerTree.error)) {
195
+
196
+ if (arguments[1] instanceof Error) {
197
+ throw arguments[1]; // Unhandled 'error' event
198
+ } else {
199
+ throw new Error("Uncaught, unspecified 'error' event.");
200
+ }
201
+ return false;
202
+ }
203
+ }
204
+
205
+ var handler;
206
+
207
+ if(this.wildcard) {
208
+ handler = [];
209
+ var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
210
+ searchListenerTree.call(this, handler, ns, this.listenerTree, 0);
211
+ }
212
+ else {
213
+ handler = this._events[type];
214
+ }
215
+
216
+ if (typeof handler === 'function') {
217
+ this.event = type;
218
+ if (arguments.length === 1) {
219
+ handler.call(this);
220
+ }
221
+ else if (arguments.length > 1)
222
+ switch (arguments.length) {
223
+ case 2:
224
+ handler.call(this, arguments[1]);
225
+ break;
226
+ case 3:
227
+ handler.call(this, arguments[1], arguments[2]);
228
+ break;
229
+ // slower
230
+ default:
231
+ var l = arguments.length;
232
+ var args = new Array(l - 1);
233
+ for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
234
+ handler.apply(this, args);
235
+ }
236
+ return true;
237
+ }
238
+ else if (handler) {
239
+ var l = arguments.length;
240
+ var args = new Array(l - 1);
241
+ for (var i = 1; i < l; i++) args[i - 1] = arguments[i];
242
+
243
+ var listeners = handler.slice();
244
+ for (var i = 0, l = listeners.length; i < l; i++) {
245
+ this.event = type;
246
+ listeners[i].apply(this, args);
247
+ }
248
+ return true;
249
+ }
250
+
251
+ };
252
+
253
+ EventEmitter.prototype.on = function(type, listener) {
254
+ this._events || init.call(this);
255
+
256
+ // To avoid recursion in the case that type == "newListeners"! Before
257
+ // adding it to the listeners, first emit "newListeners".
258
+ this.emit('newListener', type, listener);
259
+
260
+ if(this.wildcard) {
261
+ growListenerTree.call(this, type, listener);
262
+ return this;
263
+ }
264
+
265
+ if (!this._events[type]) {
266
+ // Optimize the case of one listener. Don't need the extra array object.
267
+ this._events[type] = listener;
268
+ }
269
+ else if(typeof this._events[type] === 'function') {
270
+ // Adding the second element, need to change to array.
271
+ this._events[type] = [this._events[type], listener];
272
+ }
273
+ else if (isArray(this._events[type])) {
274
+ // If we've already got an array, just append.
275
+ this._events[type].push(listener);
276
+
277
+ // Check for listener leak
278
+ if (!this._events[type].warned) {
279
+
280
+ var m;
281
+ if (this._events.maxListeners !== undefined) {
282
+ m = this._events.maxListeners;
283
+ } else {
284
+ m = defaultMaxListeners;
285
+ }
286
+
287
+ if (m && m > 0 && this._events[type].length > m) {
288
+
289
+ this._events[type].warned = true;
290
+ console.error('(node) warning: possible EventEmitter memory ' +
291
+ 'leak detected. %d listeners added. ' +
292
+ 'Use emitter.setMaxListeners() to increase limit.',
293
+ this._events[type].length);
294
+ console.trace();
295
+ }
296
+ }
297
+ }
298
+ return this;
299
+ };
300
+
301
+ EventEmitter.prototype.onAny = function(fn) {
302
+
303
+ if(!this._all) {
304
+ this._all = [];
305
+ }
306
+
307
+ if (typeof fn !== 'function') {
308
+ throw new Error('onAny only accepts instances of Function');
309
+ }
310
+
311
+ // Add the function to the event listener collection.
312
+ this._all.push(fn);
313
+ return this;
314
+ };
315
+
316
+ EventEmitter.prototype.addListener = EventEmitter.prototype.on;
317
+
318
+ EventEmitter.prototype.off = function(type, listener) {
319
+ if (typeof listener !== 'function') {
320
+ throw new Error('removeListener only takes instances of Function');
321
+ }
322
+
323
+ var handlers;
324
+
325
+ if(this.wildcard) {
326
+ var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
327
+ var leaf = searchListenerTree.call(this, null, ns, this.listenerTree, 0);
328
+
329
+ if('undefined' === typeof leaf) { return this; }
330
+ handlers = leaf._listeners;
331
+ }
332
+ else {
333
+ // does not use listeners(), so no side effect of creating _events[type]
334
+ if (!this._events[type]) return this;
335
+ handlers = this._events[type];
336
+ }
337
+
338
+ if (isArray(handlers)) {
339
+
340
+ var position = -1;
341
+
342
+ for (var i = 0, length = handlers.length; i < length; i++) {
343
+ if (handlers[i] === listener ||
344
+ (handlers[i].listener && handlers[i].listener === listener) ||
345
+ (handlers[i]._origin && handlers[i]._origin === listener)) {
346
+ position = i;
347
+ break;
348
+ }
349
+ }
350
+
351
+ if (position < 0) {
352
+ return this;
353
+ }
354
+
355
+ if(this.wildcard) {
356
+ leaf._listeners.splice(position, 1)
357
+ }
358
+ else {
359
+ this._events[type].splice(position, 1);
360
+ }
361
+
362
+ if (handlers.length === 0) {
363
+ if(this.wildcard) {
364
+ delete leaf._listeners;
365
+ }
366
+ else {
367
+ delete this._events[type];
368
+ }
369
+ }
370
+ }
371
+ else if (handlers === listener ||
372
+ (handlers.listener && handlers.listener === listener) ||
373
+ (handlers._origin && handlers._origin === listener)) {
374
+ if(this.wildcard) {
375
+ delete leaf._listeners;
376
+ }
377
+ else {
378
+ delete this._events[type];
379
+ }
380
+ }
381
+
382
+ return this;
383
+ };
384
+
385
+ EventEmitter.prototype.offAny = function(fn) {
386
+ var i = 0, l = 0, fns;
387
+ if (fn && this._all && this._all.length > 0) {
388
+ fns = this._all;
389
+ for(i = 0, l = fns.length; i < l; i++) {
390
+ if(fn === fns[i]) {
391
+ fns.splice(i, 1);
392
+ return this;
393
+ }
394
+ }
395
+ } else {
396
+ this._all = [];
397
+ }
398
+ return this;
399
+ };
400
+
401
+ EventEmitter.prototype.removeListener = EventEmitter.prototype.off;
402
+
403
+ EventEmitter.prototype.removeAllListeners = function(type) {
404
+ if (arguments.length === 0) {
405
+ !this._events || init.call(this);
406
+ return this;
407
+ }
408
+
409
+ if(this.wildcard) {
410
+ var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
411
+ var leaf = searchListenerTree.call(this, null, ns, this.listenerTree, 0);
412
+
413
+ if('undefined' === typeof leaf) { return this; }
414
+ leaf._listeners = null;
415
+ }
416
+ else {
417
+ if (!this._events[type]) return this;
418
+ this._events[type] = null;
419
+ }
420
+ return this;
421
+ };
422
+
423
+ EventEmitter.prototype.listeners = function(type) {
424
+ if(this.wildcard) {
425
+ var handlers = [];
426
+ var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
427
+ searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);
428
+ return handlers;
429
+ }
430
+
431
+ this._events || init.call(this);
432
+
433
+ if (!this._events[type]) this._events[type] = [];
434
+ if (!isArray(this._events[type])) {
435
+ this._events[type] = [this._events[type]];
436
+ }
437
+ return this._events[type];
438
+ };
439
+
440
+ EventEmitter.prototype.listenersAny = function() {
441
+
442
+ if(this._all) {
443
+ return this._all;
444
+ }
445
+ else {
446
+ return [];
447
+ }
448
+
449
+ };
450
+
451
+ exports.EventEmitter2 = EventEmitter;
452
+
453
+ }(typeof exports === 'undefined' ? window : exports);