opal-wedge 0.9.0.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (830) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.gitmodules +7 -0
  4. data/.inch.yml +19 -0
  5. data/.jshintrc +48 -0
  6. data/.rspec +3 -0
  7. data/.spectator +2 -0
  8. data/.spectator-mspec +3 -0
  9. data/.travis.yml +60 -0
  10. data/.yardopts +6 -0
  11. data/CHANGELOG.md +571 -0
  12. data/CODE_OF_CONDUCT.md +15 -0
  13. data/CONTRIBUTING.md +192 -0
  14. data/Gemfile +26 -0
  15. data/Guardfile +77 -0
  16. data/LICENSE +19 -0
  17. data/README.md +167 -0
  18. data/Rakefile +15 -0
  19. data/benchmark/benchmarks +103 -0
  20. data/benchmark/bm_array_intersection_numbers.rb +7 -0
  21. data/benchmark/bm_array_intersection_objects.rb +7 -0
  22. data/benchmark/bm_array_intersection_strings.rb +7 -0
  23. data/benchmark/bm_array_minus_numbers.rb +7 -0
  24. data/benchmark/bm_array_minus_objects.rb +7 -0
  25. data/benchmark/bm_array_minus_strings.rb +7 -0
  26. data/benchmark/bm_array_union_numbers.rb +7 -0
  27. data/benchmark/bm_array_union_objects.rb +7 -0
  28. data/benchmark/bm_array_union_strings.rb +7 -0
  29. data/benchmark/bm_array_uniq_bang_numbers.rb +5 -0
  30. data/benchmark/bm_array_uniq_bang_objects.rb +5 -0
  31. data/benchmark/bm_array_uniq_bang_strings.rb +5 -0
  32. data/benchmark/bm_array_uniq_numbers.rb +5 -0
  33. data/benchmark/bm_array_uniq_objects.rb +5 -0
  34. data/benchmark/bm_array_uniq_strings.rb +5 -0
  35. data/benchmark/bm_dispatch_bind_table.rb +57 -0
  36. data/benchmark/bm_dispatch_code_gen.rb +65 -0
  37. data/benchmark/bm_dispatch_code_gen_if.rb +64 -0
  38. data/benchmark/bm_dispatch_hardcoded.rb +44 -0
  39. data/benchmark/bm_dispatch_send.rb +38 -0
  40. data/benchmark/bm_dispatch_send_table.rb +57 -0
  41. data/benchmark/bm_hash_assoc_object.rb +11 -0
  42. data/benchmark/bm_hash_assoc_string.rb +9 -0
  43. data/benchmark/bm_hash_clone_object.rb +9 -0
  44. data/benchmark/bm_hash_clone_string.rb +9 -0
  45. data/benchmark/bm_hash_delete_object.rb +11 -0
  46. data/benchmark/bm_hash_delete_string.rb +9 -0
  47. data/benchmark/bm_hash_each_key_object.rb +9 -0
  48. data/benchmark/bm_hash_each_key_string.rb +9 -0
  49. data/benchmark/bm_hash_each_object.rb +9 -0
  50. data/benchmark/bm_hash_each_string.rb +9 -0
  51. data/benchmark/bm_hash_each_value_object.rb +9 -0
  52. data/benchmark/bm_hash_each_value_string.rb +9 -0
  53. data/benchmark/bm_hash_element_reference_object.rb +11 -0
  54. data/benchmark/bm_hash_element_reference_string.rb +9 -0
  55. data/benchmark/bm_hash_element_set_object.rb +5 -0
  56. data/benchmark/bm_hash_element_set_string.rb +5 -0
  57. data/benchmark/bm_hash_equal_value_object.rb +14 -0
  58. data/benchmark/bm_hash_equal_value_string.rb +11 -0
  59. data/benchmark/bm_hash_fetch_object.rb +11 -0
  60. data/benchmark/bm_hash_fetch_string.rb +9 -0
  61. data/benchmark/bm_hash_flatten_object.rb +9 -0
  62. data/benchmark/bm_hash_flatten_string.rb +9 -0
  63. data/benchmark/bm_hash_has_key_object.rb +11 -0
  64. data/benchmark/bm_hash_has_key_string.rb +9 -0
  65. data/benchmark/bm_hash_has_value_object.rb +9 -0
  66. data/benchmark/bm_hash_has_value_string.rb +9 -0
  67. data/benchmark/bm_hash_hash_object.rb +9 -0
  68. data/benchmark/bm_hash_hash_string.rb +9 -0
  69. data/benchmark/bm_hash_inspect_object.rb +9 -0
  70. data/benchmark/bm_hash_inspect_string.rb +9 -0
  71. data/benchmark/bm_hash_invert_object.rb +9 -0
  72. data/benchmark/bm_hash_invert_string.rb +9 -0
  73. data/benchmark/bm_hash_keep_if_object.rb +9 -0
  74. data/benchmark/bm_hash_keep_if_string.rb +9 -0
  75. data/benchmark/bm_hash_key_object.rb +9 -0
  76. data/benchmark/bm_hash_key_string.rb +9 -0
  77. data/benchmark/bm_hash_keys_object.rb +9 -0
  78. data/benchmark/bm_hash_keys_string.rb +9 -0
  79. data/benchmark/bm_hash_literal_mixed_large.rb +3 -0
  80. data/benchmark/bm_hash_literal_mixed_small.rb +3 -0
  81. data/benchmark/bm_hash_literal_object_large.rb +4 -0
  82. data/benchmark/bm_hash_literal_object_small.rb +3 -0
  83. data/benchmark/bm_hash_literal_string_large.rb +4 -0
  84. data/benchmark/bm_hash_literal_string_small.rb +3 -0
  85. data/benchmark/bm_hash_merge_object.rb +22 -0
  86. data/benchmark/bm_hash_merge_string.rb +18 -0
  87. data/benchmark/bm_hash_rassoc_object.rb +9 -0
  88. data/benchmark/bm_hash_rassoc_string.rb +9 -0
  89. data/benchmark/bm_hash_rehash_object.rb +9 -0
  90. data/benchmark/bm_hash_rehash_string.rb +9 -0
  91. data/benchmark/bm_hash_reject_bang_object.rb +9 -0
  92. data/benchmark/bm_hash_reject_bang_string.rb +9 -0
  93. data/benchmark/bm_hash_reject_object.rb +9 -0
  94. data/benchmark/bm_hash_reject_string.rb +9 -0
  95. data/benchmark/bm_hash_replace_object.rb +18 -0
  96. data/benchmark/bm_hash_replace_string.rb +14 -0
  97. data/benchmark/bm_hash_select_bang_object.rb +9 -0
  98. data/benchmark/bm_hash_select_bang_string.rb +9 -0
  99. data/benchmark/bm_hash_select_object.rb +9 -0
  100. data/benchmark/bm_hash_select_string.rb +9 -0
  101. data/benchmark/bm_hash_shift_object.rb +10 -0
  102. data/benchmark/bm_hash_shift_string.rb +10 -0
  103. data/benchmark/bm_hash_to_a_object.rb +9 -0
  104. data/benchmark/bm_hash_to_a_string.rb +9 -0
  105. data/benchmark/bm_hash_to_h_object.rb +10 -0
  106. data/benchmark/bm_hash_to_h_string.rb +10 -0
  107. data/benchmark/bm_hash_values_object.rb +9 -0
  108. data/benchmark/bm_hash_values_string.rb +9 -0
  109. data/benchmark/run.rb +37 -0
  110. data/bin/opal +27 -0
  111. data/bin/opal-build +77 -0
  112. data/bin/opal-mspec +10 -0
  113. data/bin/opal-repl +72 -0
  114. data/config.ru +14 -0
  115. data/docs/compiler_directives.md +127 -0
  116. data/examples/rack/.gitignore +1 -0
  117. data/examples/rack/Gemfile +3 -0
  118. data/examples/rack/app/application.rb +13 -0
  119. data/examples/rack/app/user.rb +22 -0
  120. data/examples/rack/config.ru +20 -0
  121. data/examples/rack/index.html.erb +10 -0
  122. data/examples/sinatra/Gemfile +5 -0
  123. data/examples/sinatra/app/application.rb +7 -0
  124. data/examples/sinatra/config.ru +38 -0
  125. data/lib/mspec/opal/main.rb.erb +9 -0
  126. data/lib/mspec/opal/new.html.erb +1 -0
  127. data/lib/mspec/opal/rake_task.rb +248 -0
  128. data/lib/mspec/opal/runner.rb +281 -0
  129. data/lib/mspec/opal/special_calls.rb +44 -0
  130. data/lib/mspec/opal/sprockets.js +57 -0
  131. data/lib/opal-wedge.rb +4 -0
  132. data/lib/opal.rb +11 -0
  133. data/lib/opal/builder.rb +161 -0
  134. data/lib/opal/builder_processors.rb +149 -0
  135. data/lib/opal/cli.rb +162 -0
  136. data/lib/opal/cli_options.rb +158 -0
  137. data/lib/opal/cli_runners.rb +11 -0
  138. data/lib/opal/cli_runners/apple_script.rb +65 -0
  139. data/lib/opal/cli_runners/nodejs.rb +63 -0
  140. data/lib/opal/cli_runners/phantom.js +44 -0
  141. data/lib/opal/cli_runners/phantomjs.rb +28 -0
  142. data/lib/opal/cli_runners/server.rb +56 -0
  143. data/lib/opal/compiler.rb +381 -0
  144. data/lib/opal/config.rb +48 -0
  145. data/lib/opal/erb.rb +84 -0
  146. data/lib/opal/fragment.rb +53 -0
  147. data/lib/opal/hike_path_finder.rb +18 -0
  148. data/lib/opal/nodes.rb +26 -0
  149. data/lib/opal/nodes/arglist.rb +56 -0
  150. data/lib/opal/nodes/array.rb +54 -0
  151. data/lib/opal/nodes/base.rb +151 -0
  152. data/lib/opal/nodes/call.rb +290 -0
  153. data/lib/opal/nodes/call_special.rb +252 -0
  154. data/lib/opal/nodes/case.rb +96 -0
  155. data/lib/opal/nodes/class.rb +42 -0
  156. data/lib/opal/nodes/constants.rb +78 -0
  157. data/lib/opal/nodes/def.rb +281 -0
  158. data/lib/opal/nodes/defined.rb +113 -0
  159. data/lib/opal/nodes/definitions.rb +168 -0
  160. data/lib/opal/nodes/for.rb +48 -0
  161. data/lib/opal/nodes/hash.rb +67 -0
  162. data/lib/opal/nodes/helpers.rb +116 -0
  163. data/lib/opal/nodes/if.rb +81 -0
  164. data/lib/opal/nodes/iter.rb +136 -0
  165. data/lib/opal/nodes/literal.rb +247 -0
  166. data/lib/opal/nodes/logic.rb +217 -0
  167. data/lib/opal/nodes/masgn.rb +62 -0
  168. data/lib/opal/nodes/module.rb +45 -0
  169. data/lib/opal/nodes/rescue.rb +143 -0
  170. data/lib/opal/nodes/runtime_helpers.rb +45 -0
  171. data/lib/opal/nodes/scope.rb +281 -0
  172. data/lib/opal/nodes/singleton_class.rb +26 -0
  173. data/lib/opal/nodes/super.rb +97 -0
  174. data/lib/opal/nodes/top.rb +103 -0
  175. data/lib/opal/nodes/variables.rb +191 -0
  176. data/lib/opal/nodes/while.rb +65 -0
  177. data/lib/opal/nodes/yield.rb +95 -0
  178. data/lib/opal/parser.rb +742 -0
  179. data/lib/opal/parser/grammar.rb +5723 -0
  180. data/lib/opal/parser/grammar.y +1787 -0
  181. data/lib/opal/parser/keywords.rb +66 -0
  182. data/lib/opal/parser/lexer.rb +1260 -0
  183. data/lib/opal/parser/parser_scope.rb +28 -0
  184. data/lib/opal/parser/sexp.rb +81 -0
  185. data/lib/opal/path_reader.rb +35 -0
  186. data/lib/opal/paths.rb +55 -0
  187. data/lib/opal/regexp_anchors.rb +5 -0
  188. data/lib/opal/source_map.rb +70 -0
  189. data/lib/opal/sprockets.rb +3 -0
  190. data/lib/opal/sprockets/cache_key_fix.rb +17 -0
  191. data/lib/opal/sprockets/environment.rb +31 -0
  192. data/lib/opal/sprockets/erb.rb +23 -0
  193. data/lib/opal/sprockets/path_reader.rb +36 -0
  194. data/lib/opal/sprockets/processor.rb +167 -0
  195. data/lib/opal/sprockets/server.rb +160 -0
  196. data/lib/opal/sprockets/source_map_header_patch.rb +41 -0
  197. data/lib/opal/sprockets/source_map_server.rb +115 -0
  198. data/lib/opal/util.rb +69 -0
  199. data/lib/opal/version.rb +5 -0
  200. data/lib/tilt/opal.rb +54 -0
  201. data/opal.gemspec +37 -0
  202. data/opal/README.md +6 -0
  203. data/opal/corelib/array.rb +2073 -0
  204. data/opal/corelib/array/inheritance.rb +127 -0
  205. data/opal/corelib/basic_object.rb +82 -0
  206. data/opal/corelib/boolean.rb +47 -0
  207. data/opal/corelib/class.rb +55 -0
  208. data/opal/corelib/comparable.rb +57 -0
  209. data/opal/corelib/complex.rb +3 -0
  210. data/opal/corelib/dir.rb +20 -0
  211. data/opal/corelib/enumerable.rb +1138 -0
  212. data/opal/corelib/enumerator.rb +426 -0
  213. data/opal/corelib/error.rb +77 -0
  214. data/opal/corelib/file.rb +59 -0
  215. data/opal/corelib/hash.rb +951 -0
  216. data/opal/corelib/helpers.rb +102 -0
  217. data/opal/corelib/io.rb +73 -0
  218. data/opal/corelib/kernel.rb +1124 -0
  219. data/opal/corelib/main.rb +7 -0
  220. data/opal/corelib/match_data.rb +128 -0
  221. data/opal/corelib/method.rb +62 -0
  222. data/opal/corelib/module.rb +553 -0
  223. data/opal/corelib/nil_class.rb +57 -0
  224. data/opal/corelib/numeric.rb +564 -0
  225. data/opal/corelib/proc.rb +105 -0
  226. data/opal/corelib/process.rb +27 -0
  227. data/opal/corelib/range.rb +116 -0
  228. data/opal/corelib/rational.rb +3 -0
  229. data/opal/corelib/regexp.rb +203 -0
  230. data/opal/corelib/runtime.js +1637 -0
  231. data/opal/corelib/string.rb +1762 -0
  232. data/opal/corelib/string/inheritance.rb +117 -0
  233. data/opal/corelib/struct.rb +159 -0
  234. data/opal/corelib/time.rb +746 -0
  235. data/opal/corelib/variables.rb +28 -0
  236. data/opal/opal.rb +33 -0
  237. data/spec/README.md +8 -0
  238. data/spec/filters/bugs/array.rb +77 -0
  239. data/spec/filters/bugs/basicobject.rb +33 -0
  240. data/spec/filters/bugs/class.rb +15 -0
  241. data/spec/filters/bugs/comparable.rb +4 -0
  242. data/spec/filters/bugs/date.rb +173 -0
  243. data/spec/filters/bugs/enumerable.rb +62 -0
  244. data/spec/filters/bugs/enumerator.rb +45 -0
  245. data/spec/filters/bugs/exception.rb +84 -0
  246. data/spec/filters/bugs/fixnum.rb +35 -0
  247. data/spec/filters/bugs/float.rb +100 -0
  248. data/spec/filters/bugs/hash.rb +17 -0
  249. data/spec/filters/bugs/integer.rb +63 -0
  250. data/spec/filters/bugs/kernel.rb +395 -0
  251. data/spec/filters/bugs/language.rb +246 -0
  252. data/spec/filters/bugs/math.rb +89 -0
  253. data/spec/filters/bugs/method.rb +5 -0
  254. data/spec/filters/bugs/module.rb +372 -0
  255. data/spec/filters/bugs/nil.rb +7 -0
  256. data/spec/filters/bugs/numeric.rb +123 -0
  257. data/spec/filters/bugs/proc.rb +65 -0
  258. data/spec/filters/bugs/range.rb +148 -0
  259. data/spec/filters/bugs/regexp.rb +252 -0
  260. data/spec/filters/bugs/set.rb +51 -0
  261. data/spec/filters/bugs/singleton.rb +6 -0
  262. data/spec/filters/bugs/string.rb +99 -0
  263. data/spec/filters/bugs/strscan.rb +106 -0
  264. data/spec/filters/bugs/struct.rb +22 -0
  265. data/spec/filters/bugs/time.rb +28 -0
  266. data/spec/filters/bugs/unboundmethod.rb +22 -0
  267. data/spec/filters/unsupported/array.rb +176 -0
  268. data/spec/filters/unsupported/basicobject.rb +12 -0
  269. data/spec/filters/unsupported/class.rb +4 -0
  270. data/spec/filters/unsupported/delegator.rb +5 -0
  271. data/spec/filters/unsupported/enumerable.rb +8 -0
  272. data/spec/filters/unsupported/enumerator.rb +13 -0
  273. data/spec/filters/unsupported/fixnum.rb +15 -0
  274. data/spec/filters/unsupported/float.rb +6 -0
  275. data/spec/filters/unsupported/hash.rb +55 -0
  276. data/spec/filters/unsupported/integer.rb +3 -0
  277. data/spec/filters/unsupported/kernel.rb +22 -0
  278. data/spec/filters/unsupported/language.rb +31 -0
  279. data/spec/filters/unsupported/matchdata.rb +33 -0
  280. data/spec/filters/unsupported/math.rb +3 -0
  281. data/spec/filters/unsupported/module.rb +36 -0
  282. data/spec/filters/unsupported/pathname.rb +3 -0
  283. data/spec/filters/unsupported/regexp.rb +94 -0
  284. data/spec/filters/unsupported/set.rb +4 -0
  285. data/spec/filters/unsupported/singleton.rb +6 -0
  286. data/spec/filters/unsupported/string.rb +538 -0
  287. data/spec/filters/unsupported/struct.rb +3 -0
  288. data/spec/filters/unsupported/time.rb +208 -0
  289. data/spec/lib/builder_processors_spec.rb +27 -0
  290. data/spec/lib/builder_spec.rb +72 -0
  291. data/spec/lib/cli_spec.rb +150 -0
  292. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +87 -0
  293. data/spec/lib/compiler_spec.rb +131 -0
  294. data/spec/lib/dependency_resolver_spec.rb +40 -0
  295. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +4 -0
  296. data/spec/lib/fixtures/file_with_directives.js +2 -0
  297. data/spec/lib/fixtures/jst_file.js.jst +1 -0
  298. data/spec/lib/fixtures/no_requires.rb +1 -0
  299. data/spec/lib/fixtures/opal_file.rb +2 -0
  300. data/spec/lib/fixtures/require_tree_test.rb +3 -0
  301. data/spec/lib/fixtures/required_file.js +1 -0
  302. data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
  303. data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
  304. data/spec/lib/fixtures/requires.rb +7 -0
  305. data/spec/lib/fixtures/source_map.rb +1 -0
  306. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +1 -0
  307. data/spec/lib/fixtures/sprockets_file.js.rb +3 -0
  308. data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
  309. data/spec/lib/hike_path_finder_spec.rb +23 -0
  310. data/spec/lib/lexer_spec.rb +110 -0
  311. data/spec/lib/parser/alias_spec.rb +26 -0
  312. data/spec/lib/parser/and_spec.rb +13 -0
  313. data/spec/lib/parser/attrasgn_spec.rb +28 -0
  314. data/spec/lib/parser/begin_spec.rb +42 -0
  315. data/spec/lib/parser/block_spec.rb +12 -0
  316. data/spec/lib/parser/break_spec.rb +17 -0
  317. data/spec/lib/parser/call_spec.rb +165 -0
  318. data/spec/lib/parser/class_spec.rb +35 -0
  319. data/spec/lib/parser/comments_spec.rb +11 -0
  320. data/spec/lib/parser/def_spec.rb +80 -0
  321. data/spec/lib/parser/if_spec.rb +26 -0
  322. data/spec/lib/parser/iter_spec.rb +59 -0
  323. data/spec/lib/parser/lambda_spec.rb +64 -0
  324. data/spec/lib/parser/literal_spec.rb +118 -0
  325. data/spec/lib/parser/masgn_spec.rb +37 -0
  326. data/spec/lib/parser/module_spec.rb +27 -0
  327. data/spec/lib/parser/not_spec.rb +21 -0
  328. data/spec/lib/parser/op_asgn1_spec.rb +23 -0
  329. data/spec/lib/parser/op_asgn2_spec.rb +23 -0
  330. data/spec/lib/parser/or_spec.rb +13 -0
  331. data/spec/lib/parser/return_spec.rb +17 -0
  332. data/spec/lib/parser/sclass_spec.rb +21 -0
  333. data/spec/lib/parser/string_spec.rb +276 -0
  334. data/spec/lib/parser/super_spec.rb +20 -0
  335. data/spec/lib/parser/unary_spec.rb +48 -0
  336. data/spec/lib/parser/undef_spec.rb +15 -0
  337. data/spec/lib/parser/unless_spec.rb +13 -0
  338. data/spec/lib/parser/variables_spec.rb +92 -0
  339. data/spec/lib/parser/while_spec.rb +15 -0
  340. data/spec/lib/parser/yield_spec.rb +20 -0
  341. data/spec/lib/path_reader_spec.rb +36 -0
  342. data/spec/lib/shared/path_finder_shared.rb +19 -0
  343. data/spec/lib/shared/path_reader_shared.rb +31 -0
  344. data/spec/lib/spec_helper.rb +9 -0
  345. data/spec/lib/sprockets/erb_spec.rb +38 -0
  346. data/spec/lib/sprockets/path_reader_spec.rb +41 -0
  347. data/spec/lib/sprockets/processor_spec.rb +67 -0
  348. data/spec/lib/sprockets/server_spec.rb +102 -0
  349. data/spec/lib/tilt/opal_spec.rb +37 -0
  350. data/spec/opal/compiler/irb_spec.rb +44 -0
  351. data/spec/opal/core/array/intersection_spec.rb +38 -0
  352. data/spec/opal/core/array/minus_spec.rb +38 -0
  353. data/spec/opal/core/array/select_spec.rb +14 -0
  354. data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
  355. data/spec/opal/core/array/union_spec.rb +38 -0
  356. data/spec/opal/core/array/uniq_spec.rb +49 -0
  357. data/spec/opal/core/date_spec.rb +177 -0
  358. data/spec/opal/core/enumerable/all_break_spec.rb +5 -0
  359. data/spec/opal/core/enumerable/any_break_spec.rb +5 -0
  360. data/spec/opal/core/enumerable/collect_break_spec.rb +13 -0
  361. data/spec/opal/core/enumerable/count_break_spec.rb +5 -0
  362. data/spec/opal/core/enumerable/detect_break_spec.rb +5 -0
  363. data/spec/opal/core/enumerable/drop_while_break_spec.rb +5 -0
  364. data/spec/opal/core/enumerable/each_slice_break.rb +6 -0
  365. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +5 -0
  366. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +5 -0
  367. data/spec/opal/core/enumerable/find_all_break_spec.rb +5 -0
  368. data/spec/opal/core/enumerable/find_index_break_spec.rb +5 -0
  369. data/spec/opal/core/enumerable/grep_break_spec.rb +5 -0
  370. data/spec/opal/core/enumerable/max_break_spec.rb +5 -0
  371. data/spec/opal/core/enumerable/max_by_break_spec.rb +5 -0
  372. data/spec/opal/core/enumerable/min_break_spec.rb +5 -0
  373. data/spec/opal/core/enumerable/min_by_break_spec.rb +5 -0
  374. data/spec/opal/core/enumerable/none_break_spec.rb +5 -0
  375. data/spec/opal/core/enumerable/one_break_spec.rb +5 -0
  376. data/spec/opal/core/enumerable/reduce_break_spec.rb +5 -0
  377. data/spec/opal/core/enumerable/take_while_break_spec.rb +5 -0
  378. data/spec/opal/core/exception_spec.rb +13 -0
  379. data/spec/opal/core/fixtures/class.rb +124 -0
  380. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  381. data/spec/opal/core/fixtures/constants.rb +33 -0
  382. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
  383. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
  384. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
  385. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
  386. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
  387. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +1 -0
  388. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +1 -0
  389. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +1 -0
  390. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +1 -0
  391. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +1 -0
  392. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +1 -0
  393. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +3 -0
  394. data/spec/opal/core/hash/has_value_spec.rb +13 -0
  395. data/spec/opal/core/hash/internals_spec.rb +332 -0
  396. data/spec/opal/core/kernel/Array_spec.rb +10 -0
  397. data/spec/opal/core/kernel/block_given_spec.rb +30 -0
  398. data/spec/opal/core/kernel/class_spec.rb +6 -0
  399. data/spec/opal/core/kernel/define_singleton_method_spec.rb +21 -0
  400. data/spec/opal/core/kernel/equal_value_spec.rb +12 -0
  401. data/spec/opal/core/kernel/extend_spec.rb +21 -0
  402. data/spec/opal/core/kernel/format_spec.rb +122 -0
  403. data/spec/opal/core/kernel/freeze_spec.rb +15 -0
  404. data/spec/opal/core/kernel/instance_eval_spec.rb +28 -0
  405. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +15 -0
  406. data/spec/opal/core/kernel/instance_variable_get_spec.rb +14 -0
  407. data/spec/opal/core/kernel/instance_variable_set_spec.rb +10 -0
  408. data/spec/opal/core/kernel/loop_spec.rb +23 -0
  409. data/spec/opal/core/kernel/match_spec.rb +5 -0
  410. data/spec/opal/core/kernel/method_spec.rb +31 -0
  411. data/spec/opal/core/kernel/methods_spec.rb +25 -0
  412. data/spec/opal/core/kernel/nil_spec.rb +7 -0
  413. data/spec/opal/core/kernel/p_spec.rb +15 -0
  414. data/spec/opal/core/kernel/printf_spec.rb +11 -0
  415. data/spec/opal/core/kernel/proc_spec.rb +13 -0
  416. data/spec/opal/core/kernel/rand_spec.rb +23 -0
  417. data/spec/opal/core/kernel/require_tree_spec.rb +18 -0
  418. data/spec/opal/core/kernel/respond_to_spec.rb +41 -0
  419. data/spec/opal/core/kernel/send_spec.rb +56 -0
  420. data/spec/opal/core/kernel/sprintf_spec.rb +5 -0
  421. data/spec/opal/core/language/block_spec.rb +538 -0
  422. data/spec/opal/core/language/fixtures/array.rb +11 -0
  423. data/spec/opal/core/language/fixtures/block.rb +57 -0
  424. data/spec/opal/core/language/fixtures/break.rb +240 -0
  425. data/spec/opal/core/language/fixtures/ensure.rb +72 -0
  426. data/spec/opal/core/language/fixtures/literal_lambda.rb +7 -0
  427. data/spec/opal/core/language/fixtures/metaclass.rb +33 -0
  428. data/spec/opal/core/language/fixtures/module.rb +24 -0
  429. data/spec/opal/core/language/fixtures/next.rb +128 -0
  430. data/spec/opal/core/language/fixtures/return.rb +118 -0
  431. data/spec/opal/core/language/fixtures/send.rb +110 -0
  432. data/spec/opal/core/language/fixtures/send_1.9.rb +22 -0
  433. data/spec/opal/core/language/fixtures/super.rb +308 -0
  434. data/spec/opal/core/language/fixtures/variables.rb +58 -0
  435. data/spec/opal/core/language/fixtures/yield.rb +28 -0
  436. data/spec/opal/core/language/predefined_spec.rb +138 -0
  437. data/spec/opal/core/language/proc_spec.rb +263 -0
  438. data/spec/opal/core/language/regexp_spec.rb +20 -0
  439. data/spec/opal/core/language/send_spec.rb +225 -0
  440. data/spec/opal/core/language/string_spec.rb +44 -0
  441. data/spec/opal/core/language/variables_spec.rb +1366 -0
  442. data/spec/opal/core/language/versions/array_1.9.rb +39 -0
  443. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  444. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  445. data/spec/opal/core/language/versions/case_1.9.rb +20 -0
  446. data/spec/opal/core/language/versions/def_2_0_spec.rb +62 -0
  447. data/spec/opal/core/language/versions/hash_1.9.rb +18 -0
  448. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +143 -0
  449. data/spec/opal/core/language/versions/not_1.9.rb +22 -0
  450. data/spec/opal/core/language/versions/send_1.9.rb +241 -0
  451. data/spec/opal/core/language/versions/symbol_1.9.rb +15 -0
  452. data/spec/opal/core/language/versions/variables_1.9.rb +8 -0
  453. data/spec/opal/core/language_spec.rb +23 -0
  454. data/spec/opal/core/method/to_proc_spec.rb +28 -0
  455. data/spec/opal/core/module/alias_method_spec.rb +28 -0
  456. data/spec/opal/core/module/ancestors_spec.rb +11 -0
  457. data/spec/opal/core/module/append_features_spec.rb +14 -0
  458. data/spec/opal/core/module/attr_accessor_spec.rb +26 -0
  459. data/spec/opal/core/module/const_defined_spec.rb +85 -0
  460. data/spec/opal/core/module/const_get_spec.rb +85 -0
  461. data/spec/opal/core/module/const_missing_spec.rb +17 -0
  462. data/spec/opal/core/module/const_set_spec.rb +64 -0
  463. data/spec/opal/core/module/constants_spec.rb +49 -0
  464. data/spec/opal/core/module/fixtures/classes.rb +434 -0
  465. data/spec/opal/core/module/method_defined_spec.rb +48 -0
  466. data/spec/opal/core/module/module_function_spec.rb +25 -0
  467. data/spec/opal/core/module/name_spec.rb +52 -0
  468. data/spec/opal/core/module/public_method_defined_spec.rb +18 -0
  469. data/spec/opal/core/module/remove_const_spec.rb +22 -0
  470. data/spec/opal/core/module/undef_method_spec.rb +66 -0
  471. data/spec/opal/core/numeric/bit_and_spec.rb +7 -0
  472. data/spec/opal/core/numeric/bit_or_spec.rb +8 -0
  473. data/spec/opal/core/numeric/bit_xor_spec.rb +6 -0
  474. data/spec/opal/core/numeric/ceil_spec.rb +8 -0
  475. data/spec/opal/core/numeric/chr_spec.rb +8 -0
  476. data/spec/opal/core/numeric/comparison_spec.rb +24 -0
  477. data/spec/opal/core/numeric/complement_spec.rb +8 -0
  478. data/spec/opal/core/numeric/divide_spec.rb +10 -0
  479. data/spec/opal/core/numeric/eql_spec.rb +9 -0
  480. data/spec/opal/core/numeric/exponent_spec.rb +33 -0
  481. data/spec/opal/core/numeric/floor_spec.rb +8 -0
  482. data/spec/opal/core/numeric/gt_spec.rb +11 -0
  483. data/spec/opal/core/numeric/gte_spec.rb +12 -0
  484. data/spec/opal/core/numeric/integer_spec.rb +9 -0
  485. data/spec/opal/core/numeric/left_shift_spec.rb +21 -0
  486. data/spec/opal/core/numeric/lt_spec.rb +11 -0
  487. data/spec/opal/core/numeric/lte_spec.rb +12 -0
  488. data/spec/opal/core/numeric/minus_spec.rb +8 -0
  489. data/spec/opal/core/numeric/modulo_spec.rb +19 -0
  490. data/spec/opal/core/numeric/multiply_spec.rb +9 -0
  491. data/spec/opal/core/numeric/next_spec.rb +9 -0
  492. data/spec/opal/core/numeric/ord_spec.rb +9 -0
  493. data/spec/opal/core/numeric/plus_spec.rb +8 -0
  494. data/spec/opal/core/numeric/pred_spec.rb +7 -0
  495. data/spec/opal/core/numeric/right_shift_spec.rb +25 -0
  496. data/spec/opal/core/numeric/step_spec.rb +11 -0
  497. data/spec/opal/core/numeric/succ_spec.rb +9 -0
  498. data/spec/opal/core/numeric/times_spec.rb +36 -0
  499. data/spec/opal/core/numeric/to_f_spec.rb +7 -0
  500. data/spec/opal/core/numeric/to_i_spec.rb +7 -0
  501. data/spec/opal/core/numeric/to_json_spec.rb +8 -0
  502. data/spec/opal/core/numeric/to_s_spec.rb +26 -0
  503. data/spec/opal/core/numeric/uminus_spec.rb +9 -0
  504. data/spec/opal/core/numeric/upto_spec.rb +19 -0
  505. data/spec/opal/core/numeric/zero_spec.rb +7 -0
  506. data/spec/opal/core/object_id_spec.rb +56 -0
  507. data/spec/opal/core/proc/call_spec.rb +21 -0
  508. data/spec/opal/core/proc/element_reference_spec.rb +21 -0
  509. data/spec/opal/core/proc/proc_tricks_spec.rb +7 -0
  510. data/spec/opal/core/runtime/begin_spec.rb +39 -0
  511. data/spec/opal/core/runtime/block_send_spec.rb +28 -0
  512. data/spec/opal/core/runtime/block_spec.rb +23 -0
  513. data/spec/opal/core/runtime/bridged_classes_spec.rb +111 -0
  514. data/spec/opal/core/runtime/constants_spec.rb +13 -0
  515. data/spec/opal/core/runtime/donate_spec.rb +53 -0
  516. data/spec/opal/core/runtime/eval_spec.rb +5 -0
  517. data/spec/opal/core/runtime/main_methods_spec.rb +27 -0
  518. data/spec/opal/core/runtime/method_missing_spec.rb +62 -0
  519. data/spec/opal/core/runtime/method_spec.rb +31 -0
  520. data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
  521. data/spec/opal/core/runtime/paren_spec.rb +14 -0
  522. data/spec/opal/core/runtime/rescue_spec.rb +38 -0
  523. data/spec/opal/core/runtime/return_spec.rb +38 -0
  524. data/spec/opal/core/runtime/send_spec.rb +34 -0
  525. data/spec/opal/core/runtime/singleton_class_spec.rb +13 -0
  526. data/spec/opal/core/runtime/super_spec.rb +212 -0
  527. data/spec/opal/core/runtime/truthy_spec.rb +23 -0
  528. data/spec/opal/core/runtime/variables_spec.rb +20 -0
  529. data/spec/opal/core/runtime_spec.rb +58 -0
  530. data/spec/opal/core/source_map_spec.rb +15 -0
  531. data/spec/opal/core/string_spec.rb +11 -0
  532. data/spec/opal/stdlib/erb/erb_spec.rb +30 -0
  533. data/spec/opal/stdlib/erb/inline_block.opalerb +3 -0
  534. data/spec/opal/stdlib/erb/quoted.opalerb +1 -0
  535. data/spec/opal/stdlib/erb/simple.opalerb +1 -0
  536. data/spec/opal/stdlib/js_spec.rb +66 -0
  537. data/spec/opal/stdlib/json/ext_spec.rb +48 -0
  538. data/spec/opal/stdlib/json/parse_spec.rb +33 -0
  539. data/spec/opal/stdlib/native/alias_native_spec.rb +27 -0
  540. data/spec/opal/stdlib/native/each_spec.rb +13 -0
  541. data/spec/opal/stdlib/native/element_reference_spec.rb +16 -0
  542. data/spec/opal/stdlib/native/exposure_spec.rb +33 -0
  543. data/spec/opal/stdlib/native/ext_spec.rb +19 -0
  544. data/spec/opal/stdlib/native/initialize_spec.rb +17 -0
  545. data/spec/opal/stdlib/native/method_missing_spec.rb +51 -0
  546. data/spec/opal/stdlib/native/native_alias_spec.rb +19 -0
  547. data/spec/opal/stdlib/native/native_class_spec.rb +18 -0
  548. data/spec/opal/stdlib/native/native_module_spec.rb +13 -0
  549. data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
  550. data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
  551. data/spec/opal/stdlib/native/new_spec.rb +8 -0
  552. data/spec/opal/stdlib/promise/always_spec.rb +30 -0
  553. data/spec/opal/stdlib/promise/error_spec.rb +15 -0
  554. data/spec/opal/stdlib/promise/rescue_spec.rb +44 -0
  555. data/spec/opal/stdlib/promise/then_spec.rb +71 -0
  556. data/spec/opal/stdlib/promise/trace_spec.rb +52 -0
  557. data/spec/opal/stdlib/promise/value_spec.rb +15 -0
  558. data/spec/opal/stdlib/promise/when_spec.rb +34 -0
  559. data/spec/opal/stdlib/template/paths_spec.rb +10 -0
  560. data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
  561. data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
  562. data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
  563. data/spec/rubyspecs +144 -0
  564. data/spec/spec_helper.rb +53 -0
  565. data/spec/support/mspec_rspec_adapter.rb +33 -0
  566. data/spec/support/parser_helpers.rb +37 -0
  567. data/stdlib/README.md +3 -0
  568. data/stdlib/base64.rb +152 -0
  569. data/stdlib/benchmark.rb +557 -0
  570. data/stdlib/buffer.rb +41 -0
  571. data/stdlib/buffer/array.rb +66 -0
  572. data/stdlib/buffer/view.rb +70 -0
  573. data/stdlib/date.rb +248 -0
  574. data/stdlib/delegate.rb +29 -0
  575. data/stdlib/dir.rb +1 -0
  576. data/stdlib/encoding.rb +170 -0
  577. data/stdlib/enumerator.rb +1 -0
  578. data/stdlib/erb.rb +16 -0
  579. data/stdlib/file.rb +1 -0
  580. data/stdlib/fileutils.rb +0 -0
  581. data/stdlib/forwardable.rb +71 -0
  582. data/stdlib/iconv.rb +0 -0
  583. data/stdlib/js.rb +56 -0
  584. data/stdlib/json.rb +190 -0
  585. data/stdlib/math.rb +370 -0
  586. data/stdlib/native.rb +530 -0
  587. data/stdlib/nodejs.rb +7 -0
  588. data/stdlib/nodejs/dir.rb +13 -0
  589. data/stdlib/nodejs/file.rb +98 -0
  590. data/stdlib/nodejs/fileutils.rb +26 -0
  591. data/stdlib/nodejs/io.rb +2 -0
  592. data/stdlib/nodejs/irb.rb +45 -0
  593. data/stdlib/nodejs/kernel.rb +33 -0
  594. data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
  595. data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
  596. data/stdlib/nodejs/node_modules/glob/README.md +357 -0
  597. data/stdlib/nodejs/node_modules/glob/common.js +177 -0
  598. data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
  599. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  600. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  601. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
  602. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  603. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  604. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  605. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  606. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  607. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  608. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
  609. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
  610. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  611. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
  612. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  613. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  614. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
  615. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
  616. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  617. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  618. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  619. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
  620. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  621. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  622. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  623. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  624. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  625. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  626. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  627. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  628. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  629. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
  630. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  631. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  632. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  633. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  634. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  635. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  636. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  637. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  638. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  639. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  640. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  641. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  642. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  643. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  644. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  645. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  646. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  647. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  648. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  649. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  650. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  651. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  652. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  653. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  654. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  655. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  656. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
  657. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  658. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  659. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  660. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  661. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
  662. data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
  663. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  664. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  665. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  666. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  667. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  668. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
  669. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
  670. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
  671. data/stdlib/nodejs/node_modules/glob/package.json +72 -0
  672. data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
  673. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
  674. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
  675. data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
  676. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
  677. data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
  678. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
  679. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
  680. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
  681. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
  682. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
  683. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
  684. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
  685. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
  686. data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
  687. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
  688. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
  689. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
  690. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  691. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
  692. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  693. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  694. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  695. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  696. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  697. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  698. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  699. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  700. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
  701. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
  702. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
  703. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
  704. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
  705. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
  706. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
  707. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  708. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  709. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  710. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
  711. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
  712. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
  714. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  715. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  725. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  726. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  727. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  728. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  729. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  730. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  731. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  732. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  733. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  734. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  735. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  736. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  737. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  738. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  739. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  740. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  741. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  742. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  743. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  744. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  745. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  746. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  747. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  748. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
  749. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  750. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  751. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
  752. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  753. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
  754. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
  755. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
  756. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
  757. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  758. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
  759. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
  760. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  761. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  762. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
  763. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
  764. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
  765. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
  766. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
  767. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
  768. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
  769. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  770. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  771. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  772. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  773. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
  774. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  775. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  776. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  777. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  778. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  779. data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
  780. data/stdlib/nodejs/package.json +6 -0
  781. data/stdlib/nodejs/require.rb +30 -0
  782. data/stdlib/nodejs/rubygems.rb +68 -0
  783. data/stdlib/nodejs/yaml.rb +11 -0
  784. data/stdlib/observer.rb +202 -0
  785. data/stdlib/opal-parser.rb +54 -0
  786. data/stdlib/opal-source-maps.rb +2 -0
  787. data/stdlib/ostruct.rb +69 -0
  788. data/stdlib/pathname.rb +55 -0
  789. data/stdlib/phantomjs.rb +3 -0
  790. data/stdlib/pp.rb +35 -0
  791. data/stdlib/promise.rb +427 -0
  792. data/stdlib/racc/parser.rb +215 -0
  793. data/stdlib/rbconfig.rb +18 -0
  794. data/stdlib/securerandom.rb +12 -0
  795. data/stdlib/set.rb +170 -0
  796. data/stdlib/singleton.rb +40 -0
  797. data/stdlib/source_map.rb +5 -0
  798. data/stdlib/source_map/map.rb +220 -0
  799. data/stdlib/source_map/mapping.rb +26 -0
  800. data/stdlib/source_map/offset.rb +88 -0
  801. data/stdlib/source_map/version.rb +3 -0
  802. data/stdlib/source_map/vlq.rb +98 -0
  803. data/stdlib/sourcemap.rb +1 -0
  804. data/stdlib/stringio.rb +181 -0
  805. data/stdlib/strscan.rb +166 -0
  806. data/stdlib/template.rb +46 -0
  807. data/stdlib/thread.rb +164 -0
  808. data/stdlib/time.rb +9 -0
  809. data/stdlib/yaml.rb +1 -0
  810. data/tasks/benchmarking.rake +88 -0
  811. data/tasks/building.rake +58 -0
  812. data/tasks/documenting.rake +37 -0
  813. data/tasks/github.rake +19 -0
  814. data/tasks/linting.rake +18 -0
  815. data/tasks/testing.rake +125 -0
  816. data/vendored-minitest/minitest.rb +780 -0
  817. data/vendored-minitest/minitest/assertions.rb +662 -0
  818. data/vendored-minitest/minitest/autorun.rb +12 -0
  819. data/vendored-minitest/minitest/benchmark.rb +426 -0
  820. data/vendored-minitest/minitest/expectations.rb +281 -0
  821. data/vendored-minitest/minitest/hell.rb +11 -0
  822. data/vendored-minitest/minitest/mock.rb +220 -0
  823. data/vendored-minitest/minitest/parallel.rb +65 -0
  824. data/vendored-minitest/minitest/pride.rb +4 -0
  825. data/vendored-minitest/minitest/pride_plugin.rb +142 -0
  826. data/vendored-minitest/minitest/spec.rb +310 -0
  827. data/vendored-minitest/minitest/test.rb +293 -0
  828. data/vendored-minitest/minitest/unit.rb +45 -0
  829. data/vendored-minitest/test/unit.rb +28 -0
  830. metadata +1058 -0
@@ -0,0 +1,16 @@
1
+ The ISC License
2
+
3
+ Copyright (c) Isaac Z. Schlueter
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
16
+
@@ -0,0 +1,42 @@
1
+ Browser-friendly inheritance fully compatible with standard node.js
2
+ [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
3
+
4
+ This package exports standard `inherits` from node.js `util` module in
5
+ node environment, but also provides alternative browser-friendly
6
+ implementation through [browser
7
+ field](https://gist.github.com/shtylman/4339901). Alternative
8
+ implementation is a literal copy of standard one located in standalone
9
+ module to avoid requiring of `util`. It also has a shim for old
10
+ browsers with no `Object.create` support.
11
+
12
+ While keeping you sure you are using standard `inherits`
13
+ implementation in node.js environment, it allows bundlers such as
14
+ [browserify](https://github.com/substack/node-browserify) to not
15
+ include full `util` package to your client code if all you need is
16
+ just `inherits` function. It worth, because browser shim for `util`
17
+ package is large and `inherits` is often the single function you need
18
+ from it.
19
+
20
+ It's recommended to use this package instead of
21
+ `require('util').inherits` for any code that has chances to be used
22
+ not only in node.js but in browser too.
23
+
24
+ ## usage
25
+
26
+ ```js
27
+ var inherits = require('inherits');
28
+ // then use exactly as the standard one
29
+ ```
30
+
31
+ ## note on version ~1.0
32
+
33
+ Version ~1.0 had completely different motivation and is not compatible
34
+ neither with 2.0 nor with standard node.js `inherits`.
35
+
36
+ If you are using version ~1.0 and planning to switch to ~2.0, be
37
+ careful:
38
+
39
+ * new version uses `super_` instead of `super` for referencing
40
+ superclass
41
+ * new version overwrites current prototype while old one preserves any
42
+ existing fields on it
@@ -0,0 +1 @@
1
+ module.exports = require('util').inherits
@@ -0,0 +1,23 @@
1
+ if (typeof Object.create === 'function') {
2
+ // implementation from standard node.js 'util' module
3
+ module.exports = function inherits(ctor, superCtor) {
4
+ ctor.super_ = superCtor
5
+ ctor.prototype = Object.create(superCtor.prototype, {
6
+ constructor: {
7
+ value: ctor,
8
+ enumerable: false,
9
+ writable: true,
10
+ configurable: true
11
+ }
12
+ });
13
+ };
14
+ } else {
15
+ // old school shim for old browsers
16
+ module.exports = function inherits(ctor, superCtor) {
17
+ ctor.super_ = superCtor
18
+ var TempCtor = function () {}
19
+ TempCtor.prototype = superCtor.prototype
20
+ ctor.prototype = new TempCtor()
21
+ ctor.prototype.constructor = ctor
22
+ }
23
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "inherits",
3
+ "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
4
+ "version": "2.0.1",
5
+ "keywords": [
6
+ "inheritance",
7
+ "class",
8
+ "klass",
9
+ "oop",
10
+ "object-oriented",
11
+ "inherits",
12
+ "browser",
13
+ "browserify"
14
+ ],
15
+ "main": "./inherits.js",
16
+ "browser": "./inherits_browser.js",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git://github.com/isaacs/inherits"
20
+ },
21
+ "license": "ISC",
22
+ "scripts": {
23
+ "test": "node test"
24
+ },
25
+ "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n",
26
+ "readmeFilename": "README.md",
27
+ "bugs": {
28
+ "url": "https://github.com/isaacs/inherits/issues"
29
+ },
30
+ "_id": "inherits@2.0.1",
31
+ "dist": {
32
+ "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
33
+ "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
34
+ },
35
+ "_from": "inherits@>=2.0.0 <3.0.0",
36
+ "_npmVersion": "1.3.8",
37
+ "_npmUser": {
38
+ "name": "isaacs",
39
+ "email": "i@izs.me"
40
+ },
41
+ "maintainers": [
42
+ {
43
+ "name": "isaacs",
44
+ "email": "i@izs.me"
45
+ }
46
+ ],
47
+ "directories": {},
48
+ "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
49
+ "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
50
+ "homepage": "https://github.com/isaacs/inherits"
51
+ }
@@ -0,0 +1,25 @@
1
+ var inherits = require('./inherits.js')
2
+ var assert = require('assert')
3
+
4
+ function test(c) {
5
+ assert(c.constructor === Child)
6
+ assert(c.constructor.super_ === Parent)
7
+ assert(Object.getPrototypeOf(c) === Child.prototype)
8
+ assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
9
+ assert(c instanceof Child)
10
+ assert(c instanceof Parent)
11
+ }
12
+
13
+ function Child() {
14
+ Parent.call(this)
15
+ test(this)
16
+ }
17
+
18
+ function Parent() {}
19
+
20
+ inherits(Child, Parent)
21
+
22
+ var c = new Child
23
+ test(c)
24
+
25
+ console.log('ok')
@@ -0,0 +1,4 @@
1
+ language: node_js
2
+ node_js:
3
+ - 0.10
4
+ - 0.11
@@ -0,0 +1,23 @@
1
+ Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
2
+ All rights reserved.
3
+
4
+ Permission is hereby granted, free of charge, to any person
5
+ obtaining a copy of this software and associated documentation
6
+ files (the "Software"), to deal in the Software without
7
+ restriction, including without limitation the rights to use,
8
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the
10
+ Software is furnished to do so, subject to the following
11
+ conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,216 @@
1
+ # minimatch
2
+
3
+ A minimal matching utility.
4
+
5
+ [![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)
6
+
7
+
8
+ This is the matching library used internally by npm.
9
+
10
+ It works by converting glob expressions into JavaScript `RegExp`
11
+ objects.
12
+
13
+ ## Usage
14
+
15
+ ```javascript
16
+ var minimatch = require("minimatch")
17
+
18
+ minimatch("bar.foo", "*.foo") // true!
19
+ minimatch("bar.foo", "*.bar") // false!
20
+ minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!
21
+ ```
22
+
23
+ ## Features
24
+
25
+ Supports these glob features:
26
+
27
+ * Brace Expansion
28
+ * Extended glob matching
29
+ * "Globstar" `**` matching
30
+
31
+ See:
32
+
33
+ * `man sh`
34
+ * `man bash`
35
+ * `man 3 fnmatch`
36
+ * `man 5 gitignore`
37
+
38
+ ## Minimatch Class
39
+
40
+ Create a minimatch object by instanting the `minimatch.Minimatch` class.
41
+
42
+ ```javascript
43
+ var Minimatch = require("minimatch").Minimatch
44
+ var mm = new Minimatch(pattern, options)
45
+ ```
46
+
47
+ ### Properties
48
+
49
+ * `pattern` The original pattern the minimatch object represents.
50
+ * `options` The options supplied to the constructor.
51
+ * `set` A 2-dimensional array of regexp or string expressions.
52
+ Each row in the
53
+ array corresponds to a brace-expanded pattern. Each item in the row
54
+ corresponds to a single path-part. For example, the pattern
55
+ `{a,b/c}/d` would expand to a set of patterns like:
56
+
57
+ [ [ a, d ]
58
+ , [ b, c, d ] ]
59
+
60
+ If a portion of the pattern doesn't have any "magic" in it
61
+ (that is, it's something like `"foo"` rather than `fo*o?`), then it
62
+ will be left as a string rather than converted to a regular
63
+ expression.
64
+
65
+ * `regexp` Created by the `makeRe` method. A single regular expression
66
+ expressing the entire pattern. This is useful in cases where you wish
67
+ to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
68
+ * `negate` True if the pattern is negated.
69
+ * `comment` True if the pattern is a comment.
70
+ * `empty` True if the pattern is `""`.
71
+
72
+ ### Methods
73
+
74
+ * `makeRe` Generate the `regexp` member if necessary, and return it.
75
+ Will return `false` if the pattern is invalid.
76
+ * `match(fname)` Return true if the filename matches the pattern, or
77
+ false otherwise.
78
+ * `matchOne(fileArray, patternArray, partial)` Take a `/`-split
79
+ filename, and match it against a single row in the `regExpSet`. This
80
+ method is mainly for internal use, but is exposed so that it can be
81
+ used by a glob-walker that needs to avoid excessive filesystem calls.
82
+
83
+ All other methods are internal, and will be called as necessary.
84
+
85
+ ## Functions
86
+
87
+ The top-level exported function has a `cache` property, which is an LRU
88
+ cache set to store 100 items. So, calling these methods repeatedly
89
+ with the same pattern and options will use the same Minimatch object,
90
+ saving the cost of parsing it multiple times.
91
+
92
+ ### minimatch(path, pattern, options)
93
+
94
+ Main export. Tests a path against the pattern using the options.
95
+
96
+ ```javascript
97
+ var isJS = minimatch(file, "*.js", { matchBase: true })
98
+ ```
99
+
100
+ ### minimatch.filter(pattern, options)
101
+
102
+ Returns a function that tests its
103
+ supplied argument, suitable for use with `Array.filter`. Example:
104
+
105
+ ```javascript
106
+ var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
107
+ ```
108
+
109
+ ### minimatch.match(list, pattern, options)
110
+
111
+ Match against the list of
112
+ files, in the style of fnmatch or glob. If nothing is matched, and
113
+ options.nonull is set, then return a list containing the pattern itself.
114
+
115
+ ```javascript
116
+ var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
117
+ ```
118
+
119
+ ### minimatch.makeRe(pattern, options)
120
+
121
+ Make a regular expression object from the pattern.
122
+
123
+ ## Options
124
+
125
+ All options are `false` by default.
126
+
127
+ ### debug
128
+
129
+ Dump a ton of stuff to stderr.
130
+
131
+ ### nobrace
132
+
133
+ Do not expand `{a,b}` and `{1..3}` brace sets.
134
+
135
+ ### noglobstar
136
+
137
+ Disable `**` matching against multiple folder names.
138
+
139
+ ### dot
140
+
141
+ Allow patterns to match filenames starting with a period, even if
142
+ the pattern does not explicitly have a period in that spot.
143
+
144
+ Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
145
+ is set.
146
+
147
+ ### noext
148
+
149
+ Disable "extglob" style patterns like `+(a|b)`.
150
+
151
+ ### nocase
152
+
153
+ Perform a case-insensitive match.
154
+
155
+ ### nonull
156
+
157
+ When a match is not found by `minimatch.match`, return a list containing
158
+ the pattern itself if this option is set. When not set, an empty list
159
+ is returned if there are no matches.
160
+
161
+ ### matchBase
162
+
163
+ If set, then patterns without slashes will be matched
164
+ against the basename of the path if it contains slashes. For example,
165
+ `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
166
+
167
+ ### nocomment
168
+
169
+ Suppress the behavior of treating `#` at the start of a pattern as a
170
+ comment.
171
+
172
+ ### nonegate
173
+
174
+ Suppress the behavior of treating a leading `!` character as negation.
175
+
176
+ ### flipNegate
177
+
178
+ Returns from negate expressions the same as if they were not negated.
179
+ (Ie, true on a hit, false on a miss.)
180
+
181
+
182
+ ## Comparisons to other fnmatch/glob implementations
183
+
184
+ While strict compliance with the existing standards is a worthwhile
185
+ goal, some discrepancies exist between minimatch and other
186
+ implementations, and are intentional.
187
+
188
+ If the pattern starts with a `!` character, then it is negated. Set the
189
+ `nonegate` flag to suppress this behavior, and treat leading `!`
190
+ characters normally. This is perhaps relevant if you wish to start the
191
+ pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
192
+ characters at the start of a pattern will negate the pattern multiple
193
+ times.
194
+
195
+ If a pattern starts with `#`, then it is treated as a comment, and
196
+ will not match anything. Use `\#` to match a literal `#` at the
197
+ start of a line, or set the `nocomment` flag to suppress this behavior.
198
+
199
+ The double-star character `**` is supported by default, unless the
200
+ `noglobstar` flag is set. This is supported in the manner of bsdglob
201
+ and bash 4.1, where `**` only has special significance if it is the only
202
+ thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
203
+ `a/**b` will not.
204
+
205
+ If an escaped pattern has no matches, and the `nonull` flag is set,
206
+ then minimatch.match returns the pattern as-provided, rather than
207
+ interpreting the character escapes. For example,
208
+ `minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
209
+ `"*a?"`. This is akin to setting the `nullglob` option in bash, except
210
+ that it does not resolve escaped pattern characters.
211
+
212
+ If brace expansion is not disabled, then it is performed before any
213
+ other interpretation of the glob pattern. Thus, a pattern like
214
+ `+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
215
+ **first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
216
+ checked for validity. Since those two are valid, matching proceeds.
@@ -0,0 +1,15 @@
1
+ var m = require('./minimatch.js')
2
+ var pattern = "**/*.js"
3
+ var expand = require('brace-expansion')
4
+ var files = expand('x/y/z/{1..1000}.js')
5
+ var start = process.hrtime()
6
+
7
+ for (var i = 0; i < 1000; i++) {
8
+ for (var f = 0; f < files.length; f++) {
9
+ var res = m(pattern, files[f])
10
+ }
11
+ if (!(i%10)) process.stdout.write('.')
12
+ }
13
+ console.log('done')
14
+ var dur = process.hrtime(start)
15
+ console.log('%s ms', dur[0]*1e3 + dur[1]/1e6)
@@ -0,0 +1,1181 @@
1
+ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
+ (function (process){
3
+ module.exports = minimatch
4
+ minimatch.Minimatch = Minimatch
5
+
6
+ var isWindows = false
7
+ if (typeof process !== 'undefined' && process.platform === 'win32')
8
+ isWindows = true
9
+
10
+ var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
11
+ , expand = require("brace-expansion")
12
+
13
+ // any single thing other than /
14
+ // don't need to escape / when using new RegExp()
15
+ , qmark = "[^/]"
16
+
17
+ // * => any number of characters
18
+ , star = qmark + "*?"
19
+
20
+ // ** when dots are allowed. Anything goes, except .. and .
21
+ // not (^ or / followed by one or two dots followed by $ or /),
22
+ // followed by anything, any number of times.
23
+ , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?"
24
+
25
+ // not a ^ or / followed by a dot,
26
+ // followed by anything, any number of times.
27
+ , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?"
28
+
29
+ // characters that need to be escaped in RegExp.
30
+ , reSpecials = charSet("().*{}+?[]^$\\!")
31
+
32
+ // "abc" -> { a:true, b:true, c:true }
33
+ function charSet (s) {
34
+ return s.split("").reduce(function (set, c) {
35
+ set[c] = true
36
+ return set
37
+ }, {})
38
+ }
39
+
40
+ // normalizes slashes.
41
+ var slashSplit = /\/+/
42
+
43
+ minimatch.filter = filter
44
+ function filter (pattern, options) {
45
+ options = options || {}
46
+ return function (p, i, list) {
47
+ return minimatch(p, pattern, options)
48
+ }
49
+ }
50
+
51
+ function ext (a, b) {
52
+ a = a || {}
53
+ b = b || {}
54
+ var t = {}
55
+ Object.keys(b).forEach(function (k) {
56
+ t[k] = b[k]
57
+ })
58
+ Object.keys(a).forEach(function (k) {
59
+ t[k] = a[k]
60
+ })
61
+ return t
62
+ }
63
+
64
+ minimatch.defaults = function (def) {
65
+ if (!def || !Object.keys(def).length) return minimatch
66
+
67
+ var orig = minimatch
68
+
69
+ var m = function minimatch (p, pattern, options) {
70
+ return orig.minimatch(p, pattern, ext(def, options))
71
+ }
72
+
73
+ m.Minimatch = function Minimatch (pattern, options) {
74
+ return new orig.Minimatch(pattern, ext(def, options))
75
+ }
76
+
77
+ return m
78
+ }
79
+
80
+ Minimatch.defaults = function (def) {
81
+ if (!def || !Object.keys(def).length) return Minimatch
82
+ return minimatch.defaults(def).Minimatch
83
+ }
84
+
85
+
86
+ function minimatch (p, pattern, options) {
87
+ if (typeof pattern !== "string") {
88
+ throw new TypeError("glob pattern string required")
89
+ }
90
+
91
+ if (!options) options = {}
92
+
93
+ // shortcut: comments match nothing.
94
+ if (!options.nocomment && pattern.charAt(0) === "#") {
95
+ return false
96
+ }
97
+
98
+ // "" only matches ""
99
+ if (pattern.trim() === "") return p === ""
100
+
101
+ return new Minimatch(pattern, options).match(p)
102
+ }
103
+
104
+ function Minimatch (pattern, options) {
105
+ if (!(this instanceof Minimatch)) {
106
+ return new Minimatch(pattern, options)
107
+ }
108
+
109
+ if (typeof pattern !== "string") {
110
+ throw new TypeError("glob pattern string required")
111
+ }
112
+
113
+ if (!options) options = {}
114
+ pattern = pattern.trim()
115
+
116
+ // windows support: need to use /, not \
117
+ if (isWindows)
118
+ pattern = pattern.split("\\").join("/")
119
+
120
+ this.options = options
121
+ this.set = []
122
+ this.pattern = pattern
123
+ this.regexp = null
124
+ this.negate = false
125
+ this.comment = false
126
+ this.empty = false
127
+
128
+ // make the set of regexps etc.
129
+ this.make()
130
+ }
131
+
132
+ Minimatch.prototype.debug = function() {}
133
+
134
+ Minimatch.prototype.make = make
135
+ function make () {
136
+ // don't do it more than once.
137
+ if (this._made) return
138
+
139
+ var pattern = this.pattern
140
+ var options = this.options
141
+
142
+ // empty patterns and comments match nothing.
143
+ if (!options.nocomment && pattern.charAt(0) === "#") {
144
+ this.comment = true
145
+ return
146
+ }
147
+ if (!pattern) {
148
+ this.empty = true
149
+ return
150
+ }
151
+
152
+ // step 1: figure out negation, etc.
153
+ this.parseNegate()
154
+
155
+ // step 2: expand braces
156
+ var set = this.globSet = this.braceExpand()
157
+
158
+ if (options.debug) this.debug = console.error
159
+
160
+ this.debug(this.pattern, set)
161
+
162
+ // step 3: now we have a set, so turn each one into a series of path-portion
163
+ // matching patterns.
164
+ // These will be regexps, except in the case of "**", which is
165
+ // set to the GLOBSTAR object for globstar behavior,
166
+ // and will not contain any / characters
167
+ set = this.globParts = set.map(function (s) {
168
+ return s.split(slashSplit)
169
+ })
170
+
171
+ this.debug(this.pattern, set)
172
+
173
+ // glob --> regexps
174
+ set = set.map(function (s, si, set) {
175
+ return s.map(this.parse, this)
176
+ }, this)
177
+
178
+ this.debug(this.pattern, set)
179
+
180
+ // filter out everything that didn't compile properly.
181
+ set = set.filter(function (s) {
182
+ return -1 === s.indexOf(false)
183
+ })
184
+
185
+ this.debug(this.pattern, set)
186
+
187
+ this.set = set
188
+ }
189
+
190
+ Minimatch.prototype.parseNegate = parseNegate
191
+ function parseNegate () {
192
+ var pattern = this.pattern
193
+ , negate = false
194
+ , options = this.options
195
+ , negateOffset = 0
196
+
197
+ if (options.nonegate) return
198
+
199
+ for ( var i = 0, l = pattern.length
200
+ ; i < l && pattern.charAt(i) === "!"
201
+ ; i ++) {
202
+ negate = !negate
203
+ negateOffset ++
204
+ }
205
+
206
+ if (negateOffset) this.pattern = pattern.substr(negateOffset)
207
+ this.negate = negate
208
+ }
209
+
210
+ // Brace expansion:
211
+ // a{b,c}d -> abd acd
212
+ // a{b,}c -> abc ac
213
+ // a{0..3}d -> a0d a1d a2d a3d
214
+ // a{b,c{d,e}f}g -> abg acdfg acefg
215
+ // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
216
+ //
217
+ // Invalid sets are not expanded.
218
+ // a{2..}b -> a{2..}b
219
+ // a{b}c -> a{b}c
220
+ minimatch.braceExpand = function (pattern, options) {
221
+ return braceExpand(pattern, options)
222
+ }
223
+
224
+ Minimatch.prototype.braceExpand = braceExpand
225
+
226
+ function braceExpand (pattern, options) {
227
+ if (!options) {
228
+ if (this instanceof Minimatch)
229
+ options = this.options
230
+ else
231
+ options = {}
232
+ }
233
+
234
+ pattern = typeof pattern === "undefined"
235
+ ? this.pattern : pattern
236
+
237
+ if (typeof pattern === "undefined") {
238
+ throw new Error("undefined pattern")
239
+ }
240
+
241
+ if (options.nobrace ||
242
+ !pattern.match(/\{.*\}/)) {
243
+ // shortcut. no need to expand.
244
+ return [pattern]
245
+ }
246
+
247
+ return expand(pattern)
248
+ }
249
+
250
+ // parse a component of the expanded set.
251
+ // At this point, no pattern may contain "/" in it
252
+ // so we're going to return a 2d array, where each entry is the full
253
+ // pattern, split on '/', and then turned into a regular expression.
254
+ // A regexp is made at the end which joins each array with an
255
+ // escaped /, and another full one which joins each regexp with |.
256
+ //
257
+ // Following the lead of Bash 4.1, note that "**" only has special meaning
258
+ // when it is the *only* thing in a path portion. Otherwise, any series
259
+ // of * is equivalent to a single *. Globstar behavior is enabled by
260
+ // default, and can be disabled by setting options.noglobstar.
261
+ Minimatch.prototype.parse = parse
262
+ var SUBPARSE = {}
263
+ function parse (pattern, isSub) {
264
+ var options = this.options
265
+
266
+ // shortcuts
267
+ if (!options.noglobstar && pattern === "**") return GLOBSTAR
268
+ if (pattern === "") return ""
269
+
270
+ var re = ""
271
+ , hasMagic = !!options.nocase
272
+ , escaping = false
273
+ // ? => one single character
274
+ , patternListStack = []
275
+ , plType
276
+ , stateChar
277
+ , inClass = false
278
+ , reClassStart = -1
279
+ , classStart = -1
280
+ // . and .. never match anything that doesn't start with .,
281
+ // even when options.dot is set.
282
+ , patternStart = pattern.charAt(0) === "." ? "" // anything
283
+ // not (start or / followed by . or .. followed by / or end)
284
+ : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))"
285
+ : "(?!\\.)"
286
+ , self = this
287
+
288
+ function clearStateChar () {
289
+ if (stateChar) {
290
+ // we had some state-tracking character
291
+ // that wasn't consumed by this pass.
292
+ switch (stateChar) {
293
+ case "*":
294
+ re += star
295
+ hasMagic = true
296
+ break
297
+ case "?":
298
+ re += qmark
299
+ hasMagic = true
300
+ break
301
+ default:
302
+ re += "\\"+stateChar
303
+ break
304
+ }
305
+ self.debug('clearStateChar %j %j', stateChar, re)
306
+ stateChar = false
307
+ }
308
+ }
309
+
310
+ for ( var i = 0, len = pattern.length, c
311
+ ; (i < len) && (c = pattern.charAt(i))
312
+ ; i ++ ) {
313
+
314
+ this.debug("%s\t%s %s %j", pattern, i, re, c)
315
+
316
+ // skip over any that are escaped.
317
+ if (escaping && reSpecials[c]) {
318
+ re += "\\" + c
319
+ escaping = false
320
+ continue
321
+ }
322
+
323
+ SWITCH: switch (c) {
324
+ case "/":
325
+ // completely not allowed, even escaped.
326
+ // Should already be path-split by now.
327
+ return false
328
+
329
+ case "\\":
330
+ clearStateChar()
331
+ escaping = true
332
+ continue
333
+
334
+ // the various stateChar values
335
+ // for the "extglob" stuff.
336
+ case "?":
337
+ case "*":
338
+ case "+":
339
+ case "@":
340
+ case "!":
341
+ this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c)
342
+
343
+ // all of those are literals inside a class, except that
344
+ // the glob [!a] means [^a] in regexp
345
+ if (inClass) {
346
+ this.debug(' in class')
347
+ if (c === "!" && i === classStart + 1) c = "^"
348
+ re += c
349
+ continue
350
+ }
351
+
352
+ // if we already have a stateChar, then it means
353
+ // that there was something like ** or +? in there.
354
+ // Handle the stateChar, then proceed with this one.
355
+ self.debug('call clearStateChar %j', stateChar)
356
+ clearStateChar()
357
+ stateChar = c
358
+ // if extglob is disabled, then +(asdf|foo) isn't a thing.
359
+ // just clear the statechar *now*, rather than even diving into
360
+ // the patternList stuff.
361
+ if (options.noext) clearStateChar()
362
+ continue
363
+
364
+ case "(":
365
+ if (inClass) {
366
+ re += "("
367
+ continue
368
+ }
369
+
370
+ if (!stateChar) {
371
+ re += "\\("
372
+ continue
373
+ }
374
+
375
+ plType = stateChar
376
+ patternListStack.push({ type: plType
377
+ , start: i - 1
378
+ , reStart: re.length })
379
+ // negation is (?:(?!js)[^/]*)
380
+ re += stateChar === "!" ? "(?:(?!" : "(?:"
381
+ this.debug('plType %j %j', stateChar, re)
382
+ stateChar = false
383
+ continue
384
+
385
+ case ")":
386
+ if (inClass || !patternListStack.length) {
387
+ re += "\\)"
388
+ continue
389
+ }
390
+
391
+ clearStateChar()
392
+ hasMagic = true
393
+ re += ")"
394
+ plType = patternListStack.pop().type
395
+ // negation is (?:(?!js)[^/]*)
396
+ // The others are (?:<pattern>)<type>
397
+ switch (plType) {
398
+ case "!":
399
+ re += "[^/]*?)"
400
+ break
401
+ case "?":
402
+ case "+":
403
+ case "*": re += plType
404
+ case "@": break // the default anyway
405
+ }
406
+ continue
407
+
408
+ case "|":
409
+ if (inClass || !patternListStack.length || escaping) {
410
+ re += "\\|"
411
+ escaping = false
412
+ continue
413
+ }
414
+
415
+ clearStateChar()
416
+ re += "|"
417
+ continue
418
+
419
+ // these are mostly the same in regexp and glob
420
+ case "[":
421
+ // swallow any state-tracking char before the [
422
+ clearStateChar()
423
+
424
+ if (inClass) {
425
+ re += "\\" + c
426
+ continue
427
+ }
428
+
429
+ inClass = true
430
+ classStart = i
431
+ reClassStart = re.length
432
+ re += c
433
+ continue
434
+
435
+ case "]":
436
+ // a right bracket shall lose its special
437
+ // meaning and represent itself in
438
+ // a bracket expression if it occurs
439
+ // first in the list. -- POSIX.2 2.8.3.2
440
+ if (i === classStart + 1 || !inClass) {
441
+ re += "\\" + c
442
+ escaping = false
443
+ continue
444
+ }
445
+
446
+ // finish up the class.
447
+ hasMagic = true
448
+ inClass = false
449
+ re += c
450
+ continue
451
+
452
+ default:
453
+ // swallow any state char that wasn't consumed
454
+ clearStateChar()
455
+
456
+ if (escaping) {
457
+ // no need
458
+ escaping = false
459
+ } else if (reSpecials[c]
460
+ && !(c === "^" && inClass)) {
461
+ re += "\\"
462
+ }
463
+
464
+ re += c
465
+
466
+ } // switch
467
+ } // for
468
+
469
+
470
+ // handle the case where we left a class open.
471
+ // "[abc" is valid, equivalent to "\[abc"
472
+ if (inClass) {
473
+ // split where the last [ was, and escape it
474
+ // this is a huge pita. We now have to re-walk
475
+ // the contents of the would-be class to re-translate
476
+ // any characters that were passed through as-is
477
+ var cs = pattern.substr(classStart + 1)
478
+ , sp = this.parse(cs, SUBPARSE)
479
+ re = re.substr(0, reClassStart) + "\\[" + sp[0]
480
+ hasMagic = hasMagic || sp[1]
481
+ }
482
+
483
+ // handle the case where we had a +( thing at the *end*
484
+ // of the pattern.
485
+ // each pattern list stack adds 3 chars, and we need to go through
486
+ // and escape any | chars that were passed through as-is for the regexp.
487
+ // Go through and escape them, taking care not to double-escape any
488
+ // | chars that were already escaped.
489
+ var pl
490
+ while (pl = patternListStack.pop()) {
491
+ var tail = re.slice(pl.reStart + 3)
492
+ // maybe some even number of \, then maybe 1 \, followed by a |
493
+ tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
494
+ if (!$2) {
495
+ // the | isn't already escaped, so escape it.
496
+ $2 = "\\"
497
+ }
498
+
499
+ // need to escape all those slashes *again*, without escaping the
500
+ // one that we need for escaping the | character. As it works out,
501
+ // escaping an even number of slashes can be done by simply repeating
502
+ // it exactly after itself. That's why this trick works.
503
+ //
504
+ // I am sorry that you have to see this.
505
+ return $1 + $1 + $2 + "|"
506
+ })
507
+
508
+ this.debug("tail=%j\n %s", tail, tail)
509
+ var t = pl.type === "*" ? star
510
+ : pl.type === "?" ? qmark
511
+ : "\\" + pl.type
512
+
513
+ hasMagic = true
514
+ re = re.slice(0, pl.reStart)
515
+ + t + "\\("
516
+ + tail
517
+ }
518
+
519
+ // handle trailing things that only matter at the very end.
520
+ clearStateChar()
521
+ if (escaping) {
522
+ // trailing \\
523
+ re += "\\\\"
524
+ }
525
+
526
+ // only need to apply the nodot start if the re starts with
527
+ // something that could conceivably capture a dot
528
+ var addPatternStart = false
529
+ switch (re.charAt(0)) {
530
+ case ".":
531
+ case "[":
532
+ case "(": addPatternStart = true
533
+ }
534
+
535
+ // if the re is not "" at this point, then we need to make sure
536
+ // it doesn't match against an empty path part.
537
+ // Otherwise a/* will match a/, which it should not.
538
+ if (re !== "" && hasMagic) re = "(?=.)" + re
539
+
540
+ if (addPatternStart) re = patternStart + re
541
+
542
+ // parsing just a piece of a larger pattern.
543
+ if (isSub === SUBPARSE) {
544
+ return [ re, hasMagic ]
545
+ }
546
+
547
+ // skip the regexp for non-magical patterns
548
+ // unescape anything in it, though, so that it'll be
549
+ // an exact match against a file etc.
550
+ if (!hasMagic) {
551
+ return globUnescape(pattern)
552
+ }
553
+
554
+ var flags = options.nocase ? "i" : ""
555
+ , regExp = new RegExp("^" + re + "$", flags)
556
+
557
+ regExp._glob = pattern
558
+ regExp._src = re
559
+
560
+ return regExp
561
+ }
562
+
563
+ minimatch.makeRe = function (pattern, options) {
564
+ return new Minimatch(pattern, options || {}).makeRe()
565
+ }
566
+
567
+ Minimatch.prototype.makeRe = makeRe
568
+ function makeRe () {
569
+ if (this.regexp || this.regexp === false) return this.regexp
570
+
571
+ // at this point, this.set is a 2d array of partial
572
+ // pattern strings, or "**".
573
+ //
574
+ // It's better to use .match(). This function shouldn't
575
+ // be used, really, but it's pretty convenient sometimes,
576
+ // when you just want to work with a regex.
577
+ var set = this.set
578
+
579
+ if (!set.length) return this.regexp = false
580
+ var options = this.options
581
+
582
+ var twoStar = options.noglobstar ? star
583
+ : options.dot ? twoStarDot
584
+ : twoStarNoDot
585
+ , flags = options.nocase ? "i" : ""
586
+
587
+ var re = set.map(function (pattern) {
588
+ return pattern.map(function (p) {
589
+ return (p === GLOBSTAR) ? twoStar
590
+ : (typeof p === "string") ? regExpEscape(p)
591
+ : p._src
592
+ }).join("\\\/")
593
+ }).join("|")
594
+
595
+ // must match entire pattern
596
+ // ending in a * or ** will make it less strict.
597
+ re = "^(?:" + re + ")$"
598
+
599
+ // can match anything, as long as it's not this.
600
+ if (this.negate) re = "^(?!" + re + ").*$"
601
+
602
+ try {
603
+ return this.regexp = new RegExp(re, flags)
604
+ } catch (ex) {
605
+ return this.regexp = false
606
+ }
607
+ }
608
+
609
+ minimatch.match = function (list, pattern, options) {
610
+ options = options || {}
611
+ var mm = new Minimatch(pattern, options)
612
+ list = list.filter(function (f) {
613
+ return mm.match(f)
614
+ })
615
+ if (mm.options.nonull && !list.length) {
616
+ list.push(pattern)
617
+ }
618
+ return list
619
+ }
620
+
621
+ Minimatch.prototype.match = match
622
+ function match (f, partial) {
623
+ this.debug("match", f, this.pattern)
624
+ // short-circuit in the case of busted things.
625
+ // comments, etc.
626
+ if (this.comment) return false
627
+ if (this.empty) return f === ""
628
+
629
+ if (f === "/" && partial) return true
630
+
631
+ var options = this.options
632
+
633
+ // windows: need to use /, not \
634
+ if (isWindows)
635
+ f = f.split("\\").join("/")
636
+
637
+ // treat the test path as a set of pathparts.
638
+ f = f.split(slashSplit)
639
+ this.debug(this.pattern, "split", f)
640
+
641
+ // just ONE of the pattern sets in this.set needs to match
642
+ // in order for it to be valid. If negating, then just one
643
+ // match means that we have failed.
644
+ // Either way, return on the first hit.
645
+
646
+ var set = this.set
647
+ this.debug(this.pattern, "set", set)
648
+
649
+ // Find the basename of the path by looking for the last non-empty segment
650
+ var filename;
651
+ for (var i = f.length - 1; i >= 0; i--) {
652
+ filename = f[i]
653
+ if (filename) break
654
+ }
655
+
656
+ for (var i = 0, l = set.length; i < l; i ++) {
657
+ var pattern = set[i], file = f
658
+ if (options.matchBase && pattern.length === 1) {
659
+ file = [filename]
660
+ }
661
+ var hit = this.matchOne(file, pattern, partial)
662
+ if (hit) {
663
+ if (options.flipNegate) return true
664
+ return !this.negate
665
+ }
666
+ }
667
+
668
+ // didn't get any hits. this is success if it's a negative
669
+ // pattern, failure otherwise.
670
+ if (options.flipNegate) return false
671
+ return this.negate
672
+ }
673
+
674
+ // set partial to true to test if, for example,
675
+ // "/a/b" matches the start of "/*/b/*/d"
676
+ // Partial means, if you run out of file before you run
677
+ // out of pattern, then that's fine, as long as all
678
+ // the parts match.
679
+ Minimatch.prototype.matchOne = function (file, pattern, partial) {
680
+ var options = this.options
681
+
682
+ this.debug("matchOne",
683
+ { "this": this
684
+ , file: file
685
+ , pattern: pattern })
686
+
687
+ this.debug("matchOne", file.length, pattern.length)
688
+
689
+ for ( var fi = 0
690
+ , pi = 0
691
+ , fl = file.length
692
+ , pl = pattern.length
693
+ ; (fi < fl) && (pi < pl)
694
+ ; fi ++, pi ++ ) {
695
+
696
+ this.debug("matchOne loop")
697
+ var p = pattern[pi]
698
+ , f = file[fi]
699
+
700
+ this.debug(pattern, p, f)
701
+
702
+ // should be impossible.
703
+ // some invalid regexp stuff in the set.
704
+ if (p === false) return false
705
+
706
+ if (p === GLOBSTAR) {
707
+ this.debug('GLOBSTAR', [pattern, p, f])
708
+
709
+ // "**"
710
+ // a/**/b/**/c would match the following:
711
+ // a/b/x/y/z/c
712
+ // a/x/y/z/b/c
713
+ // a/b/x/b/x/c
714
+ // a/b/c
715
+ // To do this, take the rest of the pattern after
716
+ // the **, and see if it would match the file remainder.
717
+ // If so, return success.
718
+ // If not, the ** "swallows" a segment, and try again.
719
+ // This is recursively awful.
720
+ //
721
+ // a/**/b/**/c matching a/b/x/y/z/c
722
+ // - a matches a
723
+ // - doublestar
724
+ // - matchOne(b/x/y/z/c, b/**/c)
725
+ // - b matches b
726
+ // - doublestar
727
+ // - matchOne(x/y/z/c, c) -> no
728
+ // - matchOne(y/z/c, c) -> no
729
+ // - matchOne(z/c, c) -> no
730
+ // - matchOne(c, c) yes, hit
731
+ var fr = fi
732
+ , pr = pi + 1
733
+ if (pr === pl) {
734
+ this.debug('** at the end')
735
+ // a ** at the end will just swallow the rest.
736
+ // We have found a match.
737
+ // however, it will not swallow /.x, unless
738
+ // options.dot is set.
739
+ // . and .. are *never* matched by **, for explosively
740
+ // exponential reasons.
741
+ for ( ; fi < fl; fi ++) {
742
+ if (file[fi] === "." || file[fi] === ".." ||
743
+ (!options.dot && file[fi].charAt(0) === ".")) return false
744
+ }
745
+ return true
746
+ }
747
+
748
+ // ok, let's see if we can swallow whatever we can.
749
+ WHILE: while (fr < fl) {
750
+ var swallowee = file[fr]
751
+
752
+ this.debug('\nglobstar while',
753
+ file, fr, pattern, pr, swallowee)
754
+
755
+ // XXX remove this slice. Just pass the start index.
756
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
757
+ this.debug('globstar found match!', fr, fl, swallowee)
758
+ // found a match.
759
+ return true
760
+ } else {
761
+ // can't swallow "." or ".." ever.
762
+ // can only swallow ".foo" when explicitly asked.
763
+ if (swallowee === "." || swallowee === ".." ||
764
+ (!options.dot && swallowee.charAt(0) === ".")) {
765
+ this.debug("dot detected!", file, fr, pattern, pr)
766
+ break WHILE
767
+ }
768
+
769
+ // ** swallows a segment, and continue.
770
+ this.debug('globstar swallow a segment, and continue')
771
+ fr ++
772
+ }
773
+ }
774
+ // no match was found.
775
+ // However, in partial mode, we can't say this is necessarily over.
776
+ // If there's more *pattern* left, then
777
+ if (partial) {
778
+ // ran out of file
779
+ this.debug("\n>>> no match, partial?", file, fr, pattern, pr)
780
+ if (fr === fl) return true
781
+ }
782
+ return false
783
+ }
784
+
785
+ // something other than **
786
+ // non-magic patterns just have to match exactly
787
+ // patterns with magic have been turned into regexps.
788
+ var hit
789
+ if (typeof p === "string") {
790
+ if (options.nocase) {
791
+ hit = f.toLowerCase() === p.toLowerCase()
792
+ } else {
793
+ hit = f === p
794
+ }
795
+ this.debug("string match", p, f, hit)
796
+ } else {
797
+ hit = f.match(p)
798
+ this.debug("pattern match", p, f, hit)
799
+ }
800
+
801
+ if (!hit) return false
802
+ }
803
+
804
+ // Note: ending in / means that we'll get a final ""
805
+ // at the end of the pattern. This can only match a
806
+ // corresponding "" at the end of the file.
807
+ // If the file ends in /, then it can only match a
808
+ // a pattern that ends in /, unless the pattern just
809
+ // doesn't have any more for it. But, a/b/ should *not*
810
+ // match "a/b/*", even though "" matches against the
811
+ // [^/]*? pattern, except in partial mode, where it might
812
+ // simply not be reached yet.
813
+ // However, a/b/ should still satisfy a/*
814
+
815
+ // now either we fell off the end of the pattern, or we're done.
816
+ if (fi === fl && pi === pl) {
817
+ // ran out of pattern and filename at the same time.
818
+ // an exact hit!
819
+ return true
820
+ } else if (fi === fl) {
821
+ // ran out of file, but still had pattern left.
822
+ // this is ok if we're doing the match as part of
823
+ // a glob fs traversal.
824
+ return partial
825
+ } else if (pi === pl) {
826
+ // ran out of pattern, still have file left.
827
+ // this is only acceptable if we're on the very last
828
+ // empty segment of a file with a trailing slash.
829
+ // a/* should match a/b/
830
+ var emptyFileEnd = (fi === fl - 1) && (file[fi] === "")
831
+ return emptyFileEnd
832
+ }
833
+
834
+ // should be unreachable.
835
+ throw new Error("wtf?")
836
+ }
837
+
838
+
839
+ // replace stuff like \* with *
840
+ function globUnescape (s) {
841
+ return s.replace(/\\(.)/g, "$1")
842
+ }
843
+
844
+
845
+ function regExpEscape (s) {
846
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
847
+ }
848
+
849
+ }).call(this,require('_process'))
850
+ },{"_process":5,"brace-expansion":2}],2:[function(require,module,exports){
851
+ var concatMap = require('concat-map');
852
+ var balanced = require('balanced-match');
853
+
854
+ module.exports = expandTop;
855
+
856
+ var escSlash = '\0SLASH'+Math.random()+'\0';
857
+ var escOpen = '\0OPEN'+Math.random()+'\0';
858
+ var escClose = '\0CLOSE'+Math.random()+'\0';
859
+ var escComma = '\0COMMA'+Math.random()+'\0';
860
+ var escPeriod = '\0PERIOD'+Math.random()+'\0';
861
+
862
+ function numeric(str) {
863
+ return parseInt(str, 10) == str
864
+ ? parseInt(str, 10)
865
+ : str.charCodeAt(0);
866
+ }
867
+
868
+ function escapeBraces(str) {
869
+ return str.split('\\\\').join(escSlash)
870
+ .split('\\{').join(escOpen)
871
+ .split('\\}').join(escClose)
872
+ .split('\\,').join(escComma)
873
+ .split('\\.').join(escPeriod);
874
+ }
875
+
876
+ function unescapeBraces(str) {
877
+ return str.split(escSlash).join('\\')
878
+ .split(escOpen).join('{')
879
+ .split(escClose).join('}')
880
+ .split(escComma).join(',')
881
+ .split(escPeriod).join('.');
882
+ }
883
+
884
+
885
+ // Basically just str.split(","), but handling cases
886
+ // where we have nested braced sections, which should be
887
+ // treated as individual members, like {a,{b,c},d}
888
+ function parseCommaParts(str) {
889
+ if (!str)
890
+ return [''];
891
+
892
+ var parts = [];
893
+ var m = balanced('{', '}', str);
894
+
895
+ if (!m)
896
+ return str.split(',');
897
+
898
+ var pre = m.pre;
899
+ var body = m.body;
900
+ var post = m.post;
901
+ var p = pre.split(',');
902
+
903
+ p[p.length-1] += '{' + body + '}';
904
+ var postParts = parseCommaParts(post);
905
+ if (post.length) {
906
+ p[p.length-1] += postParts.shift();
907
+ p.push.apply(p, postParts);
908
+ }
909
+
910
+ parts.push.apply(parts, p);
911
+
912
+ return parts;
913
+ }
914
+
915
+ function expandTop(str) {
916
+ if (!str)
917
+ return [];
918
+
919
+ var expansions = expand(escapeBraces(str));
920
+ return expansions.filter(identity).map(unescapeBraces);
921
+ }
922
+
923
+ function identity(e) {
924
+ return e;
925
+ }
926
+
927
+ function embrace(str) {
928
+ return '{' + str + '}';
929
+ }
930
+ function isPadded(el) {
931
+ return /^-?0\d/.test(el);
932
+ }
933
+
934
+ function lte(i, y) {
935
+ return i <= y;
936
+ }
937
+ function gte(i, y) {
938
+ return i >= y;
939
+ }
940
+
941
+ function expand(str) {
942
+ var expansions = [];
943
+
944
+ var m = balanced('{', '}', str);
945
+ if (!m || /\$$/.test(m.pre)) return [str];
946
+
947
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
948
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
949
+ var isSequence = isNumericSequence || isAlphaSequence;
950
+ var isOptions = /^(.*,)+(.+)?$/.test(m.body);
951
+ if (!isSequence && !isOptions) {
952
+ // {a},b}
953
+ if (m.post.match(/,.*}/)) {
954
+ str = m.pre + '{' + m.body + escClose + m.post;
955
+ return expand(str);
956
+ }
957
+ return [str];
958
+ }
959
+
960
+ var n;
961
+ if (isSequence) {
962
+ n = m.body.split(/\.\./);
963
+ } else {
964
+ n = parseCommaParts(m.body);
965
+ if (n.length === 1) {
966
+ // x{{a,b}}y ==> x{a}y x{b}y
967
+ n = expand(n[0]).map(embrace);
968
+ if (n.length === 1) {
969
+ var post = m.post.length
970
+ ? expand(m.post)
971
+ : [''];
972
+ return post.map(function(p) {
973
+ return m.pre + n[0] + p;
974
+ });
975
+ }
976
+ }
977
+ }
978
+
979
+ // at this point, n is the parts, and we know it's not a comma set
980
+ // with a single entry.
981
+
982
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
983
+ var pre = m.pre;
984
+ var post = m.post.length
985
+ ? expand(m.post)
986
+ : [''];
987
+
988
+ var N;
989
+
990
+ if (isSequence) {
991
+ var x = numeric(n[0]);
992
+ var y = numeric(n[1]);
993
+ var width = Math.max(n[0].length, n[1].length)
994
+ var incr = n.length == 3
995
+ ? Math.abs(numeric(n[2]))
996
+ : 1;
997
+ var test = lte;
998
+ var reverse = y < x;
999
+ if (reverse) {
1000
+ incr *= -1;
1001
+ test = gte;
1002
+ }
1003
+ var pad = n.some(isPadded);
1004
+
1005
+ N = [];
1006
+
1007
+ for (var i = x; test(i, y); i += incr) {
1008
+ var c;
1009
+ if (isAlphaSequence) {
1010
+ c = String.fromCharCode(i);
1011
+ if (c === '\\')
1012
+ c = '';
1013
+ } else {
1014
+ c = String(i);
1015
+ if (pad) {
1016
+ var need = width - c.length;
1017
+ if (need > 0) {
1018
+ var z = new Array(need + 1).join('0');
1019
+ if (i < 0)
1020
+ c = '-' + z + c.slice(1);
1021
+ else
1022
+ c = z + c;
1023
+ }
1024
+ }
1025
+ }
1026
+ N.push(c);
1027
+ }
1028
+ } else {
1029
+ N = concatMap(n, function(el) { return expand(el) });
1030
+ }
1031
+
1032
+ for (var j = 0; j < N.length; j++) {
1033
+ for (var k = 0; k < post.length; k++) {
1034
+ expansions.push([pre, N[j], post[k]].join(''))
1035
+ }
1036
+ }
1037
+
1038
+ return expansions;
1039
+ }
1040
+
1041
+
1042
+ },{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){
1043
+ module.exports = balanced;
1044
+ function balanced(a, b, str) {
1045
+ var bal = 0;
1046
+ var m = {};
1047
+ var ended = false;
1048
+
1049
+ for (var i = 0; i < str.length; i++) {
1050
+ if (a == str.substr(i, a.length)) {
1051
+ if (!('start' in m)) m.start = i;
1052
+ bal++;
1053
+ }
1054
+ else if (b == str.substr(i, b.length) && 'start' in m) {
1055
+ ended = true;
1056
+ bal--;
1057
+ if (!bal) {
1058
+ m.end = i;
1059
+ m.pre = str.substr(0, m.start);
1060
+ m.body = (m.end - m.start > 1)
1061
+ ? str.substring(m.start + a.length, m.end)
1062
+ : '';
1063
+ m.post = str.slice(m.end + b.length);
1064
+ return m;
1065
+ }
1066
+ }
1067
+ }
1068
+
1069
+ // if we opened more than we closed, find the one we closed
1070
+ if (bal && ended) {
1071
+ var start = m.start + a.length;
1072
+ m = balanced(a, b, str.substr(start));
1073
+ if (m) {
1074
+ m.start += start;
1075
+ m.end += start;
1076
+ m.pre = str.slice(0, start) + m.pre;
1077
+ }
1078
+ return m;
1079
+ }
1080
+ }
1081
+
1082
+ },{}],4:[function(require,module,exports){
1083
+ module.exports = function (xs, fn) {
1084
+ var res = [];
1085
+ for (var i = 0; i < xs.length; i++) {
1086
+ var x = fn(xs[i], i);
1087
+ if (Array.isArray(x)) res.push.apply(res, x);
1088
+ else res.push(x);
1089
+ }
1090
+ return res;
1091
+ };
1092
+
1093
+ },{}],5:[function(require,module,exports){
1094
+ // shim for using process in browser
1095
+
1096
+ var process = module.exports = {};
1097
+
1098
+ process.nextTick = (function () {
1099
+ var canSetImmediate = typeof window !== 'undefined'
1100
+ && window.setImmediate;
1101
+ var canMutationObserver = typeof window !== 'undefined'
1102
+ && window.MutationObserver;
1103
+ var canPost = typeof window !== 'undefined'
1104
+ && window.postMessage && window.addEventListener
1105
+ ;
1106
+
1107
+ if (canSetImmediate) {
1108
+ return function (f) { return window.setImmediate(f) };
1109
+ }
1110
+
1111
+ var queue = [];
1112
+
1113
+ if (canMutationObserver) {
1114
+ var hiddenDiv = document.createElement("div");
1115
+ var observer = new MutationObserver(function () {
1116
+ var queueList = queue.slice();
1117
+ queue.length = 0;
1118
+ queueList.forEach(function (fn) {
1119
+ fn();
1120
+ });
1121
+ });
1122
+
1123
+ observer.observe(hiddenDiv, { attributes: true });
1124
+
1125
+ return function nextTick(fn) {
1126
+ if (!queue.length) {
1127
+ hiddenDiv.setAttribute('yes', 'no');
1128
+ }
1129
+ queue.push(fn);
1130
+ };
1131
+ }
1132
+
1133
+ if (canPost) {
1134
+ window.addEventListener('message', function (ev) {
1135
+ var source = ev.source;
1136
+ if ((source === window || source === null) && ev.data === 'process-tick') {
1137
+ ev.stopPropagation();
1138
+ if (queue.length > 0) {
1139
+ var fn = queue.shift();
1140
+ fn();
1141
+ }
1142
+ }
1143
+ }, true);
1144
+
1145
+ return function nextTick(fn) {
1146
+ queue.push(fn);
1147
+ window.postMessage('process-tick', '*');
1148
+ };
1149
+ }
1150
+
1151
+ return function nextTick(fn) {
1152
+ setTimeout(fn, 0);
1153
+ };
1154
+ })();
1155
+
1156
+ process.title = 'browser';
1157
+ process.browser = true;
1158
+ process.env = {};
1159
+ process.argv = [];
1160
+
1161
+ function noop() {}
1162
+
1163
+ process.on = noop;
1164
+ process.addListener = noop;
1165
+ process.once = noop;
1166
+ process.off = noop;
1167
+ process.removeListener = noop;
1168
+ process.removeAllListeners = noop;
1169
+ process.emit = noop;
1170
+
1171
+ process.binding = function (name) {
1172
+ throw new Error('process.binding is not supported');
1173
+ };
1174
+
1175
+ // TODO(shtylman)
1176
+ process.cwd = function () { return '/' };
1177
+ process.chdir = function (dir) {
1178
+ throw new Error('process.chdir is not supported');
1179
+ };
1180
+
1181
+ },{}]},{},[1]);