flok 0.0.12 → 0.0.14

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 (867) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -4
  3. data/Rakefile +76 -10
  4. data/app/drivers/chrome/README.md +37 -22
  5. data/app/drivers/chrome/Rakefile +77 -3
  6. data/app/drivers/chrome/build_context.rb +17 -0
  7. data/app/drivers/chrome/cakery/spec.js.erb +11 -0
  8. data/app/drivers/chrome/config.yml +18 -3
  9. data/app/drivers/chrome/pipe.rb +70 -0
  10. data/app/drivers/chrome/spec/config/config.js +39 -0
  11. data/app/drivers/chrome/spec/init/qunit.js +3828 -0
  12. data/app/drivers/chrome/spec/spec/controller_debug_spec.js +16 -0
  13. data/app/drivers/chrome/spec/spec/debug_spec.js +18 -0
  14. data/app/drivers/chrome/spec/spec/sel_scope_spec.js +160 -0
  15. data/app/drivers/chrome/spec/spec/vars_spec.js +28 -0
  16. data/app/drivers/chrome/src/bench.js +19 -0
  17. data/app/drivers/chrome/src/controller.js +164 -0
  18. data/app/drivers/chrome/src/debug.js +75 -0
  19. data/app/drivers/chrome/src/dispatch.js +52 -0
  20. data/app/drivers/chrome/src/event.js +10 -0
  21. data/app/drivers/chrome/src/helpers.js +4 -4
  22. data/app/drivers/chrome/src/net.js +8 -36
  23. data/app/drivers/chrome/src/segue.js +18 -0
  24. data/app/drivers/chrome/src/sockio.js +34 -0
  25. data/app/drivers/chrome/src/timer.js +9 -0
  26. data/app/drivers/chrome/src/ui.js +192 -87
  27. data/app/drivers/chrome/src/vendor/socket.io.js +3 -0
  28. data/app/kern/controller.js +116 -0
  29. data/app/kern/dispatch.js +171 -0
  30. data/app/kern/macro.rb +24 -0
  31. data/{output.js → app/kern/mod/controller.js} +0 -0
  32. data/app/kern/mod/debug.js +120 -0
  33. data/app/kern/mod/event.js +29 -0
  34. data/app/kern/mod/net.js +17 -0
  35. data/app/kern/mod/segue.js +36 -0
  36. data/app/kern/mod/sockio.js +1 -0
  37. data/app/kern/mod/ui.js +2 -0
  38. data/app/kern/net_cb.js +25 -0
  39. data/app/kern/services/rest.rb +310 -0
  40. data/app/kern/services/timer.rb +30 -0
  41. data/app/kern/tel.js +40 -0
  42. data/bin/flok +61 -17
  43. data/docs/architecture.md +3 -15
  44. data/docs/client_api.md +21 -0
  45. data/docs/compilation.md +31 -5
  46. data/docs/controllers.md +97 -0
  47. data/docs/datatypes.md +42 -0
  48. data/docs/debug_server.md +17 -0
  49. data/docs/drivers.md +52 -0
  50. data/docs/images/flok_arch.png +0 -0
  51. data/docs/images/ui_surface_and_views.png +0 -0
  52. data/docs/images/view_and_spot.png +0 -0
  53. data/docs/interactive.md +35 -0
  54. data/docs/kernel_api.md +37 -0
  55. data/docs/messaging.md +110 -0
  56. data/docs/mod/controller.md +35 -0
  57. data/docs/mod/debug.md +32 -0
  58. data/docs/mod/debug/dump_ui.md +64 -0
  59. data/docs/mod/event.md +16 -0
  60. data/docs/mod/net.md +21 -0
  61. data/docs/mod/persist.md +36 -0
  62. data/docs/mod/sockio.md +13 -0
  63. data/docs/mod/timer.md +8 -0
  64. data/docs/mod/ui.md +40 -0
  65. data/docs/modules.md +9 -0
  66. data/docs/project.md +40 -0
  67. data/docs/project_layout.md +8 -5
  68. data/docs/rakefile.md +13 -0
  69. data/docs/scheduling.md +45 -0
  70. data/docs/services.md +74 -0
  71. data/docs/services/rest.md +21 -0
  72. data/docs/services/timer.md +21 -0
  73. data/docs/testing.md +80 -1
  74. data/flok.gemspec +4 -0
  75. data/lib/flok.rb +6 -0
  76. data/lib/flok/build.rb +75 -26
  77. data/lib/flok/interactive.rb +58 -0
  78. data/lib/flok/platform.rb +32 -0
  79. data/lib/flok/project.rb +63 -0
  80. data/lib/flok/project_template/Gemfile.erb +2 -0
  81. data/lib/flok/project_template/app/controllers/controller.rb +1 -0
  82. data/lib/flok/service_compiler_templates/services.js.erb +13 -0
  83. data/lib/flok/services_compiler.rb +94 -0
  84. data/lib/flok/user_compiler.rb +295 -0
  85. data/lib/flok/user_compiler_templates/ctable.js.erb +33 -0
  86. data/lib/flok/utilities.rb +16 -0
  87. data/lib/flok/version.rb +1 -1
  88. data/logo.png +0 -0
  89. data/opt/clojure/compiler.jar +0 -0
  90. data/opt/clojure/flokjure +53 -0
  91. data/opt/clojure/main.js +13 -0
  92. data/spec/env/etc.rb +2 -0
  93. data/spec/env/iface.rb +64 -0
  94. data/spec/env/kern.rb +128 -0
  95. data/spec/etc/cli_spec.rb +117 -0
  96. data/spec/etc/lib/build_spec.rb +188 -0
  97. data/spec/etc/lib/platform_spec.rb +33 -0
  98. data/spec/etc/lib/project_spec.rb +25 -0
  99. data/spec/etc/macro_spec.rb +35 -0
  100. data/spec/etc/service_compiler/service0.rb +10 -0
  101. data/spec/etc/services_compiler_spec.rb +41 -0
  102. data/spec/etc/user_compiler/controller0.rb +14 -0
  103. data/spec/etc/user_compiler_spec.rb +68 -0
  104. data/spec/iface/driver/assets/debug_socket_server.js +42 -0
  105. data/spec/iface/driver/assets/node_modules/socket.io/.npmignore +4 -0
  106. data/spec/iface/driver/assets/node_modules/socket.io/.travis.yml +16 -0
  107. data/spec/iface/driver/assets/node_modules/socket.io/History.md +491 -0
  108. data/spec/iface/driver/assets/node_modules/socket.io/LICENSE +22 -0
  109. data/spec/iface/driver/assets/node_modules/socket.io/Makefile +15 -0
  110. data/spec/iface/driver/assets/node_modules/socket.io/Readme.md +374 -0
  111. data/spec/iface/driver/assets/node_modules/socket.io/index.js +2 -0
  112. data/spec/iface/driver/assets/node_modules/socket.io/lib/client.js +247 -0
  113. data/spec/iface/driver/assets/node_modules/socket.io/lib/index.js +379 -0
  114. data/spec/iface/driver/assets/node_modules/socket.io/lib/namespace.js +242 -0
  115. data/spec/iface/driver/assets/node_modules/socket.io/lib/socket.js +449 -0
  116. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/.jshintrc +3 -0
  117. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/.npmignore +6 -0
  118. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/History.md +157 -0
  119. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/Makefile +33 -0
  120. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/Readme.md +156 -0
  121. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/browser.js +147 -0
  122. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/component.json +19 -0
  123. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/debug.js +197 -0
  124. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/node.js +209 -0
  125. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/node_modules/ms/.npmignore +5 -0
  126. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/node_modules/ms/README.md +33 -0
  127. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/node_modules/ms/index.js +111 -0
  128. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/node_modules/ms/package.json +46 -0
  129. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/debug/package.json +73 -0
  130. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/.npmignore +6 -0
  131. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/.travis.yml +7 -0
  132. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/History.md +408 -0
  133. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/Makefile +23 -0
  134. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/README.md +517 -0
  135. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/index.js +4 -0
  136. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/engine.io.js +126 -0
  137. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/server.js +391 -0
  138. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/socket.js +393 -0
  139. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/transport.js +114 -0
  140. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/transports/index.js +36 -0
  141. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/transports/polling-jsonp.js +108 -0
  142. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/transports/polling-xhr.js +101 -0
  143. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/transports/polling.js +279 -0
  144. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/lib/transports/websocket.js +110 -0
  145. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/base64id/.npmignore +3 -0
  146. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/base64id/README.md +18 -0
  147. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/base64id/lib/base64id.js +103 -0
  148. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/base64id/package.json +48 -0
  149. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/.jshintrc +3 -0
  150. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/.npmignore +6 -0
  151. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/History.md +132 -0
  152. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/Makefile +33 -0
  153. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/Readme.md +153 -0
  154. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/browser.js +144 -0
  155. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/component.json +19 -0
  156. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/debug.js +197 -0
  157. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/node.js +129 -0
  158. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/node_modules/ms/.npmignore +5 -0
  159. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/node_modules/ms/README.md +33 -0
  160. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/node_modules/ms/index.js +111 -0
  161. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/node_modules/ms/package.json +46 -0
  162. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/debug/package.json +71 -0
  163. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/.npmignore +17 -0
  164. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/.travis.yml +45 -0
  165. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/.zuul.yml +18 -0
  166. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/History.md +100 -0
  167. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/LICENSE +22 -0
  168. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/Makefile +26 -0
  169. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/Readme.md +202 -0
  170. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/index.js +2 -0
  171. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/lib/browser.js +594 -0
  172. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/lib/index.js +467 -0
  173. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/lib/keys.js +19 -0
  174. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/.npmignore +2 -0
  175. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/.travis.yml +5 -0
  176. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/LICENCE +19 -0
  177. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/README.md +75 -0
  178. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/index.js +28 -0
  179. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/package.json +62 -0
  180. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/after/test/after-test.js +120 -0
  181. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/.npmignore +17 -0
  182. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/Makefile +8 -0
  183. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/README.md +17 -0
  184. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/index.js +29 -0
  185. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json +40 -0
  186. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/arraybuffer.slice/test/slice-buffer.js +227 -0
  187. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/.npmignore +1 -0
  188. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/.travis.yml +6 -0
  189. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/LICENSE-MIT +22 -0
  190. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/README.md +23 -0
  191. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/grunt.js +39 -0
  192. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js +59 -0
  193. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json +56 -0
  194. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/base64-arraybuffer/test/base64-arraybuffer_test.js +72 -0
  195. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/.npmignore +2 -0
  196. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/.zuul.yml +8 -0
  197. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/Makefile +14 -0
  198. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/README.md +11 -0
  199. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/index.js +49 -0
  200. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/package.json +44 -0
  201. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/blob/test/index.js +52 -0
  202. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/.npmignore +15 -0
  203. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/History.md +5 -0
  204. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/LICENSE +20 -0
  205. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/Makefile +3 -0
  206. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/README.md +4 -0
  207. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/fixtures/big.json +1 -0
  208. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/index.js +58 -0
  209. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/README.md +54 -0
  210. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/build/build.js +209 -0
  211. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/component.json +19 -0
  212. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/index.js +3 -0
  213. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json +53 -0
  214. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/package.json +39 -0
  215. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/has-binary/test.js +108 -0
  216. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/.gitattributes +2 -0
  217. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/.npmignore +20 -0
  218. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/.travis.yml +19 -0
  219. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/Gruntfile.js +72 -0
  220. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/LICENSE-GPL.txt +278 -0
  221. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/LICENSE-MIT.txt +20 -0
  222. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/README.md +119 -0
  223. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/bower.json +14 -0
  224. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/component.json +16 -0
  225. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/package.json +73 -0
  226. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/tests/generate-test-data.py +47 -0
  227. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/tests/index.html +35 -0
  228. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/tests/tests.js +242 -0
  229. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/utf8.js +239 -0
  230. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/x.js +46 -0
  231. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/package.json +58 -0
  232. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/.npmignore +11 -0
  233. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/.travis.yml +5 -0
  234. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/History.md +322 -0
  235. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/Makefile +40 -0
  236. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/README.md +183 -0
  237. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/binding.gyp +16 -0
  238. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Makefile +355 -0
  239. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/.deps/Release/bufferutil.node.d +1 -0
  240. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d +25 -0
  241. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/.deps/Release/obj.target/validation/src/validation.o.d +25 -0
  242. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/.deps/Release/validation.node.d +1 -0
  243. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/bufferutil.node +0 -0
  244. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/linker.lock +0 -0
  245. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/validation.node +0 -0
  246. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/binding.Makefile +6 -0
  247. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/bufferutil.target.mk +156 -0
  248. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/config.gypi +117 -0
  249. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/gyp-mac-tool +512 -0
  250. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/validation.target.mk +156 -0
  251. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/builderror.log +15 -0
  252. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/index.js +49 -0
  253. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/BufferPool.js +59 -0
  254. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/BufferUtil.fallback.js +47 -0
  255. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/BufferUtil.js +16 -0
  256. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/ErrorCodes.js +24 -0
  257. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/Receiver.hixie.js +180 -0
  258. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/Receiver.js +585 -0
  259. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/Sender.hixie.js +120 -0
  260. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/Sender.js +229 -0
  261. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/Validation.fallback.js +12 -0
  262. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/Validation.js +16 -0
  263. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/WebSocket.js +879 -0
  264. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/WebSocketServer.js +467 -0
  265. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib/browser.js +43 -0
  266. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/.dntrc +37 -0
  267. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/CHANGELOG.md +216 -0
  268. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/LICENSE.md +13 -0
  269. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/README.md +1208 -0
  270. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/appveyor.yml +32 -0
  271. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/include_dirs.js +1 -0
  272. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/nan.h +2428 -0
  273. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/nan/package.json +84 -0
  274. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/options/.npmignore +7 -0
  275. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/options/Makefile +12 -0
  276. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/options/README.md +69 -0
  277. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/options/lib/options.js +86 -0
  278. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/options/package.json +51 -0
  279. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/ultron/.npmignore +3 -0
  280. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/ultron/.travis.yml +17 -0
  281. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/ultron/README.md +97 -0
  282. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/ultron/index.js +125 -0
  283. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/ultron/package.json +68 -0
  284. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/ultron/test.js +327 -0
  285. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/package.json +78 -0
  286. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/src/bufferutil.cc +117 -0
  287. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/src/validation.cc +145 -0
  288. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/wscat/README.md +26 -0
  289. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/wscat/bin/wscat +222 -0
  290. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/node_modules/ws/wscat/package.json +28 -0
  291. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/engine.io/package.json +74 -0
  292. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/.npmignore +15 -0
  293. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/LICENSE +20 -0
  294. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/Makefile +3 -0
  295. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/README.md +4 -0
  296. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/fixtures/big.json +1 -0
  297. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/gen.js +17 -0
  298. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/index.js +57 -0
  299. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/node_modules/isarray/README.md +54 -0
  300. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/node_modules/isarray/build/build.js +209 -0
  301. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/node_modules/isarray/component.json +19 -0
  302. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/node_modules/isarray/index.js +3 -0
  303. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/node_modules/isarray/package.json +53 -0
  304. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/package.json +37 -0
  305. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/has-binary-data/test.js +108 -0
  306. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/.npmignore +1 -0
  307. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/History.md +25 -0
  308. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/Readme.md +16 -0
  309. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/index.js +144 -0
  310. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/.jshintrc +3 -0
  311. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/.npmignore +6 -0
  312. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/History.md +126 -0
  313. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/Makefile +33 -0
  314. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/Readme.md +153 -0
  315. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/browser.js +144 -0
  316. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/component.json +19 -0
  317. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/debug.js +197 -0
  318. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/node.js +129 -0
  319. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/node_modules/ms/.npmignore +5 -0
  320. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/node_modules/ms/README.md +33 -0
  321. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/node_modules/ms/index.js +111 -0
  322. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/node_modules/ms/package.json +46 -0
  323. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/debug/package.json +69 -0
  324. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/.jscs.json +55 -0
  325. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/.npmignore +2 -0
  326. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/.travis.yml +18 -0
  327. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/CHANGELOG.md +151 -0
  328. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/LICENSE +21 -0
  329. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/README.md +76 -0
  330. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/index.js +70 -0
  331. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/isArguments.js +18 -0
  332. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/object-keys/package.json +82 -0
  333. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/.npmignore +5 -0
  334. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/.travis.yml +11 -0
  335. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/.zuul.yml +16 -0
  336. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/History.md +87 -0
  337. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/Makefile +11 -0
  338. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/Readme.md +73 -0
  339. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/bench/bench.js +10 -0
  340. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/bench/index.js +81 -0
  341. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/binary.js +141 -0
  342. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/index.js +396 -0
  343. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/is-buffer.js +13 -0
  344. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/benchmark/LICENSE.txt +22 -0
  345. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/benchmark/README.md +131 -0
  346. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/benchmark/benchmark.js +3918 -0
  347. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/benchmark/package.json +62 -0
  348. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/benchmark/test/run-test.sh +9 -0
  349. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/benchmark/test/test.js +2074 -0
  350. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/.npmignore +2 -0
  351. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/.travis.yml +4 -0
  352. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/History.md +52 -0
  353. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/Makefile +7 -0
  354. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/Readme.md +74 -0
  355. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/bower.json +21 -0
  356. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/component.json +14 -0
  357. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/index.js +164 -0
  358. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/component-emitter/package.json +47 -0
  359. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/debug/Readme.md +115 -0
  360. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/debug/debug.js +137 -0
  361. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/debug/index.js +5 -0
  362. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/debug/lib/debug.js +147 -0
  363. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/debug/package.json +64 -0
  364. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/isarray/README.md +54 -0
  365. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/isarray/build/build.js +209 -0
  366. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/isarray/component.json +19 -0
  367. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/isarray/index.js +3 -0
  368. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/isarray/package.json +53 -0
  369. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/.gitmodules +6 -0
  370. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/.jamignore +10 -0
  371. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/.npmignore +11 -0
  372. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/.travis.yml +33 -0
  373. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/LICENSE +20 -0
  374. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/README.md +126 -0
  375. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/lib/json3.js +861 -0
  376. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/lib/json3.min.js +18 -0
  377. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/node_modules/json3/package.json +102 -0
  378. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/node_modules/socket.io-parser/package.json +51 -0
  379. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-adapter/package.json +41 -0
  380. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/History.md +386 -0
  381. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/LICENSE +22 -0
  382. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/README.md +173 -0
  383. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/index.js +2 -0
  384. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/lib/index.js +87 -0
  385. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/lib/manager.js +503 -0
  386. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/lib/on.js +24 -0
  387. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/lib/socket.js +385 -0
  388. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/lib/url.js +73 -0
  389. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/.npmignore +1 -0
  390. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/History.md +12 -0
  391. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/Makefile +8 -0
  392. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/Readme.md +34 -0
  393. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/component.json +11 -0
  394. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/index.js +85 -0
  395. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/package.json +45 -0
  396. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/backo2/test/index.js +18 -0
  397. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/.npmignore +4 -0
  398. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/History.md +13 -0
  399. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/Makefile +7 -0
  400. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/Readme.md +64 -0
  401. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/component.json +13 -0
  402. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/index.js +23 -0
  403. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-bind/package.json +47 -0
  404. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/.npmignore +2 -0
  405. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/.travis.yml +4 -0
  406. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/History.md +52 -0
  407. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/Makefile +7 -0
  408. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/Readme.md +74 -0
  409. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/bower.json +21 -0
  410. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/component.json +14 -0
  411. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/index.js +164 -0
  412. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/component-emitter/package.json +47 -0
  413. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/debug/Readme.md +115 -0
  414. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/debug/debug.js +137 -0
  415. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/debug/index.js +5 -0
  416. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/debug/lib/debug.js +147 -0
  417. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/debug/package.json +64 -0
  418. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/.npmignore +2 -0
  419. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/.travis.yml +41 -0
  420. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/.zuul.yml +20 -0
  421. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/History.md +468 -0
  422. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/Makefile +37 -0
  423. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/README.md +265 -0
  424. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/engine.io.js +4040 -0
  425. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/index.js +2 -0
  426. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/index.js +10 -0
  427. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/socket.js +705 -0
  428. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/transport.js +159 -0
  429. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/index.js +53 -0
  430. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-jsonp.js +233 -0
  431. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling-xhr.js +384 -0
  432. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/polling.js +245 -0
  433. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/transports/websocket.js +238 -0
  434. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/lib/xmlhttprequest.js +36 -0
  435. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/.bin/wscat +190 -0
  436. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/.npmignore +3 -0
  437. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/History.md +5 -0
  438. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/Makefile +16 -0
  439. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/Readme.md +24 -0
  440. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/component.json +10 -0
  441. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/index.js +7 -0
  442. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/package.json +44 -0
  443. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/component-inherit/test/inherit.js +21 -0
  444. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/.jshintrc +3 -0
  445. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/.npmignore +6 -0
  446. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/History.md +144 -0
  447. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/Makefile +33 -0
  448. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/Readme.md +156 -0
  449. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/browser.js +147 -0
  450. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/component.json +19 -0
  451. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/debug.js +197 -0
  452. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/node.js +129 -0
  453. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/node_modules/ms/.npmignore +5 -0
  454. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/node_modules/ms/README.md +33 -0
  455. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/node_modules/ms/index.js +111 -0
  456. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/node_modules/ms/package.json +46 -0
  457. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/debug/package.json +71 -0
  458. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/.npmignore +17 -0
  459. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/.travis.yml +45 -0
  460. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/.zuul.yml +18 -0
  461. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/History.md +100 -0
  462. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/LICENSE +22 -0
  463. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/Makefile +26 -0
  464. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/Readme.md +202 -0
  465. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/index.js +2 -0
  466. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/lib/browser.js +594 -0
  467. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/lib/index.js +467 -0
  468. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/lib/keys.js +19 -0
  469. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/.npmignore +2 -0
  470. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/.travis.yml +5 -0
  471. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/LICENCE +19 -0
  472. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/README.md +75 -0
  473. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/index.js +28 -0
  474. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/package.json +62 -0
  475. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/after/test/after-test.js +120 -0
  476. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/.npmignore +17 -0
  477. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/Makefile +8 -0
  478. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/README.md +17 -0
  479. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/index.js +29 -0
  480. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/package.json +40 -0
  481. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/arraybuffer.slice/test/slice-buffer.js +227 -0
  482. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/.npmignore +1 -0
  483. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/.travis.yml +6 -0
  484. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/LICENSE-MIT +22 -0
  485. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/README.md +23 -0
  486. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/grunt.js +39 -0
  487. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js +59 -0
  488. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/package.json +56 -0
  489. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/base64-arraybuffer/test/base64-arraybuffer_test.js +72 -0
  490. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/.npmignore +2 -0
  491. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/.zuul.yml +8 -0
  492. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/Makefile +14 -0
  493. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/README.md +11 -0
  494. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/index.js +49 -0
  495. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/package.json +44 -0
  496. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/blob/test/index.js +52 -0
  497. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/.npmignore +15 -0
  498. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/History.md +5 -0
  499. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/LICENSE +20 -0
  500. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/Makefile +3 -0
  501. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/README.md +4 -0
  502. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/fixtures/big.json +1 -0
  503. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/index.js +58 -0
  504. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/README.md +54 -0
  505. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/build/build.js +209 -0
  506. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/component.json +19 -0
  507. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/index.js +3 -0
  508. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/node_modules/isarray/package.json +53 -0
  509. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/package.json +39 -0
  510. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/has-binary/test.js +108 -0
  511. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/.gitattributes +2 -0
  512. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/.npmignore +20 -0
  513. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/.travis.yml +19 -0
  514. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/Gruntfile.js +72 -0
  515. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/LICENSE-GPL.txt +278 -0
  516. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/LICENSE-MIT.txt +20 -0
  517. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/README.md +119 -0
  518. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/bower.json +14 -0
  519. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/component.json +16 -0
  520. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/package.json +73 -0
  521. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/tests/generate-test-data.py +47 -0
  522. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/tests/index.html +35 -0
  523. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/tests/tests.js +242 -0
  524. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/utf8.js +239 -0
  525. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/node_modules/utf8/x.js +46 -0
  526. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/engine.io-parser/package.json +58 -0
  527. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/.npmignore +2 -0
  528. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/History.md +16 -0
  529. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/Makefile +11 -0
  530. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/Readme.md +24 -0
  531. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/component.json +16 -0
  532. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/index.js +23 -0
  533. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/.gitignore +3 -0
  534. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/History.md +15 -0
  535. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/Makefile +11 -0
  536. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/Readme.md +20 -0
  537. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/component.json +15 -0
  538. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/index.js +8 -0
  539. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/package.json +40 -0
  540. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/test/index.html +17 -0
  541. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/test/mocha.css +199 -0
  542. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/test/mocha.js +4699 -0
  543. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/node_modules/global/test/test.js +22 -0
  544. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/has-cors/package.json +57 -0
  545. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/Makefile +3 -0
  546. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/index.js +32 -0
  547. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/.npmignore +4 -0
  548. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/History.md +15 -0
  549. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/Makefile +5 -0
  550. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/Readme.md +61 -0
  551. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/example.js +10 -0
  552. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/index.js +38 -0
  553. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/.npmignore +4 -0
  554. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/History.md +10 -0
  555. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/Makefile +6 -0
  556. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/Readme.md +44 -0
  557. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/index.js +10 -0
  558. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/node_modules/callsite/package.json +45 -0
  559. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/node_modules/better-assert/package.json +65 -0
  560. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/package.json +37 -0
  561. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parsejson/test.js +21 -0
  562. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/Makefile +3 -0
  563. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/index.js +37 -0
  564. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/.npmignore +4 -0
  565. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/History.md +15 -0
  566. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/Makefile +5 -0
  567. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/Readme.md +61 -0
  568. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/example.js +10 -0
  569. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/index.js +38 -0
  570. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/.npmignore +4 -0
  571. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/History.md +10 -0
  572. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/Makefile +6 -0
  573. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/Readme.md +44 -0
  574. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/index.js +10 -0
  575. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/node_modules/callsite/package.json +45 -0
  576. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/node_modules/better-assert/package.json +65 -0
  577. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/package.json +37 -0
  578. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseqs/test.js +27 -0
  579. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/History.md +5 -0
  580. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/Makefile +3 -0
  581. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/index.js +39 -0
  582. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/.npmignore +4 -0
  583. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/History.md +15 -0
  584. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/Makefile +5 -0
  585. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/Readme.md +61 -0
  586. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/example.js +10 -0
  587. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/index.js +38 -0
  588. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/.npmignore +4 -0
  589. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/History.md +10 -0
  590. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/Makefile +6 -0
  591. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/Readme.md +44 -0
  592. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/index.js +10 -0
  593. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/package.json +45 -0
  594. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/node_modules/better-assert/package.json +65 -0
  595. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/package.json +45 -0
  596. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/parseuri/test.js +51 -0
  597. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/.npmignore +6 -0
  598. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/.travis.yml +6 -0
  599. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/History.md +312 -0
  600. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/Makefile +40 -0
  601. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/README.md +171 -0
  602. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/bench/parser.benchmark.js +115 -0
  603. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/bench/sender.benchmark.js +66 -0
  604. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/bench/speed.js +105 -0
  605. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/bench/util.js +105 -0
  606. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/bin/wscat +190 -0
  607. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/binding.gyp +16 -0
  608. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Makefile +355 -0
  609. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/.deps/Release/bufferutil.node.d +1 -0
  610. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d +23 -0
  611. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/validation/src/validation.o.d +23 -0
  612. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/.deps/Release/validation.node.d +1 -0
  613. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/bufferutil.node +0 -0
  614. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/linker.lock +0 -0
  615. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release/validation.node +0 -0
  616. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/binding.Makefile +6 -0
  617. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/bufferutil.target.mk +156 -0
  618. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/config.gypi +117 -0
  619. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/gyp-mac-tool +512 -0
  620. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/validation.target.mk +156 -0
  621. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/builderror.log +1 -0
  622. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/fileapi/.npmignore +1 -0
  623. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/fileapi/package.json +18 -0
  624. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/fileapi/public/app.js +39 -0
  625. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/fileapi/public/index.html +22 -0
  626. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/fileapi/public/uploader.js +55 -0
  627. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/fileapi/server.js +103 -0
  628. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/serverstats-express_3/package.json +17 -0
  629. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/serverstats-express_3/public/index.html +33 -0
  630. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/serverstats-express_3/server.js +21 -0
  631. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/serverstats/package.json +17 -0
  632. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/serverstats/public/index.html +33 -0
  633. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/serverstats/server.js +19 -0
  634. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/examples/ssl.js +59 -0
  635. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/index.js +26 -0
  636. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/BufferPool.js +59 -0
  637. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/BufferUtil.fallback.js +47 -0
  638. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/BufferUtil.js +16 -0
  639. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/ErrorCodes.js +24 -0
  640. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Receiver.hixie.js +180 -0
  641. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Receiver.js +591 -0
  642. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Sender.hixie.js +123 -0
  643. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Sender.js +227 -0
  644. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Validation.fallback.js +12 -0
  645. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/Validation.js +16 -0
  646. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js +818 -0
  647. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/WebSocketServer.js +460 -0
  648. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/lib/browser.js +43 -0
  649. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/.npmignore +4 -0
  650. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/.travis.yml +4 -0
  651. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/History.md +107 -0
  652. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/Makefile +7 -0
  653. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/Readme.md +262 -0
  654. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/index.js +2 -0
  655. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/lib/commander.js +1026 -0
  656. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/commander/package.json +60 -0
  657. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/nan/.index.js +1 -0
  658. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/nan/LICENSE +43 -0
  659. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/nan/README.md +705 -0
  660. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/nan/nan.h +884 -0
  661. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/nan/package.json +53 -0
  662. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/options/.npmignore +7 -0
  663. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/options/Makefile +12 -0
  664. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/options/README.md +69 -0
  665. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/options/lib/options.js +86 -0
  666. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/options/package.json +51 -0
  667. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/tinycolor/.gitignore +5 -0
  668. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/tinycolor/README.md +3 -0
  669. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/tinycolor/example.js +3 -0
  670. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/tinycolor/package.json +48 -0
  671. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/tinycolor/tinycolor.js +31 -0
  672. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/package.json +82 -0
  673. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/src/bufferutil.cc +117 -0
  674. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/src/validation.cc +145 -0
  675. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/BufferPool.test.js +63 -0
  676. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/Receiver.hixie.test.js +158 -0
  677. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/Receiver.test.js +255 -0
  678. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/Sender.hixie.test.js +134 -0
  679. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/Sender.test.js +24 -0
  680. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/Validation.test.js +23 -0
  681. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/WebSocket.integration.js +44 -0
  682. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/WebSocket.test.js +1724 -0
  683. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/WebSocketServer.test.js +1103 -0
  684. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/autobahn-server.js +29 -0
  685. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/autobahn.js +52 -0
  686. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/agent1-cert.pem +16 -0
  687. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/agent1-key.pem +15 -0
  688. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/ca1-cert.pem +15 -0
  689. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/ca1-key.pem +17 -0
  690. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/certificate.pem +13 -0
  691. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/key.pem +15 -0
  692. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/request.pem +11 -0
  693. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/fixtures/textfile +9 -0
  694. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/hybi-common.js +99 -0
  695. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/test/testserver.js +180 -0
  696. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/LICENSE +22 -0
  697. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/README.md +57 -0
  698. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/autotest.watchr +8 -0
  699. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/example/demo.js +16 -0
  700. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/lib/XMLHttpRequest.js +642 -0
  701. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/package.json +42 -0
  702. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-constants.js +13 -0
  703. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-events.js +50 -0
  704. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-exceptions.js +62 -0
  705. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-headers.js +76 -0
  706. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-redirect-302.js +41 -0
  707. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-redirect-303.js +41 -0
  708. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-redirect-307.js +43 -0
  709. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-request-methods.js +62 -0
  710. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/test-request-protocols.js +34 -0
  711. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/xmlhttprequest/tests/testdata.txt +1 -0
  712. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/package.json +84 -0
  713. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/.npmignore +15 -0
  714. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/History.md +11 -0
  715. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/LICENSE +20 -0
  716. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/Makefile +3 -0
  717. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/README.md +4 -0
  718. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/fixtures/big.json +1 -0
  719. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/index.js +58 -0
  720. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/node_modules/isarray/README.md +54 -0
  721. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/node_modules/isarray/build/build.js +209 -0
  722. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/node_modules/isarray/component.json +19 -0
  723. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/node_modules/isarray/index.js +3 -0
  724. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/node_modules/isarray/package.json +53 -0
  725. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/package.json +39 -0
  726. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/has-binary/test.js +108 -0
  727. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/indexof/.npmignore +2 -0
  728. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/indexof/Makefile +11 -0
  729. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/indexof/Readme.md +15 -0
  730. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/indexof/component.json +10 -0
  731. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/indexof/index.js +10 -0
  732. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/indexof/package.json +32 -0
  733. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/.npmignore +3 -0
  734. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/History.md +10 -0
  735. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/Makefile +16 -0
  736. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/Readme.md +31 -0
  737. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/component.json +10 -0
  738. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/index.js +84 -0
  739. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/package.json +35 -0
  740. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/object-component/test/object.js +48 -0
  741. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/History.md +5 -0
  742. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/Makefile +3 -0
  743. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/index.js +25 -0
  744. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/.npmignore +4 -0
  745. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/History.md +15 -0
  746. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/Makefile +5 -0
  747. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/Readme.md +61 -0
  748. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/example.js +10 -0
  749. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/index.js +38 -0
  750. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/.npmignore +4 -0
  751. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/History.md +10 -0
  752. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/Makefile +6 -0
  753. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/Readme.md +44 -0
  754. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/index.js +10 -0
  755. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/node_modules/callsite/package.json +45 -0
  756. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/node_modules/better-assert/package.json +65 -0
  757. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/package.json +37 -0
  758. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/parseuri/test.js +42 -0
  759. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/to-array/.npmignore +3 -0
  760. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/to-array/LICENCE +19 -0
  761. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/to-array/README.md +22 -0
  762. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/to-array/index.js +13 -0
  763. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/node_modules/to-array/package.json +59 -0
  764. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/package.json +90 -0
  765. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-client/socket.io.js +7000 -0
  766. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/.npmignore +5 -0
  767. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/.travis.yml +11 -0
  768. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/.zuul.yml +16 -0
  769. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/History.md +97 -0
  770. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/Makefile +11 -0
  771. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/Readme.md +73 -0
  772. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/bench/bench.js +10 -0
  773. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/bench/index.js +81 -0
  774. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/bg.gif +0 -0
  775. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/binary.js +141 -0
  776. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/index.js +400 -0
  777. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/is-buffer.js +13 -0
  778. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/benchmark/LICENSE.txt +22 -0
  779. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/benchmark/README.md +131 -0
  780. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/benchmark/benchmark.js +3918 -0
  781. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/benchmark/package.json +62 -0
  782. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/benchmark/test/run-test.sh +9 -0
  783. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/benchmark/test/test.js +2074 -0
  784. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/.npmignore +2 -0
  785. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/.travis.yml +4 -0
  786. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/History.md +52 -0
  787. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/Makefile +7 -0
  788. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/Readme.md +74 -0
  789. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/bower.json +21 -0
  790. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/component.json +14 -0
  791. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/index.js +164 -0
  792. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/component-emitter/package.json +47 -0
  793. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/debug/Readme.md +115 -0
  794. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/debug/debug.js +137 -0
  795. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/debug/index.js +5 -0
  796. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/debug/lib/debug.js +147 -0
  797. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/debug/package.json +64 -0
  798. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/isarray/README.md +54 -0
  799. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/isarray/build/build.js +209 -0
  800. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/isarray/component.json +19 -0
  801. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/isarray/index.js +3 -0
  802. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/isarray/package.json +53 -0
  803. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/.gitmodules +6 -0
  804. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/.jamignore +10 -0
  805. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/.npmignore +11 -0
  806. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/.travis.yml +33 -0
  807. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/LICENSE +20 -0
  808. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/README.md +126 -0
  809. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/lib/json3.js +861 -0
  810. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/lib/json3.min.js +18 -0
  811. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/node_modules/json3/package.json +102 -0
  812. data/spec/iface/driver/assets/node_modules/socket.io/node_modules/socket.io-parser/package.json +51 -0
  813. data/spec/iface/driver/assets/node_modules/socket.io/package.json +80 -0
  814. data/spec/iface/driver/assets/sockio_server.js +38 -0
  815. data/spec/iface/driver/controller_spec.rb +107 -0
  816. data/spec/iface/driver/debug_socketio_spec.rb +76 -0
  817. data/spec/iface/driver/debug_spec.rb +27 -0
  818. data/spec/iface/driver/net_spec.rb +80 -0
  819. data/spec/iface/driver/ping_spec.rb +53 -0
  820. data/spec/iface/driver/pipe_spec.rb +31 -0
  821. data/spec/iface/driver/sockio_spec.rb +52 -0
  822. data/spec/iface/driver/timer_spec.rb +39 -0
  823. data/spec/iface/driver/ui_spec.rb +157 -0
  824. data/spec/iface/kern/debug_spec.rb +40 -0
  825. data/spec/iface/kern/event_spec.rb +46 -0
  826. data/spec/iface/kern/net_spec.rb +27 -0
  827. data/spec/iface/kern/ping_spec.rb +123 -0
  828. data/spec/iface/kern/pipe_spec.rb +30 -0
  829. data/spec/kern/assets/controller0.rb +14 -0
  830. data/spec/kern/assets/controller1.rb +29 -0
  831. data/spec/kern/assets/controller_bare.rb +8 -0
  832. data/spec/kern/assets/controller_context.rb +9 -0
  833. data/spec/kern/assets/controller_def.rb +22 -0
  834. data/spec/kern/assets/controller_spots.rb +9 -0
  835. data/spec/kern/assets/controller_spots_embed.rb +19 -0
  836. data/spec/kern/assets/controller_spots_embed_removed.rb +28 -0
  837. data/spec/kern/assets/embed_info.rb +29 -0
  838. data/spec/kern/assets/event_gw.rb +21 -0
  839. data/spec/kern/assets/goto.rb +29 -0
  840. data/spec/kern/assets/goto2.rb +19 -0
  841. data/spec/kern/assets/lower_event.rb +30 -0
  842. data/spec/kern/assets/raise_event.rb +30 -0
  843. data/spec/kern/assets/rest_service.rb +21 -0
  844. data/spec/kern/assets/send_event.rb +14 -0
  845. data/spec/kern/assets/test_event.rb +14 -0
  846. data/spec/kern/assets/test_event2.rb +26 -0
  847. data/spec/kern/assets/test_event3.rb +21 -0
  848. data/spec/kern/assets/timer_service.rb +20 -0
  849. data/spec/kern/controller_spec.rb +500 -0
  850. data/spec/kern/debug_spec.rb +38 -0
  851. data/spec/kern/debug_ui_spec.rb +243 -0
  852. data/spec/kern/net_spec.rb +14 -0
  853. data/spec/kern/rest_service_spec.rb +45 -0
  854. data/spec/kern/timer_service_spec.rb +40 -0
  855. data/spec/lib/helpers.rb +318 -0
  856. data/spec/lib/io_extensions.rb +13 -0
  857. data/spec/lib/rspec_extensions.rb +219 -0
  858. data/spec/lib/temp_dir.rb +57 -0
  859. metadata +1664 -14
  860. data/app/drivers/iface/ui.js +0 -31
  861. data/app/kern/hello.js +0 -1
  862. data/docs/driver_interface.md +0 -61
  863. data/docs/interface.md +0 -5
  864. data/docs/platform_drivers.md +0 -36
  865. data/spec/build_valid_spec.rb +0 -61
  866. data/spec/drivers/net_spec.rb +0 -159
  867. data/spec/helpers.rb +0 -140
@@ -0,0 +1,32 @@
1
+ # http://www.appveyor.com/docs/appveyor-yml
2
+
3
+ # Test against these versions of Node.js.
4
+ environment:
5
+ matrix:
6
+ - nodejs_version: "0.8"
7
+ - nodejs_version: "0.10"
8
+ - nodejs_version: "0.11"
9
+
10
+ # Install scripts. (runs after repo cloning)
11
+ install:
12
+ # Get the latest stable version of Node 0.STABLE.latest
13
+ - npm install npm
14
+ - move node_modules npm
15
+ - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version)
16
+ # Typical npm stuff.
17
+ - npm/.bin/npm install
18
+ - npm/.bin/npm run rebuild-tests
19
+
20
+ # Post-install test scripts.
21
+ test_script:
22
+ # Output useful info for debugging.
23
+ - node --version
24
+ - npm --version
25
+ - cmd: npm test
26
+
27
+ # Don't actually build.
28
+ build: off
29
+
30
+ # Set build version format here instead of in the admin panel.
31
+ version: "{build}"
32
+
@@ -0,0 +1,2428 @@
1
+ /*********************************************************************
2
+ * NAN - Native Abstractions for Node.js
3
+ *
4
+ * Copyright (c) 2014 NAN contributors:
5
+ * - Rod Vagg <https://github.com/rvagg>
6
+ * - Benjamin Byholm <https://github.com/kkoopa>
7
+ * - Trevor Norris <https://github.com/trevnorris>
8
+ * - Nathan Rajlich <https://github.com/TooTallNate>
9
+ * - Brett Lawson <https://github.com/brett19>
10
+ * - Ben Noordhuis <https://github.com/bnoordhuis>
11
+ *
12
+ * MIT License <https://github.com/rvagg/nan/blob/master/LICENSE.md>
13
+ *
14
+ * Version 1.4.1: current Node unstable: 0.11.14, Node stable: 0.10.33
15
+ *
16
+ * See https://github.com/rvagg/nan for the latest update to this file
17
+ **********************************************************************************/
18
+
19
+ #ifndef NAN_H_
20
+ #define NAN_H_
21
+
22
+ #include <uv.h>
23
+ #include <node.h>
24
+ #include <node_buffer.h>
25
+ #include <node_version.h>
26
+ #include <node_object_wrap.h>
27
+ #include <string.h>
28
+ #include <limits.h>
29
+ #if defined(_MSC_VER)
30
+ # pragma warning( disable : 4530 )
31
+ #endif
32
+ #include <string>
33
+
34
+ #if defined(__GNUC__) && !(defined(DEBUG) && DEBUG)
35
+ # define NAN_INLINE inline __attribute__((always_inline))
36
+ #elif defined(_MSC_VER) && !(defined(DEBUG) && DEBUG)
37
+ # define NAN_INLINE __forceinline
38
+ #else
39
+ # define NAN_INLINE inline
40
+ #endif
41
+
42
+ #if defined(__GNUC__) && \
43
+ !(defined(V8_DISABLE_DEPRECATIONS) && V8_DISABLE_DEPRECATIONS)
44
+ # define NAN_DEPRECATED __attribute__((deprecated))
45
+ #elif defined(_MSC_VER) && \
46
+ !(defined(V8_DISABLE_DEPRECATIONS) && V8_DISABLE_DEPRECATIONS)
47
+ # define NAN_DEPRECATED __declspec(deprecated)
48
+ #else
49
+ # define NAN_DEPRECATED
50
+ #endif
51
+
52
+ // some generic helpers
53
+
54
+ template<typename T> NAN_INLINE bool NanSetPointerSafe(
55
+ T *var
56
+ , T val
57
+ ) {
58
+ if (var) {
59
+ *var = val;
60
+ return true;
61
+ } else {
62
+ return false;
63
+ }
64
+ }
65
+
66
+ template<typename T> NAN_INLINE T NanGetPointerSafe(
67
+ T *var
68
+ , T fallback = reinterpret_cast<T>(0)
69
+ ) {
70
+ if (var) {
71
+ return *var;
72
+ } else {
73
+ return fallback;
74
+ }
75
+ }
76
+
77
+ NAN_INLINE bool NanBooleanOptionValue(
78
+ v8::Local<v8::Object> optionsObj
79
+ , v8::Handle<v8::String> opt, bool def
80
+ ) {
81
+ if (def) {
82
+ return optionsObj.IsEmpty()
83
+ || !optionsObj->Has(opt)
84
+ || optionsObj->Get(opt)->BooleanValue();
85
+ } else {
86
+ return !optionsObj.IsEmpty()
87
+ && optionsObj->Has(opt)
88
+ && optionsObj->Get(opt)->BooleanValue();
89
+ }
90
+ }
91
+
92
+ NAN_INLINE bool NanBooleanOptionValue(
93
+ v8::Local<v8::Object> optionsObj
94
+ , v8::Handle<v8::String> opt
95
+ ) {
96
+ return NanBooleanOptionValue(optionsObj, opt, false);
97
+ }
98
+
99
+ NAN_INLINE uint32_t NanUInt32OptionValue(
100
+ v8::Local<v8::Object> optionsObj
101
+ , v8::Handle<v8::String> opt
102
+ , uint32_t def
103
+ ) {
104
+ return !optionsObj.IsEmpty()
105
+ && optionsObj->Has(opt)
106
+ && optionsObj->Get(opt)->IsNumber()
107
+ ? optionsObj->Get(opt)->Uint32Value()
108
+ : def;
109
+ }
110
+
111
+ template<typename T>
112
+ v8::Local<T> NanNew(v8::Handle<T>);
113
+
114
+ template<typename T>
115
+ NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val) {
116
+ return NanNew(val);
117
+ }
118
+
119
+ template<typename T>
120
+ NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val) {
121
+ return val;
122
+ }
123
+
124
+ #if (NODE_MODULE_VERSION > 0x000B)
125
+ // Node 0.11+ (0.11.3 and below won't compile with these)
126
+
127
+ # define _NAN_METHOD_ARGS_TYPE const v8::FunctionCallbackInfo<v8::Value>&
128
+ # define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args
129
+ # define _NAN_METHOD_RETURN_TYPE void
130
+
131
+ # define _NAN_GETTER_ARGS_TYPE const v8::PropertyCallbackInfo<v8::Value>&
132
+ # define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args
133
+ # define _NAN_GETTER_RETURN_TYPE void
134
+
135
+ # define _NAN_SETTER_ARGS_TYPE const v8::PropertyCallbackInfo<void>&
136
+ # define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args
137
+ # define _NAN_SETTER_RETURN_TYPE void
138
+
139
+ # define _NAN_PROPERTY_GETTER_ARGS_TYPE \
140
+ const v8::PropertyCallbackInfo<v8::Value>&
141
+ # define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args
142
+ # define _NAN_PROPERTY_GETTER_RETURN_TYPE void
143
+
144
+ # define _NAN_PROPERTY_SETTER_ARGS_TYPE \
145
+ const v8::PropertyCallbackInfo<v8::Value>&
146
+ # define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args
147
+ # define _NAN_PROPERTY_SETTER_RETURN_TYPE void
148
+
149
+ # define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE \
150
+ const v8::PropertyCallbackInfo<v8::Array>&
151
+ # define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args
152
+ # define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE void
153
+
154
+ # define _NAN_PROPERTY_DELETER_ARGS_TYPE \
155
+ const v8::PropertyCallbackInfo<v8::Boolean>&
156
+ # define _NAN_PROPERTY_DELETER_ARGS \
157
+ _NAN_PROPERTY_DELETER_ARGS_TYPE args
158
+ # define _NAN_PROPERTY_DELETER_RETURN_TYPE void
159
+
160
+ # define _NAN_PROPERTY_QUERY_ARGS_TYPE \
161
+ const v8::PropertyCallbackInfo<v8::Integer>&
162
+ # define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args
163
+ # define _NAN_PROPERTY_QUERY_RETURN_TYPE void
164
+
165
+ # define _NAN_INDEX_GETTER_ARGS_TYPE \
166
+ const v8::PropertyCallbackInfo<v8::Value>&
167
+ # define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args
168
+ # define _NAN_INDEX_GETTER_RETURN_TYPE void
169
+
170
+ # define _NAN_INDEX_SETTER_ARGS_TYPE \
171
+ const v8::PropertyCallbackInfo<v8::Value>&
172
+ # define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args
173
+ # define _NAN_INDEX_SETTER_RETURN_TYPE void
174
+
175
+ # define _NAN_INDEX_ENUMERATOR_ARGS_TYPE \
176
+ const v8::PropertyCallbackInfo<v8::Array>&
177
+ # define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args
178
+ # define _NAN_INDEX_ENUMERATOR_RETURN_TYPE void
179
+
180
+ # define _NAN_INDEX_DELETER_ARGS_TYPE \
181
+ const v8::PropertyCallbackInfo<v8::Boolean>&
182
+ # define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args
183
+ # define _NAN_INDEX_DELETER_RETURN_TYPE void
184
+
185
+ # define _NAN_INDEX_QUERY_ARGS_TYPE \
186
+ const v8::PropertyCallbackInfo<v8::Integer>&
187
+ # define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args
188
+ # define _NAN_INDEX_QUERY_RETURN_TYPE void
189
+
190
+ typedef v8::FunctionCallback NanFunctionCallback;
191
+
192
+ template<typename T>
193
+ NAN_INLINE v8::Local<T> NanNew() {
194
+ return T::New(v8::Isolate::GetCurrent());
195
+ }
196
+
197
+ template<typename T, typename P>
198
+ NAN_INLINE v8::Local<T> NanNew(P arg1) {
199
+ return T::New(v8::Isolate::GetCurrent(), arg1);
200
+ }
201
+
202
+ template<typename T>
203
+ NAN_INLINE v8::Local<v8::Signature> NanNew(
204
+ v8::Handle<v8::FunctionTemplate> receiver
205
+ , int argc
206
+ , v8::Handle<v8::FunctionTemplate> argv[] = 0) {
207
+ return v8::Signature::New(v8::Isolate::GetCurrent(), receiver, argc, argv);
208
+ }
209
+
210
+ template<typename T>
211
+ NAN_INLINE v8::Local<v8::FunctionTemplate> NanNew(
212
+ NanFunctionCallback callback
213
+ , v8::Handle<v8::Value> data = v8::Handle<v8::Value>()
214
+ , v8::Handle<v8::Signature> signature = v8::Handle<v8::Signature>()) {
215
+ return T::New(v8::Isolate::GetCurrent(), callback, data, signature);
216
+ }
217
+
218
+ template<typename T>
219
+ NAN_INLINE v8::Local<T> NanNew(v8::Handle<T> arg1) {
220
+ return v8::Local<T>::New(v8::Isolate::GetCurrent(), arg1);
221
+ }
222
+
223
+ template<typename T>
224
+ NAN_INLINE v8::Local<T> NanNew(const v8::Persistent<T> &arg1) {
225
+ return v8::Local<T>::New(v8::Isolate::GetCurrent(), arg1);
226
+ }
227
+
228
+ template<typename T, typename P>
229
+ NAN_INLINE v8::Local<T> NanNew(P arg1, int arg2) {
230
+ return T::New(v8::Isolate::GetCurrent(), arg1, arg2);
231
+ }
232
+
233
+ template<>
234
+ NAN_INLINE v8::Local<v8::Array> NanNew<v8::Array>() {
235
+ return v8::Array::New(v8::Isolate::GetCurrent());
236
+ }
237
+
238
+ template<>
239
+ NAN_INLINE v8::Local<v8::Array> NanNew<v8::Array>(int length) {
240
+ return v8::Array::New(v8::Isolate::GetCurrent(), length);
241
+ }
242
+
243
+ template<>
244
+ NAN_INLINE v8::Local<v8::Date> NanNew<v8::Date>(double time) {
245
+ return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
246
+ }
247
+
248
+ template<>
249
+ NAN_INLINE v8::Local<v8::Date> NanNew<v8::Date>(int time) {
250
+ return v8::Date::New(v8::Isolate::GetCurrent(), time).As<v8::Date>();
251
+ }
252
+
253
+ typedef v8::UnboundScript NanUnboundScript;
254
+ typedef v8::Script NanBoundScript;
255
+
256
+ template<typename T, typename P>
257
+ NAN_INLINE v8::Local<T> NanNew(
258
+ P s
259
+ , const v8::ScriptOrigin& origin
260
+ ) {
261
+ v8::ScriptCompiler::Source source(s, origin);
262
+ return v8::ScriptCompiler::CompileUnbound(
263
+ v8::Isolate::GetCurrent(), &source);
264
+ }
265
+
266
+ template<>
267
+ NAN_INLINE v8::Local<NanUnboundScript> NanNew<NanUnboundScript>(
268
+ v8::Local<v8::String> s
269
+ ) {
270
+ v8::ScriptCompiler::Source source(s);
271
+ return v8::ScriptCompiler::CompileUnbound(
272
+ v8::Isolate::GetCurrent(), &source);
273
+ }
274
+
275
+ template<>
276
+ NAN_INLINE v8::Local<v8::BooleanObject> NanNew(bool value) {
277
+ return v8::BooleanObject::New(value).As<v8::BooleanObject>();
278
+ }
279
+
280
+ template<>
281
+ NAN_INLINE v8::Local<v8::StringObject>
282
+ NanNew<v8::StringObject, v8::Local<v8::String> >(
283
+ v8::Local<v8::String> value) {
284
+ return v8::StringObject::New(value).As<v8::StringObject>();
285
+ }
286
+
287
+ template<>
288
+ NAN_INLINE v8::Local<v8::StringObject>
289
+ NanNew<v8::StringObject, v8::Handle<v8::String> >(
290
+ v8::Handle<v8::String> value) {
291
+ return v8::StringObject::New(value).As<v8::StringObject>();
292
+ }
293
+
294
+ template<>
295
+ NAN_INLINE v8::Local<v8::NumberObject> NanNew<v8::NumberObject>(double val) {
296
+ return v8::NumberObject::New(
297
+ v8::Isolate::GetCurrent(), val).As<v8::NumberObject>();
298
+ }
299
+
300
+ template<typename T>
301
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
302
+ v8::Handle<v8::String> pattern, v8::RegExp::Flags flags) {
303
+ return v8::RegExp::New(pattern, flags);
304
+ }
305
+
306
+ template<typename T>
307
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
308
+ v8::Local<v8::String> pattern, v8::RegExp::Flags flags) {
309
+ return v8::RegExp::New(pattern, flags);
310
+ }
311
+
312
+ template<typename T, typename P>
313
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
314
+ v8::Handle<v8::String> pattern, v8::RegExp::Flags flags) {
315
+ return v8::RegExp::New(pattern, flags);
316
+ }
317
+
318
+ template<typename T, typename P>
319
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
320
+ v8::Local<v8::String> pattern, v8::RegExp::Flags flags) {
321
+ return v8::RegExp::New(pattern, flags);
322
+ }
323
+
324
+ template<>
325
+ NAN_INLINE v8::Local<v8::Uint32> NanNew<v8::Uint32, int32_t>(int32_t val) {
326
+ return v8::Uint32::NewFromUnsigned(
327
+ v8::Isolate::GetCurrent(), val)->ToUint32();
328
+ }
329
+
330
+ template<>
331
+ NAN_INLINE v8::Local<v8::Uint32> NanNew<v8::Uint32, uint32_t>(uint32_t val) {
332
+ return v8::Uint32::NewFromUnsigned(
333
+ v8::Isolate::GetCurrent(), val)->ToUint32();
334
+ }
335
+
336
+ template<>
337
+ NAN_INLINE v8::Local<v8::Int32> NanNew<v8::Int32, int32_t>(int32_t val) {
338
+ return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32();
339
+ }
340
+
341
+ template<>
342
+ NAN_INLINE v8::Local<v8::Int32> NanNew<v8::Int32, uint32_t>(uint32_t val) {
343
+ return v8::Int32::New(v8::Isolate::GetCurrent(), val)->ToInt32();
344
+ }
345
+
346
+ template<>
347
+ NAN_INLINE v8::Local<v8::Integer> NanNew<v8::Integer, uint32_t>(uint32_t val) {
348
+ return v8::Integer::NewFromUnsigned(v8::Isolate::GetCurrent(), val);
349
+ }
350
+
351
+ template<>
352
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, char *>(
353
+ char *arg
354
+ , int length) {
355
+ return v8::String::NewFromUtf8(
356
+ v8::Isolate::GetCurrent()
357
+ , arg
358
+ , v8::String::kNormalString
359
+ , length);
360
+ }
361
+
362
+ template<>
363
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const char *>(
364
+ const char *arg
365
+ , int length) {
366
+ return v8::String::NewFromUtf8(
367
+ v8::Isolate::GetCurrent()
368
+ , arg
369
+ , v8::String::kNormalString
370
+ , length);
371
+ }
372
+
373
+ template<>
374
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, char *>(char *arg) {
375
+ return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), arg);
376
+ }
377
+
378
+ template<>
379
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const char *>(
380
+ const char *arg) {
381
+ return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), arg);
382
+ }
383
+
384
+ template<>
385
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, uint8_t *>(
386
+ uint8_t *arg
387
+ , int length) {
388
+ return v8::String::NewFromOneByte(
389
+ v8::Isolate::GetCurrent()
390
+ , arg
391
+ , v8::String::kNormalString
392
+ , length);
393
+ }
394
+
395
+ template<>
396
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const uint8_t *>(
397
+ const uint8_t *arg
398
+ , int length) {
399
+ return v8::String::NewFromOneByte(
400
+ v8::Isolate::GetCurrent()
401
+ , arg
402
+ , v8::String::kNormalString
403
+ , length);
404
+ }
405
+
406
+ template<>
407
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, uint8_t *>(uint8_t *arg) {
408
+ return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg);
409
+ }
410
+
411
+ template<>
412
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const uint8_t *>(
413
+ const uint8_t *arg) {
414
+ return v8::String::NewFromOneByte(v8::Isolate::GetCurrent(), arg);
415
+ }
416
+
417
+ template<>
418
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, uint16_t *>(
419
+ uint16_t *arg
420
+ , int length) {
421
+ return v8::String::NewFromTwoByte(
422
+ v8::Isolate::GetCurrent()
423
+ , arg
424
+ , v8::String::kNormalString
425
+ , length);
426
+ }
427
+
428
+ template<>
429
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const uint16_t *>(
430
+ const uint16_t *arg
431
+ , int length) {
432
+ return v8::String::NewFromTwoByte(
433
+ v8::Isolate::GetCurrent()
434
+ , arg
435
+ , v8::String::kNormalString
436
+ , length);
437
+ }
438
+ template<>
439
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, uint16_t *>(
440
+ uint16_t *arg) {
441
+ return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), arg);
442
+ }
443
+
444
+ template<>
445
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const uint16_t *>(
446
+ const uint16_t *arg) {
447
+ return v8::String::NewFromTwoByte(v8::Isolate::GetCurrent(), arg);
448
+ }
449
+
450
+ template<>
451
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, std::string>(
452
+ std::string arg) {
453
+ return NanNew<v8::String>(arg.c_str(), static_cast<int>(arg.size()));
454
+ }
455
+
456
+ template<>
457
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String>() {
458
+ return v8::String::Empty(v8::Isolate::GetCurrent());
459
+ }
460
+
461
+ NAN_INLINE v8::Local<v8::String> NanNew(const char* arg, int length = -1) {
462
+ return NanNew<v8::String>(arg, length);
463
+ }
464
+
465
+ NAN_INLINE v8::Local<v8::String> NanNew(
466
+ const uint8_t* arg
467
+ , int length = -1) {
468
+ return NanNew<v8::String>(arg, length);
469
+ }
470
+
471
+ NAN_INLINE v8::Local<v8::String> NanNew(
472
+ const uint16_t* arg
473
+ , int length = -1) {
474
+ return NanNew<v8::String>(arg, length);
475
+ }
476
+
477
+ NAN_INLINE v8::Local<v8::String> NanNew(
478
+ const std::string& arg) {
479
+ return NanNew<v8::String>(arg.c_str(), static_cast<int>(arg.size()));
480
+ }
481
+
482
+ NAN_INLINE v8::Local<v8::Number> NanNew(double val) {
483
+ return NanNew<v8::Number>(val);
484
+ }
485
+
486
+ NAN_INLINE v8::Local<v8::Integer> NanNew(int val) {
487
+ return NanNew<v8::Integer>(val);
488
+ }
489
+
490
+ NAN_INLINE v8::Local<v8::Uint32> NanNew(unsigned int val) {
491
+ return NanNew<v8::Uint32>(val);
492
+ }
493
+
494
+ NAN_INLINE v8::Local<v8::Boolean> NanNew(bool val) {
495
+ return NanNew<v8::Boolean>(val);
496
+ }
497
+
498
+ NAN_INLINE v8::Local<v8::String> NanNew(
499
+ v8::String::ExternalStringResource *resource) {
500
+ return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource);
501
+ }
502
+
503
+ #if NODE_MODULE_VERSION >= 42 // io.js v1.0.0
504
+ NAN_INLINE v8::Local<v8::String> NanNew(
505
+ v8::String::ExternalOneByteStringResource *resource) {
506
+ #else
507
+ NAN_INLINE v8::Local<v8::String> NanNew(
508
+ v8::String::ExternalAsciiStringResource *resource) {
509
+ #endif
510
+ return v8::String::NewExternal(v8::Isolate::GetCurrent(), resource);
511
+ }
512
+
513
+ # define NanScope() v8::HandleScope scope(v8::Isolate::GetCurrent())
514
+ # define NanEscapableScope() \
515
+ v8::EscapableHandleScope scope(v8::Isolate::GetCurrent())
516
+
517
+ # define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val))
518
+ # define NanLocker() v8::Locker locker(v8::Isolate::GetCurrent())
519
+ # define NanUnlocker() v8::Unlocker unlocker(v8::Isolate::GetCurrent())
520
+ # define NanReturnValue(value) return args.GetReturnValue().Set(value)
521
+ # define NanReturnUndefined() return
522
+ # define NanReturnHolder() NanReturnValue(args.Holder())
523
+ # define NanReturnThis() NanReturnValue(args.This())
524
+ # define NanReturnNull() return args.GetReturnValue().SetNull()
525
+ # define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString()
526
+
527
+ # define NanObjectWrapHandle(obj) obj->handle()
528
+
529
+ NAN_INLINE v8::Local<v8::Primitive> NanUndefined() {
530
+ NanEscapableScope();
531
+ return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent())));
532
+ }
533
+
534
+ NAN_INLINE v8::Local<v8::Primitive> NanNull() {
535
+ NanEscapableScope();
536
+ return NanEscapeScope(NanNew(v8::Null(v8::Isolate::GetCurrent())));
537
+ }
538
+
539
+ NAN_INLINE v8::Local<v8::Boolean> NanTrue() {
540
+ NanEscapableScope();
541
+ return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent())));
542
+ }
543
+
544
+ NAN_INLINE v8::Local<v8::Boolean> NanFalse() {
545
+ NanEscapableScope();
546
+ return NanEscapeScope(NanNew(v8::False(v8::Isolate::GetCurrent())));
547
+ }
548
+
549
+ NAN_INLINE int NanAdjustExternalMemory(int bc) {
550
+ return static_cast<int>(
551
+ v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(bc));
552
+ }
553
+
554
+ NAN_INLINE void NanSetTemplate(
555
+ v8::Handle<v8::Template> templ
556
+ , const char *name
557
+ , v8::Handle<v8::Data> value) {
558
+ templ->Set(v8::Isolate::GetCurrent(), name, value);
559
+ }
560
+
561
+ NAN_INLINE void NanSetTemplate(
562
+ v8::Handle<v8::Template> templ
563
+ , v8::Handle<v8::String> name
564
+ , v8::Handle<v8::Data> value
565
+ , v8::PropertyAttribute attributes) {
566
+ templ->Set(name, value, attributes);
567
+ }
568
+
569
+ NAN_INLINE v8::Local<v8::Context> NanGetCurrentContext() {
570
+ return v8::Isolate::GetCurrent()->GetCurrentContext();
571
+ }
572
+
573
+ NAN_INLINE void* NanGetInternalFieldPointer(
574
+ v8::Handle<v8::Object> object
575
+ , int index) {
576
+ return object->GetAlignedPointerFromInternalField(index);
577
+ }
578
+
579
+ NAN_INLINE void NanSetInternalFieldPointer(
580
+ v8::Handle<v8::Object> object
581
+ , int index
582
+ , void* value) {
583
+ object->SetAlignedPointerInInternalField(index, value);
584
+ }
585
+
586
+ # define NAN_GC_CALLBACK(name) \
587
+ void name(v8::Isolate *isolate, v8::GCType type, v8::GCCallbackFlags flags)
588
+
589
+ NAN_INLINE void NanAddGCEpilogueCallback(
590
+ v8::Isolate::GCEpilogueCallback callback
591
+ , v8::GCType gc_type_filter = v8::kGCTypeAll) {
592
+ v8::Isolate::GetCurrent()->AddGCEpilogueCallback(callback, gc_type_filter);
593
+ }
594
+
595
+ NAN_INLINE void NanRemoveGCEpilogueCallback(
596
+ v8::Isolate::GCEpilogueCallback callback) {
597
+ v8::Isolate::GetCurrent()->RemoveGCEpilogueCallback(callback);
598
+ }
599
+
600
+ NAN_INLINE void NanAddGCPrologueCallback(
601
+ v8::Isolate::GCPrologueCallback callback
602
+ , v8::GCType gc_type_filter = v8::kGCTypeAll) {
603
+ v8::Isolate::GetCurrent()->AddGCPrologueCallback(callback, gc_type_filter);
604
+ }
605
+
606
+ NAN_INLINE void NanRemoveGCPrologueCallback(
607
+ v8::Isolate::GCPrologueCallback callback) {
608
+ v8::Isolate::GetCurrent()->RemoveGCPrologueCallback(callback);
609
+ }
610
+
611
+ NAN_INLINE void NanGetHeapStatistics(
612
+ v8::HeapStatistics *heap_statistics) {
613
+ v8::Isolate::GetCurrent()->GetHeapStatistics(heap_statistics);
614
+ }
615
+
616
+ NAN_DEPRECATED NAN_INLINE v8::Local<v8::String> NanSymbol(
617
+ const char* data, int length = -1) {
618
+ return NanNew<v8::String>(data, length);
619
+ }
620
+
621
+ template<typename T>
622
+ NAN_INLINE void NanAssignPersistent(
623
+ v8::Persistent<T>& handle
624
+ , v8::Handle<T> obj) {
625
+ handle.Reset(v8::Isolate::GetCurrent(), obj);
626
+ }
627
+
628
+ template<typename T>
629
+ NAN_INLINE void NanAssignPersistent(
630
+ v8::Persistent<T>& handle
631
+ , const v8::Persistent<T>& obj) {
632
+ handle.Reset(v8::Isolate::GetCurrent(), obj);
633
+ }
634
+
635
+ template<typename T, typename P>
636
+ class _NanWeakCallbackData;
637
+
638
+ template<typename T, typename P>
639
+ struct _NanWeakCallbackInfo {
640
+ typedef void (*Callback)(const _NanWeakCallbackData<T, P>& data);
641
+ NAN_INLINE _NanWeakCallbackInfo(v8::Handle<T> handle, P* param, Callback cb)
642
+ : parameter(param), callback(cb) {
643
+ NanAssignPersistent(persistent, handle);
644
+ }
645
+
646
+ NAN_INLINE ~_NanWeakCallbackInfo() {
647
+ persistent.Reset();
648
+ }
649
+
650
+ P* const parameter;
651
+ Callback const callback;
652
+ v8::Persistent<T> persistent;
653
+ };
654
+
655
+ template<typename T, typename P>
656
+ class _NanWeakCallbackData {
657
+ public:
658
+ NAN_INLINE _NanWeakCallbackData(_NanWeakCallbackInfo<T, P> *info)
659
+ : info_(info) { }
660
+
661
+ NAN_INLINE v8::Local<T> GetValue() const {
662
+ return NanNew(info_->persistent);
663
+ }
664
+
665
+ NAN_INLINE P* GetParameter() const { return info_->parameter; }
666
+
667
+ NAN_INLINE bool IsNearDeath() const {
668
+ return info_->persistent.IsNearDeath();
669
+ }
670
+
671
+ NAN_INLINE void Revive() const;
672
+
673
+ NAN_INLINE _NanWeakCallbackInfo<T, P>* GetCallbackInfo() const {
674
+ return info_;
675
+ }
676
+
677
+ NAN_DEPRECATED NAN_INLINE void Dispose() const {
678
+ }
679
+
680
+ private:
681
+ _NanWeakCallbackInfo<T, P>* info_;
682
+ };
683
+
684
+ template<typename T, typename P>
685
+ static void _NanWeakCallbackDispatcher(
686
+ const v8::WeakCallbackData<T, _NanWeakCallbackInfo<T, P> > &data) {
687
+ _NanWeakCallbackInfo<T, P> *info = data.GetParameter();
688
+ _NanWeakCallbackData<T, P> wcbd(info);
689
+ info->callback(wcbd);
690
+ if (wcbd.IsNearDeath()) {
691
+ delete wcbd.GetCallbackInfo();
692
+ }
693
+ }
694
+
695
+ template<typename T, typename P>
696
+ NAN_INLINE void _NanWeakCallbackData<T, P>::Revive() const {
697
+ info_->persistent.SetWeak(info_, &_NanWeakCallbackDispatcher<T, P>);
698
+ }
699
+
700
+ template<typename T, typename P>
701
+ NAN_INLINE _NanWeakCallbackInfo<T, P>* NanMakeWeakPersistent(
702
+ v8::Handle<T> handle
703
+ , P* parameter
704
+ , typename _NanWeakCallbackInfo<T, P>::Callback callback) {
705
+ _NanWeakCallbackInfo<T, P> *cbinfo =
706
+ new _NanWeakCallbackInfo<T, P>(handle, parameter, callback);
707
+ cbinfo->persistent.SetWeak(cbinfo, &_NanWeakCallbackDispatcher<T, P>);
708
+ return cbinfo;
709
+ }
710
+
711
+ # define NAN_WEAK_CALLBACK(name) \
712
+ template<typename T, typename P> \
713
+ static void name(const _NanWeakCallbackData<T, P> &data)
714
+
715
+ # define _NAN_ERROR(fun, errmsg) fun(NanNew<v8::String>(errmsg))
716
+
717
+ # define _NAN_THROW_ERROR(fun, errmsg) \
718
+ do { \
719
+ NanScope(); \
720
+ v8::Isolate::GetCurrent()->ThrowException(_NAN_ERROR(fun, errmsg)); \
721
+ } while (0);
722
+
723
+ NAN_INLINE v8::Local<v8::Value> NanError(const char* errmsg) {
724
+ return _NAN_ERROR(v8::Exception::Error, errmsg);
725
+ }
726
+
727
+ NAN_INLINE void NanThrowError(const char* errmsg) {
728
+ _NAN_THROW_ERROR(v8::Exception::Error, errmsg);
729
+ }
730
+
731
+ NAN_INLINE void NanThrowError(v8::Handle<v8::Value> error) {
732
+ NanScope();
733
+ v8::Isolate::GetCurrent()->ThrowException(error);
734
+ }
735
+
736
+ NAN_INLINE v8::Local<v8::Value> NanError(
737
+ const char *msg
738
+ , const int errorNumber
739
+ ) {
740
+ v8::Local<v8::Value> err = v8::Exception::Error(NanNew<v8::String>(msg));
741
+ v8::Local<v8::Object> obj = err.As<v8::Object>();
742
+ obj->Set(NanNew<v8::String>("code"), NanNew<v8::Integer>(errorNumber));
743
+ return err;
744
+ }
745
+
746
+ NAN_INLINE void NanThrowError(
747
+ const char *msg
748
+ , const int errorNumber
749
+ ) {
750
+ NanThrowError(NanError(msg, errorNumber));
751
+ }
752
+
753
+ NAN_INLINE v8::Local<v8::Value> NanTypeError(const char* errmsg) {
754
+ return _NAN_ERROR(v8::Exception::TypeError, errmsg);
755
+ }
756
+
757
+ NAN_INLINE void NanThrowTypeError(const char* errmsg) {
758
+ _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
759
+ }
760
+
761
+ NAN_INLINE v8::Local<v8::Value> NanRangeError(const char* errmsg) {
762
+ return _NAN_ERROR(v8::Exception::RangeError, errmsg);
763
+ }
764
+
765
+ NAN_INLINE void NanThrowRangeError(const char* errmsg) {
766
+ _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
767
+ }
768
+
769
+ template<typename T> NAN_INLINE void NanDisposePersistent(
770
+ v8::Persistent<T> &handle
771
+ ) {
772
+ handle.Reset();
773
+ }
774
+
775
+ NAN_INLINE v8::Local<v8::Object> NanNewBufferHandle (
776
+ char *data
777
+ , size_t length
778
+ , node::smalloc::FreeCallback callback
779
+ , void *hint
780
+ ) {
781
+ return node::Buffer::New(
782
+ v8::Isolate::GetCurrent(), data, length, callback, hint);
783
+ }
784
+
785
+ NAN_INLINE v8::Local<v8::Object> NanNewBufferHandle (
786
+ const char *data
787
+ , uint32_t size
788
+ ) {
789
+ return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
790
+ }
791
+
792
+ NAN_INLINE v8::Local<v8::Object> NanNewBufferHandle (uint32_t size) {
793
+ return node::Buffer::New(v8::Isolate::GetCurrent(), size);
794
+ }
795
+
796
+ NAN_INLINE v8::Local<v8::Object> NanBufferUse(
797
+ char* data
798
+ , uint32_t size
799
+ ) {
800
+ return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
801
+ }
802
+
803
+ NAN_INLINE bool NanHasInstance(
804
+ const v8::Persistent<v8::FunctionTemplate>& function_template
805
+ , v8::Handle<v8::Value> value
806
+ ) {
807
+ return NanNew(function_template)->HasInstance(value);
808
+ }
809
+
810
+ NAN_INLINE v8::Local<v8::Context> NanNewContextHandle(
811
+ v8::ExtensionConfiguration* extensions = NULL
812
+ , v8::Handle<v8::ObjectTemplate> tmpl = v8::Handle<v8::ObjectTemplate>()
813
+ , v8::Handle<v8::Value> obj = v8::Handle<v8::Value>()
814
+ ) {
815
+ v8::Isolate* isolate = v8::Isolate::GetCurrent();
816
+ return v8::Local<v8::Context>::New(
817
+ isolate
818
+ , v8::Context::New(isolate, extensions, tmpl, obj)
819
+ );
820
+ }
821
+
822
+ NAN_INLINE v8::Local<NanBoundScript> NanCompileScript(
823
+ v8::Local<v8::String> s
824
+ , const v8::ScriptOrigin& origin
825
+ ) {
826
+ v8::ScriptCompiler::Source source(s, origin);
827
+ return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source);
828
+ }
829
+
830
+ NAN_INLINE v8::Local<NanBoundScript> NanCompileScript(
831
+ v8::Local<v8::String> s
832
+ ) {
833
+ v8::ScriptCompiler::Source source(s);
834
+ return v8::ScriptCompiler::Compile(v8::Isolate::GetCurrent(), &source);
835
+ }
836
+
837
+ NAN_INLINE v8::Local<v8::Value> NanRunScript(
838
+ v8::Handle<NanUnboundScript> script
839
+ ) {
840
+ return script->BindToCurrentContext()->Run();
841
+ }
842
+
843
+ NAN_INLINE v8::Local<v8::Value> NanRunScript(
844
+ v8::Handle<NanBoundScript> script
845
+ ) {
846
+ return script->Run();
847
+ }
848
+
849
+ NAN_INLINE v8::Local<v8::Value> NanMakeCallback(
850
+ v8::Handle<v8::Object> target
851
+ , v8::Handle<v8::Function> func
852
+ , int argc
853
+ , v8::Handle<v8::Value>* argv) {
854
+ return NanNew(node::MakeCallback(
855
+ v8::Isolate::GetCurrent(), target, func, argc, argv));
856
+ }
857
+
858
+ NAN_INLINE v8::Local<v8::Value> NanMakeCallback(
859
+ v8::Handle<v8::Object> target
860
+ , v8::Handle<v8::String> symbol
861
+ , int argc
862
+ , v8::Handle<v8::Value>* argv) {
863
+ return NanNew(node::MakeCallback(
864
+ v8::Isolate::GetCurrent(), target, symbol, argc, argv));
865
+ }
866
+
867
+ NAN_INLINE v8::Local<v8::Value> NanMakeCallback(
868
+ v8::Handle<v8::Object> target
869
+ , const char* method
870
+ , int argc
871
+ , v8::Handle<v8::Value>* argv) {
872
+ return NanNew(node::MakeCallback(
873
+ v8::Isolate::GetCurrent(), target, method, argc, argv));
874
+ }
875
+
876
+ template<typename T>
877
+ NAN_INLINE void NanSetIsolateData(
878
+ v8::Isolate *isolate
879
+ , T *data
880
+ ) {
881
+ isolate->SetData(0, data);
882
+ }
883
+
884
+ template<typename T>
885
+ NAN_INLINE T *NanGetIsolateData(
886
+ v8::Isolate *isolate
887
+ ) {
888
+ return static_cast<T*>(isolate->GetData(0));
889
+ }
890
+
891
+ class NanAsciiString {
892
+ public:
893
+ NAN_INLINE explicit NanAsciiString(v8::Handle<v8::Value> from) {
894
+ v8::Local<v8::String> toStr = from->ToString();
895
+ size = toStr->Length();
896
+ buf = new char[size + 1];
897
+ size = toStr->WriteOneByte(reinterpret_cast<unsigned char*>(buf));
898
+ }
899
+
900
+ NAN_DEPRECATED NAN_INLINE int Size() const {
901
+ return size;
902
+ }
903
+
904
+ NAN_INLINE int length() const {
905
+ return size;
906
+ }
907
+
908
+
909
+ NAN_INLINE char* operator*() { return buf; }
910
+ NAN_INLINE const char* operator*() const { return buf; }
911
+
912
+ NAN_INLINE ~NanAsciiString() {
913
+ delete[] buf;
914
+ }
915
+
916
+ private:
917
+ // disallow copying and assigning
918
+ NanAsciiString(const NanAsciiString&);
919
+ void operator=(const NanAsciiString&);
920
+
921
+ char *buf;
922
+ int size;
923
+ };
924
+
925
+ class NanUtf8String {
926
+ public:
927
+ NAN_INLINE explicit NanUtf8String(v8::Handle<v8::Value> from) {
928
+ v8::Local<v8::String> toStr = from->ToString();
929
+ size = toStr->Utf8Length();
930
+ buf = new char[size + 1];
931
+ toStr->WriteUtf8(buf);
932
+ }
933
+
934
+ NAN_DEPRECATED NAN_INLINE int Size() const {
935
+ return size;
936
+ }
937
+
938
+ NAN_INLINE int length() const {
939
+ return size;
940
+ }
941
+
942
+ NAN_INLINE char* operator*() { return buf; }
943
+ NAN_INLINE const char* operator*() const { return buf; }
944
+
945
+ NAN_INLINE ~NanUtf8String() {
946
+ delete[] buf;
947
+ }
948
+
949
+ private:
950
+ // disallow copying and assigning
951
+ NanUtf8String(const NanUtf8String&);
952
+ void operator=(const NanUtf8String&);
953
+
954
+ char *buf;
955
+ int size;
956
+ };
957
+
958
+ class NanUcs2String {
959
+ public:
960
+ NAN_INLINE explicit NanUcs2String(v8::Handle<v8::Value> from) {
961
+ v8::Local<v8::String> toStr = from->ToString();
962
+ size = toStr->Length();
963
+ buf = new uint16_t[size + 1];
964
+ toStr->Write(buf);
965
+ }
966
+
967
+ NAN_DEPRECATED NAN_INLINE int Size() const {
968
+ return size;
969
+ }
970
+
971
+ NAN_INLINE int length() const {
972
+ return size;
973
+ }
974
+
975
+ NAN_INLINE uint16_t* operator*() { return buf; }
976
+ NAN_INLINE const uint16_t* operator*() const { return buf; }
977
+
978
+ NAN_INLINE ~NanUcs2String() {
979
+ delete[] buf;
980
+ }
981
+
982
+ private:
983
+ // disallow copying and assigning
984
+ NanUcs2String(const NanUcs2String&);
985
+ void operator=(const NanUcs2String&);
986
+
987
+ uint16_t *buf;
988
+ int size;
989
+ };
990
+
991
+ #else
992
+ // Node 0.8 and 0.10
993
+
994
+ # define _NAN_METHOD_ARGS_TYPE const v8::Arguments&
995
+ # define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args
996
+ # define _NAN_METHOD_RETURN_TYPE v8::Handle<v8::Value>
997
+
998
+ # define _NAN_GETTER_ARGS_TYPE const v8::AccessorInfo &
999
+ # define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args
1000
+ # define _NAN_GETTER_RETURN_TYPE v8::Handle<v8::Value>
1001
+
1002
+ # define _NAN_SETTER_ARGS_TYPE const v8::AccessorInfo &
1003
+ # define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args
1004
+ # define _NAN_SETTER_RETURN_TYPE void
1005
+
1006
+ # define _NAN_PROPERTY_GETTER_ARGS_TYPE const v8::AccessorInfo&
1007
+ # define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args
1008
+ # define _NAN_PROPERTY_GETTER_RETURN_TYPE v8::Handle<v8::Value>
1009
+
1010
+ # define _NAN_PROPERTY_SETTER_ARGS_TYPE const v8::AccessorInfo&
1011
+ # define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args
1012
+ # define _NAN_PROPERTY_SETTER_RETURN_TYPE v8::Handle<v8::Value>
1013
+
1014
+ # define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo&
1015
+ # define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args
1016
+ # define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE v8::Handle<v8::Array>
1017
+
1018
+ # define _NAN_PROPERTY_DELETER_ARGS_TYPE const v8::AccessorInfo&
1019
+ # define _NAN_PROPERTY_DELETER_ARGS _NAN_PROPERTY_DELETER_ARGS_TYPE args
1020
+ # define _NAN_PROPERTY_DELETER_RETURN_TYPE v8::Handle<v8::Boolean>
1021
+
1022
+ # define _NAN_PROPERTY_QUERY_ARGS_TYPE const v8::AccessorInfo&
1023
+ # define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args
1024
+ # define _NAN_PROPERTY_QUERY_RETURN_TYPE v8::Handle<v8::Integer>
1025
+
1026
+ # define _NAN_INDEX_GETTER_ARGS_TYPE const v8::AccessorInfo&
1027
+ # define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args
1028
+ # define _NAN_INDEX_GETTER_RETURN_TYPE v8::Handle<v8::Value>
1029
+
1030
+ # define _NAN_INDEX_SETTER_ARGS_TYPE const v8::AccessorInfo&
1031
+ # define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args
1032
+ # define _NAN_INDEX_SETTER_RETURN_TYPE v8::Handle<v8::Value>
1033
+
1034
+ # define _NAN_INDEX_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo&
1035
+ # define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args
1036
+ # define _NAN_INDEX_ENUMERATOR_RETURN_TYPE v8::Handle<v8::Array>
1037
+
1038
+ # define _NAN_INDEX_DELETER_ARGS_TYPE const v8::AccessorInfo&
1039
+ # define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args
1040
+ # define _NAN_INDEX_DELETER_RETURN_TYPE v8::Handle<v8::Boolean>
1041
+
1042
+ # define _NAN_INDEX_QUERY_ARGS_TYPE const v8::AccessorInfo&
1043
+ # define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args
1044
+ # define _NAN_INDEX_QUERY_RETURN_TYPE v8::Handle<v8::Integer>
1045
+
1046
+ typedef v8::InvocationCallback NanFunctionCallback;
1047
+
1048
+ NAN_DEPRECATED NAN_INLINE v8::Local<v8::String> NanSymbol(
1049
+ const char* data, int length = -1) {
1050
+ return v8::String::NewSymbol(data, length);
1051
+ }
1052
+
1053
+ template<typename T>
1054
+ NAN_INLINE v8::Local<T> NanNew() {
1055
+ return T::New();
1056
+ }
1057
+
1058
+ template<typename T>
1059
+ NAN_INLINE v8::Local<T> NanNew(v8::Handle<T> arg) {
1060
+ return v8::Local<T>::New(arg);
1061
+ }
1062
+
1063
+ template<typename T>
1064
+ NAN_INLINE v8::Local<v8::Signature> NanNew(
1065
+ v8::Handle<v8::FunctionTemplate> receiver
1066
+ , int argc
1067
+ , v8::Handle<v8::FunctionTemplate> argv[] = 0) {
1068
+ return v8::Signature::New(receiver, argc, argv);
1069
+ }
1070
+
1071
+ template<typename T>
1072
+ NAN_INLINE v8::Local<v8::FunctionTemplate> NanNew(
1073
+ NanFunctionCallback callback
1074
+ , v8::Handle<v8::Value> data = v8::Handle<v8::Value>()
1075
+ , v8::Handle<v8::Signature> signature = v8::Handle<v8::Signature>()) {
1076
+ return T::New(callback, data, signature);
1077
+ }
1078
+
1079
+ template<typename T>
1080
+ NAN_INLINE v8::Local<T> NanNew(const v8::Persistent<T> &arg) {
1081
+ return v8::Local<T>::New(arg);
1082
+ }
1083
+
1084
+ template<typename T, typename P>
1085
+ NAN_INLINE v8::Local<T> NanNew(P arg) {
1086
+ return _NanEnsureLocal(T::New(arg));
1087
+ }
1088
+
1089
+ template<typename T, typename P>
1090
+ NAN_INLINE v8::Local<T> NanNew(P arg, int length) {
1091
+ return _NanEnsureLocal(T::New(arg, length));
1092
+ }
1093
+
1094
+ template<typename T>
1095
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
1096
+ v8::Handle<v8::String> pattern, v8::RegExp::Flags flags) {
1097
+ return v8::RegExp::New(pattern, flags);
1098
+ }
1099
+
1100
+ template<typename T>
1101
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
1102
+ v8::Local<v8::String> pattern, v8::RegExp::Flags flags) {
1103
+ return v8::RegExp::New(pattern, flags);
1104
+ }
1105
+
1106
+ template<typename T, typename P>
1107
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
1108
+ v8::Handle<v8::String> pattern, v8::RegExp::Flags flags) {
1109
+ return v8::RegExp::New(pattern, flags);
1110
+ }
1111
+
1112
+ template<typename T, typename P>
1113
+ NAN_INLINE v8::Local<v8::RegExp> NanNew(
1114
+ v8::Local<v8::String> pattern, v8::RegExp::Flags flags) {
1115
+ return v8::RegExp::New(pattern, flags);
1116
+ }
1117
+
1118
+ template<>
1119
+ NAN_INLINE v8::Local<v8::Array> NanNew<v8::Array>() {
1120
+ return v8::Array::New();
1121
+ }
1122
+
1123
+ template<>
1124
+ NAN_INLINE v8::Local<v8::Array> NanNew<v8::Array>(int length) {
1125
+ return v8::Array::New(length);
1126
+ }
1127
+
1128
+ template<>
1129
+ NAN_INLINE v8::Local<v8::Date> NanNew<v8::Date>(double time) {
1130
+ return v8::Date::New(time).As<v8::Date>();
1131
+ }
1132
+
1133
+ template<>
1134
+ NAN_INLINE v8::Local<v8::Date> NanNew<v8::Date>(int time) {
1135
+ return v8::Date::New(time).As<v8::Date>();
1136
+ }
1137
+
1138
+ typedef v8::Script NanUnboundScript;
1139
+ typedef v8::Script NanBoundScript;
1140
+
1141
+ template<typename T, typename P>
1142
+ NAN_INLINE v8::Local<T> NanNew(
1143
+ P s
1144
+ , const v8::ScriptOrigin& origin
1145
+ ) {
1146
+ return v8::Script::New(s, const_cast<v8::ScriptOrigin *>(&origin));
1147
+ }
1148
+
1149
+ template<>
1150
+ NAN_INLINE v8::Local<NanUnboundScript> NanNew<NanUnboundScript>(
1151
+ v8::Local<v8::String> s
1152
+ ) {
1153
+ return v8::Script::New(s);
1154
+ }
1155
+
1156
+ template<>
1157
+ NAN_INLINE v8::Local<v8::BooleanObject> NanNew(bool value) {
1158
+ return v8::BooleanObject::New(value).As<v8::BooleanObject>();
1159
+ }
1160
+
1161
+ template<>
1162
+ NAN_INLINE v8::Local<v8::StringObject>
1163
+ NanNew<v8::StringObject, v8::Local<v8::String> >(
1164
+ v8::Local<v8::String> value) {
1165
+ return v8::StringObject::New(value).As<v8::StringObject>();
1166
+ }
1167
+
1168
+ template<>
1169
+ NAN_INLINE v8::Local<v8::StringObject>
1170
+ NanNew<v8::StringObject, v8::Handle<v8::String> >(
1171
+ v8::Handle<v8::String> value) {
1172
+ return v8::StringObject::New(value).As<v8::StringObject>();
1173
+ }
1174
+
1175
+ template<>
1176
+ NAN_INLINE v8::Local<v8::NumberObject> NanNew<v8::NumberObject>(double val) {
1177
+ return v8::NumberObject::New(val).As<v8::NumberObject>();
1178
+ }
1179
+
1180
+ template<>
1181
+ NAN_INLINE v8::Local<v8::Uint32> NanNew<v8::Uint32, int32_t>(int32_t val) {
1182
+ return v8::Uint32::NewFromUnsigned(val)->ToUint32();
1183
+ }
1184
+
1185
+ template<>
1186
+ NAN_INLINE v8::Local<v8::Uint32> NanNew<v8::Uint32, uint32_t>(uint32_t val) {
1187
+ return v8::Uint32::NewFromUnsigned(val)->ToUint32();
1188
+ }
1189
+
1190
+ template<>
1191
+ NAN_INLINE v8::Local<v8::Int32> NanNew<v8::Int32, int32_t>(int32_t val) {
1192
+ return v8::Int32::New(val)->ToInt32();
1193
+ }
1194
+
1195
+ template<>
1196
+ NAN_INLINE v8::Local<v8::Int32> NanNew<v8::Int32, uint32_t>(uint32_t val) {
1197
+ return v8::Int32::New(val)->ToInt32();
1198
+ }
1199
+
1200
+ template<>
1201
+ NAN_INLINE v8::Local<v8::Integer> NanNew<v8::Integer, uint32_t>(uint32_t val) {
1202
+ return v8::Integer::NewFromUnsigned(val);
1203
+ }
1204
+
1205
+ template<>
1206
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, uint8_t *>(
1207
+ uint8_t *arg
1208
+ , int length) {
1209
+ int len = length;
1210
+ if (len < 0) {
1211
+ size_t temp = strlen(reinterpret_cast<const char *>(arg));
1212
+ assert(temp <= INT_MAX && "too long string");
1213
+ len = static_cast<int>(temp);
1214
+ }
1215
+ uint16_t *warg = new uint16_t[len];
1216
+ for (int i = 0; i < len; i++) {
1217
+ warg[i] = arg[i];
1218
+ }
1219
+ v8::Local<v8::String> retval = v8::String::New(warg, len);
1220
+ delete[] warg;
1221
+ return retval;
1222
+ }
1223
+
1224
+ template<>
1225
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const uint8_t *>(
1226
+ const uint8_t *arg
1227
+ , int length) {
1228
+ int len = length;
1229
+ if (len < 0) {
1230
+ size_t temp = strlen(reinterpret_cast<const char *>(arg));
1231
+ assert(temp <= INT_MAX && "too long string");
1232
+ len = static_cast<int>(temp);
1233
+ }
1234
+ uint16_t *warg = new uint16_t[len];
1235
+ for (int i = 0; i < len; i++) {
1236
+ warg[i] = arg[i];
1237
+ }
1238
+ v8::Local<v8::String> retval = v8::String::New(warg, len);
1239
+ delete[] warg;
1240
+ return retval;
1241
+ }
1242
+
1243
+ template<>
1244
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, uint8_t *>(uint8_t *arg) {
1245
+ size_t temp = strlen(reinterpret_cast<char *>(arg));
1246
+ assert(temp <= INT_MAX && "too long string");
1247
+ int length = static_cast<int>(temp);
1248
+ uint16_t *warg = new uint16_t[length];
1249
+ for (int i = 0; i < length; i++) {
1250
+ warg[i] = arg[i];
1251
+ }
1252
+
1253
+ v8::Local<v8::String> retval = v8::String::New(warg, length);
1254
+ delete[] warg;
1255
+ return retval;
1256
+ }
1257
+
1258
+ template<>
1259
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, const uint8_t *>(
1260
+ const uint8_t *arg) {
1261
+ size_t temp = strlen(reinterpret_cast<const char *>(arg));
1262
+ assert(temp <= INT_MAX && "too long string");
1263
+ int length = static_cast<int>(temp);
1264
+ uint16_t *warg = new uint16_t[length];
1265
+ for (int i = 0; i < length; i++) {
1266
+ warg[i] = arg[i];
1267
+ }
1268
+ v8::Local<v8::String> retval = v8::String::New(warg, length);
1269
+ delete[] warg;
1270
+ return retval;
1271
+ }
1272
+
1273
+ template<>
1274
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String, std::string>(
1275
+ std::string arg) {
1276
+ return NanNew<v8::String>(arg.c_str(), static_cast<int>(arg.size()));
1277
+ }
1278
+
1279
+ template<>
1280
+ NAN_INLINE v8::Local<v8::String> NanNew<v8::String>() {
1281
+ return v8::String::Empty();
1282
+ }
1283
+
1284
+ NAN_INLINE v8::Local<v8::String> NanNew(const char* arg, int length = -1) {
1285
+ return NanNew<v8::String>(arg, length);
1286
+ }
1287
+
1288
+ NAN_INLINE v8::Local<v8::String> NanNew(
1289
+ const uint8_t* arg
1290
+ , int length = -1) {
1291
+ return NanNew<v8::String>(arg, length);
1292
+ }
1293
+
1294
+ NAN_INLINE v8::Local<v8::String> NanNew(
1295
+ const uint16_t* arg
1296
+ , int length = -1) {
1297
+ return NanNew<v8::String>(arg, length);
1298
+ }
1299
+
1300
+ NAN_INLINE v8::Local<v8::String> NanNew(
1301
+ const std::string& arg) {
1302
+ return NanNew<v8::String>(arg.c_str(), static_cast<int>(arg.size()));
1303
+ }
1304
+
1305
+ NAN_INLINE v8::Local<v8::Number> NanNew(double val) {
1306
+ return NanNew<v8::Number>(val);
1307
+ }
1308
+
1309
+ NAN_INLINE v8::Local<v8::Integer> NanNew(int val) {
1310
+ return NanNew<v8::Integer>(val);
1311
+ }
1312
+
1313
+ NAN_INLINE v8::Local<v8::Uint32> NanNew(unsigned int val) {
1314
+ return NanNew<v8::Uint32>(val);
1315
+ }
1316
+
1317
+ NAN_INLINE v8::Local<v8::Boolean> NanNew(bool val) {
1318
+ return NanNew<v8::Boolean>(val);
1319
+ }
1320
+
1321
+ NAN_INLINE v8::Local<v8::String> NanNew(
1322
+ v8::String::ExternalStringResource *resource) {
1323
+ return v8::String::NewExternal(resource);
1324
+ }
1325
+
1326
+ NAN_INLINE v8::Local<v8::String> NanNew(
1327
+ v8::String::ExternalAsciiStringResource *resource) {
1328
+ return v8::String::NewExternal(resource);
1329
+ }
1330
+
1331
+ # define NanScope() v8::HandleScope scope
1332
+ # define NanEscapableScope() v8::HandleScope scope
1333
+ # define NanEscapeScope(val) scope.Close(val)
1334
+ # define NanLocker() v8::Locker locker
1335
+ # define NanUnlocker() v8::Unlocker unlocker
1336
+ # define NanReturnValue(value) return scope.Close(value)
1337
+ # define NanReturnHolder() NanReturnValue(args.Holder())
1338
+ # define NanReturnThis() NanReturnValue(args.This())
1339
+ # define NanReturnUndefined() return v8::Undefined()
1340
+ # define NanReturnNull() return v8::Null()
1341
+ # define NanReturnEmptyString() return v8::String::Empty()
1342
+ # define NanObjectWrapHandle(obj) v8::Local<v8::Object>::New(obj->handle_)
1343
+
1344
+ NAN_INLINE v8::Local<v8::Primitive> NanUndefined() {
1345
+ NanEscapableScope();
1346
+ return NanEscapeScope(NanNew(v8::Undefined()));
1347
+ }
1348
+
1349
+ NAN_INLINE v8::Local<v8::Primitive> NanNull() {
1350
+ NanEscapableScope();
1351
+ return NanEscapeScope(NanNew(v8::Null()));
1352
+ }
1353
+
1354
+ NAN_INLINE v8::Local<v8::Boolean> NanTrue() {
1355
+ NanEscapableScope();
1356
+ return NanEscapeScope(NanNew(v8::True()));
1357
+ }
1358
+
1359
+ NAN_INLINE v8::Local<v8::Boolean> NanFalse() {
1360
+ NanEscapableScope();
1361
+ return NanEscapeScope(NanNew(v8::False()));
1362
+ }
1363
+
1364
+ NAN_INLINE int NanAdjustExternalMemory(int bc) {
1365
+ return static_cast<int>(v8::V8::AdjustAmountOfExternalAllocatedMemory(bc));
1366
+ }
1367
+
1368
+ NAN_INLINE void NanSetTemplate(
1369
+ v8::Handle<v8::Template> templ
1370
+ , const char *name
1371
+ , v8::Handle<v8::Data> value) {
1372
+ templ->Set(name, value);
1373
+ }
1374
+
1375
+ NAN_INLINE void NanSetTemplate(
1376
+ v8::Handle<v8::Template> templ
1377
+ , v8::Handle<v8::String> name
1378
+ , v8::Handle<v8::Data> value
1379
+ , v8::PropertyAttribute attributes) {
1380
+ templ->Set(name, value, attributes);
1381
+ }
1382
+
1383
+ NAN_INLINE v8::Local<v8::Context> NanGetCurrentContext() {
1384
+ return v8::Context::GetCurrent();
1385
+ }
1386
+
1387
+ NAN_INLINE void* NanGetInternalFieldPointer(
1388
+ v8::Handle<v8::Object> object
1389
+ , int index) {
1390
+ return object->GetPointerFromInternalField(index);
1391
+ }
1392
+
1393
+ NAN_INLINE void NanSetInternalFieldPointer(
1394
+ v8::Handle<v8::Object> object
1395
+ , int index
1396
+ , void* value) {
1397
+ object->SetPointerInInternalField(index, value);
1398
+ }
1399
+
1400
+ # define NAN_GC_CALLBACK(name) \
1401
+ void name(v8::GCType type, v8::GCCallbackFlags flags)
1402
+
1403
+ NAN_INLINE void NanAddGCEpilogueCallback(
1404
+ v8::GCEpilogueCallback callback
1405
+ , v8::GCType gc_type_filter = v8::kGCTypeAll) {
1406
+ v8::V8::AddGCEpilogueCallback(callback, gc_type_filter);
1407
+ }
1408
+ NAN_INLINE void NanRemoveGCEpilogueCallback(
1409
+ v8::GCEpilogueCallback callback) {
1410
+ v8::V8::RemoveGCEpilogueCallback(callback);
1411
+ }
1412
+ NAN_INLINE void NanAddGCPrologueCallback(
1413
+ v8::GCPrologueCallback callback
1414
+ , v8::GCType gc_type_filter = v8::kGCTypeAll) {
1415
+ v8::V8::AddGCPrologueCallback(callback, gc_type_filter);
1416
+ }
1417
+ NAN_INLINE void NanRemoveGCPrologueCallback(
1418
+ v8::GCPrologueCallback callback) {
1419
+ v8::V8::RemoveGCPrologueCallback(callback);
1420
+ }
1421
+ NAN_INLINE void NanGetHeapStatistics(
1422
+ v8::HeapStatistics *heap_statistics) {
1423
+ v8::V8::GetHeapStatistics(heap_statistics);
1424
+ }
1425
+
1426
+ template<typename T>
1427
+ NAN_INLINE void NanAssignPersistent(
1428
+ v8::Persistent<T>& handle
1429
+ , v8::Handle<T> obj) {
1430
+ handle.Dispose();
1431
+ handle = v8::Persistent<T>::New(obj);
1432
+ }
1433
+
1434
+ template<typename T, typename P>
1435
+ class _NanWeakCallbackData;
1436
+
1437
+ template<typename T, typename P>
1438
+ struct _NanWeakCallbackInfo {
1439
+ typedef void (*Callback)(const _NanWeakCallbackData<T, P> &data);
1440
+ NAN_INLINE _NanWeakCallbackInfo(v8::Handle<T> handle, P* param, Callback cb)
1441
+ : parameter(param)
1442
+ , callback(cb)
1443
+ , persistent(v8::Persistent<T>::New(handle)) { }
1444
+
1445
+ NAN_INLINE ~_NanWeakCallbackInfo() {
1446
+ persistent.Dispose();
1447
+ persistent.Clear();
1448
+ }
1449
+
1450
+ P* const parameter;
1451
+ Callback const callback;
1452
+ v8::Persistent<T> persistent;
1453
+ };
1454
+
1455
+ template<typename T, typename P>
1456
+ class _NanWeakCallbackData {
1457
+ public:
1458
+ NAN_INLINE _NanWeakCallbackData(_NanWeakCallbackInfo<T, P> *info)
1459
+ : info_(info) { }
1460
+
1461
+ NAN_INLINE v8::Local<T> GetValue() const {
1462
+ return NanNew(info_->persistent);
1463
+ }
1464
+
1465
+ NAN_INLINE P* GetParameter() const { return info_->parameter; }
1466
+
1467
+ NAN_INLINE bool IsNearDeath() const {
1468
+ return info_->persistent.IsNearDeath();
1469
+ }
1470
+
1471
+ NAN_INLINE void Revive() const;
1472
+
1473
+ NAN_INLINE _NanWeakCallbackInfo<T, P>* GetCallbackInfo() const {
1474
+ return info_;
1475
+ }
1476
+
1477
+ NAN_DEPRECATED NAN_INLINE void Dispose() const {
1478
+ }
1479
+
1480
+ private:
1481
+ _NanWeakCallbackInfo<T, P>* info_;
1482
+ };
1483
+
1484
+ template<typename T, typename P>
1485
+ static void _NanWeakPersistentDispatcher(
1486
+ v8::Persistent<v8::Value> object, void *data) {
1487
+ _NanWeakCallbackInfo<T, P>* info =
1488
+ static_cast<_NanWeakCallbackInfo<T, P>*>(data);
1489
+ _NanWeakCallbackData<T, P> wcbd(info);
1490
+ info->callback(wcbd);
1491
+ if (wcbd.IsNearDeath()) {
1492
+ delete wcbd.GetCallbackInfo();
1493
+ }
1494
+ }
1495
+
1496
+ template<typename T, typename P>
1497
+ NAN_INLINE void _NanWeakCallbackData<T, P>::Revive() const {
1498
+ info_->persistent.MakeWeak(
1499
+ info_
1500
+ , &_NanWeakPersistentDispatcher<T, P>);
1501
+ }
1502
+
1503
+ template<typename T, typename P>
1504
+ NAN_INLINE _NanWeakCallbackInfo<T, P>* NanMakeWeakPersistent(
1505
+ v8::Handle<T> handle
1506
+ , P* parameter
1507
+ , typename _NanWeakCallbackInfo<T, P>::Callback callback) {
1508
+ _NanWeakCallbackInfo<T, P> *cbinfo =
1509
+ new _NanWeakCallbackInfo<T, P>(handle, parameter, callback);
1510
+ cbinfo->persistent.MakeWeak(
1511
+ cbinfo
1512
+ , &_NanWeakPersistentDispatcher<T, P>);
1513
+ return cbinfo;
1514
+ }
1515
+
1516
+ # define NAN_WEAK_CALLBACK(name) \
1517
+ template<typename T, typename P> \
1518
+ static void name(const _NanWeakCallbackData<T, P> &data)
1519
+
1520
+ # define _NAN_ERROR(fun, errmsg) \
1521
+ fun(v8::String::New(errmsg))
1522
+
1523
+ # define _NAN_THROW_ERROR(fun, errmsg) \
1524
+ do { \
1525
+ NanScope(); \
1526
+ return v8::Local<v8::Value>::New( \
1527
+ v8::ThrowException(_NAN_ERROR(fun, errmsg))); \
1528
+ } while (0);
1529
+
1530
+ NAN_INLINE v8::Local<v8::Value> NanError(const char* errmsg) {
1531
+ return _NAN_ERROR(v8::Exception::Error, errmsg);
1532
+ }
1533
+
1534
+ NAN_INLINE v8::Local<v8::Value> NanThrowError(const char* errmsg) {
1535
+ _NAN_THROW_ERROR(v8::Exception::Error, errmsg);
1536
+ }
1537
+
1538
+ NAN_INLINE v8::Local<v8::Value> NanThrowError(
1539
+ v8::Handle<v8::Value> error
1540
+ ) {
1541
+ NanScope();
1542
+ return v8::Local<v8::Value>::New(v8::ThrowException(error));
1543
+ }
1544
+
1545
+ NAN_INLINE v8::Local<v8::Value> NanError(
1546
+ const char *msg
1547
+ , const int errorNumber
1548
+ ) {
1549
+ v8::Local<v8::Value> err = v8::Exception::Error(v8::String::New(msg));
1550
+ v8::Local<v8::Object> obj = err.As<v8::Object>();
1551
+ obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber));
1552
+ return err;
1553
+ }
1554
+
1555
+ NAN_INLINE v8::Local<v8::Value> NanThrowError(
1556
+ const char *msg
1557
+ , const int errorNumber
1558
+ ) {
1559
+ return NanThrowError(NanError(msg, errorNumber));
1560
+ }
1561
+
1562
+ NAN_INLINE v8::Local<v8::Value> NanTypeError(const char* errmsg) {
1563
+ return _NAN_ERROR(v8::Exception::TypeError, errmsg);
1564
+ }
1565
+
1566
+ NAN_INLINE v8::Local<v8::Value> NanThrowTypeError(
1567
+ const char* errmsg
1568
+ ) {
1569
+ _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
1570
+ }
1571
+
1572
+ NAN_INLINE v8::Local<v8::Value> NanRangeError(
1573
+ const char* errmsg
1574
+ ) {
1575
+ return _NAN_ERROR(v8::Exception::RangeError, errmsg);
1576
+ }
1577
+
1578
+ NAN_INLINE v8::Local<v8::Value> NanThrowRangeError(
1579
+ const char* errmsg
1580
+ ) {
1581
+ _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
1582
+ }
1583
+
1584
+ template<typename T>
1585
+ NAN_INLINE void NanDisposePersistent(
1586
+ v8::Persistent<T> &handle) { // NOLINT(runtime/references)
1587
+ handle.Dispose();
1588
+ handle.Clear();
1589
+ }
1590
+
1591
+ NAN_INLINE v8::Local<v8::Object> NanNewBufferHandle (
1592
+ char *data
1593
+ , size_t length
1594
+ , node::Buffer::free_callback callback
1595
+ , void *hint
1596
+ ) {
1597
+ return NanNew(
1598
+ node::Buffer::New(data, length, callback, hint)->handle_);
1599
+ }
1600
+
1601
+ NAN_INLINE v8::Local<v8::Object> NanNewBufferHandle (
1602
+ const char *data
1603
+ , uint32_t size
1604
+ ) {
1605
+ #if NODE_MODULE_VERSION >= 0x000B
1606
+ return NanNew(node::Buffer::New(data, size)->handle_);
1607
+ #else
1608
+ return NanNew(
1609
+ node::Buffer::New(const_cast<char*>(data), size)->handle_);
1610
+ #endif
1611
+ }
1612
+
1613
+ NAN_INLINE v8::Local<v8::Object> NanNewBufferHandle (uint32_t size) {
1614
+ return NanNew(node::Buffer::New(size)->handle_);
1615
+ }
1616
+
1617
+ NAN_INLINE void FreeData(char *data, void *hint) {
1618
+ delete[] data;
1619
+ }
1620
+
1621
+ NAN_INLINE v8::Local<v8::Object> NanBufferUse(
1622
+ char* data
1623
+ , uint32_t size
1624
+ ) {
1625
+ return NanNew(
1626
+ node::Buffer::New(data, size, FreeData, NULL)->handle_);
1627
+ }
1628
+
1629
+ NAN_INLINE bool NanHasInstance(
1630
+ const v8::Persistent<v8::FunctionTemplate>& function_template
1631
+ , v8::Handle<v8::Value> value
1632
+ ) {
1633
+ return function_template->HasInstance(value);
1634
+ }
1635
+
1636
+ NAN_INLINE v8::Local<v8::Context> NanNewContextHandle(
1637
+ v8::ExtensionConfiguration* extensions = NULL
1638
+ , v8::Handle<v8::ObjectTemplate> tmpl = v8::Handle<v8::ObjectTemplate>()
1639
+ , v8::Handle<v8::Value> obj = v8::Handle<v8::Value>()
1640
+ ) {
1641
+ v8::Persistent<v8::Context> ctx = v8::Context::New(extensions, tmpl, obj);
1642
+ v8::Local<v8::Context> lctx = NanNew(ctx);
1643
+ ctx.Dispose();
1644
+ return lctx;
1645
+ }
1646
+
1647
+ NAN_INLINE v8::Local<NanBoundScript> NanCompileScript(
1648
+ v8::Local<v8::String> s
1649
+ , const v8::ScriptOrigin& origin
1650
+ ) {
1651
+ return v8::Script::Compile(s, const_cast<v8::ScriptOrigin *>(&origin));
1652
+ }
1653
+
1654
+ NAN_INLINE v8::Local<NanBoundScript> NanCompileScript(
1655
+ v8::Local<v8::String> s
1656
+ ) {
1657
+ return v8::Script::Compile(s);
1658
+ }
1659
+
1660
+ NAN_INLINE v8::Local<v8::Value> NanRunScript(v8::Handle<v8::Script> script) {
1661
+ return script->Run();
1662
+ }
1663
+
1664
+ NAN_INLINE v8::Local<v8::Value> NanMakeCallback(
1665
+ v8::Handle<v8::Object> target
1666
+ , v8::Handle<v8::Function> func
1667
+ , int argc
1668
+ , v8::Handle<v8::Value>* argv) {
1669
+ # if NODE_VERSION_AT_LEAST(0, 8, 0)
1670
+ return NanNew(node::MakeCallback(target, func, argc, argv));
1671
+ # else
1672
+ v8::TryCatch try_catch;
1673
+ v8::Local<v8::Value> result = func->Call(target, argc, argv);
1674
+ if (try_catch.HasCaught()) {
1675
+ node::FatalException(try_catch);
1676
+ }
1677
+ return result;
1678
+ # endif
1679
+ }
1680
+
1681
+ NAN_INLINE v8::Local<v8::Value> NanMakeCallback(
1682
+ v8::Handle<v8::Object> target
1683
+ , v8::Handle<v8::String> symbol
1684
+ , int argc
1685
+ , v8::Handle<v8::Value>* argv) {
1686
+ # if NODE_VERSION_AT_LEAST(0, 8, 0)
1687
+ return NanNew(node::MakeCallback(target, symbol, argc, argv));
1688
+ # else
1689
+ v8::Local<v8::Function> callback = target->Get(symbol).As<v8::Function>();
1690
+ return NanMakeCallback(target, callback, argc, argv);
1691
+ # endif
1692
+ }
1693
+
1694
+ NAN_INLINE v8::Local<v8::Value> NanMakeCallback(
1695
+ v8::Handle<v8::Object> target
1696
+ , const char* method
1697
+ , int argc
1698
+ , v8::Handle<v8::Value>* argv) {
1699
+ # if NODE_VERSION_AT_LEAST(0, 8, 0)
1700
+ return NanNew(node::MakeCallback(target, method, argc, argv));
1701
+ # else
1702
+ return NanMakeCallback(target, NanNew(method), argc, argv);
1703
+ # endif
1704
+ }
1705
+
1706
+ template<typename T>
1707
+ NAN_INLINE void NanSetIsolateData(
1708
+ v8::Isolate *isolate
1709
+ , T *data
1710
+ ) {
1711
+ isolate->SetData(data);
1712
+ }
1713
+
1714
+ template<typename T>
1715
+ NAN_INLINE T *NanGetIsolateData(
1716
+ v8::Isolate *isolate
1717
+ ) {
1718
+ return static_cast<T*>(isolate->GetData());
1719
+ }
1720
+
1721
+ class NanAsciiString {
1722
+ public:
1723
+ NAN_INLINE explicit NanAsciiString(v8::Handle<v8::Value> from) {
1724
+ v8::Local<v8::String> toStr = from->ToString();
1725
+ size = toStr->Length();
1726
+ buf = new char[size + 1];
1727
+ size = toStr->WriteAscii(buf);
1728
+ }
1729
+
1730
+ NAN_DEPRECATED NAN_INLINE int Size() const {
1731
+ return size;
1732
+ }
1733
+
1734
+ NAN_INLINE int length() const {
1735
+ return size;
1736
+ }
1737
+
1738
+
1739
+ NAN_INLINE char* operator*() { return buf; }
1740
+ NAN_INLINE const char* operator*() const { return buf; }
1741
+
1742
+ NAN_INLINE ~NanAsciiString() {
1743
+ delete[] buf;
1744
+ }
1745
+
1746
+ private:
1747
+ // disallow copying and assigning
1748
+ NanAsciiString(const NanAsciiString&);
1749
+ void operator=(const NanAsciiString&);
1750
+
1751
+ char *buf;
1752
+ int size;
1753
+ };
1754
+
1755
+ class NanUtf8String {
1756
+ public:
1757
+ NAN_INLINE explicit NanUtf8String(v8::Handle<v8::Value> from) {
1758
+ v8::Local<v8::String> toStr = from->ToString();
1759
+ size = toStr->Utf8Length();
1760
+ buf = new char[size + 1];
1761
+ toStr->WriteUtf8(buf);
1762
+ }
1763
+
1764
+ NAN_DEPRECATED NAN_INLINE int Size() const {
1765
+ return size;
1766
+ }
1767
+
1768
+ NAN_INLINE int length() const {
1769
+ return size;
1770
+ }
1771
+
1772
+ NAN_INLINE char* operator*() { return buf; }
1773
+ NAN_INLINE const char* operator*() const { return buf; }
1774
+
1775
+ NAN_INLINE ~NanUtf8String() {
1776
+ delete[] buf;
1777
+ }
1778
+
1779
+ private:
1780
+ // disallow copying and assigning
1781
+ NanUtf8String(const NanUtf8String&);
1782
+ void operator=(const NanUtf8String&);
1783
+
1784
+ char *buf;
1785
+ int size;
1786
+ };
1787
+
1788
+ class NanUcs2String {
1789
+ public:
1790
+ NAN_INLINE explicit NanUcs2String(v8::Handle<v8::Value> from) {
1791
+ v8::Local<v8::String> toStr = from->ToString();
1792
+ size = toStr->Length();
1793
+ buf = new uint16_t[size + 1];
1794
+ toStr->Write(buf);
1795
+ }
1796
+
1797
+ NAN_DEPRECATED NAN_INLINE int Size() const {
1798
+ return size;
1799
+ }
1800
+
1801
+ NAN_INLINE int length() const {
1802
+ return size;
1803
+ }
1804
+
1805
+ NAN_INLINE uint16_t* operator*() { return buf; }
1806
+ NAN_INLINE const uint16_t* operator*() const { return buf; }
1807
+
1808
+ NAN_INLINE ~NanUcs2String() {
1809
+ delete[] buf;
1810
+ }
1811
+
1812
+ private:
1813
+ // disallow copying and assigning
1814
+ NanUcs2String(const NanUcs2String&);
1815
+ void operator=(const NanUcs2String&);
1816
+
1817
+ uint16_t *buf;
1818
+ int size;
1819
+ };
1820
+
1821
+ #endif // NODE_MODULE_VERSION
1822
+
1823
+ typedef void (*NanFreeCallback)(char *data, void *hint);
1824
+
1825
+ #define NAN_METHOD(name) _NAN_METHOD_RETURN_TYPE name(_NAN_METHOD_ARGS)
1826
+ #define NAN_GETTER(name) \
1827
+ _NAN_GETTER_RETURN_TYPE name( \
1828
+ v8::Local<v8::String> property \
1829
+ , _NAN_GETTER_ARGS)
1830
+ #define NAN_SETTER(name) \
1831
+ _NAN_SETTER_RETURN_TYPE name( \
1832
+ v8::Local<v8::String> property \
1833
+ , v8::Local<v8::Value> value \
1834
+ , _NAN_SETTER_ARGS)
1835
+ #define NAN_PROPERTY_GETTER(name) \
1836
+ _NAN_PROPERTY_GETTER_RETURN_TYPE name( \
1837
+ v8::Local<v8::String> property \
1838
+ , _NAN_PROPERTY_GETTER_ARGS)
1839
+ #define NAN_PROPERTY_SETTER(name) \
1840
+ _NAN_PROPERTY_SETTER_RETURN_TYPE name( \
1841
+ v8::Local<v8::String> property \
1842
+ , v8::Local<v8::Value> value \
1843
+ , _NAN_PROPERTY_SETTER_ARGS)
1844
+ #define NAN_PROPERTY_ENUMERATOR(name) \
1845
+ _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE name(_NAN_PROPERTY_ENUMERATOR_ARGS)
1846
+ #define NAN_PROPERTY_DELETER(name) \
1847
+ _NAN_PROPERTY_DELETER_RETURN_TYPE name( \
1848
+ v8::Local<v8::String> property \
1849
+ , _NAN_PROPERTY_DELETER_ARGS)
1850
+ #define NAN_PROPERTY_QUERY(name) \
1851
+ _NAN_PROPERTY_QUERY_RETURN_TYPE name( \
1852
+ v8::Local<v8::String> property \
1853
+ , _NAN_PROPERTY_QUERY_ARGS)
1854
+ # define NAN_INDEX_GETTER(name) \
1855
+ _NAN_INDEX_GETTER_RETURN_TYPE name(uint32_t index, _NAN_INDEX_GETTER_ARGS)
1856
+ #define NAN_INDEX_SETTER(name) \
1857
+ _NAN_INDEX_SETTER_RETURN_TYPE name( \
1858
+ uint32_t index \
1859
+ , v8::Local<v8::Value> value \
1860
+ , _NAN_INDEX_SETTER_ARGS)
1861
+ #define NAN_INDEX_ENUMERATOR(name) \
1862
+ _NAN_INDEX_ENUMERATOR_RETURN_TYPE name(_NAN_INDEX_ENUMERATOR_ARGS)
1863
+ #define NAN_INDEX_DELETER(name) \
1864
+ _NAN_INDEX_DELETER_RETURN_TYPE name( \
1865
+ uint32_t index \
1866
+ , _NAN_INDEX_DELETER_ARGS)
1867
+ #define NAN_INDEX_QUERY(name) \
1868
+ _NAN_INDEX_QUERY_RETURN_TYPE name(uint32_t index, _NAN_INDEX_QUERY_ARGS)
1869
+
1870
+ class NanCallback {
1871
+ public:
1872
+ NanCallback() {
1873
+ NanScope();
1874
+ v8::Local<v8::Object> obj = NanNew<v8::Object>();
1875
+ NanAssignPersistent(handle, obj);
1876
+ }
1877
+
1878
+ explicit NanCallback(const v8::Handle<v8::Function> &fn) {
1879
+ NanScope();
1880
+ v8::Local<v8::Object> obj = NanNew<v8::Object>();
1881
+ NanAssignPersistent(handle, obj);
1882
+ SetFunction(fn);
1883
+ }
1884
+
1885
+ ~NanCallback() {
1886
+ if (handle.IsEmpty()) return;
1887
+ NanDisposePersistent(handle);
1888
+ }
1889
+
1890
+ NAN_INLINE void SetFunction(const v8::Handle<v8::Function> &fn) {
1891
+ NanScope();
1892
+ NanNew(handle)->Set(kCallbackIndex, fn);
1893
+ }
1894
+
1895
+ NAN_INLINE v8::Local<v8::Function> GetFunction() const {
1896
+ NanEscapableScope();
1897
+ return NanEscapeScope(NanNew(handle)->Get(kCallbackIndex)
1898
+ .As<v8::Function>());
1899
+ }
1900
+
1901
+ NAN_INLINE bool IsEmpty() const {
1902
+ NanScope();
1903
+ return NanNew(handle)->Get(kCallbackIndex)->IsUndefined();
1904
+ }
1905
+
1906
+ v8::Handle<v8::Value> Call(int argc, v8::Handle<v8::Value> argv[]) const {
1907
+ NanEscapableScope();
1908
+ #if (NODE_MODULE_VERSION > 0x000B) // 0.11.12+
1909
+ v8::Isolate* isolate = v8::Isolate::GetCurrent();
1910
+ v8::Local<v8::Function> callback = NanNew(handle)->
1911
+ Get(kCallbackIndex).As<v8::Function>();
1912
+ return NanEscapeScope(node::MakeCallback(
1913
+ isolate
1914
+ , isolate->GetCurrentContext()->Global()
1915
+ , callback
1916
+ , argc
1917
+ , argv
1918
+ ));
1919
+ #else
1920
+ #if NODE_VERSION_AT_LEAST(0, 8, 0)
1921
+ v8::Local<v8::Function> callback = handle->
1922
+ Get(kCallbackIndex).As<v8::Function>();
1923
+ return NanEscapeScope(node::MakeCallback(
1924
+ v8::Context::GetCurrent()->Global()
1925
+ , callback
1926
+ , argc
1927
+ , argv
1928
+ ));
1929
+ #else
1930
+ v8::Local<v8::Function> callback = handle->
1931
+ Get(kCallbackIndex).As<v8::Function>();
1932
+ return NanEscapeScope(NanMakeCallback(
1933
+ v8::Context::GetCurrent()->Global(), callback, argc, argv));
1934
+ #endif
1935
+ #endif
1936
+ }
1937
+
1938
+ private:
1939
+ v8::Persistent<v8::Object> handle;
1940
+ static const uint32_t kCallbackIndex = 0;
1941
+ };
1942
+
1943
+ /* abstract */ class NanAsyncWorker {
1944
+ public:
1945
+ explicit NanAsyncWorker(NanCallback *callback_)
1946
+ : callback(callback_), errmsg_(NULL) {
1947
+ request.data = this;
1948
+
1949
+ NanScope();
1950
+ v8::Local<v8::Object> obj = NanNew<v8::Object>();
1951
+ NanAssignPersistent(persistentHandle, obj);
1952
+ }
1953
+
1954
+ virtual ~NanAsyncWorker() {
1955
+ NanScope();
1956
+
1957
+ if (!persistentHandle.IsEmpty())
1958
+ NanDisposePersistent(persistentHandle);
1959
+ if (callback)
1960
+ delete callback;
1961
+ if (errmsg_)
1962
+ delete[] errmsg_;
1963
+ }
1964
+
1965
+ virtual void WorkComplete() {
1966
+ NanScope();
1967
+
1968
+ if (errmsg_ == NULL)
1969
+ HandleOKCallback();
1970
+ else
1971
+ HandleErrorCallback();
1972
+ delete callback;
1973
+ callback = NULL;
1974
+ }
1975
+
1976
+ NAN_INLINE void SaveToPersistent(
1977
+ const char *key, const v8::Local<v8::Object> &obj) {
1978
+ v8::Local<v8::Object> handle = NanNew(persistentHandle);
1979
+ handle->Set(NanNew<v8::String>(key), obj);
1980
+ }
1981
+
1982
+ v8::Local<v8::Object> GetFromPersistent(const char *key) const {
1983
+ NanEscapableScope();
1984
+ v8::Local<v8::Object> handle = NanNew(persistentHandle);
1985
+ return NanEscapeScope(handle->Get(NanNew(key)).As<v8::Object>());
1986
+ }
1987
+
1988
+ virtual void Execute() = 0;
1989
+
1990
+ uv_work_t request;
1991
+
1992
+ protected:
1993
+ v8::Persistent<v8::Object> persistentHandle;
1994
+ NanCallback *callback;
1995
+
1996
+ virtual void HandleOKCallback() {
1997
+ callback->Call(0, NULL);
1998
+ }
1999
+
2000
+ virtual void HandleErrorCallback() {
2001
+ NanScope();
2002
+
2003
+ v8::Local<v8::Value> argv[] = {
2004
+ v8::Exception::Error(NanNew<v8::String>(ErrorMessage()))
2005
+ };
2006
+ callback->Call(1, argv);
2007
+ }
2008
+
2009
+ void SetErrorMessage(const char *msg) {
2010
+ if (errmsg_) {
2011
+ delete[] errmsg_;
2012
+ }
2013
+
2014
+ size_t size = strlen(msg) + 1;
2015
+ errmsg_ = new char[size];
2016
+ memcpy(errmsg_, msg, size);
2017
+ }
2018
+
2019
+ const char* ErrorMessage() const {
2020
+ return errmsg_;
2021
+ }
2022
+
2023
+ private:
2024
+ char *errmsg_;
2025
+ };
2026
+
2027
+ NAN_INLINE void NanAsyncExecute (uv_work_t* req) {
2028
+ NanAsyncWorker *worker = static_cast<NanAsyncWorker*>(req->data);
2029
+ worker->Execute();
2030
+ }
2031
+
2032
+ NAN_INLINE void NanAsyncExecuteComplete (uv_work_t* req) {
2033
+ NanAsyncWorker* worker = static_cast<NanAsyncWorker*>(req->data);
2034
+ worker->WorkComplete();
2035
+ delete worker;
2036
+ }
2037
+
2038
+ NAN_INLINE void NanAsyncQueueWorker (NanAsyncWorker* worker) {
2039
+ uv_queue_work(
2040
+ uv_default_loop()
2041
+ , &worker->request
2042
+ , NanAsyncExecute
2043
+ , (uv_after_work_cb)NanAsyncExecuteComplete
2044
+ );
2045
+ }
2046
+
2047
+ //// Base 64 ////
2048
+
2049
+ #define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4)
2050
+
2051
+ // Doesn't check for padding at the end. Can be 1-2 bytes over.
2052
+ NAN_INLINE size_t _nan_base64_decoded_size_fast(size_t size) {
2053
+ size_t remainder = size % 4;
2054
+
2055
+ size = (size / 4) * 3;
2056
+ if (remainder) {
2057
+ if (size == 0 && remainder == 1) {
2058
+ // special case: 1-byte input cannot be decoded
2059
+ size = 0;
2060
+ } else {
2061
+ // non-padded input, add 1 or 2 extra bytes
2062
+ size += 1 + (remainder == 3);
2063
+ }
2064
+ }
2065
+
2066
+ return size;
2067
+ }
2068
+
2069
+ template<typename T>
2070
+ NAN_INLINE size_t _nan_base64_decoded_size(
2071
+ const T* src
2072
+ , size_t size
2073
+ ) {
2074
+ if (size == 0)
2075
+ return 0;
2076
+
2077
+ if (src[size - 1] == '=')
2078
+ size--;
2079
+ if (size > 0 && src[size - 1] == '=')
2080
+ size--;
2081
+
2082
+ return _nan_base64_decoded_size_fast(size);
2083
+ }
2084
+
2085
+ // supports regular and URL-safe base64
2086
+ static const int _nan_unbase64_table[] = {
2087
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1
2088
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2089
+ , -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63
2090
+ , 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1
2091
+ , -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
2092
+ , 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63
2093
+ , -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40
2094
+ , 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
2095
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2096
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2097
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2098
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2099
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2100
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2101
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2102
+ , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
2103
+ };
2104
+
2105
+ #define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)]
2106
+
2107
+ template<typename T> static size_t _nan_base64_decode(
2108
+ char* buf
2109
+ , size_t len
2110
+ , const T* src
2111
+ , const size_t srcLen
2112
+ ) {
2113
+ char* dst = buf;
2114
+ char* dstEnd = buf + len;
2115
+ const T* srcEnd = src + srcLen;
2116
+
2117
+ while (src < srcEnd && dst < dstEnd) {
2118
+ ptrdiff_t remaining = srcEnd - src;
2119
+ char a, b, c, d;
2120
+
2121
+ while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
2122
+ if (remaining == 0 || *src == '=') break;
2123
+ a = _nan_unbase64(*src++);
2124
+
2125
+ while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
2126
+ if (remaining <= 1 || *src == '=') break;
2127
+ b = _nan_unbase64(*src++);
2128
+
2129
+ *dst++ = (a << 2) | ((b & 0x30) >> 4);
2130
+ if (dst == dstEnd) break;
2131
+
2132
+ while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
2133
+ if (remaining <= 2 || *src == '=') break;
2134
+ c = _nan_unbase64(*src++);
2135
+
2136
+ *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2);
2137
+ if (dst == dstEnd) break;
2138
+
2139
+ while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--;
2140
+ if (remaining <= 3 || *src == '=') break;
2141
+ d = _nan_unbase64(*src++);
2142
+
2143
+ *dst++ = ((c & 0x03) << 6) | (d & 0x3F);
2144
+ }
2145
+
2146
+ return dst - buf;
2147
+ }
2148
+
2149
+ //// HEX ////
2150
+
2151
+ template<typename T> unsigned _nan_hex2bin(T c) {
2152
+ if (c >= '0' && c <= '9') return c - '0';
2153
+ if (c >= 'A' && c <= 'F') return 10 + (c - 'A');
2154
+ if (c >= 'a' && c <= 'f') return 10 + (c - 'a');
2155
+ return static_cast<unsigned>(-1);
2156
+ }
2157
+
2158
+ template<typename T> static size_t _nan_hex_decode(
2159
+ char* buf
2160
+ , size_t len
2161
+ , const T* src
2162
+ , const size_t srcLen
2163
+ ) {
2164
+ size_t i;
2165
+ for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) {
2166
+ unsigned a = _nan_hex2bin(src[i * 2 + 0]);
2167
+ unsigned b = _nan_hex2bin(src[i * 2 + 1]);
2168
+ if (!~a || !~b) return i;
2169
+ buf[i] = a * 16 + b;
2170
+ }
2171
+
2172
+ return i;
2173
+ }
2174
+
2175
+ static bool _NanGetExternalParts(
2176
+ v8::Handle<v8::Value> val
2177
+ , const char** data
2178
+ , size_t* len
2179
+ ) {
2180
+ if (node::Buffer::HasInstance(val)) {
2181
+ *data = node::Buffer::Data(val.As<v8::Object>());
2182
+ *len = node::Buffer::Length(val.As<v8::Object>());
2183
+ return true;
2184
+ }
2185
+
2186
+ assert(val->IsString());
2187
+ v8::Local<v8::String> str = NanNew(val.As<v8::String>());
2188
+
2189
+ #if NODE_MODULE_VERSION >= 42 // io.js v1.0.0
2190
+ if (str->IsExternalOneByte()) {
2191
+ const v8::String::ExternalOneByteStringResource* ext;
2192
+ ext = str->GetExternalOneByteStringResource();
2193
+ *data = ext->data();
2194
+ *len = ext->length();
2195
+ return true;
2196
+ }
2197
+ #else
2198
+ if (str->IsExternalAscii()) {
2199
+ const v8::String::ExternalAsciiStringResource* ext;
2200
+ ext = str->GetExternalAsciiStringResource();
2201
+ *data = ext->data();
2202
+ *len = ext->length();
2203
+ return true;
2204
+ }
2205
+ #endif
2206
+
2207
+ if (str->IsExternal()) {
2208
+ const v8::String::ExternalStringResource* ext;
2209
+ ext = str->GetExternalStringResource();
2210
+ *data = reinterpret_cast<const char*>(ext->data());
2211
+ *len = ext->length();
2212
+ return true;
2213
+ }
2214
+
2215
+ return false;
2216
+ }
2217
+
2218
+ namespace Nan {
2219
+ enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER};
2220
+ }
2221
+
2222
+ /* NAN_DEPRECATED */ NAN_INLINE void* _NanRawString(
2223
+ v8::Handle<v8::Value> from
2224
+ , enum Nan::Encoding encoding
2225
+ , size_t *datalen
2226
+ , void *buf
2227
+ , size_t buflen
2228
+ , int flags
2229
+ ) {
2230
+ NanScope();
2231
+
2232
+ size_t sz_;
2233
+ size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION);
2234
+ char *data = NULL;
2235
+ size_t len;
2236
+ bool is_extern = _NanGetExternalParts(
2237
+ from
2238
+ , const_cast<const char**>(&data)
2239
+ , &len);
2240
+
2241
+ if (is_extern && !term_len) {
2242
+ NanSetPointerSafe(datalen, len);
2243
+ return data;
2244
+ }
2245
+
2246
+ v8::Local<v8::String> toStr = from->ToString();
2247
+
2248
+ char *to = static_cast<char *>(buf);
2249
+
2250
+ switch (encoding) {
2251
+ case Nan::ASCII:
2252
+ #if NODE_MODULE_VERSION < 0x000C
2253
+ sz_ = toStr->Length();
2254
+ if (to == NULL) {
2255
+ to = new char[sz_ + term_len];
2256
+ } else {
2257
+ assert(buflen >= sz_ + term_len && "too small buffer");
2258
+ }
2259
+ NanSetPointerSafe<size_t>(
2260
+ datalen
2261
+ , toStr->WriteAscii(to, 0, static_cast<int>(sz_ + term_len), flags));
2262
+ return to;
2263
+ #endif
2264
+ case Nan::BINARY:
2265
+ case Nan::BUFFER:
2266
+ sz_ = toStr->Length();
2267
+ if (to == NULL) {
2268
+ to = new char[sz_ + term_len];
2269
+ } else {
2270
+ assert(buflen >= sz_ + term_len && "too small buffer");
2271
+ }
2272
+ #if NODE_MODULE_VERSION < 0x000C
2273
+ {
2274
+ uint16_t* twobytebuf = new uint16_t[sz_ + term_len];
2275
+
2276
+ size_t somelen = toStr->Write(twobytebuf, 0,
2277
+ static_cast<int>(sz_ + term_len), flags);
2278
+
2279
+ for (size_t i = 0; i < sz_ + term_len && i < somelen + term_len; i++) {
2280
+ unsigned char *b = reinterpret_cast<unsigned char*>(&twobytebuf[i]);
2281
+ to[i] = *b;
2282
+ }
2283
+
2284
+ NanSetPointerSafe<size_t>(datalen, somelen);
2285
+
2286
+ delete[] twobytebuf;
2287
+ return to;
2288
+ }
2289
+ #else
2290
+ NanSetPointerSafe<size_t>(
2291
+ datalen,
2292
+ toStr->WriteOneByte(
2293
+ reinterpret_cast<uint8_t *>(to)
2294
+ , 0
2295
+ , static_cast<int>(sz_ + term_len)
2296
+ , flags));
2297
+ return to;
2298
+ #endif
2299
+ case Nan::UTF8:
2300
+ sz_ = toStr->Utf8Length();
2301
+ if (to == NULL) {
2302
+ to = new char[sz_ + term_len];
2303
+ } else {
2304
+ assert(buflen >= sz_ + term_len && "too small buffer");
2305
+ }
2306
+ NanSetPointerSafe<size_t>(
2307
+ datalen
2308
+ , toStr->WriteUtf8(to, static_cast<int>(sz_ + term_len)
2309
+ , NULL, flags)
2310
+ - term_len);
2311
+ return to;
2312
+ case Nan::BASE64:
2313
+ {
2314
+ v8::String::Value value(toStr);
2315
+ sz_ = _nan_base64_decoded_size(*value, value.length());
2316
+ if (to == NULL) {
2317
+ to = new char[sz_ + term_len];
2318
+ } else {
2319
+ assert(buflen >= sz_ + term_len);
2320
+ }
2321
+ NanSetPointerSafe<size_t>(
2322
+ datalen
2323
+ , _nan_base64_decode(to, sz_, *value, value.length()));
2324
+ if (term_len) {
2325
+ to[sz_] = '\0';
2326
+ }
2327
+ return to;
2328
+ }
2329
+ case Nan::UCS2:
2330
+ {
2331
+ sz_ = toStr->Length();
2332
+ if (to == NULL) {
2333
+ to = new char[(sz_ + term_len) * 2];
2334
+ } else {
2335
+ assert(buflen >= (sz_ + term_len) * 2 && "too small buffer");
2336
+ }
2337
+
2338
+ int bc = 2 * toStr->Write(
2339
+ reinterpret_cast<uint16_t *>(to)
2340
+ , 0
2341
+ , static_cast<int>(sz_ + term_len)
2342
+ , flags);
2343
+ NanSetPointerSafe<size_t>(datalen, bc);
2344
+ return to;
2345
+ }
2346
+ case Nan::HEX:
2347
+ {
2348
+ v8::String::Value value(toStr);
2349
+ sz_ = value.length();
2350
+ assert(!(sz_ & 1) && "bad hex data");
2351
+ if (to == NULL) {
2352
+ to = new char[sz_ / 2 + term_len];
2353
+ } else {
2354
+ assert(buflen >= sz_ / 2 + term_len && "too small buffer");
2355
+ }
2356
+ NanSetPointerSafe<size_t>(
2357
+ datalen
2358
+ , _nan_hex_decode(to, sz_ / 2, *value, value.length()));
2359
+ }
2360
+ if (term_len) {
2361
+ to[sz_ / 2] = '\0';
2362
+ }
2363
+ return to;
2364
+ default:
2365
+ assert(0 && "unknown encoding");
2366
+ }
2367
+ return to;
2368
+ }
2369
+
2370
+ NAN_DEPRECATED NAN_INLINE void* NanRawString(
2371
+ v8::Handle<v8::Value> from
2372
+ , enum Nan::Encoding encoding
2373
+ , size_t *datalen
2374
+ , void *buf
2375
+ , size_t buflen
2376
+ , int flags
2377
+ ) {
2378
+ return _NanRawString(from, encoding, datalen, buf, buflen, flags);
2379
+ }
2380
+
2381
+
2382
+ NAN_DEPRECATED NAN_INLINE char* NanCString(
2383
+ v8::Handle<v8::Value> from
2384
+ , size_t *datalen
2385
+ , char *buf = NULL
2386
+ , size_t buflen = 0
2387
+ , int flags = v8::String::NO_OPTIONS
2388
+ ) {
2389
+ return static_cast<char *>(
2390
+ _NanRawString(from, Nan::UTF8, datalen, buf, buflen, flags)
2391
+ );
2392
+ }
2393
+
2394
+ NAN_INLINE void NanSetPrototypeTemplate(
2395
+ v8::Local<v8::FunctionTemplate> templ
2396
+ , const char *name
2397
+ , v8::Handle<v8::Data> value
2398
+ ) {
2399
+ NanSetTemplate(templ->PrototypeTemplate(), name, value);
2400
+ }
2401
+
2402
+ NAN_INLINE void NanSetPrototypeTemplate(
2403
+ v8::Local<v8::FunctionTemplate> templ
2404
+ , v8::Handle<v8::String> name
2405
+ , v8::Handle<v8::Data> value
2406
+ , v8::PropertyAttribute attributes
2407
+ ) {
2408
+ NanSetTemplate(templ->PrototypeTemplate(), name, value, attributes);
2409
+ }
2410
+
2411
+ NAN_INLINE void NanSetInstanceTemplate(
2412
+ v8::Local<v8::FunctionTemplate> templ
2413
+ , const char *name
2414
+ , v8::Handle<v8::Data> value
2415
+ ) {
2416
+ NanSetTemplate(templ->InstanceTemplate(), name, value);
2417
+ }
2418
+
2419
+ NAN_INLINE void NanSetInstanceTemplate(
2420
+ v8::Local<v8::FunctionTemplate> templ
2421
+ , v8::Handle<v8::String> name
2422
+ , v8::Handle<v8::Data> value
2423
+ , v8::PropertyAttribute attributes
2424
+ ) {
2425
+ NanSetTemplate(templ->InstanceTemplate(), name, value, attributes);
2426
+ }
2427
+
2428
+ #endif // NAN_H_