opal-wedge 0.9.0.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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]);