traceur-rb 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. checksums.yaml +8 -8
  2. data/lib/traceur/configuration.rb +1 -1
  3. data/lib/traceur/version.rb +1 -1
  4. data/{vendor/node_modules → node_modules}/.bin/traceur +0 -0
  5. data/{vendor/node_modules → node_modules}/traceur/LICENSE +0 -0
  6. data/{vendor/node_modules → node_modules}/traceur/README.md +0 -0
  7. data/node_modules/traceur/bin/traceur-runtime.js +3420 -0
  8. data/node_modules/traceur/bin/traceur.js +30354 -0
  9. data/{vendor/node_modules → node_modules}/traceur/node_modules/.bin/semver +0 -0
  10. data/node_modules/traceur/node_modules/commander/History.md +256 -0
  11. data/node_modules/traceur/node_modules/commander/LICENSE +22 -0
  12. data/node_modules/traceur/node_modules/commander/Readme.md +342 -0
  13. data/node_modules/traceur/node_modules/commander/index.js +1103 -0
  14. data/node_modules/traceur/node_modules/commander/node_modules/graceful-readlink/.npmignore +3 -0
  15. data/node_modules/traceur/node_modules/commander/node_modules/graceful-readlink/.travis.yml +5 -0
  16. data/node_modules/traceur/node_modules/commander/node_modules/graceful-readlink/LICENSE +22 -0
  17. data/node_modules/traceur/node_modules/commander/node_modules/graceful-readlink/README.md +17 -0
  18. data/node_modules/traceur/node_modules/commander/node_modules/graceful-readlink/index.js +12 -0
  19. data/node_modules/traceur/node_modules/commander/node_modules/graceful-readlink/package.json +48 -0
  20. data/node_modules/traceur/node_modules/commander/package.json +75 -0
  21. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/LICENSE +0 -0
  22. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/README.md +0 -0
  23. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/common.js +0 -0
  24. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/glob.js +0 -0
  25. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/.eslintrc +0 -0
  26. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/LICENSE +0 -0
  27. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/README.md +0 -0
  28. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/inflight.js +0 -0
  29. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +0 -0
  30. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +0 -0
  31. data/node_modules/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  32. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -0
  33. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +0 -0
  34. data/node_modules/traceur/node_modules/glob/node_modules/inflight/package.json +61 -0
  35. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inflight/test.js +0 -0
  36. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inherits/LICENSE +0 -0
  37. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inherits/README.md +0 -0
  38. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inherits/inherits.js +0 -0
  39. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inherits/inherits_browser.js +0 -0
  40. data/node_modules/traceur/node_modules/glob/node_modules/inherits/package.json +50 -0
  41. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/inherits/test.js +0 -0
  42. data/{vendor/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy → node_modules/traceur/node_modules/glob/node_modules/minimatch}/LICENSE +0 -0
  43. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/README.md +0 -0
  44. data/node_modules/traceur/node_modules/glob/node_modules/minimatch/browser.js +1159 -0
  45. data/node_modules/traceur/node_modules/glob/node_modules/minimatch/minimatch.js +912 -0
  46. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -0
  47. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +0 -0
  48. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +0 -0
  49. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -0
  50. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +0 -0
  51. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -0
  52. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -0
  53. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -0
  54. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +0 -0
  55. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -0
  56. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -0
  57. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +0 -0
  58. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -0
  59. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +0 -0
  60. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +0 -0
  61. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +0 -0
  62. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +0 -0
  63. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +0 -0
  64. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +0 -0
  65. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +0 -0
  66. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +0 -0
  67. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +0 -0
  68. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +0 -0
  69. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +0 -0
  70. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +0 -0
  71. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +0 -0
  72. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +0 -0
  73. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +0 -0
  74. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +0 -0
  75. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +0 -0
  76. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +0 -0
  77. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +0 -0
  78. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +0 -0
  79. data/node_modules/traceur/node_modules/glob/node_modules/minimatch/package.json +63 -0
  80. data/node_modules/traceur/node_modules/glob/node_modules/once/LICENSE +15 -0
  81. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/once/README.md +0 -0
  82. data/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  83. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -0
  84. data/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  85. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -0
  86. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -0
  87. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/once/once.js +0 -0
  88. data/node_modules/traceur/node_modules/glob/node_modules/once/package.json +60 -0
  89. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/node_modules/once/test/once.js +0 -0
  90. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/package.json +0 -0
  91. data/{vendor/node_modules → node_modules}/traceur/node_modules/glob/sync.js +0 -0
  92. data/node_modules/traceur/node_modules/rsvp/CHANGELOG.md +255 -0
  93. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/LICENSE +0 -0
  94. data/node_modules/traceur/node_modules/rsvp/README.md +366 -0
  95. data/node_modules/traceur/node_modules/rsvp/dist/rsvp.js +1597 -0
  96. data/node_modules/traceur/node_modules/rsvp/dist/rsvp.min.js +9 -0
  97. data/node_modules/traceur/node_modules/rsvp/lib/rsvp.js +70 -0
  98. data/node_modules/traceur/node_modules/rsvp/lib/rsvp.umd.js +51 -0
  99. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/-internal.js +0 -0
  100. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/all-settled.js +73 -0
  101. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/all.js +0 -0
  102. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/asap.js +112 -0
  103. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/config.js +0 -0
  104. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/defer.js +45 -0
  105. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/enumerator.js +130 -0
  106. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/events.js +205 -0
  107. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/filter.js +0 -0
  108. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/hash-settled.js +126 -0
  109. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/hash.js +94 -0
  110. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/instrument.js +41 -0
  111. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/map.js +0 -0
  112. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/node.js +281 -0
  113. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/platform.js +14 -0
  114. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise-hash.js +52 -0
  115. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise.js +496 -0
  116. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/promise/all.js +0 -0
  117. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/race.js +105 -0
  118. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/reject.js +47 -0
  119. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/resolve.js +49 -0
  120. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/race.js +0 -0
  121. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/reject.js +16 -0
  122. data/node_modules/traceur/node_modules/rsvp/lib/rsvp/resolve.js +17 -0
  123. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/rethrow.js +0 -0
  124. data/{vendor/node_modules → node_modules}/traceur/node_modules/rsvp/lib/rsvp/utils.js +0 -0
  125. data/node_modules/traceur/node_modules/rsvp/package.json +106 -0
  126. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/.npmignore +0 -0
  127. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/LICENSE +0 -0
  128. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/Makefile +0 -0
  129. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/README.md +0 -0
  130. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/bin/semver +0 -0
  131. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/foot.js +0 -0
  132. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/head.js +0 -0
  133. data/node_modules/traceur/node_modules/semver/package.json +50 -0
  134. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/semver.browser.js +0 -0
  135. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/semver.browser.js.gz +0 -0
  136. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/semver.js +0 -0
  137. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/semver.min.js +0 -0
  138. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/semver.min.js.gz +0 -0
  139. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/test/amd.js +0 -0
  140. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/test/gtr.js +0 -0
  141. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/test/index.js +0 -0
  142. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/test/ltr.js +0 -0
  143. data/{vendor/node_modules → node_modules}/traceur/node_modules/semver/test/no-module.js +0 -0
  144. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/.npmignore +0 -0
  145. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/LICENSE.md +0 -0
  146. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/README.md +0 -0
  147. data/node_modules/traceur/node_modules/source-map-support/amd-test/browser-source-map-support.js +89 -0
  148. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/amd-test/index.html +0 -0
  149. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/amd-test/require.js +0 -0
  150. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/amd-test/script.coffee +0 -0
  151. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/amd-test/script.js +0 -0
  152. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/amd-test/script.map +0 -0
  153. data/node_modules/traceur/node_modules/source-map-support/browser-source-map-support.js +89 -0
  154. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/browser-test/index.html +0 -0
  155. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/browser-test/script.coffee +0 -0
  156. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/browser-test/script.js +0 -0
  157. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/browser-test/script.map +0 -0
  158. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/build.js +0 -0
  159. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/header-test/index.html +0 -0
  160. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/header-test/script.coffee +0 -0
  161. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/header-test/script.js +0 -0
  162. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/header-test/script.map +0 -0
  163. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/header-test/server.js +0 -0
  164. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/.npmignore +0 -0
  165. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/.travis.yml +0 -0
  166. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/CHANGELOG.md +0 -0
  167. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/LICENSE +0 -0
  168. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/Makefile.dryice.js +0 -0
  169. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/README.md +0 -0
  170. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/assert-shim.js +0 -0
  171. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/mini-require.js +0 -0
  172. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/prefix-source-map.jsm +0 -0
  173. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/prefix-utils.jsm +0 -0
  174. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/suffix-browser.js +0 -0
  175. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/suffix-source-map.jsm +0 -0
  176. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/suffix-utils.jsm +0 -0
  177. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/test-prefix.js +0 -0
  178. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/build/test-suffix.js +0 -0
  179. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map.js +0 -0
  180. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/array-set.js +0 -0
  181. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/base64-vlq.js +0 -0
  182. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/base64.js +0 -0
  183. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/binary-search.js +0 -0
  184. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-map-consumer.js +0 -0
  185. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-map-generator.js +0 -0
  186. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-node.js +0 -0
  187. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/util.js +0 -0
  188. data/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  189. data/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  190. data/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/amdefine.js +301 -0
  191. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/intercept.js +0 -0
  192. data/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/package.json +47 -0
  193. data/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/package.json +142 -0
  194. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/run-tests.js +0 -0
  195. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-api.js +0 -0
  196. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-array-set.js +0 -0
  197. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-base64-vlq.js +0 -0
  198. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-base64.js +0 -0
  199. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-binary-search.js +0 -0
  200. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-dog-fooding.js +0 -0
  201. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-map-consumer.js +0 -0
  202. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-map-generator.js +0 -0
  203. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-node.js +0 -0
  204. data/{vendor/node_modules → node_modules}/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/util.js +0 -0
  205. data/node_modules/traceur/node_modules/source-map-support/package.json +52 -0
  206. data/node_modules/traceur/node_modules/source-map-support/source-map-support.js +386 -0
  207. data/node_modules/traceur/node_modules/source-map-support/test.js +384 -0
  208. data/node_modules/traceur/package.json +286 -0
  209. data/node_modules/traceur/src/node/NodeCompiler.js +81 -0
  210. data/{vendor/node_modules → node_modules}/traceur/src/node/System.js +0 -0
  211. data/{vendor/node_modules → node_modules}/traceur/src/node/api.js +0 -0
  212. data/node_modules/traceur/src/node/command.js +203 -0
  213. data/{vendor/node_modules → node_modules}/traceur/src/node/compileAllJsFilesInDir.js +0 -0
  214. data/{vendor/node_modules → node_modules}/traceur/src/node/deferred.js +0 -0
  215. data/{vendor/node_modules → node_modules}/traceur/src/node/file-util.js +0 -0
  216. data/{vendor/node_modules → node_modules}/traceur/src/node/getopt.js +0 -0
  217. data/node_modules/traceur/src/node/interpreter.js +37 -0
  218. data/{vendor/node_modules → node_modules}/traceur/src/node/nodeLoader.js +0 -0
  219. data/node_modules/traceur/src/node/recursiveModuleCompile.js +171 -0
  220. data/{vendor/node_modules → node_modules}/traceur/src/node/require.js +0 -0
  221. data/{vendor/node_modules → node_modules}/traceur/src/node/to-amd-compiler.js +0 -0
  222. data/{vendor/node_modules → node_modules}/traceur/src/node/to-closure-compiler.js +0 -0
  223. data/{vendor/node_modules → node_modules}/traceur/src/node/to-commonjs-compiler.js +0 -0
  224. data/{vendor/node_modules → node_modules}/traceur/src/node/traceur.js +0 -0
  225. data/{vendor/node_modules → node_modules}/traceur/traceur +0 -0
  226. data/package.json +15 -0
  227. data/spec/traceur/configuration_spec.rb +3 -3
  228. metadata +225 -161
@@ -0,0 +1,5 @@
1
+ language: node_js
2
+ node_js:
3
+ - "0.10"
4
+ - "0.12"
5
+ - "io.js"
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Zhiye Li
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
@@ -0,0 +1,17 @@
1
+ # graceful-readlink
2
+ [![NPM Version](http://img.shields.io/npm/v/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink)
3
+ [![NPM Downloads](https://img.shields.io/npm/dm/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink)
4
+
5
+
6
+ ## Usage
7
+
8
+ ```js
9
+ var readlinkSync = require('graceful-readlink').readlinkSync;
10
+ console.log(readlinkSync(f));
11
+ // output
12
+ // the file pointed to when `f` is a symbolic link
13
+ // the `f` itself when `f` is not a symbolic link
14
+ ```
15
+ ## Licence
16
+
17
+ MIT License
@@ -0,0 +1,12 @@
1
+ var fs = require('fs')
2
+ , lstat = fs.lstatSync;
3
+
4
+ exports.readlinkSync = function (p) {
5
+ if (lstat(p).isSymbolicLink()) {
6
+ return fs.readlinkSync(p);
7
+ } else {
8
+ return p;
9
+ }
10
+ };
11
+
12
+
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "graceful-readlink",
3
+ "version": "1.0.1",
4
+ "description": "graceful fs.readlink",
5
+ "main": "index.js",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git://github.com/zhiyelee/graceful-readlink.git"
9
+ },
10
+ "homepage": "https://github.com/zhiyelee/graceful-readlink",
11
+ "bugs": {
12
+ "url": "https://github.com/zhiyelee/graceful-readlink/issues"
13
+ },
14
+ "keywords": [
15
+ "fs.readlink",
16
+ "readlink"
17
+ ],
18
+ "author": {
19
+ "name": "zhiyelee"
20
+ },
21
+ "license": "MIT",
22
+ "scripts": {
23
+ "test": "echo \"Error: no test specified\" && exit 1"
24
+ },
25
+ "gitHead": "f6655275bebef706fb63fd01b5f062a7052419a5",
26
+ "_id": "graceful-readlink@1.0.1",
27
+ "_shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725",
28
+ "_from": "graceful-readlink@>=1.0.0",
29
+ "_npmVersion": "2.1.17",
30
+ "_nodeVersion": "0.11.14",
31
+ "_npmUser": {
32
+ "name": "zhiyelee",
33
+ "email": "zhiyelee@gmail.com"
34
+ },
35
+ "maintainers": [
36
+ {
37
+ "name": "zhiyelee",
38
+ "email": "zhiyelee@gmail.com"
39
+ }
40
+ ],
41
+ "dist": {
42
+ "shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725",
43
+ "tarball": "http://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
44
+ },
45
+ "directories": {},
46
+ "_resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
47
+ "readme": "ERROR: No README data found!"
48
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "commander",
3
+ "version": "2.8.1",
4
+ "description": "the complete solution for node.js command-line programs",
5
+ "keywords": [
6
+ "command",
7
+ "option",
8
+ "parser"
9
+ ],
10
+ "author": {
11
+ "name": "TJ Holowaychuk",
12
+ "email": "tj@vision-media.ca"
13
+ },
14
+ "license": "MIT",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/tj/commander.js.git"
18
+ },
19
+ "devDependencies": {
20
+ "should": ">= 0.0.1",
21
+ "sinon": ">= 1.14.1"
22
+ },
23
+ "scripts": {
24
+ "test": "make test"
25
+ },
26
+ "main": "index",
27
+ "engines": {
28
+ "node": ">= 0.6.x"
29
+ },
30
+ "files": [
31
+ "index.js"
32
+ ],
33
+ "dependencies": {
34
+ "graceful-readlink": ">= 1.0.0"
35
+ },
36
+ "gitHead": "c6c84726050b19c0373de27cd359f3baddff579f",
37
+ "bugs": {
38
+ "url": "https://github.com/tj/commander.js/issues"
39
+ },
40
+ "homepage": "https://github.com/tj/commander.js",
41
+ "_id": "commander@2.8.1",
42
+ "_shasum": "06be367febfda0c330aa1e2a072d3dc9762425d4",
43
+ "_from": "commander@>=2.0.0 <3.0.0",
44
+ "_npmVersion": "2.5.1",
45
+ "_nodeVersion": "0.12.0",
46
+ "_npmUser": {
47
+ "name": "zhiyelee",
48
+ "email": "zhiyelee@gmail.com"
49
+ },
50
+ "maintainers": [
51
+ {
52
+ "name": "tjholowaychuk",
53
+ "email": "tj@vision-media.ca"
54
+ },
55
+ {
56
+ "name": "somekittens",
57
+ "email": "rkoutnik@gmail.com"
58
+ },
59
+ {
60
+ "name": "zhiyelee",
61
+ "email": "zhiyelee@gmail.com"
62
+ },
63
+ {
64
+ "name": "thethomaseffect",
65
+ "email": "thethomaseffect@gmail.com"
66
+ }
67
+ ],
68
+ "dist": {
69
+ "shasum": "06be367febfda0c330aa1e2a072d3dc9762425d4",
70
+ "tarball": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz"
71
+ },
72
+ "directories": {},
73
+ "_resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
74
+ "readme": "ERROR: No README data found!"
75
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "wrappy",
3
+ "version": "1.0.1",
4
+ "description": "Callback wrapping utility",
5
+ "main": "wrappy.js",
6
+ "directories": {
7
+ "test": "test"
8
+ },
9
+ "dependencies": {},
10
+ "devDependencies": {
11
+ "tap": "^0.4.12"
12
+ },
13
+ "scripts": {
14
+ "test": "tap test/*.js"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/npm/wrappy.git"
19
+ },
20
+ "author": {
21
+ "name": "Isaac Z. Schlueter",
22
+ "email": "i@izs.me",
23
+ "url": "http://blog.izs.me/"
24
+ },
25
+ "license": "ISC",
26
+ "bugs": {
27
+ "url": "https://github.com/npm/wrappy/issues"
28
+ },
29
+ "homepage": "https://github.com/npm/wrappy",
30
+ "gitHead": "006a8cbac6b99988315834c207896eed71fd069a",
31
+ "_id": "wrappy@1.0.1",
32
+ "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
33
+ "_from": "wrappy@>=1.0.0 <2.0.0",
34
+ "_npmVersion": "2.0.0",
35
+ "_nodeVersion": "0.10.31",
36
+ "_npmUser": {
37
+ "name": "isaacs",
38
+ "email": "i@izs.me"
39
+ },
40
+ "maintainers": [
41
+ {
42
+ "name": "isaacs",
43
+ "email": "i@izs.me"
44
+ }
45
+ ],
46
+ "dist": {
47
+ "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
48
+ "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
49
+ },
50
+ "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
51
+ "readme": "ERROR: No README data found!"
52
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "inflight",
3
+ "version": "1.0.4",
4
+ "description": "Add callbacks to requests in flight to avoid async duplication",
5
+ "main": "inflight.js",
6
+ "dependencies": {
7
+ "once": "^1.3.0",
8
+ "wrappy": "1"
9
+ },
10
+ "devDependencies": {
11
+ "tap": "^0.4.10"
12
+ },
13
+ "scripts": {
14
+ "test": "tap test.js"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git://github.com/isaacs/inflight.git"
19
+ },
20
+ "author": {
21
+ "name": "Isaac Z. Schlueter",
22
+ "email": "i@izs.me",
23
+ "url": "http://blog.izs.me/"
24
+ },
25
+ "bugs": {
26
+ "url": "https://github.com/isaacs/inflight/issues"
27
+ },
28
+ "homepage": "https://github.com/isaacs/inflight",
29
+ "license": "ISC",
30
+ "gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba",
31
+ "_id": "inflight@1.0.4",
32
+ "_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
33
+ "_from": "inflight@>=1.0.4 <2.0.0",
34
+ "_npmVersion": "2.1.3",
35
+ "_nodeVersion": "0.10.32",
36
+ "_npmUser": {
37
+ "name": "othiym23",
38
+ "email": "ogd@aoaioxxysz.net"
39
+ },
40
+ "maintainers": [
41
+ {
42
+ "name": "isaacs",
43
+ "email": "i@izs.me"
44
+ },
45
+ {
46
+ "name": "othiym23",
47
+ "email": "ogd@aoaioxxysz.net"
48
+ },
49
+ {
50
+ "name": "iarna",
51
+ "email": "me@re-becca.org"
52
+ }
53
+ ],
54
+ "dist": {
55
+ "shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
56
+ "tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz"
57
+ },
58
+ "directories": {},
59
+ "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
60
+ "readme": "ERROR: No README data found!"
61
+ }
@@ -0,0 +1,50 @@
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.git"
20
+ },
21
+ "license": "ISC",
22
+ "scripts": {
23
+ "test": "node test"
24
+ },
25
+ "bugs": {
26
+ "url": "https://github.com/isaacs/inherits/issues"
27
+ },
28
+ "_id": "inherits@2.0.1",
29
+ "dist": {
30
+ "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
31
+ "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
32
+ },
33
+ "_from": "inherits@>=2.0.0 <3.0.0",
34
+ "_npmVersion": "1.3.8",
35
+ "_npmUser": {
36
+ "name": "isaacs",
37
+ "email": "i@izs.me"
38
+ },
39
+ "maintainers": [
40
+ {
41
+ "name": "isaacs",
42
+ "email": "i@izs.me"
43
+ }
44
+ ],
45
+ "directories": {},
46
+ "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
47
+ "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
48
+ "readme": "ERROR: No README data found!",
49
+ "homepage": "https://github.com/isaacs/inherits"
50
+ }
@@ -0,0 +1,1159 @@
1
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.minimatch = f()}})(function(){var define,module,exports;return (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
+ module.exports = minimatch
3
+ minimatch.Minimatch = Minimatch
4
+
5
+ var path = { sep: '/' }
6
+ try {
7
+ path = require('path')
8
+ } catch (er) {}
9
+
10
+ var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
11
+ var expand = require('brace-expansion')
12
+
13
+ // any single thing other than /
14
+ // don't need to escape / when using new RegExp()
15
+ var qmark = '[^/]'
16
+
17
+ // * => any number of characters
18
+ var 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
+ var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
24
+
25
+ // not a ^ or / followed by a dot,
26
+ // followed by anything, any number of times.
27
+ var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
28
+
29
+ // characters that need to be escaped in RegExp.
30
+ var 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
+ function minimatch (p, pattern, options) {
86
+ if (typeof pattern !== 'string') {
87
+ throw new TypeError('glob pattern string required')
88
+ }
89
+
90
+ if (!options) options = {}
91
+
92
+ // shortcut: comments match nothing.
93
+ if (!options.nocomment && pattern.charAt(0) === '#') {
94
+ return false
95
+ }
96
+
97
+ // "" only matches ""
98
+ if (pattern.trim() === '') return p === ''
99
+
100
+ return new Minimatch(pattern, options).match(p)
101
+ }
102
+
103
+ function Minimatch (pattern, options) {
104
+ if (!(this instanceof Minimatch)) {
105
+ return new Minimatch(pattern, options)
106
+ }
107
+
108
+ if (typeof pattern !== 'string') {
109
+ throw new TypeError('glob pattern string required')
110
+ }
111
+
112
+ if (!options) options = {}
113
+ pattern = pattern.trim()
114
+
115
+ // windows support: need to use /, not \
116
+ if (path.sep !== '/') {
117
+ pattern = pattern.split(path.sep).join('/')
118
+ }
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 s.indexOf(false) === -1
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
+ var negate = false
194
+ var options = this.options
195
+ var 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
+
235
+ pattern = typeof pattern === 'undefined'
236
+ ? this.pattern : pattern
237
+
238
+ if (typeof pattern === 'undefined') {
239
+ throw new Error('undefined pattern')
240
+ }
241
+
242
+ if (options.nobrace ||
243
+ !pattern.match(/\{.*\}/)) {
244
+ // shortcut. no need to expand.
245
+ return [pattern]
246
+ }
247
+
248
+ return expand(pattern)
249
+ }
250
+
251
+ // parse a component of the expanded set.
252
+ // At this point, no pattern may contain "/" in it
253
+ // so we're going to return a 2d array, where each entry is the full
254
+ // pattern, split on '/', and then turned into a regular expression.
255
+ // A regexp is made at the end which joins each array with an
256
+ // escaped /, and another full one which joins each regexp with |.
257
+ //
258
+ // Following the lead of Bash 4.1, note that "**" only has special meaning
259
+ // when it is the *only* thing in a path portion. Otherwise, any series
260
+ // of * is equivalent to a single *. Globstar behavior is enabled by
261
+ // default, and can be disabled by setting options.noglobstar.
262
+ Minimatch.prototype.parse = parse
263
+ var SUBPARSE = {}
264
+ function parse (pattern, isSub) {
265
+ var options = this.options
266
+
267
+ // shortcuts
268
+ if (!options.noglobstar && pattern === '**') return GLOBSTAR
269
+ if (pattern === '') return ''
270
+
271
+ var re = ''
272
+ var hasMagic = !!options.nocase
273
+ var escaping = false
274
+ // ? => one single character
275
+ var patternListStack = []
276
+ var negativeLists = []
277
+ var plType
278
+ var stateChar
279
+ var inClass = false
280
+ var reClassStart = -1
281
+ var classStart = -1
282
+ // . and .. never match anything that doesn't start with .,
283
+ // even when options.dot is set.
284
+ var patternStart = pattern.charAt(0) === '.' ? '' // anything
285
+ // not (start or / followed by . or .. followed by / or end)
286
+ : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
287
+ : '(?!\\.)'
288
+ var self = this
289
+
290
+ function clearStateChar () {
291
+ if (stateChar) {
292
+ // we had some state-tracking character
293
+ // that wasn't consumed by this pass.
294
+ switch (stateChar) {
295
+ case '*':
296
+ re += star
297
+ hasMagic = true
298
+ break
299
+ case '?':
300
+ re += qmark
301
+ hasMagic = true
302
+ break
303
+ default:
304
+ re += '\\' + stateChar
305
+ break
306
+ }
307
+ self.debug('clearStateChar %j %j', stateChar, re)
308
+ stateChar = false
309
+ }
310
+ }
311
+
312
+ for (var i = 0, len = pattern.length, c
313
+ ; (i < len) && (c = pattern.charAt(i))
314
+ ; i++) {
315
+ this.debug('%s\t%s %s %j', pattern, i, re, c)
316
+
317
+ // skip over any that are escaped.
318
+ if (escaping && reSpecials[c]) {
319
+ re += '\\' + c
320
+ escaping = false
321
+ continue
322
+ }
323
+
324
+ switch (c) {
325
+ case '/':
326
+ // completely not allowed, even escaped.
327
+ // Should already be path-split by now.
328
+ return false
329
+
330
+ case '\\':
331
+ clearStateChar()
332
+ escaping = true
333
+ continue
334
+
335
+ // the various stateChar values
336
+ // for the "extglob" stuff.
337
+ case '?':
338
+ case '*':
339
+ case '+':
340
+ case '@':
341
+ case '!':
342
+ this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
343
+
344
+ // all of those are literals inside a class, except that
345
+ // the glob [!a] means [^a] in regexp
346
+ if (inClass) {
347
+ this.debug(' in class')
348
+ if (c === '!' && i === classStart + 1) c = '^'
349
+ re += c
350
+ continue
351
+ }
352
+
353
+ // if we already have a stateChar, then it means
354
+ // that there was something like ** or +? in there.
355
+ // Handle the stateChar, then proceed with this one.
356
+ self.debug('call clearStateChar %j', stateChar)
357
+ clearStateChar()
358
+ stateChar = c
359
+ // if extglob is disabled, then +(asdf|foo) isn't a thing.
360
+ // just clear the statechar *now*, rather than even diving into
361
+ // the patternList stuff.
362
+ if (options.noext) clearStateChar()
363
+ continue
364
+
365
+ case '(':
366
+ if (inClass) {
367
+ re += '('
368
+ continue
369
+ }
370
+
371
+ if (!stateChar) {
372
+ re += '\\('
373
+ continue
374
+ }
375
+
376
+ plType = stateChar
377
+ patternListStack.push({
378
+ type: plType,
379
+ start: i - 1,
380
+ reStart: re.length
381
+ })
382
+ // negation is (?:(?!js)[^/]*)
383
+ re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
384
+ this.debug('plType %j %j', stateChar, re)
385
+ stateChar = false
386
+ continue
387
+
388
+ case ')':
389
+ if (inClass || !patternListStack.length) {
390
+ re += '\\)'
391
+ continue
392
+ }
393
+
394
+ clearStateChar()
395
+ hasMagic = true
396
+ re += ')'
397
+ var pl = patternListStack.pop()
398
+ plType = pl.type
399
+ // negation is (?:(?!js)[^/]*)
400
+ // The others are (?:<pattern>)<type>
401
+ switch (plType) {
402
+ case '!':
403
+ negativeLists.push(pl)
404
+ re += ')[^/]*?)'
405
+ pl.reEnd = re.length
406
+ break
407
+ case '?':
408
+ case '+':
409
+ case '*':
410
+ re += plType
411
+ break
412
+ case '@': break // the default anyway
413
+ }
414
+ continue
415
+
416
+ case '|':
417
+ if (inClass || !patternListStack.length || escaping) {
418
+ re += '\\|'
419
+ escaping = false
420
+ continue
421
+ }
422
+
423
+ clearStateChar()
424
+ re += '|'
425
+ continue
426
+
427
+ // these are mostly the same in regexp and glob
428
+ case '[':
429
+ // swallow any state-tracking char before the [
430
+ clearStateChar()
431
+
432
+ if (inClass) {
433
+ re += '\\' + c
434
+ continue
435
+ }
436
+
437
+ inClass = true
438
+ classStart = i
439
+ reClassStart = re.length
440
+ re += c
441
+ continue
442
+
443
+ case ']':
444
+ // a right bracket shall lose its special
445
+ // meaning and represent itself in
446
+ // a bracket expression if it occurs
447
+ // first in the list. -- POSIX.2 2.8.3.2
448
+ if (i === classStart + 1 || !inClass) {
449
+ re += '\\' + c
450
+ escaping = false
451
+ continue
452
+ }
453
+
454
+ // handle the case where we left a class open.
455
+ // "[z-a]" is valid, equivalent to "\[z-a\]"
456
+ if (inClass) {
457
+ // split where the last [ was, make sure we don't have
458
+ // an invalid re. if so, re-walk the contents of the
459
+ // would-be class to re-translate any characters that
460
+ // were passed through as-is
461
+ // TODO: It would probably be faster to determine this
462
+ // without a try/catch and a new RegExp, but it's tricky
463
+ // to do safely. For now, this is safe and works.
464
+ var cs = pattern.substring(classStart + 1, i)
465
+ try {
466
+ RegExp('[' + cs + ']')
467
+ } catch (er) {
468
+ // not a valid class!
469
+ var sp = this.parse(cs, SUBPARSE)
470
+ re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
471
+ hasMagic = hasMagic || sp[1]
472
+ inClass = false
473
+ continue
474
+ }
475
+ }
476
+
477
+ // finish up the class.
478
+ hasMagic = true
479
+ inClass = false
480
+ re += c
481
+ continue
482
+
483
+ default:
484
+ // swallow any state char that wasn't consumed
485
+ clearStateChar()
486
+
487
+ if (escaping) {
488
+ // no need
489
+ escaping = false
490
+ } else if (reSpecials[c]
491
+ && !(c === '^' && inClass)) {
492
+ re += '\\'
493
+ }
494
+
495
+ re += c
496
+
497
+ } // switch
498
+ } // for
499
+
500
+ // handle the case where we left a class open.
501
+ // "[abc" is valid, equivalent to "\[abc"
502
+ if (inClass) {
503
+ // split where the last [ was, and escape it
504
+ // this is a huge pita. We now have to re-walk
505
+ // the contents of the would-be class to re-translate
506
+ // any characters that were passed through as-is
507
+ cs = pattern.substr(classStart + 1)
508
+ sp = this.parse(cs, SUBPARSE)
509
+ re = re.substr(0, reClassStart) + '\\[' + sp[0]
510
+ hasMagic = hasMagic || sp[1]
511
+ }
512
+
513
+ // handle the case where we had a +( thing at the *end*
514
+ // of the pattern.
515
+ // each pattern list stack adds 3 chars, and we need to go through
516
+ // and escape any | chars that were passed through as-is for the regexp.
517
+ // Go through and escape them, taking care not to double-escape any
518
+ // | chars that were already escaped.
519
+ for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
520
+ var tail = re.slice(pl.reStart + 3)
521
+ // maybe some even number of \, then maybe 1 \, followed by a |
522
+ tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
523
+ if (!$2) {
524
+ // the | isn't already escaped, so escape it.
525
+ $2 = '\\'
526
+ }
527
+
528
+ // need to escape all those slashes *again*, without escaping the
529
+ // one that we need for escaping the | character. As it works out,
530
+ // escaping an even number of slashes can be done by simply repeating
531
+ // it exactly after itself. That's why this trick works.
532
+ //
533
+ // I am sorry that you have to see this.
534
+ return $1 + $1 + $2 + '|'
535
+ })
536
+
537
+ this.debug('tail=%j\n %s', tail, tail)
538
+ var t = pl.type === '*' ? star
539
+ : pl.type === '?' ? qmark
540
+ : '\\' + pl.type
541
+
542
+ hasMagic = true
543
+ re = re.slice(0, pl.reStart) + t + '\\(' + tail
544
+ }
545
+
546
+ // handle trailing things that only matter at the very end.
547
+ clearStateChar()
548
+ if (escaping) {
549
+ // trailing \\
550
+ re += '\\\\'
551
+ }
552
+
553
+ // only need to apply the nodot start if the re starts with
554
+ // something that could conceivably capture a dot
555
+ var addPatternStart = false
556
+ switch (re.charAt(0)) {
557
+ case '.':
558
+ case '[':
559
+ case '(': addPatternStart = true
560
+ }
561
+
562
+ // Hack to work around lack of negative lookbehind in JS
563
+ // A pattern like: *.!(x).!(y|z) needs to ensure that a name
564
+ // like 'a.xyz.yz' doesn't match. So, the first negative
565
+ // lookahead, has to look ALL the way ahead, to the end of
566
+ // the pattern.
567
+ for (var n = negativeLists.length - 1; n > -1; n--) {
568
+ var nl = negativeLists[n]
569
+
570
+ var nlBefore = re.slice(0, nl.reStart)
571
+ var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
572
+ var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
573
+ var nlAfter = re.slice(nl.reEnd)
574
+
575
+ nlLast += nlAfter
576
+
577
+ // Handle nested stuff like *(*.js|!(*.json)), where open parens
578
+ // mean that we should *not* include the ) in the bit that is considered
579
+ // "after" the negated section.
580
+ var openParensBefore = nlBefore.split('(').length - 1
581
+ var cleanAfter = nlAfter
582
+ for (i = 0; i < openParensBefore; i++) {
583
+ cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
584
+ }
585
+ nlAfter = cleanAfter
586
+
587
+ var dollar = ''
588
+ if (nlAfter === '' && isSub !== SUBPARSE) {
589
+ dollar = '$'
590
+ }
591
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
592
+ re = newRe
593
+ }
594
+
595
+ // if the re is not "" at this point, then we need to make sure
596
+ // it doesn't match against an empty path part.
597
+ // Otherwise a/* will match a/, which it should not.
598
+ if (re !== '' && hasMagic) {
599
+ re = '(?=.)' + re
600
+ }
601
+
602
+ if (addPatternStart) {
603
+ re = patternStart + re
604
+ }
605
+
606
+ // parsing just a piece of a larger pattern.
607
+ if (isSub === SUBPARSE) {
608
+ return [re, hasMagic]
609
+ }
610
+
611
+ // skip the regexp for non-magical patterns
612
+ // unescape anything in it, though, so that it'll be
613
+ // an exact match against a file etc.
614
+ if (!hasMagic) {
615
+ return globUnescape(pattern)
616
+ }
617
+
618
+ var flags = options.nocase ? 'i' : ''
619
+ var regExp = new RegExp('^' + re + '$', flags)
620
+
621
+ regExp._glob = pattern
622
+ regExp._src = re
623
+
624
+ return regExp
625
+ }
626
+
627
+ minimatch.makeRe = function (pattern, options) {
628
+ return new Minimatch(pattern, options || {}).makeRe()
629
+ }
630
+
631
+ Minimatch.prototype.makeRe = makeRe
632
+ function makeRe () {
633
+ if (this.regexp || this.regexp === false) return this.regexp
634
+
635
+ // at this point, this.set is a 2d array of partial
636
+ // pattern strings, or "**".
637
+ //
638
+ // It's better to use .match(). This function shouldn't
639
+ // be used, really, but it's pretty convenient sometimes,
640
+ // when you just want to work with a regex.
641
+ var set = this.set
642
+
643
+ if (!set.length) {
644
+ this.regexp = false
645
+ return this.regexp
646
+ }
647
+ var options = this.options
648
+
649
+ var twoStar = options.noglobstar ? star
650
+ : options.dot ? twoStarDot
651
+ : twoStarNoDot
652
+ var flags = options.nocase ? 'i' : ''
653
+
654
+ var re = set.map(function (pattern) {
655
+ return pattern.map(function (p) {
656
+ return (p === GLOBSTAR) ? twoStar
657
+ : (typeof p === 'string') ? regExpEscape(p)
658
+ : p._src
659
+ }).join('\\\/')
660
+ }).join('|')
661
+
662
+ // must match entire pattern
663
+ // ending in a * or ** will make it less strict.
664
+ re = '^(?:' + re + ')$'
665
+
666
+ // can match anything, as long as it's not this.
667
+ if (this.negate) re = '^(?!' + re + ').*$'
668
+
669
+ try {
670
+ this.regexp = new RegExp(re, flags)
671
+ } catch (ex) {
672
+ this.regexp = false
673
+ }
674
+ return this.regexp
675
+ }
676
+
677
+ minimatch.match = function (list, pattern, options) {
678
+ options = options || {}
679
+ var mm = new Minimatch(pattern, options)
680
+ list = list.filter(function (f) {
681
+ return mm.match(f)
682
+ })
683
+ if (mm.options.nonull && !list.length) {
684
+ list.push(pattern)
685
+ }
686
+ return list
687
+ }
688
+
689
+ Minimatch.prototype.match = match
690
+ function match (f, partial) {
691
+ this.debug('match', f, this.pattern)
692
+ // short-circuit in the case of busted things.
693
+ // comments, etc.
694
+ if (this.comment) return false
695
+ if (this.empty) return f === ''
696
+
697
+ if (f === '/' && partial) return true
698
+
699
+ var options = this.options
700
+
701
+ // windows: need to use /, not \
702
+ if (path.sep !== '/') {
703
+ f = f.split(path.sep).join('/')
704
+ }
705
+
706
+ // treat the test path as a set of pathparts.
707
+ f = f.split(slashSplit)
708
+ this.debug(this.pattern, 'split', f)
709
+
710
+ // just ONE of the pattern sets in this.set needs to match
711
+ // in order for it to be valid. If negating, then just one
712
+ // match means that we have failed.
713
+ // Either way, return on the first hit.
714
+
715
+ var set = this.set
716
+ this.debug(this.pattern, 'set', set)
717
+
718
+ // Find the basename of the path by looking for the last non-empty segment
719
+ var filename
720
+ var i
721
+ for (i = f.length - 1; i >= 0; i--) {
722
+ filename = f[i]
723
+ if (filename) break
724
+ }
725
+
726
+ for (i = 0; i < set.length; i++) {
727
+ var pattern = set[i]
728
+ var file = f
729
+ if (options.matchBase && pattern.length === 1) {
730
+ file = [filename]
731
+ }
732
+ var hit = this.matchOne(file, pattern, partial)
733
+ if (hit) {
734
+ if (options.flipNegate) return true
735
+ return !this.negate
736
+ }
737
+ }
738
+
739
+ // didn't get any hits. this is success if it's a negative
740
+ // pattern, failure otherwise.
741
+ if (options.flipNegate) return false
742
+ return this.negate
743
+ }
744
+
745
+ // set partial to true to test if, for example,
746
+ // "/a/b" matches the start of "/*/b/*/d"
747
+ // Partial means, if you run out of file before you run
748
+ // out of pattern, then that's fine, as long as all
749
+ // the parts match.
750
+ Minimatch.prototype.matchOne = function (file, pattern, partial) {
751
+ var options = this.options
752
+
753
+ this.debug('matchOne',
754
+ { 'this': this, file: file, pattern: pattern })
755
+
756
+ this.debug('matchOne', file.length, pattern.length)
757
+
758
+ for (var fi = 0,
759
+ pi = 0,
760
+ fl = file.length,
761
+ pl = pattern.length
762
+ ; (fi < fl) && (pi < pl)
763
+ ; fi++, pi++) {
764
+ this.debug('matchOne loop')
765
+ var p = pattern[pi]
766
+ var f = file[fi]
767
+
768
+ this.debug(pattern, p, f)
769
+
770
+ // should be impossible.
771
+ // some invalid regexp stuff in the set.
772
+ if (p === false) return false
773
+
774
+ if (p === GLOBSTAR) {
775
+ this.debug('GLOBSTAR', [pattern, p, f])
776
+
777
+ // "**"
778
+ // a/**/b/**/c would match the following:
779
+ // a/b/x/y/z/c
780
+ // a/x/y/z/b/c
781
+ // a/b/x/b/x/c
782
+ // a/b/c
783
+ // To do this, take the rest of the pattern after
784
+ // the **, and see if it would match the file remainder.
785
+ // If so, return success.
786
+ // If not, the ** "swallows" a segment, and try again.
787
+ // This is recursively awful.
788
+ //
789
+ // a/**/b/**/c matching a/b/x/y/z/c
790
+ // - a matches a
791
+ // - doublestar
792
+ // - matchOne(b/x/y/z/c, b/**/c)
793
+ // - b matches b
794
+ // - doublestar
795
+ // - matchOne(x/y/z/c, c) -> no
796
+ // - matchOne(y/z/c, c) -> no
797
+ // - matchOne(z/c, c) -> no
798
+ // - matchOne(c, c) yes, hit
799
+ var fr = fi
800
+ var pr = pi + 1
801
+ if (pr === pl) {
802
+ this.debug('** at the end')
803
+ // a ** at the end will just swallow the rest.
804
+ // We have found a match.
805
+ // however, it will not swallow /.x, unless
806
+ // options.dot is set.
807
+ // . and .. are *never* matched by **, for explosively
808
+ // exponential reasons.
809
+ for (; fi < fl; fi++) {
810
+ if (file[fi] === '.' || file[fi] === '..' ||
811
+ (!options.dot && file[fi].charAt(0) === '.')) return false
812
+ }
813
+ return true
814
+ }
815
+
816
+ // ok, let's see if we can swallow whatever we can.
817
+ while (fr < fl) {
818
+ var swallowee = file[fr]
819
+
820
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
821
+
822
+ // XXX remove this slice. Just pass the start index.
823
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
824
+ this.debug('globstar found match!', fr, fl, swallowee)
825
+ // found a match.
826
+ return true
827
+ } else {
828
+ // can't swallow "." or ".." ever.
829
+ // can only swallow ".foo" when explicitly asked.
830
+ if (swallowee === '.' || swallowee === '..' ||
831
+ (!options.dot && swallowee.charAt(0) === '.')) {
832
+ this.debug('dot detected!', file, fr, pattern, pr)
833
+ break
834
+ }
835
+
836
+ // ** swallows a segment, and continue.
837
+ this.debug('globstar swallow a segment, and continue')
838
+ fr++
839
+ }
840
+ }
841
+
842
+ // no match was found.
843
+ // However, in partial mode, we can't say this is necessarily over.
844
+ // If there's more *pattern* left, then
845
+ if (partial) {
846
+ // ran out of file
847
+ this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
848
+ if (fr === fl) return true
849
+ }
850
+ return false
851
+ }
852
+
853
+ // something other than **
854
+ // non-magic patterns just have to match exactly
855
+ // patterns with magic have been turned into regexps.
856
+ var hit
857
+ if (typeof p === 'string') {
858
+ if (options.nocase) {
859
+ hit = f.toLowerCase() === p.toLowerCase()
860
+ } else {
861
+ hit = f === p
862
+ }
863
+ this.debug('string match', p, f, hit)
864
+ } else {
865
+ hit = f.match(p)
866
+ this.debug('pattern match', p, f, hit)
867
+ }
868
+
869
+ if (!hit) return false
870
+ }
871
+
872
+ // Note: ending in / means that we'll get a final ""
873
+ // at the end of the pattern. This can only match a
874
+ // corresponding "" at the end of the file.
875
+ // If the file ends in /, then it can only match a
876
+ // a pattern that ends in /, unless the pattern just
877
+ // doesn't have any more for it. But, a/b/ should *not*
878
+ // match "a/b/*", even though "" matches against the
879
+ // [^/]*? pattern, except in partial mode, where it might
880
+ // simply not be reached yet.
881
+ // However, a/b/ should still satisfy a/*
882
+
883
+ // now either we fell off the end of the pattern, or we're done.
884
+ if (fi === fl && pi === pl) {
885
+ // ran out of pattern and filename at the same time.
886
+ // an exact hit!
887
+ return true
888
+ } else if (fi === fl) {
889
+ // ran out of file, but still had pattern left.
890
+ // this is ok if we're doing the match as part of
891
+ // a glob fs traversal.
892
+ return partial
893
+ } else if (pi === pl) {
894
+ // ran out of pattern, still have file left.
895
+ // this is only acceptable if we're on the very last
896
+ // empty segment of a file with a trailing slash.
897
+ // a/* should match a/b/
898
+ var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
899
+ return emptyFileEnd
900
+ }
901
+
902
+ // should be unreachable.
903
+ throw new Error('wtf?')
904
+ }
905
+
906
+ // replace stuff like \* with *
907
+ function globUnescape (s) {
908
+ return s.replace(/\\(.)/g, '$1')
909
+ }
910
+
911
+ function regExpEscape (s) {
912
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
913
+ }
914
+
915
+ },{"brace-expansion":2,"path":undefined}],2:[function(require,module,exports){
916
+ var concatMap = require('concat-map');
917
+ var balanced = require('balanced-match');
918
+
919
+ module.exports = expandTop;
920
+
921
+ var escSlash = '\0SLASH'+Math.random()+'\0';
922
+ var escOpen = '\0OPEN'+Math.random()+'\0';
923
+ var escClose = '\0CLOSE'+Math.random()+'\0';
924
+ var escComma = '\0COMMA'+Math.random()+'\0';
925
+ var escPeriod = '\0PERIOD'+Math.random()+'\0';
926
+
927
+ function numeric(str) {
928
+ return parseInt(str, 10) == str
929
+ ? parseInt(str, 10)
930
+ : str.charCodeAt(0);
931
+ }
932
+
933
+ function escapeBraces(str) {
934
+ return str.split('\\\\').join(escSlash)
935
+ .split('\\{').join(escOpen)
936
+ .split('\\}').join(escClose)
937
+ .split('\\,').join(escComma)
938
+ .split('\\.').join(escPeriod);
939
+ }
940
+
941
+ function unescapeBraces(str) {
942
+ return str.split(escSlash).join('\\')
943
+ .split(escOpen).join('{')
944
+ .split(escClose).join('}')
945
+ .split(escComma).join(',')
946
+ .split(escPeriod).join('.');
947
+ }
948
+
949
+
950
+ // Basically just str.split(","), but handling cases
951
+ // where we have nested braced sections, which should be
952
+ // treated as individual members, like {a,{b,c},d}
953
+ function parseCommaParts(str) {
954
+ if (!str)
955
+ return [''];
956
+
957
+ var parts = [];
958
+ var m = balanced('{', '}', str);
959
+
960
+ if (!m)
961
+ return str.split(',');
962
+
963
+ var pre = m.pre;
964
+ var body = m.body;
965
+ var post = m.post;
966
+ var p = pre.split(',');
967
+
968
+ p[p.length-1] += '{' + body + '}';
969
+ var postParts = parseCommaParts(post);
970
+ if (post.length) {
971
+ p[p.length-1] += postParts.shift();
972
+ p.push.apply(p, postParts);
973
+ }
974
+
975
+ parts.push.apply(parts, p);
976
+
977
+ return parts;
978
+ }
979
+
980
+ function expandTop(str) {
981
+ if (!str)
982
+ return [];
983
+
984
+ var expansions = expand(escapeBraces(str));
985
+ return expansions.filter(identity).map(unescapeBraces);
986
+ }
987
+
988
+ function identity(e) {
989
+ return e;
990
+ }
991
+
992
+ function embrace(str) {
993
+ return '{' + str + '}';
994
+ }
995
+ function isPadded(el) {
996
+ return /^-?0\d/.test(el);
997
+ }
998
+
999
+ function lte(i, y) {
1000
+ return i <= y;
1001
+ }
1002
+ function gte(i, y) {
1003
+ return i >= y;
1004
+ }
1005
+
1006
+ function expand(str) {
1007
+ var expansions = [];
1008
+
1009
+ var m = balanced('{', '}', str);
1010
+ if (!m || /\$$/.test(m.pre)) return [str];
1011
+
1012
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
1013
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
1014
+ var isSequence = isNumericSequence || isAlphaSequence;
1015
+ var isOptions = /^(.*,)+(.+)?$/.test(m.body);
1016
+ if (!isSequence && !isOptions) {
1017
+ // {a},b}
1018
+ if (m.post.match(/,.*}/)) {
1019
+ str = m.pre + '{' + m.body + escClose + m.post;
1020
+ return expand(str);
1021
+ }
1022
+ return [str];
1023
+ }
1024
+
1025
+ var n;
1026
+ if (isSequence) {
1027
+ n = m.body.split(/\.\./);
1028
+ } else {
1029
+ n = parseCommaParts(m.body);
1030
+ if (n.length === 1) {
1031
+ // x{{a,b}}y ==> x{a}y x{b}y
1032
+ n = expand(n[0]).map(embrace);
1033
+ if (n.length === 1) {
1034
+ var post = m.post.length
1035
+ ? expand(m.post)
1036
+ : [''];
1037
+ return post.map(function(p) {
1038
+ return m.pre + n[0] + p;
1039
+ });
1040
+ }
1041
+ }
1042
+ }
1043
+
1044
+ // at this point, n is the parts, and we know it's not a comma set
1045
+ // with a single entry.
1046
+
1047
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
1048
+ var pre = m.pre;
1049
+ var post = m.post.length
1050
+ ? expand(m.post)
1051
+ : [''];
1052
+
1053
+ var N;
1054
+
1055
+ if (isSequence) {
1056
+ var x = numeric(n[0]);
1057
+ var y = numeric(n[1]);
1058
+ var width = Math.max(n[0].length, n[1].length)
1059
+ var incr = n.length == 3
1060
+ ? Math.abs(numeric(n[2]))
1061
+ : 1;
1062
+ var test = lte;
1063
+ var reverse = y < x;
1064
+ if (reverse) {
1065
+ incr *= -1;
1066
+ test = gte;
1067
+ }
1068
+ var pad = n.some(isPadded);
1069
+
1070
+ N = [];
1071
+
1072
+ for (var i = x; test(i, y); i += incr) {
1073
+ var c;
1074
+ if (isAlphaSequence) {
1075
+ c = String.fromCharCode(i);
1076
+ if (c === '\\')
1077
+ c = '';
1078
+ } else {
1079
+ c = String(i);
1080
+ if (pad) {
1081
+ var need = width - c.length;
1082
+ if (need > 0) {
1083
+ var z = new Array(need + 1).join('0');
1084
+ if (i < 0)
1085
+ c = '-' + z + c.slice(1);
1086
+ else
1087
+ c = z + c;
1088
+ }
1089
+ }
1090
+ }
1091
+ N.push(c);
1092
+ }
1093
+ } else {
1094
+ N = concatMap(n, function(el) { return expand(el) });
1095
+ }
1096
+
1097
+ for (var j = 0; j < N.length; j++) {
1098
+ for (var k = 0; k < post.length; k++) {
1099
+ expansions.push([pre, N[j], post[k]].join(''))
1100
+ }
1101
+ }
1102
+
1103
+ return expansions;
1104
+ }
1105
+
1106
+
1107
+ },{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){
1108
+ module.exports = balanced;
1109
+ function balanced(a, b, str) {
1110
+ var bal = 0;
1111
+ var m = {};
1112
+ var ended = false;
1113
+
1114
+ for (var i = 0; i < str.length; i++) {
1115
+ if (a == str.substr(i, a.length)) {
1116
+ if (!('start' in m)) m.start = i;
1117
+ bal++;
1118
+ }
1119
+ else if (b == str.substr(i, b.length) && 'start' in m) {
1120
+ ended = true;
1121
+ bal--;
1122
+ if (!bal) {
1123
+ m.end = i;
1124
+ m.pre = str.substr(0, m.start);
1125
+ m.body = (m.end - m.start > 1)
1126
+ ? str.substring(m.start + a.length, m.end)
1127
+ : '';
1128
+ m.post = str.slice(m.end + b.length);
1129
+ return m;
1130
+ }
1131
+ }
1132
+ }
1133
+
1134
+ // if we opened more than we closed, find the one we closed
1135
+ if (bal && ended) {
1136
+ var start = m.start + a.length;
1137
+ m = balanced(a, b, str.substr(start));
1138
+ if (m) {
1139
+ m.start += start;
1140
+ m.end += start;
1141
+ m.pre = str.slice(0, start) + m.pre;
1142
+ }
1143
+ return m;
1144
+ }
1145
+ }
1146
+
1147
+ },{}],4:[function(require,module,exports){
1148
+ module.exports = function (xs, fn) {
1149
+ var res = [];
1150
+ for (var i = 0; i < xs.length; i++) {
1151
+ var x = fn(xs[i], i);
1152
+ if (Array.isArray(x)) res.push.apply(res, x);
1153
+ else res.push(x);
1154
+ }
1155
+ return res;
1156
+ };
1157
+
1158
+ },{}]},{},[1])(1)
1159
+ });