opal 0.11.4 → 1.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (379) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +42 -10
  3. data/.rubocop.yml +398 -0
  4. data/.rubocop_todo.yml +44 -0
  5. data/.travis.yml +28 -34
  6. data/CHANGELOG.md +363 -142
  7. data/CONTRIBUTING.md +3 -5
  8. data/Gemfile +17 -12
  9. data/Guardfile +0 -1
  10. data/HACKING.md +1 -35
  11. data/LICENSE +2 -2
  12. data/README.md +42 -13
  13. data/Rakefile +1 -4
  14. data/UNRELEASED.md +133 -0
  15. data/benchmark-ips/README.md +6 -0
  16. data/benchmark-ips/bm_block_vs_yield.rb +21 -0
  17. data/benchmark-ips/bm_js_symbols_vs_strings.rb +28 -0
  18. data/benchmark-ips/bm_while_true_vs_loop.rb +19 -0
  19. data/bin/console +14 -0
  20. data/bin/opal +0 -1
  21. data/bin/opal-benchmark-ips +8 -0
  22. data/bin/opal-mspec +9 -1
  23. data/bin/opal-repl +2 -1
  24. data/bin/rake +7 -0
  25. data/bin/setup +8 -0
  26. data/docs/compiled_ruby.md +89 -8
  27. data/docs/compiler.md +3 -20
  28. data/docs/jquery.md +44 -11
  29. data/docs/promises.md +1 -1
  30. data/docs/rails.md +16 -12
  31. data/docs/sinatra.md +15 -8
  32. data/docs/using_sprockets.md +16 -11
  33. data/examples/rack/config.ru +1 -0
  34. data/examples/sinatra/Gemfile +1 -0
  35. data/examples/sinatra/config.ru +2 -11
  36. data/exe/opal-repl +3 -11
  37. data/lib/opal.rb +1 -0
  38. data/lib/opal/ast/builder.rb +4 -1
  39. data/lib/opal/ast/node.rb +1 -0
  40. data/lib/opal/builder.rb +84 -63
  41. data/lib/opal/builder_processors.rb +41 -56
  42. data/lib/opal/cli.rb +33 -49
  43. data/lib/opal/cli_options.rb +27 -17
  44. data/lib/opal/cli_runners.rb +73 -16
  45. data/lib/opal/cli_runners/applescript.rb +4 -4
  46. data/lib/opal/cli_runners/chrome.rb +29 -17
  47. data/lib/opal/cli_runners/nashorn.rb +5 -4
  48. data/lib/opal/cli_runners/nodejs.rb +8 -6
  49. data/lib/opal/cli_runners/server.rb +12 -11
  50. data/lib/opal/compiler.rb +85 -103
  51. data/lib/opal/config.rb +3 -3
  52. data/lib/opal/deprecations.rb +2 -1
  53. data/lib/opal/eof_content.rb +2 -2
  54. data/lib/opal/erb.rb +8 -7
  55. data/lib/opal/errors.rb +72 -1
  56. data/lib/opal/fragment.rb +23 -3
  57. data/lib/opal/hike.rb +305 -0
  58. data/lib/opal/nodes.rb +5 -10
  59. data/lib/opal/nodes/arglist.rb +7 -6
  60. data/lib/opal/nodes/args.rb +36 -0
  61. data/lib/opal/nodes/args/arg.rb +22 -0
  62. data/lib/opal/nodes/args/arity_check.rb +151 -0
  63. data/lib/opal/nodes/args/ensure_kwargs_are_kwargs.rb +28 -0
  64. data/lib/opal/nodes/args/extract_block_arg.rb +34 -0
  65. data/lib/opal/nodes/args/extract_kwarg.rb +32 -0
  66. data/lib/opal/nodes/args/extract_kwargs.rb +28 -0
  67. data/lib/opal/nodes/args/extract_kwoptarg.rb +35 -0
  68. data/lib/opal/nodes/args/extract_kwrestarg.rb +35 -0
  69. data/lib/opal/nodes/args/extract_optarg.rb +35 -0
  70. data/lib/opal/nodes/args/extract_post_arg.rb +28 -0
  71. data/lib/opal/nodes/args/extract_post_optarg.rb +41 -0
  72. data/lib/opal/nodes/args/extract_restarg.rb +40 -0
  73. data/lib/opal/nodes/args/fake_arg.rb +26 -0
  74. data/lib/opal/nodes/args/initialize_iterarg.rb +28 -0
  75. data/lib/opal/nodes/args/initialize_shadowarg.rb +24 -0
  76. data/lib/opal/nodes/args/parameters.rb +63 -0
  77. data/lib/opal/nodes/args/prepare_post_args.rb +22 -0
  78. data/lib/opal/nodes/array.rb +9 -8
  79. data/lib/opal/nodes/base.rb +20 -11
  80. data/lib/opal/nodes/call.rb +24 -25
  81. data/lib/opal/nodes/call_special.rb +4 -3
  82. data/lib/opal/nodes/case.rb +24 -26
  83. data/lib/opal/nodes/class.rb +4 -5
  84. data/lib/opal/nodes/constants.rb +8 -7
  85. data/lib/opal/nodes/csend.rb +2 -3
  86. data/lib/opal/nodes/def.rb +28 -74
  87. data/lib/opal/nodes/defined.rb +36 -36
  88. data/lib/opal/nodes/definitions.rb +10 -7
  89. data/lib/opal/nodes/defs.rb +8 -16
  90. data/lib/opal/nodes/hash.rb +5 -4
  91. data/lib/opal/nodes/helpers.rb +8 -8
  92. data/lib/opal/nodes/if.rb +10 -8
  93. data/lib/opal/nodes/iter.rb +16 -103
  94. data/lib/opal/nodes/lambda.rb +18 -0
  95. data/lib/opal/nodes/literal.rb +29 -63
  96. data/lib/opal/nodes/logic.rb +25 -24
  97. data/lib/opal/nodes/masgn.rb +8 -6
  98. data/lib/opal/nodes/module.rb +4 -4
  99. data/lib/opal/nodes/node_with_args.rb +14 -208
  100. data/lib/opal/nodes/rescue.rb +32 -32
  101. data/lib/opal/nodes/runtime_helpers.rb +5 -4
  102. data/lib/opal/nodes/scope.rb +18 -29
  103. data/lib/opal/nodes/singleton_class.rb +3 -3
  104. data/lib/opal/nodes/super.rb +12 -18
  105. data/lib/opal/nodes/top.rb +10 -8
  106. data/lib/opal/nodes/variables.rb +6 -6
  107. data/lib/opal/nodes/while.rb +7 -6
  108. data/lib/opal/nodes/x_string.rb +139 -0
  109. data/lib/opal/nodes/yield.rb +10 -7
  110. data/lib/opal/parser.rb +9 -46
  111. data/lib/opal/parser/default_config.rb +50 -0
  112. data/lib/opal/parser/patch.rb +26 -0
  113. data/lib/opal/parser/source_buffer.rb +11 -0
  114. data/lib/opal/parser/with_c_lexer.rb +14 -0
  115. data/lib/opal/parser/with_ruby_lexer.rb +6 -0
  116. data/lib/opal/path_reader.rb +6 -5
  117. data/lib/opal/paths.rb +9 -6
  118. data/lib/opal/regexp_anchors.rb +6 -5
  119. data/lib/opal/rewriter.rb +7 -0
  120. data/lib/opal/rewriters/arguments.rb +58 -0
  121. data/lib/opal/rewriters/base.rb +32 -12
  122. data/lib/opal/rewriters/binary_operator_assignment.rb +20 -20
  123. data/lib/opal/rewriters/block_to_iter.rb +2 -1
  124. data/lib/opal/rewriters/break_finder.rb +2 -0
  125. data/lib/opal/rewriters/dot_js_syntax.rb +3 -2
  126. data/lib/opal/rewriters/dump_args.rb +28 -0
  127. data/lib/opal/rewriters/explicit_writer_return.rb +4 -3
  128. data/lib/opal/rewriters/for_rewriter.rb +12 -12
  129. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +2 -1
  130. data/lib/opal/rewriters/inline_args.rb +220 -0
  131. data/lib/opal/rewriters/js_reserved_words.rb +21 -17
  132. data/lib/opal/rewriters/logical_operator_assignment.rb +24 -14
  133. data/lib/opal/rewriters/mlhs_args.rb +128 -0
  134. data/lib/opal/rewriters/opal_engine_check.rb +11 -6
  135. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +3 -2
  136. data/lib/opal/server.rb +1 -0
  137. data/lib/opal/simple_server.rb +15 -23
  138. data/lib/opal/source_map.rb +7 -70
  139. data/lib/opal/source_map/file.rb +199 -0
  140. data/lib/opal/source_map/index.rb +83 -0
  141. data/lib/opal/source_map/map.rb +26 -0
  142. data/lib/opal/source_map/vlq.rb +98 -0
  143. data/lib/opal/util.rb +7 -5
  144. data/lib/opal/version.rb +2 -1
  145. data/lib/tilt/opal.rb +3 -3
  146. data/opal.gemspec +18 -9
  147. data/opal/corelib/array.rb +135 -117
  148. data/opal/corelib/array/pack.rb +446 -0
  149. data/opal/corelib/basic_object.rb +23 -9
  150. data/opal/corelib/boolean.rb +3 -3
  151. data/opal/corelib/class.rb +4 -10
  152. data/opal/corelib/comparable.rb +36 -23
  153. data/opal/corelib/complex.rb +108 -14
  154. data/opal/corelib/constants.rb +4 -4
  155. data/opal/corelib/enumerable.rb +132 -135
  156. data/opal/corelib/enumerator.rb +47 -50
  157. data/opal/corelib/error.rb +65 -8
  158. data/opal/corelib/file.rb +37 -32
  159. data/opal/corelib/hash.rb +90 -21
  160. data/opal/corelib/helpers.rb +7 -6
  161. data/opal/corelib/kernel.rb +53 -586
  162. data/opal/corelib/kernel/format.rb +544 -0
  163. data/opal/corelib/marshal.rb +1 -13
  164. data/opal/corelib/marshal/read_buffer.rb +20 -23
  165. data/opal/corelib/marshal/write_buffer.rb +23 -15
  166. data/opal/corelib/math.rb +12 -16
  167. data/opal/corelib/method.rb +5 -3
  168. data/opal/corelib/module.rb +80 -109
  169. data/opal/corelib/nil.rb +2 -2
  170. data/opal/corelib/number.rb +177 -43
  171. data/opal/corelib/numeric.rb +22 -16
  172. data/opal/corelib/pack_unpack/format_string_parser.rb +135 -0
  173. data/opal/corelib/proc.rb +3 -4
  174. data/opal/corelib/process.rb +1 -1
  175. data/opal/corelib/random.rb +24 -16
  176. data/opal/corelib/random/MersenneTwister.js +137 -0
  177. data/opal/corelib/random/math_random.js.rb +9 -0
  178. data/opal/corelib/random/mersenne_twister.js.rb +13 -0
  179. data/opal/corelib/random/seedrandom.js.rb +12 -0
  180. data/opal/corelib/range.rb +25 -26
  181. data/opal/corelib/rational.rb +57 -17
  182. data/opal/corelib/regexp.rb +39 -43
  183. data/opal/corelib/runtime.js +806 -683
  184. data/opal/corelib/string.rb +213 -112
  185. data/opal/corelib/string/encoding.rb +14 -17
  186. data/opal/corelib/string/unpack.rb +793 -0
  187. data/opal/corelib/struct.rb +40 -24
  188. data/opal/corelib/time.rb +14 -15
  189. data/opal/corelib/unsupported.rb +26 -4
  190. data/opal/opal.rb +2 -1
  191. data/opal/opal/full.rb +2 -0
  192. data/stdlib/base64.rb +1 -1
  193. data/stdlib/bigdecimal.rb +11 -13
  194. data/stdlib/buffer.rb +9 -8
  195. data/stdlib/buffer/array.rb +46 -48
  196. data/stdlib/buffer/view.rb +85 -47
  197. data/stdlib/console.rb +18 -18
  198. data/stdlib/date.rb +85 -66
  199. data/stdlib/delegate.rb +2 -2
  200. data/stdlib/e2mmap.rb +176 -0
  201. data/stdlib/encoding.rb +1 -1
  202. data/stdlib/erb.rb +1 -1
  203. data/stdlib/forwardable.rb +14 -14
  204. data/stdlib/json.rb +1 -2
  205. data/stdlib/logger.rb +112 -0
  206. data/stdlib/math.rb +1 -1
  207. data/stdlib/matrix.rb +2169 -0
  208. data/stdlib/matrix/eigenvalue_decomposition.rb +883 -0
  209. data/stdlib/matrix/lup_decomposition.rb +219 -0
  210. data/stdlib/nashorn/file.rb +7 -9
  211. data/stdlib/native.rb +69 -63
  212. data/stdlib/nodejs.rb +3 -0
  213. data/stdlib/nodejs/dir.rb +25 -4
  214. data/stdlib/nodejs/env.rb +40 -0
  215. data/stdlib/nodejs/file.rb +184 -34
  216. data/stdlib/nodejs/fileutils.rb +4 -4
  217. data/stdlib/nodejs/io.rb +4 -46
  218. data/stdlib/nodejs/irb.rb +27 -29
  219. data/stdlib/nodejs/kernel.rb +2 -11
  220. data/stdlib/nodejs/node_modules/balanced-match/.npmignore +5 -0
  221. data/stdlib/nodejs/node_modules/balanced-match/LICENSE.md +21 -0
  222. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +13 -2
  223. data/stdlib/nodejs/node_modules/balanced-match/index.js +59 -0
  224. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/package.json +46 -42
  225. data/stdlib/nodejs/node_modules/brace-expansion/LICENSE +21 -0
  226. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +9 -1
  227. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +12 -2
  228. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/package.json +48 -48
  229. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
  230. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
  231. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
  232. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
  233. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
  234. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -42
  235. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
  236. data/stdlib/nodejs/node_modules/fs.realpath/LICENSE +43 -0
  237. data/stdlib/nodejs/node_modules/fs.realpath/README.md +33 -0
  238. data/stdlib/nodejs/node_modules/fs.realpath/index.js +66 -0
  239. data/stdlib/nodejs/node_modules/fs.realpath/old.js +303 -0
  240. data/stdlib/nodejs/node_modules/fs.realpath/package.json +59 -0
  241. data/stdlib/nodejs/node_modules/glob/README.md +57 -46
  242. data/stdlib/nodejs/node_modules/glob/changelog.md +67 -0
  243. data/stdlib/nodejs/node_modules/glob/common.js +91 -28
  244. data/stdlib/nodejs/node_modules/glob/glob.js +196 -55
  245. data/stdlib/nodejs/node_modules/glob/package.json +55 -51
  246. data/stdlib/nodejs/node_modules/glob/sync.js +116 -39
  247. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/LICENSE +0 -0
  248. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight → inflight}/README.md +0 -0
  249. data/stdlib/nodejs/node_modules/inflight/inflight.js +54 -0
  250. data/stdlib/nodejs/node_modules/inflight/package.json +58 -0
  251. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/LICENSE +0 -0
  252. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/README.md +0 -0
  253. data/stdlib/nodejs/node_modules/inherits/inherits.js +7 -0
  254. data/stdlib/nodejs/node_modules/{glob/node_modules/inherits → inherits}/inherits_browser.js +0 -0
  255. data/stdlib/nodejs/node_modules/inherits/package.json +61 -0
  256. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → minimatch}/LICENSE +0 -0
  257. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/README.md +2 -9
  258. data/stdlib/nodejs/node_modules/{glob/node_modules/minimatch → minimatch}/minimatch.js +284 -206
  259. data/stdlib/nodejs/node_modules/minimatch/package.json +63 -0
  260. data/stdlib/nodejs/node_modules/{glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
  261. data/stdlib/nodejs/node_modules/{glob/node_modules/once → once}/README.md +28 -0
  262. data/stdlib/nodejs/node_modules/once/once.js +42 -0
  263. data/stdlib/nodejs/node_modules/once/package.json +67 -0
  264. data/stdlib/nodejs/node_modules/path-is-absolute/index.js +20 -0
  265. data/stdlib/nodejs/node_modules/path-is-absolute/license +21 -0
  266. data/stdlib/nodejs/node_modules/path-is-absolute/package.json +75 -0
  267. data/stdlib/nodejs/node_modules/path-is-absolute/readme.md +59 -0
  268. data/stdlib/nodejs/node_modules/unxhr/LICENSE +22 -0
  269. data/stdlib/nodejs/node_modules/unxhr/README.md +41 -0
  270. data/stdlib/nodejs/node_modules/unxhr/lib/XMLHttpRequest.js +598 -0
  271. data/stdlib/nodejs/node_modules/unxhr/lib/browser.js +2 -0
  272. data/stdlib/nodejs/node_modules/unxhr/lib/request.js +63 -0
  273. data/stdlib/nodejs/node_modules/unxhr/package.json +75 -0
  274. data/stdlib/nodejs/node_modules/wrappy/LICENSE +15 -0
  275. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/README.md +0 -0
  276. data/stdlib/nodejs/node_modules/wrappy/package.json +59 -0
  277. data/stdlib/nodejs/node_modules/{glob/node_modules/inflight/node_modules/wrappy → wrappy}/wrappy.js +0 -0
  278. data/stdlib/nodejs/open-uri.rb +26 -0
  279. data/stdlib/nodejs/package-lock.json +88 -0
  280. data/stdlib/nodejs/package.json +2 -1
  281. data/stdlib/nodejs/pathname.rb +20 -0
  282. data/stdlib/nodejs/require.rb +3 -3
  283. data/stdlib/nodejs/stacktrace.rb +1 -1
  284. data/stdlib/nodejs/yaml.rb +1 -1
  285. data/stdlib/opal-builder.rb +1 -0
  286. data/stdlib/opal-parser.rb +4 -1
  287. data/stdlib/opal-platform.rb +8 -10
  288. data/stdlib/opal-source-maps.rb +0 -1
  289. data/stdlib/open-uri.rb +349 -0
  290. data/stdlib/ostruct.rb +19 -17
  291. data/stdlib/pathname.rb +22 -22
  292. data/stdlib/pp.rb +5 -5
  293. data/stdlib/promise.rb +30 -26
  294. data/stdlib/rbconfig/sizeof.rb +50 -0
  295. data/stdlib/securerandom.rb +1 -1
  296. data/stdlib/set.rb +21 -23
  297. data/stdlib/singleton.rb +3 -4
  298. data/stdlib/stringio.rb +33 -0
  299. data/stdlib/strscan.rb +55 -55
  300. data/stdlib/template.rb +1 -2
  301. data/stdlib/thread.rb +6 -7
  302. data/tasks/benchmarking.rake +1 -1
  303. data/tasks/building.rake +4 -12
  304. data/tasks/linting.rake +17 -2
  305. data/tasks/releasing.rake +84 -0
  306. data/tasks/testing.rake +57 -15
  307. data/tasks/testing/mspec_special_calls.rb +23 -4
  308. data/vendored-minitest/minitest.rb +1 -1
  309. metadata +169 -168
  310. data/bin/opal-build +0 -3
  311. data/exe/opal-mspec +0 -10
  312. data/lib/opal/nodes/args/initialize_kwargs.rb +0 -29
  313. data/lib/opal/nodes/args/kwarg.rb +0 -31
  314. data/lib/opal/nodes/args/kwoptarg.rb +0 -34
  315. data/lib/opal/nodes/args/kwrestarg.rb +0 -39
  316. data/lib/opal/nodes/args/mlhsarg.rb +0 -78
  317. data/lib/opal/nodes/args/normarg.rb +0 -29
  318. data/lib/opal/nodes/args/optarg.rb +0 -25
  319. data/lib/opal/nodes/args/post_args.rb +0 -201
  320. data/lib/opal/nodes/args/post_kwargs.rb +0 -32
  321. data/lib/opal/nodes/args/restarg.rb +0 -38
  322. data/lib/opal/nodes/inline_args.rb +0 -60
  323. data/opal/corelib/string/inheritance.rb +0 -123
  324. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
  325. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +0 -44
  326. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -52
  327. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
  328. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +0 -61
  329. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +0 -97
  330. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +0 -1
  331. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +0 -51
  332. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +0 -25
  333. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +0 -1
  334. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +0 -4
  335. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +0 -23
  336. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +0 -15
  337. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +0 -1181
  338. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -2
  339. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -3
  340. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
  341. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
  342. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -4
  343. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
  344. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
  345. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -38
  346. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -56
  347. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -32
  348. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -1075
  349. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -182
  350. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -9
  351. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -10
  352. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -24
  353. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -15
  354. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -16
  355. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -10
  356. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -13
  357. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -7
  358. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -50
  359. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +0 -60
  360. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +0 -399
  361. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +0 -45
  362. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +0 -274
  363. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +0 -8
  364. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +0 -27
  365. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
  366. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -52
  367. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
  368. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
  369. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +0 -21
  370. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +0 -60
  371. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +0 -23
  372. data/stdlib/nodejs/rubygems.rb +0 -68
  373. data/stdlib/source_map.rb +0 -5
  374. data/stdlib/source_map/map.rb +0 -220
  375. data/stdlib/source_map/mapping.rb +0 -26
  376. data/stdlib/source_map/offset.rb +0 -88
  377. data/stdlib/source_map/version.rb +0 -3
  378. data/stdlib/source_map/vlq.rb +0 -99
  379. data/stdlib/sourcemap.rb +0 -1
@@ -1,97 +0,0 @@
1
- var test = require('tap').test
2
- var inf = require('./inflight.js')
3
-
4
-
5
- function req (key, cb) {
6
- cb = inf(key, cb)
7
- if (cb) setTimeout(function () {
8
- cb(key)
9
- cb(key)
10
- })
11
- return cb
12
- }
13
-
14
- test('basic', function (t) {
15
- var calleda = false
16
- var a = req('key', function (k) {
17
- t.notOk(calleda)
18
- calleda = true
19
- t.equal(k, 'key')
20
- if (calledb) t.end()
21
- })
22
- t.ok(a, 'first returned cb function')
23
-
24
- var calledb = false
25
- var b = req('key', function (k) {
26
- t.notOk(calledb)
27
- calledb = true
28
- t.equal(k, 'key')
29
- if (calleda) t.end()
30
- })
31
-
32
- t.notOk(b, 'second should get falsey inflight response')
33
- })
34
-
35
- test('timing', function (t) {
36
- var expect = [
37
- 'method one',
38
- 'start one',
39
- 'end one',
40
- 'two',
41
- 'tick',
42
- 'three'
43
- ]
44
- var i = 0
45
-
46
- function log (m) {
47
- t.equal(m, expect[i], m + ' === ' + expect[i])
48
- ++i
49
- if (i === expect.length)
50
- t.end()
51
- }
52
-
53
- function method (name, cb) {
54
- log('method ' + name)
55
- process.nextTick(cb)
56
- }
57
-
58
- var one = inf('foo', function () {
59
- log('start one')
60
- var three = inf('foo', function () {
61
- log('three')
62
- })
63
- if (three) method('three', three)
64
- log('end one')
65
- })
66
-
67
- method('one', one)
68
-
69
- var two = inf('foo', function () {
70
- log('two')
71
- })
72
- if (two) method('one', two)
73
-
74
- process.nextTick(log.bind(null, 'tick'))
75
- })
76
-
77
- test('parameters', function (t) {
78
- t.plan(8)
79
-
80
- var a = inf('key', function (first, second, third) {
81
- t.equal(first, 1)
82
- t.equal(second, 2)
83
- t.equal(third, 3)
84
- })
85
- t.ok(a, 'first returned cb function')
86
-
87
- var b = inf('key', function (first, second, third) {
88
- t.equal(first, 1)
89
- t.equal(second, 2)
90
- t.equal(third, 3)
91
- })
92
- t.notOk(b, 'second should get falsey inflight response')
93
-
94
- setTimeout(function () {
95
- a(1, 2, 3)
96
- })
97
- })
@@ -1 +0,0 @@
1
- module.exports = require('util').inherits
@@ -1,51 +0,0 @@
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
- }
@@ -1,25 +0,0 @@
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')
@@ -1,4 +0,0 @@
1
- language: node_js
2
- node_js:
3
- - 0.10
4
- - 0.11
@@ -1,23 +0,0 @@
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.
@@ -1,15 +0,0 @@
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)
@@ -1,1181 +0,0 @@
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]);