cssesc-source 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (908) hide show
  1. checksums.yaml +15 -0
  2. data/lib/cssesc/source.rb +7 -0
  3. data/vendor/LICENSE-MIT.txt +20 -0
  4. data/vendor/README.md +207 -0
  5. data/vendor/bin/cssesc +122 -0
  6. data/vendor/cssesc.js +177 -0
  7. data/vendor/man/cssesc.1 +70 -0
  8. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/MIT-LICENSE.txt +21 -0
  9. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/README.md +43 -0
  10. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/bin/stripcolorcodes.js +18 -0
  11. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/index.js +3 -0
  12. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/package.json +42 -0
  13. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/test/fixture/with-colors +2 -0
  14. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/test/fixture/without-colors +2 -0
  15. data/vendor/node_modules/grunt-shell/node_modules/stripcolorcodes/test/stripcolorcodes-test.js +20 -0
  16. data/vendor/node_modules/grunt-shell/package.json +53 -0
  17. data/vendor/node_modules/grunt-shell/readme.md +221 -0
  18. data/vendor/node_modules/grunt-shell/tasks/shell.js +54 -0
  19. data/vendor/node_modules/grunt-template/LICENSE-MIT.txt +20 -0
  20. data/vendor/node_modules/grunt-template/README.md +123 -0
  21. data/vendor/node_modules/grunt-template/package.json +50 -0
  22. data/vendor/node_modules/grunt-template/tasks/template.js +44 -0
  23. data/vendor/node_modules/grunt/CONTRIBUTING.md +1 -0
  24. data/vendor/node_modules/grunt/LICENSE-MIT +22 -0
  25. data/vendor/node_modules/grunt/README.md +16 -0
  26. data/vendor/node_modules/grunt/internal-tasks/bump.js +151 -0
  27. data/vendor/node_modules/grunt/internal-tasks/subgrunt.js +34 -0
  28. data/vendor/node_modules/grunt/lib/grunt.js +156 -0
  29. data/vendor/node_modules/grunt/lib/grunt/cli.js +128 -0
  30. data/vendor/node_modules/grunt/lib/grunt/config.js +118 -0
  31. data/vendor/node_modules/grunt/lib/grunt/event.js +16 -0
  32. data/vendor/node_modules/grunt/lib/grunt/fail.js +84 -0
  33. data/vendor/node_modules/grunt/lib/grunt/file.js +440 -0
  34. data/vendor/node_modules/grunt/lib/grunt/help.js +129 -0
  35. data/vendor/node_modules/grunt/lib/grunt/log.js +352 -0
  36. data/vendor/node_modules/grunt/lib/grunt/option.js +42 -0
  37. data/vendor/node_modules/grunt/lib/grunt/task.js +451 -0
  38. data/vendor/node_modules/grunt/lib/grunt/template.js +95 -0
  39. data/vendor/node_modules/grunt/lib/grunt/util.js +188 -0
  40. data/vendor/node_modules/grunt/lib/util/task.js +323 -0
  41. data/vendor/node_modules/grunt/node_modules/async/LICENSE +19 -0
  42. data/vendor/node_modules/grunt/node_modules/async/Makefile +25 -0
  43. data/vendor/node_modules/grunt/node_modules/async/README.md +1021 -0
  44. data/vendor/node_modules/grunt/node_modules/async/index.js +3 -0
  45. data/vendor/node_modules/grunt/node_modules/async/lib/async.js +692 -0
  46. data/vendor/node_modules/grunt/node_modules/async/package.json +32 -0
  47. data/vendor/node_modules/grunt/node_modules/coffee-script/CNAME +1 -0
  48. data/vendor/node_modules/grunt/node_modules/coffee-script/LICENSE +22 -0
  49. data/vendor/node_modules/grunt/node_modules/coffee-script/README +51 -0
  50. data/vendor/node_modules/grunt/node_modules/coffee-script/Rakefile +78 -0
  51. data/vendor/node_modules/grunt/node_modules/coffee-script/bin/cake +7 -0
  52. data/vendor/node_modules/grunt/node_modules/coffee-script/bin/coffee +7 -0
  53. data/vendor/node_modules/grunt/node_modules/coffee-script/extras/jsl.conf +44 -0
  54. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/browser.js +92 -0
  55. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/cake.js +111 -0
  56. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/coffee-script.js +167 -0
  57. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/command.js +500 -0
  58. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/grammar.js +606 -0
  59. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/helpers.js +77 -0
  60. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/index.js +11 -0
  61. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/lexer.js +788 -0
  62. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/nodes.js +2986 -0
  63. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/optparse.js +138 -0
  64. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/parser.js +683 -0
  65. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/repl.js +261 -0
  66. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/rewriter.js +349 -0
  67. data/vendor/node_modules/grunt/node_modules/coffee-script/lib/coffee-script/scope.js +146 -0
  68. data/vendor/node_modules/grunt/node_modules/coffee-script/package.json +47 -0
  69. data/vendor/node_modules/grunt/node_modules/colors/MIT-LICENSE.txt +22 -0
  70. data/vendor/node_modules/grunt/node_modules/colors/ReadMe.md +77 -0
  71. data/vendor/node_modules/grunt/node_modules/colors/colors.js +342 -0
  72. data/vendor/node_modules/grunt/node_modules/colors/example.html +76 -0
  73. data/vendor/node_modules/grunt/node_modules/colors/example.js +77 -0
  74. data/vendor/node_modules/grunt/node_modules/colors/package.json +29 -0
  75. data/vendor/node_modules/grunt/node_modules/colors/test.js +70 -0
  76. data/vendor/node_modules/grunt/node_modules/colors/themes/winston-dark.js +12 -0
  77. data/vendor/node_modules/grunt/node_modules/colors/themes/winston-light.js +12 -0
  78. data/vendor/node_modules/grunt/node_modules/dateformat/Readme.md +67 -0
  79. data/vendor/node_modules/grunt/node_modules/dateformat/lib/dateformat.js +165 -0
  80. data/vendor/node_modules/grunt/node_modules/dateformat/package.json +20 -0
  81. data/vendor/node_modules/grunt/node_modules/dateformat/test/test_weekofyear.js +4 -0
  82. data/vendor/node_modules/grunt/node_modules/dateformat/test/test_weekofyear.sh +27 -0
  83. data/vendor/node_modules/grunt/node_modules/eventemitter2/README.md +212 -0
  84. data/vendor/node_modules/grunt/node_modules/eventemitter2/index.js +1 -0
  85. data/vendor/node_modules/grunt/node_modules/eventemitter2/lib/eventemitter2.js +561 -0
  86. data/vendor/node_modules/grunt/node_modules/eventemitter2/package.json +62 -0
  87. data/vendor/node_modules/grunt/node_modules/exit/Gruntfile.js +48 -0
  88. data/vendor/node_modules/grunt/node_modules/exit/LICENSE-MIT +22 -0
  89. data/vendor/node_modules/grunt/node_modules/exit/README.md +75 -0
  90. data/vendor/node_modules/grunt/node_modules/exit/lib/exit.js +41 -0
  91. data/vendor/node_modules/grunt/node_modules/exit/package.json +51 -0
  92. data/vendor/node_modules/grunt/node_modules/exit/test/exit_test.js +121 -0
  93. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/10-stderr.txt +10 -0
  94. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/10-stdout-stderr.txt +20 -0
  95. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/10-stdout.txt +10 -0
  96. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/100-stderr.txt +100 -0
  97. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/100-stdout-stderr.txt +200 -0
  98. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/100-stdout.txt +100 -0
  99. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/1000-stderr.txt +1000 -0
  100. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/1000-stdout-stderr.txt +2000 -0
  101. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/1000-stdout.txt +1000 -0
  102. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/create-files.sh +8 -0
  103. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/log-broken.js +23 -0
  104. data/vendor/node_modules/grunt/node_modules/exit/test/fixtures/log.js +25 -0
  105. data/vendor/node_modules/grunt/node_modules/findup-sync/Gruntfile.js +25 -0
  106. data/vendor/node_modules/grunt/node_modules/findup-sync/LICENSE-MIT +22 -0
  107. data/vendor/node_modules/grunt/node_modules/findup-sync/README.md +44 -0
  108. data/vendor/node_modules/grunt/node_modules/findup-sync/lib/findup-sync.js +46 -0
  109. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/README.md +164 -0
  110. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js +5152 -0
  111. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.min.js +42 -0
  112. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.js +4983 -0
  113. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.min.js +40 -0
  114. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.js +4307 -0
  115. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.min.js +34 -0
  116. data/vendor/node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json +62 -0
  117. data/vendor/node_modules/grunt/node_modules/findup-sync/package.json +48 -0
  118. data/vendor/node_modules/grunt/node_modules/findup-sync/test/findup-sync_test.js +48 -0
  119. data/vendor/node_modules/grunt/node_modules/findup-sync/test/fixtures/a.txt +0 -0
  120. data/vendor/node_modules/grunt/node_modules/findup-sync/test/fixtures/a/b/bar.txt +0 -0
  121. data/vendor/node_modules/grunt/node_modules/findup-sync/test/fixtures/a/foo.txt +0 -0
  122. data/vendor/node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt +0 -0
  123. data/vendor/node_modules/grunt/node_modules/getobject/Gruntfile.js +48 -0
  124. data/vendor/node_modules/grunt/node_modules/getobject/LICENSE-MIT +22 -0
  125. data/vendor/node_modules/grunt/node_modules/getobject/README.md +20 -0
  126. data/vendor/node_modules/grunt/node_modules/getobject/lib/getobject.js +60 -0
  127. data/vendor/node_modules/grunt/node_modules/getobject/package.json +48 -0
  128. data/vendor/node_modules/grunt/node_modules/getobject/test/namespace_test.js +51 -0
  129. data/vendor/node_modules/grunt/node_modules/glob/LICENSE +27 -0
  130. data/vendor/node_modules/grunt/node_modules/glob/README.md +233 -0
  131. data/vendor/node_modules/grunt/node_modules/glob/examples/g.js +9 -0
  132. data/vendor/node_modules/grunt/node_modules/glob/examples/usr-local.js +9 -0
  133. data/vendor/node_modules/grunt/node_modules/glob/glob.js +643 -0
  134. data/vendor/node_modules/grunt/node_modules/glob/node_modules/graceful-fs/LICENSE +27 -0
  135. data/vendor/node_modules/grunt/node_modules/glob/node_modules/graceful-fs/README.md +33 -0
  136. data/vendor/node_modules/grunt/node_modules/glob/node_modules/graceful-fs/graceful-fs.js +442 -0
  137. data/vendor/node_modules/grunt/node_modules/glob/node_modules/graceful-fs/package.json +49 -0
  138. data/vendor/node_modules/grunt/node_modules/glob/node_modules/graceful-fs/test/open.js +46 -0
  139. data/vendor/node_modules/grunt/node_modules/glob/node_modules/graceful-fs/test/ulimit.js +158 -0
  140. data/vendor/node_modules/grunt/node_modules/glob/node_modules/inherits/README.md +51 -0
  141. data/vendor/node_modules/grunt/node_modules/glob/node_modules/inherits/inherits.js +29 -0
  142. data/vendor/node_modules/grunt/node_modules/glob/node_modules/inherits/package.json +30 -0
  143. data/vendor/node_modules/grunt/node_modules/glob/package.json +40 -0
  144. data/vendor/node_modules/grunt/node_modules/glob/test/00-setup.js +176 -0
  145. data/vendor/node_modules/grunt/node_modules/glob/test/bash-comparison.js +63 -0
  146. data/vendor/node_modules/grunt/node_modules/glob/test/bash-results.json +348 -0
  147. data/vendor/node_modules/grunt/node_modules/glob/test/cwd-test.js +55 -0
  148. data/vendor/node_modules/grunt/node_modules/glob/test/mark.js +74 -0
  149. data/vendor/node_modules/grunt/node_modules/glob/test/nocase-nomagic.js +113 -0
  150. data/vendor/node_modules/grunt/node_modules/glob/test/pause-resume.js +73 -0
  151. data/vendor/node_modules/grunt/node_modules/glob/test/root-nomount.js +39 -0
  152. data/vendor/node_modules/grunt/node_modules/glob/test/root.js +46 -0
  153. data/vendor/node_modules/grunt/node_modules/glob/test/zz-cleanup.js +11 -0
  154. data/vendor/node_modules/grunt/node_modules/hooker/LICENSE-MIT +22 -0
  155. data/vendor/node_modules/grunt/node_modules/hooker/README.md +186 -0
  156. data/vendor/node_modules/grunt/node_modules/hooker/child.js +101 -0
  157. data/vendor/node_modules/grunt/node_modules/hooker/dist/ba-hooker.js +169 -0
  158. data/vendor/node_modules/grunt/node_modules/hooker/dist/ba-hooker.min.js +4 -0
  159. data/vendor/node_modules/grunt/node_modules/hooker/grunt.js +47 -0
  160. data/vendor/node_modules/grunt/node_modules/hooker/lib/hooker.js +174 -0
  161. data/vendor/node_modules/grunt/node_modules/hooker/package.json +45 -0
  162. data/vendor/node_modules/grunt/node_modules/hooker/parent.js +17 -0
  163. data/vendor/node_modules/grunt/node_modules/hooker/test/hooker_test.js +435 -0
  164. data/vendor/node_modules/grunt/node_modules/iconv-lite/LICENSE +21 -0
  165. data/vendor/node_modules/grunt/node_modules/iconv-lite/README.md +72 -0
  166. data/vendor/node_modules/grunt/node_modules/iconv-lite/README.md~ +54 -0
  167. data/vendor/node_modules/grunt/node_modules/iconv-lite/encodings/big5.js +9 -0
  168. data/vendor/node_modules/grunt/node_modules/iconv-lite/encodings/gbk.js +9 -0
  169. data/vendor/node_modules/grunt/node_modules/iconv-lite/encodings/singlebyte.js +340 -0
  170. data/vendor/node_modules/grunt/node_modules/iconv-lite/encodings/table/big5.js +1 -0
  171. data/vendor/node_modules/grunt/node_modules/iconv-lite/encodings/table/gbk.js +1 -0
  172. data/vendor/node_modules/grunt/node_modules/iconv-lite/generation/generate-big5-table.js +25 -0
  173. data/vendor/node_modules/grunt/node_modules/iconv-lite/generation/generate-singlebyte.js +142 -0
  174. data/vendor/node_modules/grunt/node_modules/iconv-lite/index.js +231 -0
  175. data/vendor/node_modules/grunt/node_modules/iconv-lite/package.json +80 -0
  176. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/big5-test.js +36 -0
  177. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/big5File.txt +13 -0
  178. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/cyrillic-test.js +86 -0
  179. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/gbk-test.js +38 -0
  180. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/gbkFile.txt +14 -0
  181. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/greek-test.js +79 -0
  182. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/main-test.js +55 -0
  183. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/performance.js +67 -0
  184. data/vendor/node_modules/grunt/node_modules/iconv-lite/test/turkish-test.js +90 -0
  185. data/vendor/node_modules/grunt/node_modules/js-yaml/HISTORY.md +155 -0
  186. data/vendor/node_modules/grunt/node_modules/js-yaml/LICENSE +21 -0
  187. data/vendor/node_modules/grunt/node_modules/js-yaml/README.md +249 -0
  188. data/vendor/node_modules/grunt/node_modules/js-yaml/bin/js-yaml.js +125 -0
  189. data/vendor/node_modules/grunt/node_modules/js-yaml/examples/custom_types.js +104 -0
  190. data/vendor/node_modules/grunt/node_modules/js-yaml/examples/custom_types.yaml +18 -0
  191. data/vendor/node_modules/grunt/node_modules/js-yaml/examples/dumper.js +31 -0
  192. data/vendor/node_modules/grunt/node_modules/js-yaml/examples/dumper.json +22 -0
  193. data/vendor/node_modules/grunt/node_modules/js-yaml/examples/sample_document.js +15 -0
  194. data/vendor/node_modules/grunt/node_modules/js-yaml/examples/sample_document.yaml +197 -0
  195. data/vendor/node_modules/grunt/node_modules/js-yaml/index.js +1 -0
  196. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml.js +33 -0
  197. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/common.js +60 -0
  198. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/dumper.js +437 -0
  199. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  200. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/loader.js +1549 -0
  201. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  202. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/require.js +23 -0
  203. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  204. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema/default.js +16 -0
  205. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema/minimal.js +13 -0
  206. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema/safe.js +25 -0
  207. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type.js +82 -0
  208. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/binary.js +118 -0
  209. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/bool.js +74 -0
  210. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/float.js +102 -0
  211. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/int.js +85 -0
  212. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/function.js +56 -0
  213. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +56 -0
  214. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +28 -0
  215. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/map.js +11 -0
  216. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/merge.js +18 -0
  217. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  218. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/omap.js +53 -0
  219. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/pairs.js +41 -0
  220. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/seq.js +11 -0
  221. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/set.js +31 -0
  222. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/str.js +11 -0
  223. data/vendor/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +91 -0
  224. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/HISTORY.md +109 -0
  225. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  226. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  227. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  228. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  229. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  230. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  231. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  232. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  233. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  234. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  235. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  236. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  237. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  238. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  239. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  240. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  241. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  242. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  243. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  244. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  245. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  246. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  247. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  248. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  249. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  250. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  251. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  252. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  253. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  254. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1165 -0
  255. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  256. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  257. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +803 -0
  258. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  259. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/Gemfile +4 -0
  260. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/Gemfile.lock +17 -0
  261. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +814 -0
  262. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/Rakefile +23 -0
  263. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  264. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/dist/underscore.string.min.js +1 -0
  265. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  266. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  267. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +73 -0
  268. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/run-qunit.js +45 -0
  269. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/speed.js +148 -0
  270. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/strings.js +685 -0
  271. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/strings_standalone.js +12 -0
  272. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test.html +31 -0
  273. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_standalone.html +18 -0
  274. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/arrays.js +200 -0
  275. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/chaining.js +59 -0
  276. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/collections.js +426 -0
  277. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/functions.js +259 -0
  278. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/index.html +45 -0
  279. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/objects.js +548 -0
  280. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/speed.js +75 -0
  281. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/utility.js +249 -0
  282. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/jquery.js +9404 -0
  283. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/jslitmus.js +670 -0
  284. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/qunit.css +235 -0
  285. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/qunit.js +1977 -0
  286. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/underscore.js +1201 -0
  287. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/CNAME +1 -0
  288. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/CONTRIBUTING.md +9 -0
  289. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +22 -0
  290. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +19 -0
  291. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/favicon.ico +0 -0
  292. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/index.html +2467 -0
  293. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/index.js +1 -0
  294. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +35 -0
  295. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +1 -0
  296. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1226 -0
  297. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/argparse/package.json +50 -0
  298. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  299. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  300. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  301. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  302. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/package.json +59 -0
  303. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  304. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  305. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  306. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  307. data/vendor/node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  308. data/vendor/node_modules/grunt/node_modules/js-yaml/package.json +60 -0
  309. data/vendor/node_modules/grunt/node_modules/lodash/README.md +140 -0
  310. data/vendor/node_modules/grunt/node_modules/lodash/lodash.js +4258 -0
  311. data/vendor/node_modules/grunt/node_modules/lodash/lodash.min.js +35 -0
  312. data/vendor/node_modules/grunt/node_modules/lodash/lodash.underscore.js +3688 -0
  313. data/vendor/node_modules/grunt/node_modules/lodash/lodash.underscore.min.js +28 -0
  314. data/vendor/node_modules/grunt/node_modules/lodash/package.json +62 -0
  315. data/vendor/node_modules/grunt/node_modules/minimatch/LICENSE +23 -0
  316. data/vendor/node_modules/grunt/node_modules/minimatch/README.md +218 -0
  317. data/vendor/node_modules/grunt/node_modules/minimatch/minimatch.js +1055 -0
  318. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +14 -0
  319. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/LICENSE +23 -0
  320. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/README.md +97 -0
  321. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +252 -0
  322. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/package.json +33 -0
  323. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/test/basic.js +369 -0
  324. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +52 -0
  325. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +50 -0
  326. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/sigmund/LICENSE +27 -0
  327. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/sigmund/README.md +53 -0
  328. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/sigmund/bench.js +283 -0
  329. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/sigmund/package.json +42 -0
  330. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/sigmund/sigmund.js +39 -0
  331. data/vendor/node_modules/grunt/node_modules/minimatch/node_modules/sigmund/test/basic.js +24 -0
  332. data/vendor/node_modules/grunt/node_modules/minimatch/package.json +40 -0
  333. data/vendor/node_modules/grunt/node_modules/minimatch/test/basic.js +399 -0
  334. data/vendor/node_modules/grunt/node_modules/minimatch/test/brace-expand.js +33 -0
  335. data/vendor/node_modules/grunt/node_modules/minimatch/test/caching.js +14 -0
  336. data/vendor/node_modules/grunt/node_modules/minimatch/test/defaults.js +274 -0
  337. data/vendor/node_modules/grunt/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  338. data/vendor/node_modules/grunt/node_modules/nopt/LICENSE +23 -0
  339. data/vendor/node_modules/grunt/node_modules/nopt/README.md +208 -0
  340. data/vendor/node_modules/grunt/node_modules/nopt/bin/nopt.js +44 -0
  341. data/vendor/node_modules/grunt/node_modules/nopt/examples/my-program.js +30 -0
  342. data/vendor/node_modules/grunt/node_modules/nopt/lib/nopt.js +552 -0
  343. data/vendor/node_modules/grunt/node_modules/nopt/node_modules/abbrev/LICENSE +23 -0
  344. data/vendor/node_modules/grunt/node_modules/nopt/node_modules/abbrev/README.md +23 -0
  345. data/vendor/node_modules/grunt/node_modules/nopt/node_modules/abbrev/lib/abbrev.js +111 -0
  346. data/vendor/node_modules/grunt/node_modules/nopt/node_modules/abbrev/package.json +29 -0
  347. data/vendor/node_modules/grunt/node_modules/nopt/package.json +36 -0
  348. data/vendor/node_modules/grunt/node_modules/rimraf/AUTHORS +6 -0
  349. data/vendor/node_modules/grunt/node_modules/rimraf/LICENSE +23 -0
  350. data/vendor/node_modules/grunt/node_modules/rimraf/README.md +21 -0
  351. data/vendor/node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/LICENSE +23 -0
  352. data/vendor/node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/README.md +5 -0
  353. data/vendor/node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/graceful-fs.js +312 -0
  354. data/vendor/node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/package.json +40 -0
  355. data/vendor/node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/test/open.js +41 -0
  356. data/vendor/node_modules/grunt/node_modules/rimraf/package.json +59 -0
  357. data/vendor/node_modules/grunt/node_modules/rimraf/rimraf.js +161 -0
  358. data/vendor/node_modules/grunt/node_modules/rimraf/test/run.sh +10 -0
  359. data/vendor/node_modules/grunt/node_modules/rimraf/test/setup.sh +47 -0
  360. data/vendor/node_modules/grunt/node_modules/rimraf/test/test-async.js +5 -0
  361. data/vendor/node_modules/grunt/node_modules/rimraf/test/test-fiber.js +0 -0
  362. data/vendor/node_modules/grunt/node_modules/rimraf/test/test-sync.js +3 -0
  363. data/vendor/node_modules/grunt/node_modules/underscore.string/Gemfile +5 -0
  364. data/vendor/node_modules/grunt/node_modules/underscore.string/Gemfile.lock +34 -0
  365. data/vendor/node_modules/grunt/node_modules/underscore.string/README.markdown +668 -0
  366. data/vendor/node_modules/grunt/node_modules/underscore.string/Rakefile +28 -0
  367. data/vendor/node_modules/grunt/node_modules/underscore.string/dist/underscore.string.min.js +1 -0
  368. data/vendor/node_modules/grunt/node_modules/underscore.string/lib/underscore.string.js +525 -0
  369. data/vendor/node_modules/grunt/node_modules/underscore.string/package.json +72 -0
  370. data/vendor/node_modules/grunt/node_modules/underscore.string/test/run-qunit.js +44 -0
  371. data/vendor/node_modules/grunt/node_modules/underscore.string/test/speed.js +138 -0
  372. data/vendor/node_modules/grunt/node_modules/underscore.string/test/strings.js +438 -0
  373. data/vendor/node_modules/grunt/node_modules/underscore.string/test/strings_standalone.js +12 -0
  374. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test.html +31 -0
  375. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_standalone.html +18 -0
  376. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/arrays.js +166 -0
  377. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/chaining.js +59 -0
  378. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/collections.js +270 -0
  379. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/functions.js +198 -0
  380. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/objects.js +535 -0
  381. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/speed.js +70 -0
  382. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/temp.js +27 -0
  383. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/temp_tests.html +19 -0
  384. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/test.html +43 -0
  385. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/utility.js +155 -0
  386. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/jquery.js +19 -0
  387. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/jslitmus.js +670 -0
  388. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/qunit.css +196 -0
  389. data/vendor/node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/qunit.js +2360 -0
  390. data/vendor/node_modules/grunt/node_modules/underscore.string/test/underscore.js +999 -0
  391. data/vendor/node_modules/grunt/node_modules/which/LICENSE +23 -0
  392. data/vendor/node_modules/grunt/node_modules/which/README.md +5 -0
  393. data/vendor/node_modules/grunt/node_modules/which/bin/which +14 -0
  394. data/vendor/node_modules/grunt/node_modules/which/package.json +31 -0
  395. data/vendor/node_modules/grunt/node_modules/which/which.js +104 -0
  396. data/vendor/node_modules/grunt/package.json +82 -0
  397. data/vendor/node_modules/istanbul/CHANGELOG.md +57 -0
  398. data/vendor/node_modules/istanbul/LICENSE +24 -0
  399. data/vendor/node_modules/istanbul/README.md +205 -0
  400. data/vendor/node_modules/istanbul/index.js +115 -0
  401. data/vendor/node_modules/istanbul/lib/cli.js +74 -0
  402. data/vendor/node_modules/istanbul/lib/collector.js +121 -0
  403. data/vendor/node_modules/istanbul/lib/command/check-coverage.js +115 -0
  404. data/vendor/node_modules/istanbul/lib/command/common/run-with-cover.js +199 -0
  405. data/vendor/node_modules/istanbul/lib/command/cover.js +33 -0
  406. data/vendor/node_modules/istanbul/lib/command/help.js +58 -0
  407. data/vendor/node_modules/istanbul/lib/command/index.js +33 -0
  408. data/vendor/node_modules/istanbul/lib/command/instrument.js +244 -0
  409. data/vendor/node_modules/istanbul/lib/command/report.js +97 -0
  410. data/vendor/node_modules/istanbul/lib/command/test.js +31 -0
  411. data/vendor/node_modules/istanbul/lib/hook.js +187 -0
  412. data/vendor/node_modules/istanbul/lib/instrumenter.js +759 -0
  413. data/vendor/node_modules/istanbul/lib/object-utils.js +341 -0
  414. data/vendor/node_modules/istanbul/lib/register-plugins.js +15 -0
  415. data/vendor/node_modules/istanbul/lib/report/cobertura.js +207 -0
  416. data/vendor/node_modules/istanbul/lib/report/html.js +517 -0
  417. data/vendor/node_modules/istanbul/lib/report/index.js +60 -0
  418. data/vendor/node_modules/istanbul/lib/report/json.js +55 -0
  419. data/vendor/node_modules/istanbul/lib/report/lcov.js +49 -0
  420. data/vendor/node_modules/istanbul/lib/report/lcovonly.js +93 -0
  421. data/vendor/node_modules/istanbul/lib/report/none.js +20 -0
  422. data/vendor/node_modules/istanbul/lib/report/teamcity.js +82 -0
  423. data/vendor/node_modules/istanbul/lib/report/templates/foot.txt +102 -0
  424. data/vendor/node_modules/istanbul/lib/report/templates/head.txt +200 -0
  425. data/vendor/node_modules/istanbul/lib/report/text-summary.js +72 -0
  426. data/vendor/node_modules/istanbul/lib/report/text.js +210 -0
  427. data/vendor/node_modules/istanbul/lib/store/fslookup.js +60 -0
  428. data/vendor/node_modules/istanbul/lib/store/index.js +122 -0
  429. data/vendor/node_modules/istanbul/lib/store/memory.js +55 -0
  430. data/vendor/node_modules/istanbul/lib/store/tmp.js +80 -0
  431. data/vendor/node_modules/istanbul/lib/util/factory.js +88 -0
  432. data/vendor/node_modules/istanbul/lib/util/file-matcher.js +60 -0
  433. data/vendor/node_modules/istanbul/lib/util/file-writer.js +131 -0
  434. data/vendor/node_modules/istanbul/lib/util/flow-control.js +26 -0
  435. data/vendor/node_modules/istanbul/lib/util/help-formatter.js +24 -0
  436. data/vendor/node_modules/istanbul/lib/util/input-error.js +12 -0
  437. data/vendor/node_modules/istanbul/lib/util/insertion-text.js +109 -0
  438. data/vendor/node_modules/istanbul/lib/util/meta.js +13 -0
  439. data/vendor/node_modules/istanbul/lib/util/tree-summarizer.js +213 -0
  440. data/vendor/node_modules/istanbul/lib/util/writer.js +56 -0
  441. data/vendor/node_modules/istanbul/lib/util/yui-load-hook.js +49 -0
  442. data/vendor/node_modules/istanbul/lib/vendor/prettify.css +1 -0
  443. data/vendor/node_modules/istanbul/lib/vendor/prettify.js +1 -0
  444. data/vendor/node_modules/istanbul/node_modules/abbrev/LICENSE +23 -0
  445. data/vendor/node_modules/istanbul/node_modules/abbrev/README.md +23 -0
  446. data/vendor/node_modules/istanbul/node_modules/abbrev/lib/abbrev.js +111 -0
  447. data/vendor/node_modules/istanbul/node_modules/abbrev/package.json +29 -0
  448. data/vendor/node_modules/istanbul/node_modules/async/LICENSE +19 -0
  449. data/vendor/node_modules/istanbul/node_modules/async/README.md +1414 -0
  450. data/vendor/node_modules/istanbul/node_modules/async/component.json +11 -0
  451. data/vendor/node_modules/istanbul/node_modules/async/lib/async.js +955 -0
  452. data/vendor/node_modules/istanbul/node_modules/async/package.json +43 -0
  453. data/vendor/node_modules/istanbul/node_modules/escodegen/LICENSE.BSD +19 -0
  454. data/vendor/node_modules/istanbul/node_modules/escodegen/LICENSE.source-map +27 -0
  455. data/vendor/node_modules/istanbul/node_modules/escodegen/README.md +99 -0
  456. data/vendor/node_modules/istanbul/node_modules/escodegen/bin/escodegen.js +45 -0
  457. data/vendor/node_modules/istanbul/node_modules/escodegen/bin/esgenerate.js +45 -0
  458. data/vendor/node_modules/istanbul/node_modules/escodegen/component.json +48 -0
  459. data/vendor/node_modules/istanbul/node_modules/escodegen/escodegen.browser.js +3072 -0
  460. data/vendor/node_modules/istanbul/node_modules/escodegen/escodegen.js +2275 -0
  461. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/estraverse/LICENSE.BSD +19 -0
  462. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/estraverse/README.md +29 -0
  463. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/estraverse/estraverse.js +315 -0
  464. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/estraverse/package.json +41 -0
  465. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/CHANGELOG.md +112 -0
  466. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/LICENSE +28 -0
  467. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/Makefile.dryice.js +166 -0
  468. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/README.md +434 -0
  469. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/assert-shim.js +56 -0
  470. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/mini-require.js +152 -0
  471. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  472. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/prefix-utils.jsm +18 -0
  473. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/suffix-browser.js +8 -0
  474. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  475. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/suffix-utils.jsm +21 -0
  476. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/test-prefix.js +8 -0
  477. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/build/test-suffix.js +3 -0
  478. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map.js +8 -0
  479. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/array-set.js +97 -0
  480. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  481. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/base64.js +42 -0
  482. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  483. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-consumer.js +477 -0
  484. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/source-map-generator.js +380 -0
  485. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/source-node.js +371 -0
  486. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/lib/source-map/util.js +205 -0
  487. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  488. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  489. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  490. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  491. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/node_modules/amdefine/package.json +36 -0
  492. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/package.json +110 -0
  493. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/run-tests.js +71 -0
  494. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-api.js +26 -0
  495. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  496. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  497. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-base64.js +35 -0
  498. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  499. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-dog-fooding.js +72 -0
  500. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-consumer.js +451 -0
  501. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-map-generator.js +417 -0
  502. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/test-source-node.js +365 -0
  503. data/vendor/node_modules/istanbul/node_modules/escodegen/node_modules/source-map/test/source-map/util.js +161 -0
  504. data/vendor/node_modules/istanbul/node_modules/escodegen/package.json +58 -0
  505. data/vendor/node_modules/istanbul/node_modules/esprima/README.md +73 -0
  506. data/vendor/node_modules/istanbul/node_modules/esprima/bin/esparse.js +117 -0
  507. data/vendor/node_modules/istanbul/node_modules/esprima/bin/esvalidate.js +177 -0
  508. data/vendor/node_modules/istanbul/node_modules/esprima/esprima.js +3908 -0
  509. data/vendor/node_modules/istanbul/node_modules/esprima/package.json +59 -0
  510. data/vendor/node_modules/istanbul/node_modules/esprima/test/compat.js +239 -0
  511. data/vendor/node_modules/istanbul/node_modules/esprima/test/reflect.js +422 -0
  512. data/vendor/node_modules/istanbul/node_modules/esprima/test/run.js +66 -0
  513. data/vendor/node_modules/istanbul/node_modules/esprima/test/runner.js +387 -0
  514. data/vendor/node_modules/istanbul/node_modules/esprima/test/test.js +20238 -0
  515. data/vendor/node_modules/istanbul/node_modules/fileset/LICENSE-MIT +22 -0
  516. data/vendor/node_modules/istanbul/node_modules/fileset/README.md +87 -0
  517. data/vendor/node_modules/istanbul/node_modules/fileset/lib/fileset.js +64 -0
  518. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/LICENSE +27 -0
  519. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/README.md +250 -0
  520. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/examples/g.js +9 -0
  521. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/examples/usr-local.js +9 -0
  522. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/glob.js +680 -0
  523. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  524. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/node_modules/inherits/README.md +42 -0
  525. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  526. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  527. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/node_modules/inherits/package.json +33 -0
  528. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/node_modules/inherits/test.js +25 -0
  529. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/package.json +39 -0
  530. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/00-setup.js +176 -0
  531. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/bash-comparison.js +63 -0
  532. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/bash-results.json +350 -0
  533. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/cwd-test.js +55 -0
  534. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/globstar-match.js +19 -0
  535. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/mark.js +74 -0
  536. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/new-glob-optional-options.js +10 -0
  537. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/nocase-nomagic.js +113 -0
  538. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/pause-resume.js +73 -0
  539. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/root-nomount.js +39 -0
  540. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/root.js +46 -0
  541. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/stat.js +32 -0
  542. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/glob/test/zz-cleanup.js +11 -0
  543. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/LICENSE +23 -0
  544. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/README.md +218 -0
  545. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/minimatch.js +1055 -0
  546. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +14 -0
  547. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/LICENSE +23 -0
  548. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/README.md +97 -0
  549. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +252 -0
  550. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/package.json +33 -0
  551. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/test/basic.js +369 -0
  552. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +52 -0
  553. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +50 -0
  554. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/sigmund/LICENSE +27 -0
  555. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/sigmund/README.md +53 -0
  556. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/sigmund/bench.js +283 -0
  557. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/sigmund/package.json +42 -0
  558. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/sigmund/sigmund.js +39 -0
  559. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/node_modules/sigmund/test/basic.js +24 -0
  560. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/package.json +40 -0
  561. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/test/basic.js +399 -0
  562. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/test/brace-expand.js +33 -0
  563. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/test/caching.js +14 -0
  564. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/test/defaults.js +274 -0
  565. data/vendor/node_modules/istanbul/node_modules/fileset/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  566. data/vendor/node_modules/istanbul/node_modules/fileset/package.json +34 -0
  567. data/vendor/node_modules/istanbul/node_modules/fileset/tests/fixtures/an (odd) filename.js +1 -0
  568. data/vendor/node_modules/istanbul/node_modules/fileset/tests/helper.js +61 -0
  569. data/vendor/node_modules/istanbul/node_modules/fileset/tests/test.js +133 -0
  570. data/vendor/node_modules/istanbul/node_modules/handlebars/LICENSE +19 -0
  571. data/vendor/node_modules/istanbul/node_modules/handlebars/README.markdown +391 -0
  572. data/vendor/node_modules/istanbul/node_modules/handlebars/bin/handlebars +213 -0
  573. data/vendor/node_modules/istanbul/node_modules/handlebars/bower.json +9 -0
  574. data/vendor/node_modules/istanbul/node_modules/handlebars/dist/handlebars.js +2278 -0
  575. data/vendor/node_modules/istanbul/node_modules/handlebars/dist/handlebars.min.js +2 -0
  576. data/vendor/node_modules/istanbul/node_modules/handlebars/dist/handlebars.runtime.js +362 -0
  577. data/vendor/node_modules/istanbul/node_modules/handlebars/dist/handlebars.runtime.min.js +1 -0
  578. data/vendor/node_modules/istanbul/node_modules/handlebars/global-test.js +18 -0
  579. data/vendor/node_modules/istanbul/node_modules/handlebars/global.js +4 -0
  580. data/vendor/node_modules/istanbul/node_modules/handlebars/handlebars-source.gemspec +21 -0
  581. data/vendor/node_modules/istanbul/node_modules/handlebars/handlebars.js.nuspec +17 -0
  582. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars.js +43 -0
  583. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/base.js +166 -0
  584. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/browser-prefix.js +3 -0
  585. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/browser-suffix.js +1 -0
  586. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/ast.js +138 -0
  587. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/base.js +21 -0
  588. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/compiler.js +1305 -0
  589. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/index.js +16 -0
  590. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/parser.js +483 -0
  591. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/printer.js +138 -0
  592. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/compiler/visitor.js +18 -0
  593. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/runtime.js +106 -0
  594. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/source.rb +11 -0
  595. data/vendor/node_modules/istanbul/node_modules/handlebars/lib/handlebars/utils.js +83 -0
  596. data/vendor/node_modules/istanbul/node_modules/handlebars/min.sh +11 -0
  597. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/LICENSE +21 -0
  598. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/bool.js +10 -0
  599. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/boolean_double.js +7 -0
  600. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/boolean_single.js +7 -0
  601. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/default_hash.js +8 -0
  602. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/default_singles.js +7 -0
  603. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/divide.js +8 -0
  604. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/line_count.js +20 -0
  605. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/line_count_options.js +29 -0
  606. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/line_count_wrap.js +29 -0
  607. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/nonopt.js +4 -0
  608. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/reflect.js +2 -0
  609. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/short.js +3 -0
  610. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/string.js +11 -0
  611. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/usage-options.js +19 -0
  612. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/example/xup.js +10 -0
  613. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/index.js +478 -0
  614. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/package.json +46 -0
  615. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/readme.markdown +487 -0
  616. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/test/_.js +71 -0
  617. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/test/_/argv.js +2 -0
  618. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/test/_/bin.js +3 -0
  619. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/test/parse.js +446 -0
  620. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/optimist/test/usage.js +292 -0
  621. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/LICENSE +29 -0
  622. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/README.md +588 -0
  623. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/bin/uglifyjs +402 -0
  624. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/ast.js +985 -0
  625. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/compress.js +2028 -0
  626. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/mozilla-ast.js +267 -0
  627. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/output.js +1229 -0
  628. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/parse.js +1410 -0
  629. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/scope.js +581 -0
  630. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/sourcemap.js +81 -0
  631. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/transform.js +217 -0
  632. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/lib/utils.js +295 -0
  633. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md +112 -0
  634. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/LICENSE +28 -0
  635. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js +166 -0
  636. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/README.md +434 -0
  637. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js +56 -0
  638. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/mini-require.js +152 -0
  639. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  640. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm +18 -0
  641. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js +8 -0
  642. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  643. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm +21 -0
  644. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js +8 -0
  645. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js +3 -0
  646. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map.js +8 -0
  647. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js +97 -0
  648. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  649. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js +42 -0
  650. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  651. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js +477 -0
  652. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js +380 -0
  653. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js +371 -0
  654. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js +205 -0
  655. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  656. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  657. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  658. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  659. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json +37 -0
  660. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/package.json +110 -0
  661. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/run-tests.js +71 -0
  662. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js +26 -0
  663. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  664. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  665. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js +35 -0
  666. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  667. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js +72 -0
  668. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js +451 -0
  669. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js +417 -0
  670. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js +365 -0
  671. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js +161 -0
  672. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/package.json +39 -0
  673. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/arrays.js +12 -0
  674. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/blocks.js +49 -0
  675. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/conditionals.js +143 -0
  676. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/dead-code.js +89 -0
  677. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/debugger.js +24 -0
  678. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/drop-unused.js +97 -0
  679. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/issue-105.js +25 -0
  680. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/issue-12.js +11 -0
  681. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/issue-143.js +48 -0
  682. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/issue-22.js +17 -0
  683. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/issue-44.js +31 -0
  684. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/issue-59.js +30 -0
  685. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/labels.js +163 -0
  686. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/loops.js +123 -0
  687. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/properties.js +54 -0
  688. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/sequences.js +161 -0
  689. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/switch.js +260 -0
  690. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/compress/typeof.js +25 -0
  691. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/test/run-tests.js +170 -0
  692. data/vendor/node_modules/istanbul/node_modules/handlebars/node_modules/uglify-js/tools/node.js +165 -0
  693. data/vendor/node_modules/istanbul/node_modules/handlebars/package.json +42 -0
  694. data/vendor/node_modules/istanbul/node_modules/handlebars/release-notes.md +93 -0
  695. data/vendor/node_modules/istanbul/node_modules/handlebars/test.js +20 -0
  696. data/vendor/node_modules/istanbul/node_modules/mkdirp/LICENSE +21 -0
  697. data/vendor/node_modules/istanbul/node_modules/mkdirp/examples/pow.js +6 -0
  698. data/vendor/node_modules/istanbul/node_modules/mkdirp/index.js +82 -0
  699. data/vendor/node_modules/istanbul/node_modules/mkdirp/package.json +34 -0
  700. data/vendor/node_modules/istanbul/node_modules/mkdirp/readme.markdown +63 -0
  701. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/chmod.js +38 -0
  702. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/clobber.js +37 -0
  703. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/mkdirp.js +28 -0
  704. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/perm.js +32 -0
  705. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/perm_sync.js +39 -0
  706. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/race.js +41 -0
  707. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/rel.js +32 -0
  708. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/return.js +25 -0
  709. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/return_sync.js +24 -0
  710. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/root.js +18 -0
  711. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/sync.js +32 -0
  712. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/umask.js +28 -0
  713. data/vendor/node_modules/istanbul/node_modules/mkdirp/test/umask_sync.js +32 -0
  714. data/vendor/node_modules/istanbul/node_modules/nopt/LICENSE +23 -0
  715. data/vendor/node_modules/istanbul/node_modules/nopt/README.md +210 -0
  716. data/vendor/node_modules/istanbul/node_modules/nopt/bin/nopt.js +51 -0
  717. data/vendor/node_modules/istanbul/node_modules/nopt/examples/my-program.js +30 -0
  718. data/vendor/node_modules/istanbul/node_modules/nopt/lib/nopt.js +612 -0
  719. data/vendor/node_modules/istanbul/node_modules/nopt/package.json +36 -0
  720. data/vendor/node_modules/istanbul/node_modules/resolve/LICENSE +18 -0
  721. data/vendor/node_modules/istanbul/node_modules/resolve/example/async.js +5 -0
  722. data/vendor/node_modules/istanbul/node_modules/resolve/example/sync.js +3 -0
  723. data/vendor/node_modules/istanbul/node_modules/resolve/index.js +5 -0
  724. data/vendor/node_modules/istanbul/node_modules/resolve/lib/async.js +125 -0
  725. data/vendor/node_modules/istanbul/node_modules/resolve/lib/caller.js +8 -0
  726. data/vendor/node_modules/istanbul/node_modules/resolve/lib/core.js +4 -0
  727. data/vendor/node_modules/istanbul/node_modules/resolve/lib/core.json +38 -0
  728. data/vendor/node_modules/istanbul/node_modules/resolve/lib/node-modules-paths.js +25 -0
  729. data/vendor/node_modules/istanbul/node_modules/resolve/lib/sync.js +80 -0
  730. data/vendor/node_modules/istanbul/node_modules/resolve/package.json +36 -0
  731. data/vendor/node_modules/istanbul/node_modules/resolve/readme.markdown +144 -0
  732. data/vendor/node_modules/istanbul/node_modules/resolve/test/core.js +12 -0
  733. data/vendor/node_modules/istanbul/node_modules/resolve/test/filter.js +18 -0
  734. data/vendor/node_modules/istanbul/node_modules/resolve/test/filter_sync.js +15 -0
  735. data/vendor/node_modules/istanbul/node_modules/resolve/test/mock.js +142 -0
  736. data/vendor/node_modules/istanbul/node_modules/resolve/test/mock_sync.js +68 -0
  737. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver.js +270 -0
  738. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js +1 -0
  739. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/baz/doom.js +0 -0
  740. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/baz/package.json +3 -0
  741. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/baz/quux.js +1 -0
  742. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js +1 -0
  743. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json +3 -0
  744. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js +1 -0
  745. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js +1 -0
  746. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/cup.coffee +1 -0
  747. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/foo.js +1 -0
  748. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/incorrect_main/index.js +2 -0
  749. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/incorrect_main/package.json +3 -0
  750. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/mug.coffee +0 -0
  751. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/mug.js +0 -0
  752. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/other_path/lib/other-lib.js +0 -0
  753. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/other_path/root.js +0 -0
  754. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/quux/foo/index.js +1 -0
  755. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/without_basedir/main.js +6 -0
  756. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js +1 -0
  757. data/vendor/node_modules/istanbul/node_modules/resolve/test/resolver_sync.js +170 -0
  758. data/vendor/node_modules/istanbul/node_modules/which/LICENSE +23 -0
  759. data/vendor/node_modules/istanbul/node_modules/which/README.md +5 -0
  760. data/vendor/node_modules/istanbul/node_modules/which/bin/which +14 -0
  761. data/vendor/node_modules/istanbul/node_modules/which/package.json +32 -0
  762. data/vendor/node_modules/istanbul/node_modules/which/which.js +104 -0
  763. data/vendor/node_modules/istanbul/node_modules/wordwrap/README.markdown +70 -0
  764. data/vendor/node_modules/istanbul/node_modules/wordwrap/example/center.js +10 -0
  765. data/vendor/node_modules/istanbul/node_modules/wordwrap/example/meat.js +3 -0
  766. data/vendor/node_modules/istanbul/node_modules/wordwrap/index.js +76 -0
  767. data/vendor/node_modules/istanbul/node_modules/wordwrap/package.json +45 -0
  768. data/vendor/node_modules/istanbul/node_modules/wordwrap/test/break.js +30 -0
  769. data/vendor/node_modules/istanbul/node_modules/wordwrap/test/idleness.txt +63 -0
  770. data/vendor/node_modules/istanbul/node_modules/wordwrap/test/wrap.js +31 -0
  771. data/vendor/node_modules/istanbul/package.json +117 -0
  772. data/vendor/node_modules/istanbul/test/browser/support/index.html +153 -0
  773. data/vendor/node_modules/istanbul/test/browser/support/phantom-test.client.js +49 -0
  774. data/vendor/node_modules/istanbul/test/browser/support/server.js +154 -0
  775. data/vendor/node_modules/istanbul/test/browser/test-browser-instrumentation.js +94 -0
  776. data/vendor/node_modules/istanbul/test/cli-helper.js +219 -0
  777. data/vendor/node_modules/istanbul/test/cli/package.json +8 -0
  778. data/vendor/node_modules/istanbul/test/cli/sample-project/amd/ipsum.js +11 -0
  779. data/vendor/node_modules/istanbul/test/cli/sample-project/amd/lorem.js +7 -0
  780. data/vendor/node_modules/istanbul/test/cli/sample-project/lib/bar.js +13 -0
  781. data/vendor/node_modules/istanbul/test/cli/sample-project/lib/foo.js +12 -0
  782. data/vendor/node_modules/istanbul/test/cli/sample-project/lib/util/bad.js +1 -0
  783. data/vendor/node_modules/istanbul/test/cli/sample-project/lib/util/generate-names.js +5 -0
  784. data/vendor/node_modules/istanbul/test/cli/sample-project/node_modules/dependency/index.js +9 -0
  785. data/vendor/node_modules/istanbul/test/cli/sample-project/node_modules/post-require/hook.js +11 -0
  786. data/vendor/node_modules/istanbul/test/cli/sample-project/node_modules/post-require/package.json +5 -0
  787. data/vendor/node_modules/istanbul/test/cli/sample-project/test/amd-run.js +16 -0
  788. data/vendor/node_modules/istanbul/test/cli/sample-project/test/global-leak.js +30 -0
  789. data/vendor/node_modules/istanbul/test/cli/sample-project/test/run.js +25 -0
  790. data/vendor/node_modules/istanbul/test/cli/sample-project/vendor/dummy_vendor_lib.js +9 -0
  791. data/vendor/node_modules/istanbul/test/cli/test-base-cli.js +39 -0
  792. data/vendor/node_modules/istanbul/test/cli/test-check-coverage-command.js +97 -0
  793. data/vendor/node_modules/istanbul/test/cli/test-cobertura-report.js +54 -0
  794. data/vendor/node_modules/istanbul/test/cli/test-cover-command.js +170 -0
  795. data/vendor/node_modules/istanbul/test/cli/test-html-report.js +125 -0
  796. data/vendor/node_modules/istanbul/test/cli/test-instrument-command.js +167 -0
  797. data/vendor/node_modules/istanbul/test/cli/test-json-report.js +60 -0
  798. data/vendor/node_modules/istanbul/test/cli/test-lcov-report.js +58 -0
  799. data/vendor/node_modules/istanbul/test/cli/test-lcovonly-report.js +61 -0
  800. data/vendor/node_modules/istanbul/test/cli/test-lots-of-files.js +87 -0
  801. data/vendor/node_modules/istanbul/test/cli/test-none-report.js +17 -0
  802. data/vendor/node_modules/istanbul/test/cli/test-report-command.js +65 -0
  803. data/vendor/node_modules/istanbul/test/cli/test-teamcity-report.js +54 -0
  804. data/vendor/node_modules/istanbul/test/cli/test-test-command.js +43 -0
  805. data/vendor/node_modules/istanbul/test/common.js +19 -0
  806. data/vendor/node_modules/istanbul/test/helper.js +122 -0
  807. data/vendor/node_modules/istanbul/test/instrumentation/test-do.js +53 -0
  808. data/vendor/node_modules/istanbul/test/instrumentation/test-expressions.js +70 -0
  809. data/vendor/node_modules/istanbul/test/instrumentation/test-for.js +206 -0
  810. data/vendor/node_modules/istanbul/test/instrumentation/test-forin.js +50 -0
  811. data/vendor/node_modules/istanbul/test/instrumentation/test-functions.js +102 -0
  812. data/vendor/node_modules/istanbul/test/instrumentation/test-if.js +393 -0
  813. data/vendor/node_modules/istanbul/test/instrumentation/test-misc.js +35 -0
  814. data/vendor/node_modules/istanbul/test/instrumentation/test-statement.js +182 -0
  815. data/vendor/node_modules/istanbul/test/instrumentation/test-strict.js +121 -0
  816. data/vendor/node_modules/istanbul/test/instrumentation/test-switch.js +155 -0
  817. data/vendor/node_modules/istanbul/test/instrumentation/test-while.js +104 -0
  818. data/vendor/node_modules/istanbul/test/loader.js +38 -0
  819. data/vendor/node_modules/istanbul/test/other/data-complete-copy/baz.js +3 -0
  820. data/vendor/node_modules/istanbul/test/other/data-complete-copy/fixture.xml +1 -0
  821. data/vendor/node_modules/istanbul/test/other/data-complete-copy/foo.js +4 -0
  822. data/vendor/node_modules/istanbul/test/other/data-complete-copy/myfile1 +0 -0
  823. data/vendor/node_modules/istanbul/test/other/data-complete-copy/myfile2 +1 -0
  824. data/vendor/node_modules/istanbul/test/other/data-complete-copy/subdir/x.css +3 -0
  825. data/vendor/node_modules/istanbul/test/other/data/baz.js +3 -0
  826. data/vendor/node_modules/istanbul/test/other/data/foo.js +4 -0
  827. data/vendor/node_modules/istanbul/test/other/data/matcher/general/general.js +2 -0
  828. data/vendor/node_modules/istanbul/test/other/data/matcher/general/node_modules/mod-file.js +2 -0
  829. data/vendor/node_modules/istanbul/test/other/data/matcher/lib/lib-top.js +2 -0
  830. data/vendor/node_modules/istanbul/test/other/data/matcher/node_modules/dep/mod-file.js +2 -0
  831. data/vendor/node_modules/istanbul/test/other/data/matcher/node_modules/mod-file.js +2 -0
  832. data/vendor/node_modules/istanbul/test/other/data/matcher/top.js +2 -0
  833. data/vendor/node_modules/istanbul/test/other/test-collector.js +85 -0
  834. data/vendor/node_modules/istanbul/test/other/test-command-xface.js +35 -0
  835. data/vendor/node_modules/istanbul/test/other/test-file-writer.js +71 -0
  836. data/vendor/node_modules/istanbul/test/other/test-help-formatter.js +31 -0
  837. data/vendor/node_modules/istanbul/test/other/test-hook.js +87 -0
  838. data/vendor/node_modules/istanbul/test/other/test-index-xface.js +17 -0
  839. data/vendor/node_modules/istanbul/test/other/test-input-error.js +10 -0
  840. data/vendor/node_modules/istanbul/test/other/test-insertion-text.js +102 -0
  841. data/vendor/node_modules/istanbul/test/other/test-matcher.js +93 -0
  842. data/vendor/node_modules/istanbul/test/other/test-object-utils.js +201 -0
  843. data/vendor/node_modules/istanbul/test/other/test-store.js +129 -0
  844. data/vendor/node_modules/istanbul/test/other/test-summarizer.js +172 -0
  845. data/vendor/node_modules/istanbul/test/run-again.js +19 -0
  846. data/vendor/node_modules/istanbul/test/run.js +108 -0
  847. data/vendor/node_modules/istanbul/yui-coverage-comparison.md +85 -0
  848. data/vendor/node_modules/qunit-clib/LICENSE.txt +20 -0
  849. data/vendor/node_modules/qunit-clib/README.md +2 -0
  850. data/vendor/node_modules/qunit-clib/package.json +36 -0
  851. data/vendor/node_modules/qunit-clib/qunit-clib.js +570 -0
  852. data/vendor/node_modules/qunitjs/AUTHORS.txt +55 -0
  853. data/vendor/node_modules/qunitjs/History.md +496 -0
  854. data/vendor/node_modules/qunitjs/README.md +62 -0
  855. data/vendor/node_modules/qunitjs/addons/canvas/README.md +17 -0
  856. data/vendor/node_modules/qunitjs/addons/canvas/canvas-test.js +76 -0
  857. data/vendor/node_modules/qunitjs/addons/canvas/canvas.html +15 -0
  858. data/vendor/node_modules/qunitjs/addons/canvas/qunit-canvas.js +6 -0
  859. data/vendor/node_modules/qunitjs/addons/close-enough/README.md +18 -0
  860. data/vendor/node_modules/qunitjs/addons/close-enough/close-enough-test.js +35 -0
  861. data/vendor/node_modules/qunitjs/addons/close-enough/close-enough.html +14 -0
  862. data/vendor/node_modules/qunitjs/addons/close-enough/qunit-close-enough.js +32 -0
  863. data/vendor/node_modules/qunitjs/addons/composite/README.md +26 -0
  864. data/vendor/node_modules/qunitjs/addons/composite/composite-demo-test.html +24 -0
  865. data/vendor/node_modules/qunitjs/addons/composite/index.html +34 -0
  866. data/vendor/node_modules/qunitjs/addons/composite/qunit-composite.css +13 -0
  867. data/vendor/node_modules/qunitjs/addons/composite/qunit-composite.js +112 -0
  868. data/vendor/node_modules/qunitjs/addons/junitlogger/README.md +18 -0
  869. data/vendor/node_modules/qunitjs/addons/junitlogger/index.html +44 -0
  870. data/vendor/node_modules/qunitjs/addons/junitlogger/junitlogger.js +306 -0
  871. data/vendor/node_modules/qunitjs/addons/phantomjs/README.md +16 -0
  872. data/vendor/node_modules/qunitjs/addons/phantomjs/runner.js +127 -0
  873. data/vendor/node_modules/qunitjs/addons/step/README.md +20 -0
  874. data/vendor/node_modules/qunitjs/addons/step/qunit-step.js +26 -0
  875. data/vendor/node_modules/qunitjs/addons/step/step-test.js +15 -0
  876. data/vendor/node_modules/qunitjs/addons/step/step.html +14 -0
  877. data/vendor/node_modules/qunitjs/addons/themes/README.md +6 -0
  878. data/vendor/node_modules/qunitjs/addons/themes/gabe.css +371 -0
  879. data/vendor/node_modules/qunitjs/addons/themes/gabe.html +15 -0
  880. data/vendor/node_modules/qunitjs/addons/themes/ninja.css +196 -0
  881. data/vendor/node_modules/qunitjs/addons/themes/ninja.html +15 -0
  882. data/vendor/node_modules/qunitjs/addons/themes/nv.css +217 -0
  883. data/vendor/node_modules/qunitjs/addons/themes/nv.html +15 -0
  884. data/vendor/node_modules/qunitjs/grunt.js +101 -0
  885. data/vendor/node_modules/qunitjs/package.json +49 -0
  886. data/vendor/node_modules/qunitjs/qunit/qunit.css +244 -0
  887. data/vendor/node_modules/qunitjs/qunit/qunit.js +2152 -0
  888. data/vendor/node_modules/qunitjs/test/async.html +26 -0
  889. data/vendor/node_modules/qunitjs/test/async.js +6 -0
  890. data/vendor/node_modules/qunitjs/test/deepEqual.js +1438 -0
  891. data/vendor/node_modules/qunitjs/test/headless.html +28 -0
  892. data/vendor/node_modules/qunitjs/test/index.html +16 -0
  893. data/vendor/node_modules/qunitjs/test/logs.html +14 -0
  894. data/vendor/node_modules/qunitjs/test/logs.js +184 -0
  895. data/vendor/node_modules/qunitjs/test/narwhal-test.js +22 -0
  896. data/vendor/node_modules/qunitjs/test/node-test.js +22 -0
  897. data/vendor/node_modules/qunitjs/test/swarminject.js +10 -0
  898. data/vendor/node_modules/qunitjs/test/test.js +804 -0
  899. data/vendor/node_modules/regenerate/LICENSE-MIT.txt +20 -0
  900. data/vendor/node_modules/regenerate/README.md +467 -0
  901. data/vendor/node_modules/regenerate/package.json +50 -0
  902. data/vendor/node_modules/regenerate/regenerate.js +617 -0
  903. data/vendor/node_modules/requirejs/README.md +9 -0
  904. data/vendor/node_modules/requirejs/bin/r.js +26059 -0
  905. data/vendor/node_modules/requirejs/package.json +39 -0
  906. data/vendor/node_modules/requirejs/require.js +2054 -0
  907. data/vendor/package.json +56 -0
  908. metadata +949 -0
@@ -0,0 +1,101 @@
1
+ /*global config:true, task:true*/
2
+ module.exports = function( grunt ) {
3
+
4
+ grunt.loadNpmTasks( "grunt-git-authors" );
5
+
6
+ grunt.initConfig({
7
+ pkg: '<json:package.json>',
8
+ qunit: {
9
+ qunit: [
10
+ 'test/index.html',
11
+ 'test/async.html'
12
+ // TODO figure out why this fails on our Jenkins server (Linux)
13
+ // 'test/logs.html'
14
+ ],
15
+ addons: [
16
+ 'addons/canvas/canvas.html',
17
+ 'addons/close-enough/close-enough.html',
18
+ 'addons/composite/composite-demo-test.html'
19
+ // TODO same as above
20
+ // 'addons/step/step.html'
21
+ ]
22
+ },
23
+ lint: {
24
+ qunit: 'qunit/qunit.js',
25
+ addons: 'addons/**.js',
26
+ tests: 'test/**.js',
27
+ grunt: 'grunt.js'
28
+ },
29
+ // TODO remove this once grunt 0.4 is out, see jquery-ui for other details
30
+ jshint: (function() {
31
+ function parserc( path ) {
32
+ var rc = grunt.file.readJSON( (path || "") + ".jshintrc" ),
33
+ settings = {
34
+ options: rc,
35
+ globals: {}
36
+ };
37
+
38
+ (rc.predef || []).forEach(function( prop ) {
39
+ settings.globals[ prop ] = true;
40
+ });
41
+ delete rc.predef;
42
+
43
+ return settings;
44
+ }
45
+
46
+ return {
47
+ qunit: parserc( "qunit/" ),
48
+ addons: parserc( "addons/" ),
49
+ tests: parserc( "test/" )
50
+ };
51
+ })()
52
+ });
53
+
54
+ grunt.registerTask( "build-git", function( sha ) {
55
+ function processor( content ) {
56
+ var tagline = " - A JavaScript Unit Testing Framework";
57
+ return content.replace( tagline, "-" + sha + " " + grunt.template.today('isoDate') + tagline );
58
+ }
59
+ grunt.file.copy( "qunit/qunit.css", "dist/qunit-git.css", {
60
+ process: processor
61
+ });
62
+ grunt.file.copy( "qunit/qunit.js", "dist/qunit-git.js", {
63
+ process: processor
64
+ });
65
+ });
66
+
67
+ grunt.registerTask( "testswarm", function( commit, configFile ) {
68
+ var testswarm = require( "testswarm" ),
69
+ config = grunt.file.readJSON( configFile ).qunit,
70
+ runs = {},
71
+ done = this.async();
72
+ ["index", "async"].forEach(function (suite) {
73
+ runs[suite] = config.testUrl + commit + "/test/" + suite + ".html";
74
+ });
75
+ testswarm.createClient( {
76
+ url: config.swarmUrl,
77
+ pollInterval: 10000,
78
+ timeout: 1000 * 60 * 30
79
+ } )
80
+ .addReporter( testswarm.reporters.cli )
81
+ .auth( {
82
+ id: config.authUsername,
83
+ token: config.authToken
84
+ } )
85
+ .addjob(
86
+ {
87
+ jobName: 'QUnit commit #<a href="https://github.com/jquery/qunit/commit/' + commit + '">' + commit.substr( 0, 10 ) + '</a>',
88
+ runs: runs,
89
+ browserSets: config.browserSets
90
+ }, function( err, passed ) {
91
+ if ( err ) {
92
+ grunt.log.error( err );
93
+ }
94
+ done( passed );
95
+ }
96
+ );
97
+ });
98
+
99
+ grunt.registerTask('default', 'lint qunit');
100
+
101
+ };
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "qunitjs",
3
+ "title": "QUnit",
4
+ "description": "An easy-to-use JavaScript Unit Testing framework.",
5
+ "version": "1.11.0",
6
+ "author": {
7
+ "name": "jQuery Foundation and other contributors",
8
+ "url": "https://github.com/jquery/qunit/blob/master/AUTHORS.txt"
9
+ },
10
+ "contributors": [
11
+ {
12
+ "name": "John Resig",
13
+ "email": "jeresig@gmail.com",
14
+ "url": "http://ejohn.org/"
15
+ },
16
+ {
17
+ "name": "Jörn Zaefferer",
18
+ "email": "joern.zaefferer@gmail.com",
19
+ "url": "http://bassistance.de/"
20
+ }
21
+ ],
22
+ "homepage": "http://qunitjs.com",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git://github.com/jquery/qunit.git"
26
+ },
27
+ "bugs": {
28
+ "url": "https://github.com/jquery/qunit/issues"
29
+ },
30
+ "license": {
31
+ "name": "MIT",
32
+ "url": "http://www.opensource.org/licenses/mit-license.php"
33
+ },
34
+ "keywords": [
35
+ "testing",
36
+ "unit",
37
+ "jquery"
38
+ ],
39
+ "main": "qunit/qunit.js",
40
+ "devDependencies": {
41
+ "grunt": "0.3.x",
42
+ "grunt-git-authors": "1.0.0",
43
+ "testswarm": "1.0.0-alpha"
44
+ },
45
+ "readme": "[QUnit](http://qunitjs.com) - A JavaScript Unit Testing framework.\n================================\n\nQUnit is a powerful, easy-to-use, JavaScript test suite. It's used by the jQuery\nproject to test its code and plugins but is capable of testing any generic\nJavaScript code (and even capable of testing JavaScript code on the server-side).\n\nQUnit is especially useful for regression testing: Whenever a bug is reported,\nwrite a test that asserts the existence of that particular bug. Then fix it and\ncommit both. Every time you work on the code again, run the tests. If the bug\ncomes up again - a regression - you'll spot it immediately and know how to fix\nit, because you know what code you just changed.\n\nHaving good unit test coverage makes safe refactoring easy and cheap. You can\nrun the tests after each small refactoring step and always know what change\nbroke something.\n\nQUnit is similar to other unit testing frameworks like JUnit, but makes use of\nthe features JavaScript provides and helps with testing code in the browser, e.g.\nwith its stop/start facilities for testing asynchronous code.\n\nIf you are interested in helping developing QUnit, you are in the right place.\nFor related discussions, visit the\n[QUnit and Testing forum](http://forum.jquery.com/qunit-and-testing).\n\nDevelopment\n-----------\n\nTo submit patches, fork the repository, create a branch for the change. Then implement\nthe change, run `grunt` to lint and test it, then commit, push and create a pull request.\n\nInclude some background for the change in the commit message and `Fixes #nnn`, referring\nto the issue number you're addressing.\n\nTo run `grunt`, you need `node` and `npm`, then `npm install grunt -g`. That gives you a global\ngrunt binary. For additional grunt tasks, also run `npm install`.\n\nReleases\n--------\n\nInstall git-extras and run `git changelog` to update History.md.\nUpdate qunit/qunit.js|css and package.json to the release version, commit and\ntag, update them again to the next version, commit and push commits and tags\n(`git push --tags origin master`).\n\nPut the 'v' in front of the tag, e.g. `v1.8.0`. Clean up the changelog, removing merge commits\nor whitespace cleanups.\n\nTo upload to code.jquery.com (replace $version accordingly), ssh to code.origin.jquery.com:\n\n\tcp qunit/qunit.js /var/www/html/code.jquery.com/qunit/qunit-$version.js\n\tcp qunit/qunit.css /var/www/html/code.jquery.com/qunit/qunit-$version.css\n\nThen update /var/www/html/code.jquery.com/index.html and purge it with:\n\n\tcurl -s http://code.origin.jquery.com/?reload\n\nUpdate web-base-template to link to those files for qunitjs.com.\n\nPublish to npm via\n\n\tnpm publish\n",
46
+ "readmeFilename": "README.md",
47
+ "_id": "qunitjs@1.11.0",
48
+ "_from": "qunitjs@~1.11.0"
49
+ }
@@ -0,0 +1,244 @@
1
+ /**
2
+ * QUnit v1.11.0 - A JavaScript Unit Testing Framework
3
+ *
4
+ * http://qunitjs.com
5
+ *
6
+ * Copyright 2012 jQuery Foundation and other contributors
7
+ * Released under the MIT license.
8
+ * http://jquery.org/license
9
+ */
10
+
11
+ /** Font Family and Sizes */
12
+
13
+ #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
14
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
15
+ }
16
+
17
+ #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
18
+ #qunit-tests { font-size: smaller; }
19
+
20
+
21
+ /** Resets */
22
+
23
+ #qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
24
+ margin: 0;
25
+ padding: 0;
26
+ }
27
+
28
+
29
+ /** Header */
30
+
31
+ #qunit-header {
32
+ padding: 0.5em 0 0.5em 1em;
33
+
34
+ color: #8699a4;
35
+ background-color: #0d3349;
36
+
37
+ font-size: 1.5em;
38
+ line-height: 1em;
39
+ font-weight: normal;
40
+
41
+ border-radius: 5px 5px 0 0;
42
+ -moz-border-radius: 5px 5px 0 0;
43
+ -webkit-border-top-right-radius: 5px;
44
+ -webkit-border-top-left-radius: 5px;
45
+ }
46
+
47
+ #qunit-header a {
48
+ text-decoration: none;
49
+ color: #c2ccd1;
50
+ }
51
+
52
+ #qunit-header a:hover,
53
+ #qunit-header a:focus {
54
+ color: #fff;
55
+ }
56
+
57
+ #qunit-testrunner-toolbar label {
58
+ display: inline-block;
59
+ padding: 0 .5em 0 .1em;
60
+ }
61
+
62
+ #qunit-banner {
63
+ height: 5px;
64
+ }
65
+
66
+ #qunit-testrunner-toolbar {
67
+ padding: 0.5em 0 0.5em 2em;
68
+ color: #5E740B;
69
+ background-color: #eee;
70
+ overflow: hidden;
71
+ }
72
+
73
+ #qunit-userAgent {
74
+ padding: 0.5em 0 0.5em 2.5em;
75
+ background-color: #2b81af;
76
+ color: #fff;
77
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
78
+ }
79
+
80
+ #qunit-modulefilter-container {
81
+ float: right;
82
+ }
83
+
84
+ /** Tests: Pass/Fail */
85
+
86
+ #qunit-tests {
87
+ list-style-position: inside;
88
+ }
89
+
90
+ #qunit-tests li {
91
+ padding: 0.4em 0.5em 0.4em 2.5em;
92
+ border-bottom: 1px solid #fff;
93
+ list-style-position: inside;
94
+ }
95
+
96
+ #qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
97
+ display: none;
98
+ }
99
+
100
+ #qunit-tests li strong {
101
+ cursor: pointer;
102
+ }
103
+
104
+ #qunit-tests li a {
105
+ padding: 0.5em;
106
+ color: #c2ccd1;
107
+ text-decoration: none;
108
+ }
109
+ #qunit-tests li a:hover,
110
+ #qunit-tests li a:focus {
111
+ color: #000;
112
+ }
113
+
114
+ #qunit-tests li .runtime {
115
+ float: right;
116
+ font-size: smaller;
117
+ }
118
+
119
+ .qunit-assert-list {
120
+ margin-top: 0.5em;
121
+ padding: 0.5em;
122
+
123
+ background-color: #fff;
124
+
125
+ border-radius: 5px;
126
+ -moz-border-radius: 5px;
127
+ -webkit-border-radius: 5px;
128
+ }
129
+
130
+ .qunit-collapsed {
131
+ display: none;
132
+ }
133
+
134
+ #qunit-tests table {
135
+ border-collapse: collapse;
136
+ margin-top: .2em;
137
+ }
138
+
139
+ #qunit-tests th {
140
+ text-align: right;
141
+ vertical-align: top;
142
+ padding: 0 .5em 0 0;
143
+ }
144
+
145
+ #qunit-tests td {
146
+ vertical-align: top;
147
+ }
148
+
149
+ #qunit-tests pre {
150
+ margin: 0;
151
+ white-space: pre-wrap;
152
+ word-wrap: break-word;
153
+ }
154
+
155
+ #qunit-tests del {
156
+ background-color: #e0f2be;
157
+ color: #374e0c;
158
+ text-decoration: none;
159
+ }
160
+
161
+ #qunit-tests ins {
162
+ background-color: #ffcaca;
163
+ color: #500;
164
+ text-decoration: none;
165
+ }
166
+
167
+ /*** Test Counts */
168
+
169
+ #qunit-tests b.counts { color: black; }
170
+ #qunit-tests b.passed { color: #5E740B; }
171
+ #qunit-tests b.failed { color: #710909; }
172
+
173
+ #qunit-tests li li {
174
+ padding: 5px;
175
+ background-color: #fff;
176
+ border-bottom: none;
177
+ list-style-position: inside;
178
+ }
179
+
180
+ /*** Passing Styles */
181
+
182
+ #qunit-tests li li.pass {
183
+ color: #3c510c;
184
+ background-color: #fff;
185
+ border-left: 10px solid #C6E746;
186
+ }
187
+
188
+ #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
189
+ #qunit-tests .pass .test-name { color: #366097; }
190
+
191
+ #qunit-tests .pass .test-actual,
192
+ #qunit-tests .pass .test-expected { color: #999999; }
193
+
194
+ #qunit-banner.qunit-pass { background-color: #C6E746; }
195
+
196
+ /*** Failing Styles */
197
+
198
+ #qunit-tests li li.fail {
199
+ color: #710909;
200
+ background-color: #fff;
201
+ border-left: 10px solid #EE5757;
202
+ white-space: pre;
203
+ }
204
+
205
+ #qunit-tests > li:last-child {
206
+ border-radius: 0 0 5px 5px;
207
+ -moz-border-radius: 0 0 5px 5px;
208
+ -webkit-border-bottom-right-radius: 5px;
209
+ -webkit-border-bottom-left-radius: 5px;
210
+ }
211
+
212
+ #qunit-tests .fail { color: #000000; background-color: #EE5757; }
213
+ #qunit-tests .fail .test-name,
214
+ #qunit-tests .fail .module-name { color: #000000; }
215
+
216
+ #qunit-tests .fail .test-actual { color: #EE5757; }
217
+ #qunit-tests .fail .test-expected { color: green; }
218
+
219
+ #qunit-banner.qunit-fail { background-color: #EE5757; }
220
+
221
+
222
+ /** Result */
223
+
224
+ #qunit-testresult {
225
+ padding: 0.5em 0.5em 0.5em 2.5em;
226
+
227
+ color: #2b81af;
228
+ background-color: #D2E0E6;
229
+
230
+ border-bottom: 1px solid white;
231
+ }
232
+ #qunit-testresult .module-name {
233
+ font-weight: bold;
234
+ }
235
+
236
+ /** Fixture */
237
+
238
+ #qunit-fixture {
239
+ position: absolute;
240
+ top: -10000px;
241
+ left: -10000px;
242
+ width: 1000px;
243
+ height: 1000px;
244
+ }
@@ -0,0 +1,2152 @@
1
+ /**
2
+ * QUnit v1.11.0 - A JavaScript Unit Testing Framework
3
+ *
4
+ * http://qunitjs.com
5
+ *
6
+ * Copyright 2012 jQuery Foundation and other contributors
7
+ * Released under the MIT license.
8
+ * http://jquery.org/license
9
+ */
10
+
11
+ (function( window ) {
12
+
13
+ var QUnit,
14
+ assert,
15
+ config,
16
+ onErrorFnPrev,
17
+ testId = 0,
18
+ fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
19
+ toString = Object.prototype.toString,
20
+ hasOwn = Object.prototype.hasOwnProperty,
21
+ // Keep a local reference to Date (GH-283)
22
+ Date = window.Date,
23
+ defined = {
24
+ setTimeout: typeof window.setTimeout !== "undefined",
25
+ sessionStorage: (function() {
26
+ var x = "qunit-test-string";
27
+ try {
28
+ sessionStorage.setItem( x, x );
29
+ sessionStorage.removeItem( x );
30
+ return true;
31
+ } catch( e ) {
32
+ return false;
33
+ }
34
+ }())
35
+ },
36
+ /**
37
+ * Provides a normalized error string, correcting an issue
38
+ * with IE 7 (and prior) where Error.prototype.toString is
39
+ * not properly implemented
40
+ *
41
+ * Based on http://es5.github.com/#x15.11.4.4
42
+ *
43
+ * @param {String|Error} error
44
+ * @return {String} error message
45
+ */
46
+ errorString = function( error ) {
47
+ var name, message,
48
+ errorString = error.toString();
49
+ if ( errorString.substring( 0, 7 ) === "[object" ) {
50
+ name = error.name ? error.name.toString() : "Error";
51
+ message = error.message ? error.message.toString() : "";
52
+ if ( name && message ) {
53
+ return name + ": " + message;
54
+ } else if ( name ) {
55
+ return name;
56
+ } else if ( message ) {
57
+ return message;
58
+ } else {
59
+ return "Error";
60
+ }
61
+ } else {
62
+ return errorString;
63
+ }
64
+ },
65
+ /**
66
+ * Makes a clone of an object using only Array or Object as base,
67
+ * and copies over the own enumerable properties.
68
+ *
69
+ * @param {Object} obj
70
+ * @return {Object} New object with only the own properties (recursively).
71
+ */
72
+ objectValues = function( obj ) {
73
+ // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392.
74
+ /*jshint newcap: false */
75
+ var key, val,
76
+ vals = QUnit.is( "array", obj ) ? [] : {};
77
+ for ( key in obj ) {
78
+ if ( hasOwn.call( obj, key ) ) {
79
+ val = obj[key];
80
+ vals[key] = val === Object(val) ? objectValues(val) : val;
81
+ }
82
+ }
83
+ return vals;
84
+ };
85
+
86
+ function Test( settings ) {
87
+ extend( this, settings );
88
+ this.assertions = [];
89
+ this.testNumber = ++Test.count;
90
+ }
91
+
92
+ Test.count = 0;
93
+
94
+ Test.prototype = {
95
+ init: function() {
96
+ var a, b, li,
97
+ tests = id( "qunit-tests" );
98
+
99
+ if ( tests ) {
100
+ b = document.createElement( "strong" );
101
+ b.innerHTML = this.nameHtml;
102
+
103
+ // `a` initialized at top of scope
104
+ a = document.createElement( "a" );
105
+ a.innerHTML = "Rerun";
106
+ a.href = QUnit.url({ testNumber: this.testNumber });
107
+
108
+ li = document.createElement( "li" );
109
+ li.appendChild( b );
110
+ li.appendChild( a );
111
+ li.className = "running";
112
+ li.id = this.id = "qunit-test-output" + testId++;
113
+
114
+ tests.appendChild( li );
115
+ }
116
+ },
117
+ setup: function() {
118
+ if ( this.module !== config.previousModule ) {
119
+ if ( config.previousModule ) {
120
+ runLoggingCallbacks( "moduleDone", QUnit, {
121
+ name: config.previousModule,
122
+ failed: config.moduleStats.bad,
123
+ passed: config.moduleStats.all - config.moduleStats.bad,
124
+ total: config.moduleStats.all
125
+ });
126
+ }
127
+ config.previousModule = this.module;
128
+ config.moduleStats = { all: 0, bad: 0 };
129
+ runLoggingCallbacks( "moduleStart", QUnit, {
130
+ name: this.module
131
+ });
132
+ } else if ( config.autorun ) {
133
+ runLoggingCallbacks( "moduleStart", QUnit, {
134
+ name: this.module
135
+ });
136
+ }
137
+
138
+ config.current = this;
139
+
140
+ this.testEnvironment = extend({
141
+ setup: function() {},
142
+ teardown: function() {}
143
+ }, this.moduleTestEnvironment );
144
+
145
+ this.started = +new Date();
146
+ runLoggingCallbacks( "testStart", QUnit, {
147
+ name: this.testName,
148
+ module: this.module
149
+ });
150
+
151
+ // allow utility functions to access the current test environment
152
+ // TODO why??
153
+ QUnit.current_testEnvironment = this.testEnvironment;
154
+
155
+ if ( !config.pollution ) {
156
+ saveGlobal();
157
+ }
158
+ if ( config.notrycatch ) {
159
+ this.testEnvironment.setup.call( this.testEnvironment );
160
+ return;
161
+ }
162
+ try {
163
+ this.testEnvironment.setup.call( this.testEnvironment );
164
+ } catch( e ) {
165
+ QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
166
+ }
167
+ },
168
+ run: function() {
169
+ config.current = this;
170
+
171
+ var running = id( "qunit-testresult" );
172
+
173
+ if ( running ) {
174
+ running.innerHTML = "Running: <br/>" + this.nameHtml;
175
+ }
176
+
177
+ if ( this.async ) {
178
+ QUnit.stop();
179
+ }
180
+
181
+ this.callbackStarted = +new Date();
182
+
183
+ if ( config.notrycatch ) {
184
+ this.callback.call( this.testEnvironment, QUnit.assert );
185
+ this.callbackRuntime = +new Date() - this.callbackStarted;
186
+ return;
187
+ }
188
+
189
+ try {
190
+ this.callback.call( this.testEnvironment, QUnit.assert );
191
+ this.callbackRuntime = +new Date() - this.callbackStarted;
192
+ } catch( e ) {
193
+ this.callbackRuntime = +new Date() - this.callbackStarted;
194
+
195
+ QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
196
+ // else next test will carry the responsibility
197
+ saveGlobal();
198
+
199
+ // Restart the tests if they're blocking
200
+ if ( config.blocking ) {
201
+ QUnit.start();
202
+ }
203
+ }
204
+ },
205
+ teardown: function() {
206
+ config.current = this;
207
+ if ( config.notrycatch ) {
208
+ if ( typeof this.callbackRuntime === "undefined" ) {
209
+ this.callbackRuntime = +new Date() - this.callbackStarted;
210
+ }
211
+ this.testEnvironment.teardown.call( this.testEnvironment );
212
+ return;
213
+ } else {
214
+ try {
215
+ this.testEnvironment.teardown.call( this.testEnvironment );
216
+ } catch( e ) {
217
+ QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
218
+ }
219
+ }
220
+ checkPollution();
221
+ },
222
+ finish: function() {
223
+ config.current = this;
224
+ if ( config.requireExpects && this.expected === null ) {
225
+ QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
226
+ } else if ( this.expected !== null && this.expected !== this.assertions.length ) {
227
+ QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
228
+ } else if ( this.expected === null && !this.assertions.length ) {
229
+ QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
230
+ }
231
+
232
+ var i, assertion, a, b, time, li, ol,
233
+ test = this,
234
+ good = 0,
235
+ bad = 0,
236
+ tests = id( "qunit-tests" );
237
+
238
+ this.runtime = +new Date() - this.started;
239
+ config.stats.all += this.assertions.length;
240
+ config.moduleStats.all += this.assertions.length;
241
+
242
+ if ( tests ) {
243
+ ol = document.createElement( "ol" );
244
+ ol.className = "qunit-assert-list";
245
+
246
+ for ( i = 0; i < this.assertions.length; i++ ) {
247
+ assertion = this.assertions[i];
248
+
249
+ li = document.createElement( "li" );
250
+ li.className = assertion.result ? "pass" : "fail";
251
+ li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
252
+ ol.appendChild( li );
253
+
254
+ if ( assertion.result ) {
255
+ good++;
256
+ } else {
257
+ bad++;
258
+ config.stats.bad++;
259
+ config.moduleStats.bad++;
260
+ }
261
+ }
262
+
263
+ // store result when possible
264
+ if ( QUnit.config.reorder && defined.sessionStorage ) {
265
+ if ( bad ) {
266
+ sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
267
+ } else {
268
+ sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
269
+ }
270
+ }
271
+
272
+ if ( bad === 0 ) {
273
+ addClass( ol, "qunit-collapsed" );
274
+ }
275
+
276
+ // `b` initialized at top of scope
277
+ b = document.createElement( "strong" );
278
+ b.innerHTML = this.nameHtml + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
279
+
280
+ addEvent(b, "click", function() {
281
+ var next = b.parentNode.lastChild,
282
+ collapsed = hasClass( next, "qunit-collapsed" );
283
+ ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" );
284
+ });
285
+
286
+ addEvent(b, "dblclick", function( e ) {
287
+ var target = e && e.target ? e.target : window.event.srcElement;
288
+ if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) {
289
+ target = target.parentNode;
290
+ }
291
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
292
+ window.location = QUnit.url({ testNumber: test.testNumber });
293
+ }
294
+ });
295
+
296
+ // `time` initialized at top of scope
297
+ time = document.createElement( "span" );
298
+ time.className = "runtime";
299
+ time.innerHTML = this.runtime + " ms";
300
+
301
+ // `li` initialized at top of scope
302
+ li = id( this.id );
303
+ li.className = bad ? "fail" : "pass";
304
+ li.removeChild( li.firstChild );
305
+ a = li.firstChild;
306
+ li.appendChild( b );
307
+ li.appendChild( a );
308
+ li.appendChild( time );
309
+ li.appendChild( ol );
310
+
311
+ } else {
312
+ for ( i = 0; i < this.assertions.length; i++ ) {
313
+ if ( !this.assertions[i].result ) {
314
+ bad++;
315
+ config.stats.bad++;
316
+ config.moduleStats.bad++;
317
+ }
318
+ }
319
+ }
320
+
321
+ runLoggingCallbacks( "testDone", QUnit, {
322
+ name: this.testName,
323
+ module: this.module,
324
+ failed: bad,
325
+ passed: this.assertions.length - bad,
326
+ total: this.assertions.length,
327
+ duration: this.runtime
328
+ });
329
+
330
+ QUnit.reset();
331
+
332
+ config.current = undefined;
333
+ },
334
+
335
+ queue: function() {
336
+ var bad,
337
+ test = this;
338
+
339
+ synchronize(function() {
340
+ test.init();
341
+ });
342
+ function run() {
343
+ // each of these can by async
344
+ synchronize(function() {
345
+ test.setup();
346
+ });
347
+ synchronize(function() {
348
+ test.run();
349
+ });
350
+ synchronize(function() {
351
+ test.teardown();
352
+ });
353
+ synchronize(function() {
354
+ test.finish();
355
+ });
356
+ }
357
+
358
+ // `bad` initialized at top of scope
359
+ // defer when previous test run passed, if storage is available
360
+ bad = QUnit.config.reorder && defined.sessionStorage &&
361
+ +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
362
+
363
+ if ( bad ) {
364
+ run();
365
+ } else {
366
+ synchronize( run, true );
367
+ }
368
+ }
369
+ };
370
+
371
+ // Root QUnit object.
372
+ // `QUnit` initialized at top of scope
373
+ QUnit = {
374
+
375
+ // call on start of module test to prepend name to all tests
376
+ module: function( name, testEnvironment ) {
377
+ config.currentModule = name;
378
+ config.currentModuleTestEnvironment = testEnvironment;
379
+ config.modules[name] = true;
380
+ },
381
+
382
+ asyncTest: function( testName, expected, callback ) {
383
+ if ( arguments.length === 2 ) {
384
+ callback = expected;
385
+ expected = null;
386
+ }
387
+
388
+ QUnit.test( testName, expected, callback, true );
389
+ },
390
+
391
+ test: function( testName, expected, callback, async ) {
392
+ var test,
393
+ nameHtml = "<span class='test-name'>" + escapeText( testName ) + "</span>";
394
+
395
+ if ( arguments.length === 2 ) {
396
+ callback = expected;
397
+ expected = null;
398
+ }
399
+
400
+ if ( config.currentModule ) {
401
+ nameHtml = "<span class='module-name'>" + escapeText( config.currentModule ) + "</span>: " + nameHtml;
402
+ }
403
+
404
+ test = new Test({
405
+ nameHtml: nameHtml,
406
+ testName: testName,
407
+ expected: expected,
408
+ async: async,
409
+ callback: callback,
410
+ module: config.currentModule,
411
+ moduleTestEnvironment: config.currentModuleTestEnvironment,
412
+ stack: sourceFromStacktrace( 2 )
413
+ });
414
+
415
+ if ( !validTest( test ) ) {
416
+ return;
417
+ }
418
+
419
+ test.queue();
420
+ },
421
+
422
+ // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
423
+ expect: function( asserts ) {
424
+ if (arguments.length === 1) {
425
+ config.current.expected = asserts;
426
+ } else {
427
+ return config.current.expected;
428
+ }
429
+ },
430
+
431
+ start: function( count ) {
432
+ // QUnit hasn't been initialized yet.
433
+ // Note: RequireJS (et al) may delay onLoad
434
+ if ( config.semaphore === undefined ) {
435
+ QUnit.begin(function() {
436
+ // This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first
437
+ setTimeout(function() {
438
+ QUnit.start( count );
439
+ });
440
+ });
441
+ return;
442
+ }
443
+
444
+ config.semaphore -= count || 1;
445
+ // don't start until equal number of stop-calls
446
+ if ( config.semaphore > 0 ) {
447
+ return;
448
+ }
449
+ // ignore if start is called more often then stop
450
+ if ( config.semaphore < 0 ) {
451
+ config.semaphore = 0;
452
+ QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) );
453
+ return;
454
+ }
455
+ // A slight delay, to avoid any current callbacks
456
+ if ( defined.setTimeout ) {
457
+ window.setTimeout(function() {
458
+ if ( config.semaphore > 0 ) {
459
+ return;
460
+ }
461
+ if ( config.timeout ) {
462
+ clearTimeout( config.timeout );
463
+ }
464
+
465
+ config.blocking = false;
466
+ process( true );
467
+ }, 13);
468
+ } else {
469
+ config.blocking = false;
470
+ process( true );
471
+ }
472
+ },
473
+
474
+ stop: function( count ) {
475
+ config.semaphore += count || 1;
476
+ config.blocking = true;
477
+
478
+ if ( config.testTimeout && defined.setTimeout ) {
479
+ clearTimeout( config.timeout );
480
+ config.timeout = window.setTimeout(function() {
481
+ QUnit.ok( false, "Test timed out" );
482
+ config.semaphore = 1;
483
+ QUnit.start();
484
+ }, config.testTimeout );
485
+ }
486
+ }
487
+ };
488
+
489
+ // `assert` initialized at top of scope
490
+ // Asssert helpers
491
+ // All of these must either call QUnit.push() or manually do:
492
+ // - runLoggingCallbacks( "log", .. );
493
+ // - config.current.assertions.push({ .. });
494
+ // We attach it to the QUnit object *after* we expose the public API,
495
+ // otherwise `assert` will become a global variable in browsers (#341).
496
+ assert = {
497
+ /**
498
+ * Asserts rough true-ish result.
499
+ * @name ok
500
+ * @function
501
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
502
+ */
503
+ ok: function( result, msg ) {
504
+ if ( !config.current ) {
505
+ throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
506
+ }
507
+ result = !!result;
508
+
509
+ var source,
510
+ details = {
511
+ module: config.current.module,
512
+ name: config.current.testName,
513
+ result: result,
514
+ message: msg
515
+ };
516
+
517
+ msg = escapeText( msg || (result ? "okay" : "failed" ) );
518
+ msg = "<span class='test-message'>" + msg + "</span>";
519
+
520
+ if ( !result ) {
521
+ source = sourceFromStacktrace( 2 );
522
+ if ( source ) {
523
+ details.source = source;
524
+ msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr></table>";
525
+ }
526
+ }
527
+ runLoggingCallbacks( "log", QUnit, details );
528
+ config.current.assertions.push({
529
+ result: result,
530
+ message: msg
531
+ });
532
+ },
533
+
534
+ /**
535
+ * Assert that the first two arguments are equal, with an optional message.
536
+ * Prints out both actual and expected values.
537
+ * @name equal
538
+ * @function
539
+ * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
540
+ */
541
+ equal: function( actual, expected, message ) {
542
+ /*jshint eqeqeq:false */
543
+ QUnit.push( expected == actual, actual, expected, message );
544
+ },
545
+
546
+ /**
547
+ * @name notEqual
548
+ * @function
549
+ */
550
+ notEqual: function( actual, expected, message ) {
551
+ /*jshint eqeqeq:false */
552
+ QUnit.push( expected != actual, actual, expected, message );
553
+ },
554
+
555
+ /**
556
+ * @name propEqual
557
+ * @function
558
+ */
559
+ propEqual: function( actual, expected, message ) {
560
+ actual = objectValues(actual);
561
+ expected = objectValues(expected);
562
+ QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
563
+ },
564
+
565
+ /**
566
+ * @name notPropEqual
567
+ * @function
568
+ */
569
+ notPropEqual: function( actual, expected, message ) {
570
+ actual = objectValues(actual);
571
+ expected = objectValues(expected);
572
+ QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
573
+ },
574
+
575
+ /**
576
+ * @name deepEqual
577
+ * @function
578
+ */
579
+ deepEqual: function( actual, expected, message ) {
580
+ QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
581
+ },
582
+
583
+ /**
584
+ * @name notDeepEqual
585
+ * @function
586
+ */
587
+ notDeepEqual: function( actual, expected, message ) {
588
+ QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
589
+ },
590
+
591
+ /**
592
+ * @name strictEqual
593
+ * @function
594
+ */
595
+ strictEqual: function( actual, expected, message ) {
596
+ QUnit.push( expected === actual, actual, expected, message );
597
+ },
598
+
599
+ /**
600
+ * @name notStrictEqual
601
+ * @function
602
+ */
603
+ notStrictEqual: function( actual, expected, message ) {
604
+ QUnit.push( expected !== actual, actual, expected, message );
605
+ },
606
+
607
+ "throws": function( block, expected, message ) {
608
+ var actual,
609
+ expectedOutput = expected,
610
+ ok = false;
611
+
612
+ // 'expected' is optional
613
+ if ( typeof expected === "string" ) {
614
+ message = expected;
615
+ expected = null;
616
+ }
617
+
618
+ config.current.ignoreGlobalErrors = true;
619
+ try {
620
+ block.call( config.current.testEnvironment );
621
+ } catch (e) {
622
+ actual = e;
623
+ }
624
+ config.current.ignoreGlobalErrors = false;
625
+
626
+ if ( actual ) {
627
+ // we don't want to validate thrown error
628
+ if ( !expected ) {
629
+ ok = true;
630
+ expectedOutput = null;
631
+ // expected is a regexp
632
+ } else if ( QUnit.objectType( expected ) === "regexp" ) {
633
+ ok = expected.test( errorString( actual ) );
634
+ // expected is a constructor
635
+ } else if ( actual instanceof expected ) {
636
+ ok = true;
637
+ // expected is a validation function which returns true is validation passed
638
+ } else if ( expected.call( {}, actual ) === true ) {
639
+ expectedOutput = null;
640
+ ok = true;
641
+ }
642
+
643
+ QUnit.push( ok, actual, expectedOutput, message );
644
+ } else {
645
+ QUnit.pushFailure( message, null, 'No exception was thrown.' );
646
+ }
647
+ }
648
+ };
649
+
650
+ /**
651
+ * @deprecate since 1.8.0
652
+ * Kept assertion helpers in root for backwards compatibility.
653
+ */
654
+ extend( QUnit, assert );
655
+
656
+ /**
657
+ * @deprecated since 1.9.0
658
+ * Kept root "raises()" for backwards compatibility.
659
+ * (Note that we don't introduce assert.raises).
660
+ */
661
+ QUnit.raises = assert[ "throws" ];
662
+
663
+ /**
664
+ * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
665
+ * Kept to avoid TypeErrors for undefined methods.
666
+ */
667
+ QUnit.equals = function() {
668
+ QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
669
+ };
670
+ QUnit.same = function() {
671
+ QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
672
+ };
673
+
674
+ // We want access to the constructor's prototype
675
+ (function() {
676
+ function F() {}
677
+ F.prototype = QUnit;
678
+ QUnit = new F();
679
+ // Make F QUnit's constructor so that we can add to the prototype later
680
+ QUnit.constructor = F;
681
+ }());
682
+
683
+ /**
684
+ * Config object: Maintain internal state
685
+ * Later exposed as QUnit.config
686
+ * `config` initialized at top of scope
687
+ */
688
+ config = {
689
+ // The queue of tests to run
690
+ queue: [],
691
+
692
+ // block until document ready
693
+ blocking: true,
694
+
695
+ // when enabled, show only failing tests
696
+ // gets persisted through sessionStorage and can be changed in UI via checkbox
697
+ hidepassed: false,
698
+
699
+ // by default, run previously failed tests first
700
+ // very useful in combination with "Hide passed tests" checked
701
+ reorder: true,
702
+
703
+ // by default, modify document.title when suite is done
704
+ altertitle: true,
705
+
706
+ // when enabled, all tests must call expect()
707
+ requireExpects: false,
708
+
709
+ // add checkboxes that are persisted in the query-string
710
+ // when enabled, the id is set to `true` as a `QUnit.config` property
711
+ urlConfig: [
712
+ {
713
+ id: "noglobals",
714
+ label: "Check for Globals",
715
+ tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
716
+ },
717
+ {
718
+ id: "notrycatch",
719
+ label: "No try-catch",
720
+ tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
721
+ }
722
+ ],
723
+
724
+ // Set of all modules.
725
+ modules: {},
726
+
727
+ // logging callback queues
728
+ begin: [],
729
+ done: [],
730
+ log: [],
731
+ testStart: [],
732
+ testDone: [],
733
+ moduleStart: [],
734
+ moduleDone: []
735
+ };
736
+
737
+ // Export global variables, unless an 'exports' object exists,
738
+ // in that case we assume we're in CommonJS (dealt with on the bottom of the script)
739
+ if ( typeof exports === "undefined" ) {
740
+ extend( window, QUnit );
741
+
742
+ // Expose QUnit object
743
+ window.QUnit = QUnit;
744
+ }
745
+
746
+ // Initialize more QUnit.config and QUnit.urlParams
747
+ (function() {
748
+ var i,
749
+ location = window.location || { search: "", protocol: "file:" },
750
+ params = location.search.slice( 1 ).split( "&" ),
751
+ length = params.length,
752
+ urlParams = {},
753
+ current;
754
+
755
+ if ( params[ 0 ] ) {
756
+ for ( i = 0; i < length; i++ ) {
757
+ current = params[ i ].split( "=" );
758
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
759
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
760
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
761
+ urlParams[ current[ 0 ] ] = current[ 1 ];
762
+ }
763
+ }
764
+
765
+ QUnit.urlParams = urlParams;
766
+
767
+ // String search anywhere in moduleName+testName
768
+ config.filter = urlParams.filter;
769
+
770
+ // Exact match of the module name
771
+ config.module = urlParams.module;
772
+
773
+ config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
774
+
775
+ // Figure out if we're running the tests from a server or not
776
+ QUnit.isLocal = location.protocol === "file:";
777
+ }());
778
+
779
+ // Extend QUnit object,
780
+ // these after set here because they should not be exposed as global functions
781
+ extend( QUnit, {
782
+ assert: assert,
783
+
784
+ config: config,
785
+
786
+ // Initialize the configuration options
787
+ init: function() {
788
+ extend( config, {
789
+ stats: { all: 0, bad: 0 },
790
+ moduleStats: { all: 0, bad: 0 },
791
+ started: +new Date(),
792
+ updateRate: 1000,
793
+ blocking: false,
794
+ autostart: true,
795
+ autorun: false,
796
+ filter: "",
797
+ queue: [],
798
+ semaphore: 1
799
+ });
800
+
801
+ var tests, banner, result,
802
+ qunit = id( "qunit" );
803
+
804
+ if ( qunit ) {
805
+ qunit.innerHTML =
806
+ "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
807
+ "<h2 id='qunit-banner'></h2>" +
808
+ "<div id='qunit-testrunner-toolbar'></div>" +
809
+ "<h2 id='qunit-userAgent'></h2>" +
810
+ "<ol id='qunit-tests'></ol>";
811
+ }
812
+
813
+ tests = id( "qunit-tests" );
814
+ banner = id( "qunit-banner" );
815
+ result = id( "qunit-testresult" );
816
+
817
+ if ( tests ) {
818
+ tests.innerHTML = "";
819
+ }
820
+
821
+ if ( banner ) {
822
+ banner.className = "";
823
+ }
824
+
825
+ if ( result ) {
826
+ result.parentNode.removeChild( result );
827
+ }
828
+
829
+ if ( tests ) {
830
+ result = document.createElement( "p" );
831
+ result.id = "qunit-testresult";
832
+ result.className = "result";
833
+ tests.parentNode.insertBefore( result, tests );
834
+ result.innerHTML = "Running...<br/>&nbsp;";
835
+ }
836
+ },
837
+
838
+ // Resets the test setup. Useful for tests that modify the DOM.
839
+ reset: function() {
840
+ var fixture = id( "qunit-fixture" );
841
+ if ( fixture ) {
842
+ fixture.innerHTML = config.fixture;
843
+ }
844
+ },
845
+
846
+ // Trigger an event on an element.
847
+ // @example triggerEvent( document.body, "click" );
848
+ triggerEvent: function( elem, type, event ) {
849
+ if ( document.createEvent ) {
850
+ event = document.createEvent( "MouseEvents" );
851
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
852
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
853
+
854
+ elem.dispatchEvent( event );
855
+ } else if ( elem.fireEvent ) {
856
+ elem.fireEvent( "on" + type );
857
+ }
858
+ },
859
+
860
+ // Safe object type checking
861
+ is: function( type, obj ) {
862
+ return QUnit.objectType( obj ) === type;
863
+ },
864
+
865
+ objectType: function( obj ) {
866
+ if ( typeof obj === "undefined" ) {
867
+ return "undefined";
868
+ // consider: typeof null === object
869
+ }
870
+ if ( obj === null ) {
871
+ return "null";
872
+ }
873
+
874
+ var match = toString.call( obj ).match(/^\[object\s(.*)\]$/),
875
+ type = match && match[1] || "";
876
+
877
+ switch ( type ) {
878
+ case "Number":
879
+ if ( isNaN(obj) ) {
880
+ return "nan";
881
+ }
882
+ return "number";
883
+ case "String":
884
+ case "Boolean":
885
+ case "Array":
886
+ case "Date":
887
+ case "RegExp":
888
+ case "Function":
889
+ return type.toLowerCase();
890
+ }
891
+ if ( typeof obj === "object" ) {
892
+ return "object";
893
+ }
894
+ return undefined;
895
+ },
896
+
897
+ push: function( result, actual, expected, message ) {
898
+ if ( !config.current ) {
899
+ throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
900
+ }
901
+
902
+ var output, source,
903
+ details = {
904
+ module: config.current.module,
905
+ name: config.current.testName,
906
+ result: result,
907
+ message: message,
908
+ actual: actual,
909
+ expected: expected
910
+ };
911
+
912
+ message = escapeText( message ) || ( result ? "okay" : "failed" );
913
+ message = "<span class='test-message'>" + message + "</span>";
914
+ output = message;
915
+
916
+ if ( !result ) {
917
+ expected = escapeText( QUnit.jsDump.parse(expected) );
918
+ actual = escapeText( QUnit.jsDump.parse(actual) );
919
+ output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
920
+
921
+ if ( actual !== expected ) {
922
+ output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
923
+ output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
924
+ }
925
+
926
+ source = sourceFromStacktrace();
927
+
928
+ if ( source ) {
929
+ details.source = source;
930
+ output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>";
931
+ }
932
+
933
+ output += "</table>";
934
+ }
935
+
936
+ runLoggingCallbacks( "log", QUnit, details );
937
+
938
+ config.current.assertions.push({
939
+ result: !!result,
940
+ message: output
941
+ });
942
+ },
943
+
944
+ pushFailure: function( message, source, actual ) {
945
+ if ( !config.current ) {
946
+ throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
947
+ }
948
+
949
+ var output,
950
+ details = {
951
+ module: config.current.module,
952
+ name: config.current.testName,
953
+ result: false,
954
+ message: message
955
+ };
956
+
957
+ message = escapeText( message ) || "error";
958
+ message = "<span class='test-message'>" + message + "</span>";
959
+ output = message;
960
+
961
+ output += "<table>";
962
+
963
+ if ( actual ) {
964
+ output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeText( actual ) + "</pre></td></tr>";
965
+ }
966
+
967
+ if ( source ) {
968
+ details.source = source;
969
+ output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>";
970
+ }
971
+
972
+ output += "</table>";
973
+
974
+ runLoggingCallbacks( "log", QUnit, details );
975
+
976
+ config.current.assertions.push({
977
+ result: false,
978
+ message: output
979
+ });
980
+ },
981
+
982
+ url: function( params ) {
983
+ params = extend( extend( {}, QUnit.urlParams ), params );
984
+ var key,
985
+ querystring = "?";
986
+
987
+ for ( key in params ) {
988
+ if ( !hasOwn.call( params, key ) ) {
989
+ continue;
990
+ }
991
+ querystring += encodeURIComponent( key ) + "=" +
992
+ encodeURIComponent( params[ key ] ) + "&";
993
+ }
994
+ return window.location.protocol + "//" + window.location.host +
995
+ window.location.pathname + querystring.slice( 0, -1 );
996
+ },
997
+
998
+ extend: extend,
999
+ id: id,
1000
+ addEvent: addEvent
1001
+ // load, equiv, jsDump, diff: Attached later
1002
+ });
1003
+
1004
+ /**
1005
+ * @deprecated: Created for backwards compatibility with test runner that set the hook function
1006
+ * into QUnit.{hook}, instead of invoking it and passing the hook function.
1007
+ * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
1008
+ * Doing this allows us to tell if the following methods have been overwritten on the actual
1009
+ * QUnit object.
1010
+ */
1011
+ extend( QUnit.constructor.prototype, {
1012
+
1013
+ // Logging callbacks; all receive a single argument with the listed properties
1014
+ // run test/logs.html for any related changes
1015
+ begin: registerLoggingCallback( "begin" ),
1016
+
1017
+ // done: { failed, passed, total, runtime }
1018
+ done: registerLoggingCallback( "done" ),
1019
+
1020
+ // log: { result, actual, expected, message }
1021
+ log: registerLoggingCallback( "log" ),
1022
+
1023
+ // testStart: { name }
1024
+ testStart: registerLoggingCallback( "testStart" ),
1025
+
1026
+ // testDone: { name, failed, passed, total, duration }
1027
+ testDone: registerLoggingCallback( "testDone" ),
1028
+
1029
+ // moduleStart: { name }
1030
+ moduleStart: registerLoggingCallback( "moduleStart" ),
1031
+
1032
+ // moduleDone: { name, failed, passed, total }
1033
+ moduleDone: registerLoggingCallback( "moduleDone" )
1034
+ });
1035
+
1036
+ if ( typeof document === "undefined" || document.readyState === "complete" ) {
1037
+ config.autorun = true;
1038
+ }
1039
+
1040
+ QUnit.load = function() {
1041
+ runLoggingCallbacks( "begin", QUnit, {} );
1042
+
1043
+ // Initialize the config, saving the execution queue
1044
+ var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
1045
+ urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter,
1046
+ numModules = 0,
1047
+ moduleFilterHtml = "",
1048
+ urlConfigHtml = "",
1049
+ oldconfig = extend( {}, config );
1050
+
1051
+ QUnit.init();
1052
+ extend(config, oldconfig);
1053
+
1054
+ config.blocking = false;
1055
+
1056
+ len = config.urlConfig.length;
1057
+
1058
+ for ( i = 0; i < len; i++ ) {
1059
+ val = config.urlConfig[i];
1060
+ if ( typeof val === "string" ) {
1061
+ val = {
1062
+ id: val,
1063
+ label: val,
1064
+ tooltip: "[no tooltip available]"
1065
+ };
1066
+ }
1067
+ config[ val.id ] = QUnit.urlParams[ val.id ];
1068
+ urlConfigHtml += "<input id='qunit-urlconfig-" + escapeText( val.id ) +
1069
+ "' name='" + escapeText( val.id ) +
1070
+ "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) +
1071
+ " title='" + escapeText( val.tooltip ) +
1072
+ "'><label for='qunit-urlconfig-" + escapeText( val.id ) +
1073
+ "' title='" + escapeText( val.tooltip ) + "'>" + val.label + "</label>";
1074
+ }
1075
+
1076
+ moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' " +
1077
+ ( config.module === undefined ? "selected='selected'" : "" ) +
1078
+ ">< All Modules ></option>";
1079
+
1080
+ for ( i in config.modules ) {
1081
+ if ( config.modules.hasOwnProperty( i ) ) {
1082
+ numModules += 1;
1083
+ moduleFilterHtml += "<option value='" + escapeText( encodeURIComponent(i) ) + "' " +
1084
+ ( config.module === i ? "selected='selected'" : "" ) +
1085
+ ">" + escapeText(i) + "</option>";
1086
+ }
1087
+ }
1088
+ moduleFilterHtml += "</select>";
1089
+
1090
+ // `userAgent` initialized at top of scope
1091
+ userAgent = id( "qunit-userAgent" );
1092
+ if ( userAgent ) {
1093
+ userAgent.innerHTML = navigator.userAgent;
1094
+ }
1095
+
1096
+ // `banner` initialized at top of scope
1097
+ banner = id( "qunit-header" );
1098
+ if ( banner ) {
1099
+ banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> ";
1100
+ }
1101
+
1102
+ // `toolbar` initialized at top of scope
1103
+ toolbar = id( "qunit-testrunner-toolbar" );
1104
+ if ( toolbar ) {
1105
+ // `filter` initialized at top of scope
1106
+ filter = document.createElement( "input" );
1107
+ filter.type = "checkbox";
1108
+ filter.id = "qunit-filter-pass";
1109
+
1110
+ addEvent( filter, "click", function() {
1111
+ var tmp,
1112
+ ol = document.getElementById( "qunit-tests" );
1113
+
1114
+ if ( filter.checked ) {
1115
+ ol.className = ol.className + " hidepass";
1116
+ } else {
1117
+ tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
1118
+ ol.className = tmp.replace( / hidepass /, " " );
1119
+ }
1120
+ if ( defined.sessionStorage ) {
1121
+ if (filter.checked) {
1122
+ sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
1123
+ } else {
1124
+ sessionStorage.removeItem( "qunit-filter-passed-tests" );
1125
+ }
1126
+ }
1127
+ });
1128
+
1129
+ if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
1130
+ filter.checked = true;
1131
+ // `ol` initialized at top of scope
1132
+ ol = document.getElementById( "qunit-tests" );
1133
+ ol.className = ol.className + " hidepass";
1134
+ }
1135
+ toolbar.appendChild( filter );
1136
+
1137
+ // `label` initialized at top of scope
1138
+ label = document.createElement( "label" );
1139
+ label.setAttribute( "for", "qunit-filter-pass" );
1140
+ label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." );
1141
+ label.innerHTML = "Hide passed tests";
1142
+ toolbar.appendChild( label );
1143
+
1144
+ urlConfigCheckboxesContainer = document.createElement("span");
1145
+ urlConfigCheckboxesContainer.innerHTML = urlConfigHtml;
1146
+ urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input");
1147
+ // For oldIE support:
1148
+ // * Add handlers to the individual elements instead of the container
1149
+ // * Use "click" instead of "change"
1150
+ // * Fallback from event.target to event.srcElement
1151
+ addEvents( urlConfigCheckboxes, "click", function( event ) {
1152
+ var params = {},
1153
+ target = event.target || event.srcElement;
1154
+ params[ target.name ] = target.checked ? true : undefined;
1155
+ window.location = QUnit.url( params );
1156
+ });
1157
+ toolbar.appendChild( urlConfigCheckboxesContainer );
1158
+
1159
+ if (numModules > 1) {
1160
+ moduleFilter = document.createElement( 'span' );
1161
+ moduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' );
1162
+ moduleFilter.innerHTML = moduleFilterHtml;
1163
+ addEvent( moduleFilter.lastChild, "change", function() {
1164
+ var selectBox = moduleFilter.getElementsByTagName("select")[0],
1165
+ selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);
1166
+
1167
+ window.location = QUnit.url( { module: ( selectedModule === "" ) ? undefined : selectedModule } );
1168
+ });
1169
+ toolbar.appendChild(moduleFilter);
1170
+ }
1171
+ }
1172
+
1173
+ // `main` initialized at top of scope
1174
+ main = id( "qunit-fixture" );
1175
+ if ( main ) {
1176
+ config.fixture = main.innerHTML;
1177
+ }
1178
+
1179
+ if ( config.autostart ) {
1180
+ QUnit.start();
1181
+ }
1182
+ };
1183
+
1184
+ addEvent( window, "load", QUnit.load );
1185
+
1186
+ // `onErrorFnPrev` initialized at top of scope
1187
+ // Preserve other handlers
1188
+ onErrorFnPrev = window.onerror;
1189
+
1190
+ // Cover uncaught exceptions
1191
+ // Returning true will surpress the default browser handler,
1192
+ // returning false will let it run.
1193
+ window.onerror = function ( error, filePath, linerNr ) {
1194
+ var ret = false;
1195
+ if ( onErrorFnPrev ) {
1196
+ ret = onErrorFnPrev( error, filePath, linerNr );
1197
+ }
1198
+
1199
+ // Treat return value as window.onerror itself does,
1200
+ // Only do our handling if not surpressed.
1201
+ if ( ret !== true ) {
1202
+ if ( QUnit.config.current ) {
1203
+ if ( QUnit.config.current.ignoreGlobalErrors ) {
1204
+ return true;
1205
+ }
1206
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
1207
+ } else {
1208
+ QUnit.test( "global failure", extend( function() {
1209
+ QUnit.pushFailure( error, filePath + ":" + linerNr );
1210
+ }, { validTest: validTest } ) );
1211
+ }
1212
+ return false;
1213
+ }
1214
+
1215
+ return ret;
1216
+ };
1217
+
1218
+ function done() {
1219
+ config.autorun = true;
1220
+
1221
+ // Log the last module results
1222
+ if ( config.currentModule ) {
1223
+ runLoggingCallbacks( "moduleDone", QUnit, {
1224
+ name: config.currentModule,
1225
+ failed: config.moduleStats.bad,
1226
+ passed: config.moduleStats.all - config.moduleStats.bad,
1227
+ total: config.moduleStats.all
1228
+ });
1229
+ }
1230
+
1231
+ var i, key,
1232
+ banner = id( "qunit-banner" ),
1233
+ tests = id( "qunit-tests" ),
1234
+ runtime = +new Date() - config.started,
1235
+ passed = config.stats.all - config.stats.bad,
1236
+ html = [
1237
+ "Tests completed in ",
1238
+ runtime,
1239
+ " milliseconds.<br/>",
1240
+ "<span class='passed'>",
1241
+ passed,
1242
+ "</span> assertions of <span class='total'>",
1243
+ config.stats.all,
1244
+ "</span> passed, <span class='failed'>",
1245
+ config.stats.bad,
1246
+ "</span> failed."
1247
+ ].join( "" );
1248
+
1249
+ if ( banner ) {
1250
+ banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
1251
+ }
1252
+
1253
+ if ( tests ) {
1254
+ id( "qunit-testresult" ).innerHTML = html;
1255
+ }
1256
+
1257
+ if ( config.altertitle && typeof document !== "undefined" && document.title ) {
1258
+ // show ✖ for good, ✔ for bad suite result in title
1259
+ // use escape sequences in case file gets loaded with non-utf-8-charset
1260
+ document.title = [
1261
+ ( config.stats.bad ? "\u2716" : "\u2714" ),
1262
+ document.title.replace( /^[\u2714\u2716] /i, "" )
1263
+ ].join( " " );
1264
+ }
1265
+
1266
+ // clear own sessionStorage items if all tests passed
1267
+ if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
1268
+ // `key` & `i` initialized at top of scope
1269
+ for ( i = 0; i < sessionStorage.length; i++ ) {
1270
+ key = sessionStorage.key( i++ );
1271
+ if ( key.indexOf( "qunit-test-" ) === 0 ) {
1272
+ sessionStorage.removeItem( key );
1273
+ }
1274
+ }
1275
+ }
1276
+
1277
+ // scroll back to top to show results
1278
+ if ( window.scrollTo ) {
1279
+ window.scrollTo(0, 0);
1280
+ }
1281
+
1282
+ runLoggingCallbacks( "done", QUnit, {
1283
+ failed: config.stats.bad,
1284
+ passed: passed,
1285
+ total: config.stats.all,
1286
+ runtime: runtime
1287
+ });
1288
+ }
1289
+
1290
+ /** @return Boolean: true if this test should be ran */
1291
+ function validTest( test ) {
1292
+ var include,
1293
+ filter = config.filter && config.filter.toLowerCase(),
1294
+ module = config.module && config.module.toLowerCase(),
1295
+ fullName = (test.module + ": " + test.testName).toLowerCase();
1296
+
1297
+ // Internally-generated tests are always valid
1298
+ if ( test.callback && test.callback.validTest === validTest ) {
1299
+ delete test.callback.validTest;
1300
+ return true;
1301
+ }
1302
+
1303
+ if ( config.testNumber ) {
1304
+ return test.testNumber === config.testNumber;
1305
+ }
1306
+
1307
+ if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
1308
+ return false;
1309
+ }
1310
+
1311
+ if ( !filter ) {
1312
+ return true;
1313
+ }
1314
+
1315
+ include = filter.charAt( 0 ) !== "!";
1316
+ if ( !include ) {
1317
+ filter = filter.slice( 1 );
1318
+ }
1319
+
1320
+ // If the filter matches, we need to honour include
1321
+ if ( fullName.indexOf( filter ) !== -1 ) {
1322
+ return include;
1323
+ }
1324
+
1325
+ // Otherwise, do the opposite
1326
+ return !include;
1327
+ }
1328
+
1329
+ // so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
1330
+ // Later Safari and IE10 are supposed to support error.stack as well
1331
+ // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
1332
+ function extractStacktrace( e, offset ) {
1333
+ offset = offset === undefined ? 3 : offset;
1334
+
1335
+ var stack, include, i;
1336
+
1337
+ if ( e.stacktrace ) {
1338
+ // Opera
1339
+ return e.stacktrace.split( "\n" )[ offset + 3 ];
1340
+ } else if ( e.stack ) {
1341
+ // Firefox, Chrome
1342
+ stack = e.stack.split( "\n" );
1343
+ if (/^error$/i.test( stack[0] ) ) {
1344
+ stack.shift();
1345
+ }
1346
+ if ( fileName ) {
1347
+ include = [];
1348
+ for ( i = offset; i < stack.length; i++ ) {
1349
+ if ( stack[ i ].indexOf( fileName ) !== -1 ) {
1350
+ break;
1351
+ }
1352
+ include.push( stack[ i ] );
1353
+ }
1354
+ if ( include.length ) {
1355
+ return include.join( "\n" );
1356
+ }
1357
+ }
1358
+ return stack[ offset ];
1359
+ } else if ( e.sourceURL ) {
1360
+ // Safari, PhantomJS
1361
+ // hopefully one day Safari provides actual stacktraces
1362
+ // exclude useless self-reference for generated Error objects
1363
+ if ( /qunit.js$/.test( e.sourceURL ) ) {
1364
+ return;
1365
+ }
1366
+ // for actual exceptions, this is useful
1367
+ return e.sourceURL + ":" + e.line;
1368
+ }
1369
+ }
1370
+ function sourceFromStacktrace( offset ) {
1371
+ try {
1372
+ throw new Error();
1373
+ } catch ( e ) {
1374
+ return extractStacktrace( e, offset );
1375
+ }
1376
+ }
1377
+
1378
+ /**
1379
+ * Escape text for attribute or text content.
1380
+ */
1381
+ function escapeText( s ) {
1382
+ if ( !s ) {
1383
+ return "";
1384
+ }
1385
+ s = s + "";
1386
+ // Both single quotes and double quotes (for attributes)
1387
+ return s.replace( /['"<>&]/g, function( s ) {
1388
+ switch( s ) {
1389
+ case '\'':
1390
+ return '&#039;';
1391
+ case '"':
1392
+ return '&quot;';
1393
+ case '<':
1394
+ return '&lt;';
1395
+ case '>':
1396
+ return '&gt;';
1397
+ case '&':
1398
+ return '&amp;';
1399
+ }
1400
+ });
1401
+ }
1402
+
1403
+ function synchronize( callback, last ) {
1404
+ config.queue.push( callback );
1405
+
1406
+ if ( config.autorun && !config.blocking ) {
1407
+ process( last );
1408
+ }
1409
+ }
1410
+
1411
+ function process( last ) {
1412
+ function next() {
1413
+ process( last );
1414
+ }
1415
+ var start = new Date().getTime();
1416
+ config.depth = config.depth ? config.depth + 1 : 1;
1417
+
1418
+ while ( config.queue.length && !config.blocking ) {
1419
+ if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
1420
+ config.queue.shift()();
1421
+ } else {
1422
+ window.setTimeout( next, 13 );
1423
+ break;
1424
+ }
1425
+ }
1426
+ config.depth--;
1427
+ if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
1428
+ done();
1429
+ }
1430
+ }
1431
+
1432
+ function saveGlobal() {
1433
+ config.pollution = [];
1434
+
1435
+ if ( config.noglobals ) {
1436
+ for ( var key in window ) {
1437
+ // in Opera sometimes DOM element ids show up here, ignore them
1438
+ if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
1439
+ continue;
1440
+ }
1441
+ config.pollution.push( key );
1442
+ }
1443
+ }
1444
+ }
1445
+
1446
+ function checkPollution() {
1447
+ var newGlobals,
1448
+ deletedGlobals,
1449
+ old = config.pollution;
1450
+
1451
+ saveGlobal();
1452
+
1453
+ newGlobals = diff( config.pollution, old );
1454
+ if ( newGlobals.length > 0 ) {
1455
+ QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
1456
+ }
1457
+
1458
+ deletedGlobals = diff( old, config.pollution );
1459
+ if ( deletedGlobals.length > 0 ) {
1460
+ QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
1461
+ }
1462
+ }
1463
+
1464
+ // returns a new Array with the elements that are in a but not in b
1465
+ function diff( a, b ) {
1466
+ var i, j,
1467
+ result = a.slice();
1468
+
1469
+ for ( i = 0; i < result.length; i++ ) {
1470
+ for ( j = 0; j < b.length; j++ ) {
1471
+ if ( result[i] === b[j] ) {
1472
+ result.splice( i, 1 );
1473
+ i--;
1474
+ break;
1475
+ }
1476
+ }
1477
+ }
1478
+ return result;
1479
+ }
1480
+
1481
+ function extend( a, b ) {
1482
+ for ( var prop in b ) {
1483
+ if ( b[ prop ] === undefined ) {
1484
+ delete a[ prop ];
1485
+
1486
+ // Avoid "Member not found" error in IE8 caused by setting window.constructor
1487
+ } else if ( prop !== "constructor" || a !== window ) {
1488
+ a[ prop ] = b[ prop ];
1489
+ }
1490
+ }
1491
+
1492
+ return a;
1493
+ }
1494
+
1495
+ /**
1496
+ * @param {HTMLElement} elem
1497
+ * @param {string} type
1498
+ * @param {Function} fn
1499
+ */
1500
+ function addEvent( elem, type, fn ) {
1501
+ // Standards-based browsers
1502
+ if ( elem.addEventListener ) {
1503
+ elem.addEventListener( type, fn, false );
1504
+ // IE
1505
+ } else {
1506
+ elem.attachEvent( "on" + type, fn );
1507
+ }
1508
+ }
1509
+
1510
+ /**
1511
+ * @param {Array|NodeList} elems
1512
+ * @param {string} type
1513
+ * @param {Function} fn
1514
+ */
1515
+ function addEvents( elems, type, fn ) {
1516
+ var i = elems.length;
1517
+ while ( i-- ) {
1518
+ addEvent( elems[i], type, fn );
1519
+ }
1520
+ }
1521
+
1522
+ function hasClass( elem, name ) {
1523
+ return (" " + elem.className + " ").indexOf(" " + name + " ") > -1;
1524
+ }
1525
+
1526
+ function addClass( elem, name ) {
1527
+ if ( !hasClass( elem, name ) ) {
1528
+ elem.className += (elem.className ? " " : "") + name;
1529
+ }
1530
+ }
1531
+
1532
+ function removeClass( elem, name ) {
1533
+ var set = " " + elem.className + " ";
1534
+ // Class name may appear multiple times
1535
+ while ( set.indexOf(" " + name + " ") > -1 ) {
1536
+ set = set.replace(" " + name + " " , " ");
1537
+ }
1538
+ // If possible, trim it for prettiness, but not neccecarily
1539
+ elem.className = window.jQuery ? jQuery.trim( set ) : ( set.trim ? set.trim() : set );
1540
+ }
1541
+
1542
+ function id( name ) {
1543
+ return !!( typeof document !== "undefined" && document && document.getElementById ) &&
1544
+ document.getElementById( name );
1545
+ }
1546
+
1547
+ function registerLoggingCallback( key ) {
1548
+ return function( callback ) {
1549
+ config[key].push( callback );
1550
+ };
1551
+ }
1552
+
1553
+ // Supports deprecated method of completely overwriting logging callbacks
1554
+ function runLoggingCallbacks( key, scope, args ) {
1555
+ var i, callbacks;
1556
+ if ( QUnit.hasOwnProperty( key ) ) {
1557
+ QUnit[ key ].call(scope, args );
1558
+ } else {
1559
+ callbacks = config[ key ];
1560
+ for ( i = 0; i < callbacks.length; i++ ) {
1561
+ callbacks[ i ].call( scope, args );
1562
+ }
1563
+ }
1564
+ }
1565
+
1566
+ // Test for equality any JavaScript type.
1567
+ // Author: Philippe Rathé <prathe@gmail.com>
1568
+ QUnit.equiv = (function() {
1569
+
1570
+ // Call the o related callback with the given arguments.
1571
+ function bindCallbacks( o, callbacks, args ) {
1572
+ var prop = QUnit.objectType( o );
1573
+ if ( prop ) {
1574
+ if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
1575
+ return callbacks[ prop ].apply( callbacks, args );
1576
+ } else {
1577
+ return callbacks[ prop ]; // or undefined
1578
+ }
1579
+ }
1580
+ }
1581
+
1582
+ // the real equiv function
1583
+ var innerEquiv,
1584
+ // stack to decide between skip/abort functions
1585
+ callers = [],
1586
+ // stack to avoiding loops from circular referencing
1587
+ parents = [],
1588
+
1589
+ getProto = Object.getPrototypeOf || function ( obj ) {
1590
+ return obj.__proto__;
1591
+ },
1592
+ callbacks = (function () {
1593
+
1594
+ // for string, boolean, number and null
1595
+ function useStrictEquality( b, a ) {
1596
+ /*jshint eqeqeq:false */
1597
+ if ( b instanceof a.constructor || a instanceof b.constructor ) {
1598
+ // to catch short annotaion VS 'new' annotation of a
1599
+ // declaration
1600
+ // e.g. var i = 1;
1601
+ // var j = new Number(1);
1602
+ return a == b;
1603
+ } else {
1604
+ return a === b;
1605
+ }
1606
+ }
1607
+
1608
+ return {
1609
+ "string": useStrictEquality,
1610
+ "boolean": useStrictEquality,
1611
+ "number": useStrictEquality,
1612
+ "null": useStrictEquality,
1613
+ "undefined": useStrictEquality,
1614
+
1615
+ "nan": function( b ) {
1616
+ return isNaN( b );
1617
+ },
1618
+
1619
+ "date": function( b, a ) {
1620
+ return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
1621
+ },
1622
+
1623
+ "regexp": function( b, a ) {
1624
+ return QUnit.objectType( b ) === "regexp" &&
1625
+ // the regex itself
1626
+ a.source === b.source &&
1627
+ // and its modifers
1628
+ a.global === b.global &&
1629
+ // (gmi) ...
1630
+ a.ignoreCase === b.ignoreCase &&
1631
+ a.multiline === b.multiline &&
1632
+ a.sticky === b.sticky;
1633
+ },
1634
+
1635
+ // - skip when the property is a method of an instance (OOP)
1636
+ // - abort otherwise,
1637
+ // initial === would have catch identical references anyway
1638
+ "function": function() {
1639
+ var caller = callers[callers.length - 1];
1640
+ return caller !== Object && typeof caller !== "undefined";
1641
+ },
1642
+
1643
+ "array": function( b, a ) {
1644
+ var i, j, len, loop;
1645
+
1646
+ // b could be an object literal here
1647
+ if ( QUnit.objectType( b ) !== "array" ) {
1648
+ return false;
1649
+ }
1650
+
1651
+ len = a.length;
1652
+ if ( len !== b.length ) {
1653
+ // safe and faster
1654
+ return false;
1655
+ }
1656
+
1657
+ // track reference to avoid circular references
1658
+ parents.push( a );
1659
+ for ( i = 0; i < len; i++ ) {
1660
+ loop = false;
1661
+ for ( j = 0; j < parents.length; j++ ) {
1662
+ if ( parents[j] === a[i] ) {
1663
+ loop = true;// dont rewalk array
1664
+ }
1665
+ }
1666
+ if ( !loop && !innerEquiv(a[i], b[i]) ) {
1667
+ parents.pop();
1668
+ return false;
1669
+ }
1670
+ }
1671
+ parents.pop();
1672
+ return true;
1673
+ },
1674
+
1675
+ "object": function( b, a ) {
1676
+ var i, j, loop,
1677
+ // Default to true
1678
+ eq = true,
1679
+ aProperties = [],
1680
+ bProperties = [];
1681
+
1682
+ // comparing constructors is more strict than using
1683
+ // instanceof
1684
+ if ( a.constructor !== b.constructor ) {
1685
+ // Allow objects with no prototype to be equivalent to
1686
+ // objects with Object as their constructor.
1687
+ if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
1688
+ ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
1689
+ return false;
1690
+ }
1691
+ }
1692
+
1693
+ // stack constructor before traversing properties
1694
+ callers.push( a.constructor );
1695
+ // track reference to avoid circular references
1696
+ parents.push( a );
1697
+
1698
+ for ( i in a ) { // be strict: don't ensures hasOwnProperty
1699
+ // and go deep
1700
+ loop = false;
1701
+ for ( j = 0; j < parents.length; j++ ) {
1702
+ if ( parents[j] === a[i] ) {
1703
+ // don't go down the same path twice
1704
+ loop = true;
1705
+ }
1706
+ }
1707
+ aProperties.push(i); // collect a's properties
1708
+
1709
+ if (!loop && !innerEquiv( a[i], b[i] ) ) {
1710
+ eq = false;
1711
+ break;
1712
+ }
1713
+ }
1714
+
1715
+ callers.pop(); // unstack, we are done
1716
+ parents.pop();
1717
+
1718
+ for ( i in b ) {
1719
+ bProperties.push( i ); // collect b's properties
1720
+ }
1721
+
1722
+ // Ensures identical properties name
1723
+ return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
1724
+ }
1725
+ };
1726
+ }());
1727
+
1728
+ innerEquiv = function() { // can take multiple arguments
1729
+ var args = [].slice.apply( arguments );
1730
+ if ( args.length < 2 ) {
1731
+ return true; // end transition
1732
+ }
1733
+
1734
+ return (function( a, b ) {
1735
+ if ( a === b ) {
1736
+ return true; // catch the most you can
1737
+ } else if ( a === null || b === null || typeof a === "undefined" ||
1738
+ typeof b === "undefined" ||
1739
+ QUnit.objectType(a) !== QUnit.objectType(b) ) {
1740
+ return false; // don't lose time with error prone cases
1741
+ } else {
1742
+ return bindCallbacks(a, callbacks, [ b, a ]);
1743
+ }
1744
+
1745
+ // apply transition with (1..n) arguments
1746
+ }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
1747
+ };
1748
+
1749
+ return innerEquiv;
1750
+ }());
1751
+
1752
+ /**
1753
+ * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
1754
+ * http://flesler.blogspot.com Licensed under BSD
1755
+ * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
1756
+ *
1757
+ * @projectDescription Advanced and extensible data dumping for Javascript.
1758
+ * @version 1.0.0
1759
+ * @author Ariel Flesler
1760
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
1761
+ */
1762
+ QUnit.jsDump = (function() {
1763
+ function quote( str ) {
1764
+ return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
1765
+ }
1766
+ function literal( o ) {
1767
+ return o + "";
1768
+ }
1769
+ function join( pre, arr, post ) {
1770
+ var s = jsDump.separator(),
1771
+ base = jsDump.indent(),
1772
+ inner = jsDump.indent(1);
1773
+ if ( arr.join ) {
1774
+ arr = arr.join( "," + s + inner );
1775
+ }
1776
+ if ( !arr ) {
1777
+ return pre + post;
1778
+ }
1779
+ return [ pre, inner + arr, base + post ].join(s);
1780
+ }
1781
+ function array( arr, stack ) {
1782
+ var i = arr.length, ret = new Array(i);
1783
+ this.up();
1784
+ while ( i-- ) {
1785
+ ret[i] = this.parse( arr[i] , undefined , stack);
1786
+ }
1787
+ this.down();
1788
+ return join( "[", ret, "]" );
1789
+ }
1790
+
1791
+ var reName = /^function (\w+)/,
1792
+ jsDump = {
1793
+ // type is used mostly internally, you can fix a (custom)type in advance
1794
+ parse: function( obj, type, stack ) {
1795
+ stack = stack || [ ];
1796
+ var inStack, res,
1797
+ parser = this.parsers[ type || this.typeOf(obj) ];
1798
+
1799
+ type = typeof parser;
1800
+ inStack = inArray( obj, stack );
1801
+
1802
+ if ( inStack !== -1 ) {
1803
+ return "recursion(" + (inStack - stack.length) + ")";
1804
+ }
1805
+ if ( type === "function" ) {
1806
+ stack.push( obj );
1807
+ res = parser.call( this, obj, stack );
1808
+ stack.pop();
1809
+ return res;
1810
+ }
1811
+ return ( type === "string" ) ? parser : this.parsers.error;
1812
+ },
1813
+ typeOf: function( obj ) {
1814
+ var type;
1815
+ if ( obj === null ) {
1816
+ type = "null";
1817
+ } else if ( typeof obj === "undefined" ) {
1818
+ type = "undefined";
1819
+ } else if ( QUnit.is( "regexp", obj) ) {
1820
+ type = "regexp";
1821
+ } else if ( QUnit.is( "date", obj) ) {
1822
+ type = "date";
1823
+ } else if ( QUnit.is( "function", obj) ) {
1824
+ type = "function";
1825
+ } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
1826
+ type = "window";
1827
+ } else if ( obj.nodeType === 9 ) {
1828
+ type = "document";
1829
+ } else if ( obj.nodeType ) {
1830
+ type = "node";
1831
+ } else if (
1832
+ // native arrays
1833
+ toString.call( obj ) === "[object Array]" ||
1834
+ // NodeList objects
1835
+ ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
1836
+ ) {
1837
+ type = "array";
1838
+ } else if ( obj.constructor === Error.prototype.constructor ) {
1839
+ type = "error";
1840
+ } else {
1841
+ type = typeof obj;
1842
+ }
1843
+ return type;
1844
+ },
1845
+ separator: function() {
1846
+ return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
1847
+ },
1848
+ // extra can be a number, shortcut for increasing-calling-decreasing
1849
+ indent: function( extra ) {
1850
+ if ( !this.multiline ) {
1851
+ return "";
1852
+ }
1853
+ var chr = this.indentChar;
1854
+ if ( this.HTML ) {
1855
+ chr = chr.replace( /\t/g, " " ).replace( / /g, "&nbsp;" );
1856
+ }
1857
+ return new Array( this._depth_ + (extra||0) ).join(chr);
1858
+ },
1859
+ up: function( a ) {
1860
+ this._depth_ += a || 1;
1861
+ },
1862
+ down: function( a ) {
1863
+ this._depth_ -= a || 1;
1864
+ },
1865
+ setParser: function( name, parser ) {
1866
+ this.parsers[name] = parser;
1867
+ },
1868
+ // The next 3 are exposed so you can use them
1869
+ quote: quote,
1870
+ literal: literal,
1871
+ join: join,
1872
+ //
1873
+ _depth_: 1,
1874
+ // This is the list of parsers, to modify them, use jsDump.setParser
1875
+ parsers: {
1876
+ window: "[Window]",
1877
+ document: "[Document]",
1878
+ error: function(error) {
1879
+ return "Error(\"" + error.message + "\")";
1880
+ },
1881
+ unknown: "[Unknown]",
1882
+ "null": "null",
1883
+ "undefined": "undefined",
1884
+ "function": function( fn ) {
1885
+ var ret = "function",
1886
+ // functions never have name in IE
1887
+ name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];
1888
+
1889
+ if ( name ) {
1890
+ ret += " " + name;
1891
+ }
1892
+ ret += "( ";
1893
+
1894
+ ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
1895
+ return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
1896
+ },
1897
+ array: array,
1898
+ nodelist: array,
1899
+ "arguments": array,
1900
+ object: function( map, stack ) {
1901
+ var ret = [ ], keys, key, val, i;
1902
+ QUnit.jsDump.up();
1903
+ keys = [];
1904
+ for ( key in map ) {
1905
+ keys.push( key );
1906
+ }
1907
+ keys.sort();
1908
+ for ( i = 0; i < keys.length; i++ ) {
1909
+ key = keys[ i ];
1910
+ val = map[ key ];
1911
+ ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
1912
+ }
1913
+ QUnit.jsDump.down();
1914
+ return join( "{", ret, "}" );
1915
+ },
1916
+ node: function( node ) {
1917
+ var len, i, val,
1918
+ open = QUnit.jsDump.HTML ? "&lt;" : "<",
1919
+ close = QUnit.jsDump.HTML ? "&gt;" : ">",
1920
+ tag = node.nodeName.toLowerCase(),
1921
+ ret = open + tag,
1922
+ attrs = node.attributes;
1923
+
1924
+ if ( attrs ) {
1925
+ for ( i = 0, len = attrs.length; i < len; i++ ) {
1926
+ val = attrs[i].nodeValue;
1927
+ // IE6 includes all attributes in .attributes, even ones not explicitly set.
1928
+ // Those have values like undefined, null, 0, false, "" or "inherit".
1929
+ if ( val && val !== "inherit" ) {
1930
+ ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" );
1931
+ }
1932
+ }
1933
+ }
1934
+ ret += close;
1935
+
1936
+ // Show content of TextNode or CDATASection
1937
+ if ( node.nodeType === 3 || node.nodeType === 4 ) {
1938
+ ret += node.nodeValue;
1939
+ }
1940
+
1941
+ return ret + open + "/" + tag + close;
1942
+ },
1943
+ // function calls it internally, it's the arguments part of the function
1944
+ functionArgs: function( fn ) {
1945
+ var args,
1946
+ l = fn.length;
1947
+
1948
+ if ( !l ) {
1949
+ return "";
1950
+ }
1951
+
1952
+ args = new Array(l);
1953
+ while ( l-- ) {
1954
+ // 97 is 'a'
1955
+ args[l] = String.fromCharCode(97+l);
1956
+ }
1957
+ return " " + args.join( ", " ) + " ";
1958
+ },
1959
+ // object calls it internally, the key part of an item in a map
1960
+ key: quote,
1961
+ // function calls it internally, it's the content of the function
1962
+ functionCode: "[code]",
1963
+ // node calls it internally, it's an html attribute value
1964
+ attribute: quote,
1965
+ string: quote,
1966
+ date: quote,
1967
+ regexp: literal,
1968
+ number: literal,
1969
+ "boolean": literal
1970
+ },
1971
+ // if true, entities are escaped ( <, >, \t, space and \n )
1972
+ HTML: false,
1973
+ // indentation unit
1974
+ indentChar: " ",
1975
+ // if true, items in a collection, are separated by a \n, else just a space.
1976
+ multiline: true
1977
+ };
1978
+
1979
+ return jsDump;
1980
+ }());
1981
+
1982
+ // from jquery.js
1983
+ function inArray( elem, array ) {
1984
+ if ( array.indexOf ) {
1985
+ return array.indexOf( elem );
1986
+ }
1987
+
1988
+ for ( var i = 0, length = array.length; i < length; i++ ) {
1989
+ if ( array[ i ] === elem ) {
1990
+ return i;
1991
+ }
1992
+ }
1993
+
1994
+ return -1;
1995
+ }
1996
+
1997
+ /*
1998
+ * Javascript Diff Algorithm
1999
+ * By John Resig (http://ejohn.org/)
2000
+ * Modified by Chu Alan "sprite"
2001
+ *
2002
+ * Released under the MIT license.
2003
+ *
2004
+ * More Info:
2005
+ * http://ejohn.org/projects/javascript-diff-algorithm/
2006
+ *
2007
+ * Usage: QUnit.diff(expected, actual)
2008
+ *
2009
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
2010
+ */
2011
+ QUnit.diff = (function() {
2012
+ /*jshint eqeqeq:false, eqnull:true */
2013
+ function diff( o, n ) {
2014
+ var i,
2015
+ ns = {},
2016
+ os = {};
2017
+
2018
+ for ( i = 0; i < n.length; i++ ) {
2019
+ if ( !hasOwn.call( ns, n[i] ) ) {
2020
+ ns[ n[i] ] = {
2021
+ rows: [],
2022
+ o: null
2023
+ };
2024
+ }
2025
+ ns[ n[i] ].rows.push( i );
2026
+ }
2027
+
2028
+ for ( i = 0; i < o.length; i++ ) {
2029
+ if ( !hasOwn.call( os, o[i] ) ) {
2030
+ os[ o[i] ] = {
2031
+ rows: [],
2032
+ n: null
2033
+ };
2034
+ }
2035
+ os[ o[i] ].rows.push( i );
2036
+ }
2037
+
2038
+ for ( i in ns ) {
2039
+ if ( !hasOwn.call( ns, i ) ) {
2040
+ continue;
2041
+ }
2042
+ if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) {
2043
+ n[ ns[i].rows[0] ] = {
2044
+ text: n[ ns[i].rows[0] ],
2045
+ row: os[i].rows[0]
2046
+ };
2047
+ o[ os[i].rows[0] ] = {
2048
+ text: o[ os[i].rows[0] ],
2049
+ row: ns[i].rows[0]
2050
+ };
2051
+ }
2052
+ }
2053
+
2054
+ for ( i = 0; i < n.length - 1; i++ ) {
2055
+ if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
2056
+ n[ i + 1 ] == o[ n[i].row + 1 ] ) {
2057
+
2058
+ n[ i + 1 ] = {
2059
+ text: n[ i + 1 ],
2060
+ row: n[i].row + 1
2061
+ };
2062
+ o[ n[i].row + 1 ] = {
2063
+ text: o[ n[i].row + 1 ],
2064
+ row: i + 1
2065
+ };
2066
+ }
2067
+ }
2068
+
2069
+ for ( i = n.length - 1; i > 0; i-- ) {
2070
+ if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
2071
+ n[ i - 1 ] == o[ n[i].row - 1 ]) {
2072
+
2073
+ n[ i - 1 ] = {
2074
+ text: n[ i - 1 ],
2075
+ row: n[i].row - 1
2076
+ };
2077
+ o[ n[i].row - 1 ] = {
2078
+ text: o[ n[i].row - 1 ],
2079
+ row: i - 1
2080
+ };
2081
+ }
2082
+ }
2083
+
2084
+ return {
2085
+ o: o,
2086
+ n: n
2087
+ };
2088
+ }
2089
+
2090
+ return function( o, n ) {
2091
+ o = o.replace( /\s+$/, "" );
2092
+ n = n.replace( /\s+$/, "" );
2093
+
2094
+ var i, pre,
2095
+ str = "",
2096
+ out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
2097
+ oSpace = o.match(/\s+/g),
2098
+ nSpace = n.match(/\s+/g);
2099
+
2100
+ if ( oSpace == null ) {
2101
+ oSpace = [ " " ];
2102
+ }
2103
+ else {
2104
+ oSpace.push( " " );
2105
+ }
2106
+
2107
+ if ( nSpace == null ) {
2108
+ nSpace = [ " " ];
2109
+ }
2110
+ else {
2111
+ nSpace.push( " " );
2112
+ }
2113
+
2114
+ if ( out.n.length === 0 ) {
2115
+ for ( i = 0; i < out.o.length; i++ ) {
2116
+ str += "<del>" + out.o[i] + oSpace[i] + "</del>";
2117
+ }
2118
+ }
2119
+ else {
2120
+ if ( out.n[0].text == null ) {
2121
+ for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
2122
+ str += "<del>" + out.o[n] + oSpace[n] + "</del>";
2123
+ }
2124
+ }
2125
+
2126
+ for ( i = 0; i < out.n.length; i++ ) {
2127
+ if (out.n[i].text == null) {
2128
+ str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
2129
+ }
2130
+ else {
2131
+ // `pre` initialized at top of scope
2132
+ pre = "";
2133
+
2134
+ for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
2135
+ pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
2136
+ }
2137
+ str += " " + out.n[i].text + nSpace[i] + pre;
2138
+ }
2139
+ }
2140
+ }
2141
+
2142
+ return str;
2143
+ };
2144
+ }());
2145
+
2146
+ // for CommonJS enviroments, export everything
2147
+ if ( typeof exports !== "undefined" ) {
2148
+ extend( exports, QUnit );
2149
+ }
2150
+
2151
+ // get at whatever the global object is, like window in browsers
2152
+ }( (function() {return this;}.call()) ));