epuber-stylus-source 0.54.8 → 0.56.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (465) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/Rakefile +1 -1
  4. data/VERSION +1 -1
  5. data/vendor/{History.md → Changelog.md} +50 -0
  6. data/vendor/Readme.md +37 -23
  7. data/vendor/bin/stylus +1 -2
  8. data/vendor/lib/convert/css.js +1 -1
  9. data/vendor/lib/functions/acos.js +20 -0
  10. data/vendor/lib/functions/asin.js +21 -0
  11. data/vendor/lib/functions/atan.js +21 -0
  12. data/vendor/lib/functions/convert-angle.js +19 -0
  13. data/vendor/lib/functions/index.js +3 -0
  14. data/vendor/lib/functions/url.js +5 -5
  15. data/vendor/lib/lexer.js +1 -1
  16. data/vendor/lib/middleware.js +1 -2
  17. data/vendor/lib/visitor/compiler.js +2 -2
  18. data/vendor/lib/visitor/deps-resolver.js +3 -0
  19. data/vendor/node_modules/{cliui/node_modules/ansi-regex → ansi-regex}/index.d.ts +0 -0
  20. data/vendor/node_modules/ansi-regex/index.js +4 -4
  21. data/vendor/node_modules/ansi-regex/package.json +53 -51
  22. data/vendor/node_modules/ansi-regex/readme.md +35 -3
  23. data/vendor/node_modules/assertion-error/History.md +24 -0
  24. data/vendor/node_modules/{mkdirp/LICENSE → assertion-error/README.md} +22 -2
  25. data/vendor/node_modules/assertion-error/index.d.ts +11 -0
  26. data/vendor/node_modules/assertion-error/index.js +116 -0
  27. data/vendor/node_modules/assertion-error/package.json +29 -0
  28. data/vendor/node_modules/camelcase/index.d.ts +5 -3
  29. data/vendor/node_modules/camelcase/index.js +40 -18
  30. data/vendor/node_modules/camelcase/package.json +1 -1
  31. data/vendor/node_modules/camelcase/readme.md +21 -5
  32. data/vendor/node_modules/chai/CODEOWNERS +1 -0
  33. data/vendor/node_modules/chai/CODE_OF_CONDUCT.md +58 -0
  34. data/vendor/node_modules/chai/CONTRIBUTING.md +218 -0
  35. data/vendor/node_modules/chai/History.md +1059 -0
  36. data/vendor/node_modules/{should-type-adaptors → chai}/LICENSE +1 -1
  37. data/vendor/node_modules/chai/README.md +212 -0
  38. data/vendor/node_modules/chai/ReleaseNotes.md +737 -0
  39. data/vendor/node_modules/chai/bower.json +26 -0
  40. data/vendor/node_modules/chai/chai.js +11464 -0
  41. data/vendor/node_modules/chai/index.js +1 -0
  42. data/vendor/node_modules/chai/index.mjs +14 -0
  43. data/vendor/node_modules/chai/karma.conf.js +34 -0
  44. data/vendor/node_modules/chai/karma.sauce.js +41 -0
  45. data/vendor/node_modules/chai/lib/chai/assertion.js +175 -0
  46. data/vendor/node_modules/chai/lib/chai/config.js +94 -0
  47. data/vendor/node_modules/chai/lib/chai/core/assertions.js +3853 -0
  48. data/vendor/node_modules/chai/lib/chai/interface/assert.js +3113 -0
  49. data/vendor/node_modules/chai/lib/chai/interface/expect.js +47 -0
  50. data/vendor/node_modules/chai/lib/chai/interface/should.js +219 -0
  51. data/vendor/node_modules/chai/lib/chai/utils/addChainableMethod.js +152 -0
  52. data/vendor/node_modules/chai/lib/chai/utils/addLengthGuard.js +60 -0
  53. data/vendor/node_modules/chai/lib/chai/utils/addMethod.js +68 -0
  54. data/vendor/node_modules/chai/lib/chai/utils/addProperty.js +72 -0
  55. data/vendor/node_modules/chai/lib/chai/utils/compareByInspect.js +31 -0
  56. data/vendor/node_modules/chai/lib/chai/utils/expectTypes.js +51 -0
  57. data/vendor/node_modules/chai/lib/chai/utils/flag.js +33 -0
  58. data/vendor/node_modules/chai/lib/chai/utils/getActual.js +20 -0
  59. data/vendor/node_modules/chai/lib/chai/utils/getEnumerableProperties.js +26 -0
  60. data/vendor/node_modules/chai/lib/chai/utils/getMessage.js +50 -0
  61. data/vendor/node_modules/chai/lib/chai/utils/getOperator.js +55 -0
  62. data/vendor/node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js +29 -0
  63. data/vendor/node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js +27 -0
  64. data/vendor/node_modules/chai/lib/chai/utils/getProperties.js +36 -0
  65. data/vendor/node_modules/chai/lib/chai/utils/index.js +178 -0
  66. data/vendor/node_modules/chai/lib/chai/utils/inspect.js +33 -0
  67. data/vendor/node_modules/chai/lib/chai/utils/isNaN.js +26 -0
  68. data/vendor/node_modules/chai/lib/chai/utils/isProxyEnabled.js +24 -0
  69. data/vendor/node_modules/chai/lib/chai/utils/objDisplay.js +50 -0
  70. data/vendor/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +69 -0
  71. data/vendor/node_modules/chai/lib/chai/utils/overwriteMethod.js +92 -0
  72. data/vendor/node_modules/chai/lib/chai/utils/overwriteProperty.js +92 -0
  73. data/vendor/node_modules/chai/lib/chai/utils/proxify.js +147 -0
  74. data/vendor/node_modules/chai/lib/chai/utils/test.js +28 -0
  75. data/vendor/node_modules/chai/lib/chai/utils/transferFlags.js +45 -0
  76. data/vendor/node_modules/chai/lib/chai.js +92 -0
  77. data/vendor/node_modules/chai/package.json +63 -0
  78. data/vendor/node_modules/chai/register-assert.js +1 -0
  79. data/vendor/node_modules/chai/register-expect.js +1 -0
  80. data/vendor/node_modules/chai/register-should.js +1 -0
  81. data/vendor/node_modules/chai/sauce.browsers.js +106 -0
  82. data/vendor/node_modules/chalk/package.json +1 -1
  83. data/vendor/node_modules/chalk/readme.md +7 -1
  84. data/vendor/node_modules/{source-map-url → check-error}/LICENSE +1 -3
  85. data/vendor/node_modules/check-error/README.md +207 -0
  86. data/vendor/node_modules/check-error/check-error.js +176 -0
  87. data/vendor/node_modules/check-error/index.js +172 -0
  88. data/vendor/node_modules/check-error/package.json +85 -0
  89. data/vendor/node_modules/chokidar/README.md +5 -4
  90. data/vendor/node_modules/chokidar/index.js +7 -1
  91. data/vendor/node_modules/chokidar/lib/constants.js +2 -0
  92. data/vendor/node_modules/chokidar/lib/fsevents-handler.js +2 -1
  93. data/vendor/node_modules/chokidar/lib/nodefs-handler.js +9 -1
  94. data/vendor/node_modules/chokidar/package.json +15 -8
  95. data/vendor/node_modules/chokidar/types/index.d.ts +4 -3
  96. data/vendor/node_modules/css/lib/stringify/source-map-support.js +10 -3
  97. data/vendor/node_modules/css/package.json +8 -9
  98. data/vendor/node_modules/debug/LICENSE +10 -9
  99. data/vendor/node_modules/debug/README.md +116 -3
  100. data/vendor/node_modules/debug/package.json +35 -19
  101. data/vendor/node_modules/debug/src/browser.js +194 -120
  102. data/vendor/node_modules/debug/src/common.js +274 -0
  103. data/vendor/node_modules/debug/src/index.js +4 -4
  104. data/vendor/node_modules/debug/src/node.js +174 -97
  105. data/vendor/node_modules/{resolve-url → deep-eql}/LICENSE +1 -3
  106. data/vendor/node_modules/deep-eql/README.md +116 -0
  107. data/vendor/node_modules/deep-eql/deep-eql.js +833 -0
  108. data/vendor/node_modules/deep-eql/index.js +455 -0
  109. data/vendor/node_modules/deep-eql/package.json +90 -0
  110. data/vendor/node_modules/{urix → get-func-name}/LICENSE +1 -3
  111. data/vendor/node_modules/get-func-name/README.md +123 -0
  112. data/vendor/node_modules/get-func-name/get-func-name.js +48 -0
  113. data/vendor/node_modules/get-func-name/index.js +44 -0
  114. data/vendor/node_modules/get-func-name/package.json +85 -0
  115. data/vendor/node_modules/glob/README.md +3 -0
  116. data/vendor/node_modules/glob/common.js +2 -0
  117. data/vendor/node_modules/glob/glob.js +4 -5
  118. data/vendor/node_modules/glob/package.json +2 -1
  119. data/vendor/node_modules/glob/sync.js +4 -5
  120. data/vendor/node_modules/{cliui/node_modules/is-fullwidth-code-point → is-fullwidth-code-point}/index.d.ts +0 -0
  121. data/vendor/node_modules/is-fullwidth-code-point/index.js +25 -21
  122. data/vendor/node_modules/is-fullwidth-code-point/license +4 -16
  123. data/vendor/node_modules/is-fullwidth-code-point/package.json +40 -43
  124. data/vendor/node_modules/is-fullwidth-code-point/readme.md +6 -6
  125. data/vendor/node_modules/is-glob/README.md +1 -1
  126. data/vendor/node_modules/is-glob/index.js +126 -24
  127. data/vendor/node_modules/is-glob/package.json +2 -2
  128. data/vendor/node_modules/is-unicode-supported/index.d.ts +14 -0
  129. data/vendor/node_modules/is-unicode-supported/index.js +13 -0
  130. data/vendor/node_modules/{cliui/node_modules/string-width → is-unicode-supported}/license +1 -1
  131. data/vendor/node_modules/is-unicode-supported/package.json +41 -0
  132. data/vendor/node_modules/is-unicode-supported/readme.md +35 -0
  133. data/vendor/node_modules/js-yaml/CHANGELOG.md +13 -0
  134. data/vendor/node_modules/js-yaml/README.md +1 -1
  135. data/vendor/node_modules/js-yaml/dist/js-yaml.js +90 -70
  136. data/vendor/node_modules/js-yaml/dist/js-yaml.min.js +2 -2
  137. data/vendor/node_modules/js-yaml/dist/js-yaml.mjs +84 -65
  138. data/vendor/node_modules/js-yaml/index.js +17 -0
  139. data/vendor/node_modules/js-yaml/lib/schema.js +9 -9
  140. data/vendor/node_modules/js-yaml/lib/type.js +1 -0
  141. data/vendor/node_modules/js-yaml/package.json +1 -1
  142. data/vendor/node_modules/jscoverage/node_modules/ms/index.js +152 -0
  143. data/vendor/node_modules/{should-format/LICENSE → jscoverage/node_modules/ms/license.md} +1 -2
  144. data/vendor/node_modules/jscoverage/node_modules/ms/package.json +37 -0
  145. data/vendor/node_modules/jscoverage/node_modules/ms/readme.md +51 -0
  146. data/vendor/node_modules/log-symbols/index.d.ts +2 -2
  147. data/vendor/node_modules/log-symbols/index.js +3 -4
  148. data/vendor/node_modules/log-symbols/package.json +7 -5
  149. data/vendor/node_modules/log-symbols/readme.md +3 -3
  150. data/vendor/node_modules/loupe/CHANGELOG.md +5 -0
  151. data/vendor/node_modules/{cliui/node_modules/strip-ansi/license → loupe/LICENSE} +2 -2
  152. data/vendor/node_modules/loupe/README.md +63 -0
  153. data/vendor/node_modules/loupe/index.js +195 -0
  154. data/vendor/node_modules/loupe/lib/arguments.js +7 -0
  155. data/vendor/node_modules/loupe/lib/array.js +20 -0
  156. data/vendor/node_modules/loupe/lib/bigint.js +7 -0
  157. data/vendor/node_modules/loupe/lib/class.js +18 -0
  158. data/vendor/node_modules/loupe/lib/date.js +8 -0
  159. data/vendor/node_modules/loupe/lib/error.js +34 -0
  160. data/vendor/node_modules/loupe/lib/function.js +10 -0
  161. data/vendor/node_modules/loupe/lib/helpers.js +177 -0
  162. data/vendor/node_modules/loupe/lib/html.js +40 -0
  163. data/vendor/node_modules/loupe/lib/map.js +27 -0
  164. data/vendor/node_modules/loupe/lib/number.js +18 -0
  165. data/vendor/node_modules/loupe/lib/object.js +31 -0
  166. data/vendor/node_modules/loupe/lib/promise.js +16 -0
  167. data/vendor/node_modules/loupe/lib/regexp.js +8 -0
  168. data/vendor/node_modules/loupe/lib/set.js +16 -0
  169. data/vendor/node_modules/loupe/lib/string.js +29 -0
  170. data/vendor/node_modules/loupe/lib/symbol.js +6 -0
  171. data/vendor/node_modules/loupe/lib/typedarray.js +45 -0
  172. data/vendor/node_modules/loupe/loupe.js +852 -0
  173. data/vendor/node_modules/loupe/package.json +141 -0
  174. data/vendor/node_modules/minimatch/README.md +22 -1
  175. data/vendor/node_modules/minimatch/minimatch.js +93 -69
  176. data/vendor/node_modules/minimatch/package.json +6 -3
  177. data/vendor/node_modules/mocha/LICENSE +1 -1
  178. data/vendor/node_modules/mocha/README.md +1 -1
  179. data/vendor/node_modules/mocha/bin/mocha +18 -27
  180. data/vendor/node_modules/mocha/browser-entry.js +27 -20
  181. data/vendor/node_modules/mocha/lib/browser/growl.js +5 -5
  182. data/vendor/node_modules/mocha/lib/browser/parse-query.js +1 -1
  183. data/vendor/node_modules/mocha/lib/browser/progress.js +6 -6
  184. data/vendor/node_modules/mocha/lib/cli/cli.js +3 -2
  185. data/vendor/node_modules/mocha/lib/cli/config.js +7 -12
  186. data/vendor/node_modules/mocha/lib/cli/lookup-files.js +2 -8
  187. data/vendor/node_modules/mocha/lib/cli/node-flags.js +2 -5
  188. data/vendor/node_modules/mocha/lib/cli/one-and-dones.js +1 -2
  189. data/vendor/node_modules/mocha/lib/cli/run-helpers.js +15 -15
  190. data/vendor/node_modules/mocha/lib/cli/run-option-metadata.js +4 -0
  191. data/vendor/node_modules/mocha/lib/cli/run.js +13 -1
  192. data/vendor/node_modules/mocha/lib/cli/watch-run.js +3 -6
  193. data/vendor/node_modules/mocha/lib/context.js +5 -5
  194. data/vendor/node_modules/mocha/lib/errors.js +3 -3
  195. data/vendor/node_modules/mocha/lib/hook.js +9 -3
  196. data/vendor/node_modules/mocha/lib/interfaces/bdd.js +23 -20
  197. data/vendor/node_modules/mocha/lib/interfaces/common.js +7 -7
  198. data/vendor/node_modules/mocha/lib/interfaces/exports.js +1 -1
  199. data/vendor/node_modules/mocha/lib/interfaces/qunit.js +7 -7
  200. data/vendor/node_modules/mocha/lib/interfaces/tdd.js +9 -9
  201. data/vendor/node_modules/mocha/lib/mocha.js +105 -99
  202. data/vendor/node_modules/mocha/lib/nodejs/buffered-worker-pool.js +17 -1
  203. data/vendor/node_modules/mocha/lib/nodejs/esm-utils.js +124 -0
  204. data/vendor/node_modules/mocha/lib/reporters/base.js +49 -35
  205. data/vendor/node_modules/mocha/lib/reporters/doc.js +4 -4
  206. data/vendor/node_modules/mocha/lib/reporters/dot.js +5 -5
  207. data/vendor/node_modules/mocha/lib/reporters/html.js +12 -12
  208. data/vendor/node_modules/mocha/lib/reporters/json-stream.js +4 -4
  209. data/vendor/node_modules/mocha/lib/reporters/json.js +35 -10
  210. data/vendor/node_modules/mocha/lib/reporters/landing.js +5 -5
  211. data/vendor/node_modules/mocha/lib/reporters/list.js +5 -5
  212. data/vendor/node_modules/mocha/lib/reporters/markdown.js +5 -5
  213. data/vendor/node_modules/mocha/lib/reporters/min.js +1 -1
  214. data/vendor/node_modules/mocha/lib/reporters/nyan.js +16 -16
  215. data/vendor/node_modules/mocha/lib/reporters/progress.js +3 -3
  216. data/vendor/node_modules/mocha/lib/reporters/spec.js +6 -6
  217. data/vendor/node_modules/mocha/lib/reporters/tap.js +17 -17
  218. data/vendor/node_modules/mocha/lib/reporters/xunit.js +9 -9
  219. data/vendor/node_modules/mocha/lib/runnable.js +21 -21
  220. data/vendor/node_modules/mocha/lib/runner.js +63 -61
  221. data/vendor/node_modules/mocha/lib/stats-collector.js +7 -7
  222. data/vendor/node_modules/mocha/lib/suite.js +46 -75
  223. data/vendor/node_modules/mocha/lib/test.js +5 -5
  224. data/vendor/node_modules/mocha/lib/utils.js +19 -114
  225. data/vendor/node_modules/mocha/mocha-es2018.js +19794 -0
  226. data/vendor/node_modules/mocha/mocha.js +8059 -6920
  227. data/vendor/node_modules/mocha/mocha.js.map +1 -1
  228. data/vendor/node_modules/mocha/node_modules/debug/LICENSE +10 -9
  229. data/vendor/node_modules/mocha/node_modules/debug/README.md +24 -1
  230. data/vendor/node_modules/mocha/node_modules/debug/package.json +6 -6
  231. data/vendor/node_modules/mocha/node_modules/debug/src/common.js +15 -2
  232. data/vendor/node_modules/{semver → mocha/node_modules/minimatch}/LICENSE +1 -1
  233. data/vendor/node_modules/mocha/node_modules/minimatch/README.md +230 -0
  234. data/vendor/node_modules/mocha/node_modules/minimatch/minimatch.js +908 -0
  235. data/vendor/node_modules/mocha/node_modules/minimatch/package.json +31 -0
  236. data/vendor/node_modules/mocha/package.json +66 -65
  237. data/vendor/node_modules/ms/index.js +29 -19
  238. data/vendor/node_modules/ms/package.json +6 -6
  239. data/vendor/node_modules/ms/readme.md +18 -9
  240. data/vendor/node_modules/nanoid/README.md +9 -473
  241. data/vendor/node_modules/nanoid/async/index.browser.cjs +34 -0
  242. data/vendor/node_modules/nanoid/async/index.browser.js +7 -43
  243. data/vendor/node_modules/nanoid/async/index.cjs +5 -41
  244. data/vendor/node_modules/nanoid/async/index.d.ts +7 -7
  245. data/vendor/node_modules/nanoid/async/index.js +5 -41
  246. data/vendor/node_modules/nanoid/async/index.native.js +5 -36
  247. data/vendor/node_modules/nanoid/async/package.json +2 -1
  248. data/vendor/node_modules/nanoid/bin/nanoid.cjs +52 -2
  249. data/vendor/node_modules/nanoid/index.browser.cjs +37 -0
  250. data/vendor/node_modules/nanoid/index.browser.js +5 -73
  251. data/vendor/node_modules/nanoid/index.cjs +14 -49
  252. data/vendor/node_modules/nanoid/index.d.ts +9 -6
  253. data/vendor/node_modules/nanoid/index.js +14 -49
  254. data/vendor/node_modules/nanoid/non-secure/index.cjs +3 -12
  255. data/vendor/node_modules/nanoid/non-secure/index.d.ts +8 -5
  256. data/vendor/node_modules/nanoid/non-secure/index.js +3 -12
  257. data/vendor/node_modules/nanoid/package.json +14 -10
  258. data/vendor/node_modules/nanoid/url-alphabet/index.cjs +1 -4
  259. data/vendor/node_modules/nanoid/url-alphabet/index.js +1 -4
  260. data/vendor/node_modules/pathval/CHANGELOG.md +18 -0
  261. data/vendor/node_modules/pathval/LICENSE +16 -0
  262. data/vendor/node_modules/pathval/README.md +147 -0
  263. data/vendor/node_modules/pathval/index.js +301 -0
  264. data/vendor/node_modules/pathval/package.json +80 -0
  265. data/vendor/node_modules/pathval/pathval.js +1 -0
  266. data/vendor/node_modules/picomatch/CHANGELOG.md +16 -0
  267. data/vendor/node_modules/picomatch/README.md +34 -17
  268. data/vendor/node_modules/picomatch/lib/parse.js +19 -6
  269. data/vendor/node_modules/picomatch/lib/picomatch.js +34 -31
  270. data/vendor/node_modules/picomatch/lib/scan.js +8 -2
  271. data/vendor/node_modules/picomatch/package.json +1 -1
  272. data/vendor/node_modules/readdirp/index.js +11 -6
  273. data/vendor/node_modules/readdirp/package.json +1 -1
  274. data/vendor/node_modules/serialize-javascript/README.md +2 -4
  275. data/vendor/node_modules/serialize-javascript/index.js +11 -2
  276. data/vendor/node_modules/serialize-javascript/package.json +2 -2
  277. data/vendor/node_modules/source-map-resolve/LICENSE +1 -1
  278. data/vendor/node_modules/source-map-resolve/changelog.md +6 -0
  279. data/vendor/node_modules/source-map-resolve/{lib/source-map-resolve-node.js → index.js} +48 -13
  280. data/vendor/node_modules/source-map-resolve/package.json +7 -14
  281. data/vendor/node_modules/source-map-resolve/readme.md +1 -39
  282. data/vendor/node_modules/{cliui/node_modules/string-width → string-width}/index.d.ts +0 -0
  283. data/vendor/node_modules/string-width/index.js +16 -5
  284. data/vendor/node_modules/string-width/package.json +11 -10
  285. data/vendor/node_modules/string-width/readme.md +15 -7
  286. data/vendor/node_modules/{cliui/node_modules/strip-ansi → strip-ansi}/index.d.ts +0 -0
  287. data/vendor/node_modules/strip-ansi/index.js +1 -1
  288. data/vendor/node_modules/strip-ansi/package.json +52 -50
  289. data/vendor/node_modules/strip-ansi/readme.md +12 -5
  290. data/vendor/node_modules/{fsevents → type-detect}/LICENSE +1 -4
  291. data/vendor/node_modules/type-detect/README.md +228 -0
  292. data/vendor/node_modules/type-detect/index.js +378 -0
  293. data/vendor/node_modules/type-detect/package.json +1 -0
  294. data/vendor/node_modules/type-detect/type-detect.js +388 -0
  295. data/vendor/node_modules/workerpool/HISTORY.md +42 -0
  296. data/vendor/node_modules/workerpool/README.md +11 -1
  297. data/vendor/node_modules/workerpool/dist/worker.js +9 -42
  298. data/vendor/node_modules/workerpool/dist/worker.js.map +1 -1
  299. data/vendor/node_modules/workerpool/dist/workerpool.js +117 -74
  300. data/vendor/node_modules/workerpool/dist/workerpool.js.map +1 -1
  301. data/vendor/node_modules/workerpool/dist/workerpool.min.js +1 -1
  302. data/vendor/node_modules/workerpool/dist/workerpool.min.js.LICENSE.txt +3 -3
  303. data/vendor/node_modules/workerpool/dist/workerpool.min.js.map +1 -1
  304. data/vendor/node_modules/workerpool/package.json +11 -11
  305. data/vendor/node_modules/workerpool/src/Pool.js +29 -4
  306. data/vendor/node_modules/workerpool/src/WorkerHandler.js +17 -4
  307. data/vendor/node_modules/workerpool/src/generated/embeddedWorker.js +1 -1
  308. data/vendor/node_modules/workerpool/src/header.js +1 -1
  309. data/vendor/node_modules/workerpool/src/types.js +2 -1
  310. data/vendor/package-lock.json +401 -664
  311. data/vendor/package.json +7 -9
  312. metadata +139 -175
  313. data/vendor/node_modules/cliui/node_modules/ansi-regex/index.js +0 -10
  314. data/vendor/node_modules/cliui/node_modules/ansi-regex/license +0 -9
  315. data/vendor/node_modules/cliui/node_modules/ansi-regex/package.json +0 -55
  316. data/vendor/node_modules/cliui/node_modules/ansi-regex/readme.md +0 -78
  317. data/vendor/node_modules/cliui/node_modules/is-fullwidth-code-point/index.js +0 -50
  318. data/vendor/node_modules/cliui/node_modules/is-fullwidth-code-point/license +0 -9
  319. data/vendor/node_modules/cliui/node_modules/is-fullwidth-code-point/package.json +0 -42
  320. data/vendor/node_modules/cliui/node_modules/is-fullwidth-code-point/readme.md +0 -39
  321. data/vendor/node_modules/cliui/node_modules/string-width/index.js +0 -47
  322. data/vendor/node_modules/cliui/node_modules/string-width/package.json +0 -56
  323. data/vendor/node_modules/cliui/node_modules/string-width/readme.md +0 -50
  324. data/vendor/node_modules/cliui/node_modules/strip-ansi/index.js +0 -4
  325. data/vendor/node_modules/cliui/node_modules/strip-ansi/package.json +0 -54
  326. data/vendor/node_modules/cliui/node_modules/strip-ansi/readme.md +0 -46
  327. data/vendor/node_modules/css-parse/Readme.md +0 -15
  328. data/vendor/node_modules/css-parse/index.js +0 -1
  329. data/vendor/node_modules/css-parse/package.json +0 -23
  330. data/vendor/node_modules/debug/CHANGELOG.md +0 -395
  331. data/vendor/node_modules/debug/Makefile +0 -58
  332. data/vendor/node_modules/debug/karma.conf.js +0 -70
  333. data/vendor/node_modules/debug/node.js +0 -1
  334. data/vendor/node_modules/debug/src/debug.js +0 -225
  335. data/vendor/node_modules/fsevents/README.md +0 -83
  336. data/vendor/node_modules/fsevents/fsevents.d.ts +0 -46
  337. data/vendor/node_modules/fsevents/fsevents.js +0 -82
  338. data/vendor/node_modules/fsevents/fsevents.node +0 -0
  339. data/vendor/node_modules/fsevents/package.json +0 -62
  340. data/vendor/node_modules/glob/changelog.md +0 -67
  341. data/vendor/node_modules/mkdirp/CHANGELOG.md +0 -15
  342. data/vendor/node_modules/mkdirp/bin/cmd.js +0 -68
  343. data/vendor/node_modules/mkdirp/index.js +0 -31
  344. data/vendor/node_modules/mkdirp/lib/find-made.js +0 -29
  345. data/vendor/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  346. data/vendor/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  347. data/vendor/node_modules/mkdirp/lib/opts-arg.js +0 -23
  348. data/vendor/node_modules/mkdirp/lib/path-arg.js +0 -29
  349. data/vendor/node_modules/mkdirp/lib/use-native.js +0 -10
  350. data/vendor/node_modules/mkdirp/package.json +0 -44
  351. data/vendor/node_modules/mkdirp/readme.markdown +0 -266
  352. data/vendor/node_modules/mocha/CHANGELOG.md +0 -931
  353. data/vendor/node_modules/mocha/lib/esm-utils.js +0 -58
  354. data/vendor/node_modules/mocha/node_modules/glob/LICENSE +0 -21
  355. data/vendor/node_modules/mocha/node_modules/glob/README.md +0 -375
  356. data/vendor/node_modules/mocha/node_modules/glob/changelog.md +0 -67
  357. data/vendor/node_modules/mocha/node_modules/glob/common.js +0 -240
  358. data/vendor/node_modules/mocha/node_modules/glob/glob.js +0 -790
  359. data/vendor/node_modules/mocha/node_modules/glob/package.json +0 -46
  360. data/vendor/node_modules/mocha/node_modules/glob/sync.js +0 -486
  361. data/vendor/node_modules/nanoid/CHANGELOG.md +0 -241
  362. data/vendor/node_modules/nanoid/index.dev.js +0 -105
  363. data/vendor/node_modules/nanoid/index.prod.js +0 -105
  364. data/vendor/node_modules/resolve-url/bower.json +0 -15
  365. data/vendor/node_modules/resolve-url/changelog.md +0 -15
  366. data/vendor/node_modules/resolve-url/component.json +0 -15
  367. data/vendor/node_modules/resolve-url/package.json +0 -34
  368. data/vendor/node_modules/resolve-url/readme.md +0 -83
  369. data/vendor/node_modules/resolve-url/resolve-url.js +0 -47
  370. data/vendor/node_modules/resolve-url/test/resolve-url.js +0 -70
  371. data/vendor/node_modules/semver/CHANGELOG.md +0 -70
  372. data/vendor/node_modules/semver/README.md +0 -443
  373. data/vendor/node_modules/semver/bin/semver.js +0 -174
  374. data/vendor/node_modules/semver/package.json +0 -28
  375. data/vendor/node_modules/semver/range.bnf +0 -16
  376. data/vendor/node_modules/semver/semver.js +0 -1596
  377. data/vendor/node_modules/should/CONTRIBUTING.md +0 -14
  378. data/vendor/node_modules/should/History.md +0 -554
  379. data/vendor/node_modules/should/LICENSE +0 -20
  380. data/vendor/node_modules/should/Readme.md +0 -223
  381. data/vendor/node_modules/should/as-function.js +0 -2935
  382. data/vendor/node_modules/should/cjs/should.js +0 -2962
  383. data/vendor/node_modules/should/es6/should.js +0 -2958
  384. data/vendor/node_modules/should/package.json +0 -51
  385. data/vendor/node_modules/should/should.d.ts +0 -243
  386. data/vendor/node_modules/should/should.js +0 -4371
  387. data/vendor/node_modules/should-equal/LICENSE +0 -21
  388. data/vendor/node_modules/should-equal/README.md +0 -24
  389. data/vendor/node_modules/should-equal/cjs/should-equal.js +0 -333
  390. data/vendor/node_modules/should-equal/es6/should-equal.js +0 -329
  391. data/vendor/node_modules/should-equal/package.json +0 -38
  392. data/vendor/node_modules/should-format/README.md +0 -6
  393. data/vendor/node_modules/should-format/cjs/should-format.js +0 -532
  394. data/vendor/node_modules/should-format/es6/should-format.js +0 -528
  395. data/vendor/node_modules/should-format/package.json +0 -44
  396. data/vendor/node_modules/should-type/LICENSE +0 -22
  397. data/vendor/node_modules/should-type/README.md +0 -4
  398. data/vendor/node_modules/should-type/cjs/should-type.js +0 -263
  399. data/vendor/node_modules/should-type/es6/should-type.js +0 -261
  400. data/vendor/node_modules/should-type/package.json +0 -38
  401. data/vendor/node_modules/should-type-adaptors/README.md +0 -1
  402. data/vendor/node_modules/should-type-adaptors/cjs/should-type-adaptors.js +0 -288
  403. data/vendor/node_modules/should-type-adaptors/es6/should-type-adaptors.js +0 -272
  404. data/vendor/node_modules/should-type-adaptors/package.json +0 -43
  405. data/vendor/node_modules/should-util/LICENSE +0 -21
  406. data/vendor/node_modules/should-util/README.md +0 -2
  407. data/vendor/node_modules/should-util/cjs/should-util.js +0 -50
  408. data/vendor/node_modules/should-util/es6/should-util.js +0 -42
  409. data/vendor/node_modules/should-util/package.json +0 -40
  410. data/vendor/node_modules/source-map-resolve/lib/decode-uri-component.js +0 -8
  411. data/vendor/node_modules/source-map-resolve/lib/resolve-url.js +0 -9
  412. data/vendor/node_modules/source-map-resolve/source-map-resolve.js +0 -348
  413. data/vendor/node_modules/source-map-url/changelog.md +0 -57
  414. data/vendor/node_modules/source-map-url/package.json +0 -39
  415. data/vendor/node_modules/source-map-url/readme.md +0 -97
  416. data/vendor/node_modules/source-map-url/source-map-url.js +0 -57
  417. data/vendor/node_modules/urix/index.js +0 -17
  418. data/vendor/node_modules/urix/package.json +0 -25
  419. data/vendor/node_modules/urix/readme.md +0 -46
  420. data/vendor/node_modules/urix/test/index.js +0 -43
  421. data/vendor/node_modules/wide-align/LICENSE +0 -14
  422. data/vendor/node_modules/wide-align/README.md +0 -47
  423. data/vendor/node_modules/wide-align/align.js +0 -65
  424. data/vendor/node_modules/wide-align/package.json +0 -33
  425. data/vendor/node_modules/wrap-ansi/node_modules/ansi-regex/index.d.ts +0 -37
  426. data/vendor/node_modules/wrap-ansi/node_modules/ansi-regex/index.js +0 -10
  427. data/vendor/node_modules/wrap-ansi/node_modules/ansi-regex/license +0 -9
  428. data/vendor/node_modules/wrap-ansi/node_modules/ansi-regex/package.json +0 -55
  429. data/vendor/node_modules/wrap-ansi/node_modules/ansi-regex/readme.md +0 -78
  430. data/vendor/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  431. data/vendor/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/index.js +0 -50
  432. data/vendor/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/license +0 -9
  433. data/vendor/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/package.json +0 -42
  434. data/vendor/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point/readme.md +0 -39
  435. data/vendor/node_modules/wrap-ansi/node_modules/string-width/index.d.ts +0 -29
  436. data/vendor/node_modules/wrap-ansi/node_modules/string-width/index.js +0 -47
  437. data/vendor/node_modules/wrap-ansi/node_modules/string-width/license +0 -9
  438. data/vendor/node_modules/wrap-ansi/node_modules/string-width/package.json +0 -56
  439. data/vendor/node_modules/wrap-ansi/node_modules/string-width/readme.md +0 -50
  440. data/vendor/node_modules/wrap-ansi/node_modules/strip-ansi/index.d.ts +0 -17
  441. data/vendor/node_modules/wrap-ansi/node_modules/strip-ansi/index.js +0 -4
  442. data/vendor/node_modules/wrap-ansi/node_modules/strip-ansi/license +0 -9
  443. data/vendor/node_modules/wrap-ansi/node_modules/strip-ansi/package.json +0 -54
  444. data/vendor/node_modules/wrap-ansi/node_modules/strip-ansi/readme.md +0 -46
  445. data/vendor/node_modules/yargs/node_modules/ansi-regex/index.d.ts +0 -37
  446. data/vendor/node_modules/yargs/node_modules/ansi-regex/index.js +0 -10
  447. data/vendor/node_modules/yargs/node_modules/ansi-regex/license +0 -9
  448. data/vendor/node_modules/yargs/node_modules/ansi-regex/package.json +0 -55
  449. data/vendor/node_modules/yargs/node_modules/ansi-regex/readme.md +0 -78
  450. data/vendor/node_modules/yargs/node_modules/is-fullwidth-code-point/index.d.ts +0 -17
  451. data/vendor/node_modules/yargs/node_modules/is-fullwidth-code-point/index.js +0 -50
  452. data/vendor/node_modules/yargs/node_modules/is-fullwidth-code-point/license +0 -9
  453. data/vendor/node_modules/yargs/node_modules/is-fullwidth-code-point/package.json +0 -42
  454. data/vendor/node_modules/yargs/node_modules/is-fullwidth-code-point/readme.md +0 -39
  455. data/vendor/node_modules/yargs/node_modules/string-width/index.d.ts +0 -29
  456. data/vendor/node_modules/yargs/node_modules/string-width/index.js +0 -47
  457. data/vendor/node_modules/yargs/node_modules/string-width/license +0 -9
  458. data/vendor/node_modules/yargs/node_modules/string-width/package.json +0 -56
  459. data/vendor/node_modules/yargs/node_modules/string-width/readme.md +0 -50
  460. data/vendor/node_modules/yargs/node_modules/strip-ansi/index.d.ts +0 -17
  461. data/vendor/node_modules/yargs/node_modules/strip-ansi/index.js +0 -4
  462. data/vendor/node_modules/yargs/node_modules/strip-ansi/license +0 -9
  463. data/vendor/node_modules/yargs/node_modules/strip-ansi/package.json +0 -54
  464. data/vendor/node_modules/yargs/node_modules/strip-ansi/readme.md +0 -46
  465. data/vendor/test.js +0 -31
@@ -0,0 +1,124 @@
1
+ const path = require('path');
2
+ const url = require('url');
3
+
4
+ const formattedImport = async file => {
5
+ if (path.isAbsolute(file)) {
6
+ try {
7
+ return await import(url.pathToFileURL(file));
8
+ } catch (err) {
9
+ // This is a hack created because ESM in Node.js (at least in Node v15.5.1) does not emit
10
+ // the location of the syntax error in the error thrown.
11
+ // This is problematic because the user can't see what file has the problem,
12
+ // so we add the file location to the error.
13
+ // This `if` should be removed once Node.js fixes the problem.
14
+ if (
15
+ err instanceof SyntaxError &&
16
+ err.message &&
17
+ err.stack &&
18
+ !err.stack.includes(file)
19
+ ) {
20
+ const newErrorWithFilename = new SyntaxError(err.message);
21
+ newErrorWithFilename.stack = err.stack.replace(
22
+ /^SyntaxError/,
23
+ `SyntaxError[ @${file} ]`
24
+ );
25
+ throw newErrorWithFilename;
26
+ }
27
+ throw err;
28
+ }
29
+ }
30
+ return import(file);
31
+ };
32
+
33
+ const hasStableEsmImplementation = (() => {
34
+ const [major, minor] = process.version.split('.');
35
+ // ESM is stable from v12.22.0 onward
36
+ // https://nodejs.org/api/esm.html#esm_modules_ecmascript_modules
37
+ const majorNumber = parseInt(major.slice(1), 10);
38
+ const minorNumber = parseInt(minor, 10);
39
+ return majorNumber > 12 || (majorNumber === 12 && minorNumber >= 22);
40
+ })();
41
+
42
+ exports.requireOrImport = hasStableEsmImplementation
43
+ ? async file => {
44
+ if (path.extname(file) === '.mjs') {
45
+ return formattedImport(file);
46
+ }
47
+ try {
48
+ return dealWithExports(await formattedImport(file));
49
+ } catch (err) {
50
+ if (
51
+ err.code === 'ERR_MODULE_NOT_FOUND' ||
52
+ err.code === 'ERR_UNKNOWN_FILE_EXTENSION' ||
53
+ err.code === 'ERR_UNSUPPORTED_DIR_IMPORT'
54
+ ) {
55
+ try {
56
+ // Importing a file usually works, but the resolution of `import` is the ESM
57
+ // resolution algorithm, and not the CJS resolution algorithm. So in this case
58
+ // if we fail, we may have failed because we tried the ESM resolution and failed
59
+ // So we try to `require` it
60
+ return require(file);
61
+ } catch (requireErr) {
62
+ if (
63
+ requireErr.code === 'ERR_REQUIRE_ESM' ||
64
+ (requireErr instanceof SyntaxError &&
65
+ requireErr
66
+ .toString()
67
+ .includes('Cannot use import statement outside a module'))
68
+ ) {
69
+ // ERR_REQUIRE_ESM happens when the test file is a JS file, but via type:module is actually ESM,
70
+ // AND has an import to a file that doesn't exist.
71
+ // This throws an `ERR_MODULE_NOT_FOUND` error above,
72
+ // and when we try to `require` it here, it throws an `ERR_REQUIRE_ESM`.
73
+ // What we want to do is throw the original error (the `ERR_MODULE_NOT_FOUND`),
74
+ // and not the `ERR_REQUIRE_ESM` error, which is a red herring.
75
+ //
76
+ // SyntaxError happens when in an edge case: when we're using an ESM loader that loads
77
+ // a `test.ts` file (i.e. unrecognized extension), and that file includes an unknown
78
+ // import (which thows an ERR_MODULE_NOT_FOUND). require-ing it will throw the
79
+ // syntax error, because we cannot require a file that has import-s.
80
+ throw err;
81
+ } else {
82
+ throw requireErr;
83
+ }
84
+ }
85
+ } else {
86
+ throw err;
87
+ }
88
+ }
89
+ }
90
+ : implementationOfRequireOrImportForUnstableEsm;
91
+
92
+ function dealWithExports(module) {
93
+ if (module.default) {
94
+ return module.default;
95
+ } else {
96
+ return {...module, default: undefined};
97
+ }
98
+ }
99
+
100
+ exports.loadFilesAsync = async (files, preLoadFunc, postLoadFunc) => {
101
+ for (const file of files) {
102
+ preLoadFunc(file);
103
+ const result = await exports.requireOrImport(path.resolve(file));
104
+ postLoadFunc(file, result);
105
+ }
106
+ };
107
+
108
+ /* istanbul ignore next */
109
+ async function implementationOfRequireOrImportForUnstableEsm(file) {
110
+ if (path.extname(file) === '.mjs') {
111
+ return formattedImport(file);
112
+ }
113
+ // This is currently the only known way of figuring out whether a file is CJS or ESM in
114
+ // Node.js that doesn't necessitate calling `import` first.
115
+ try {
116
+ return require(file);
117
+ } catch (err) {
118
+ if (err.code === 'ERR_REQUIRE_ESM') {
119
+ return formattedImport(file);
120
+ } else {
121
+ throw err;
122
+ }
123
+ }
124
+ }
@@ -10,6 +10,7 @@ var diff = require('diff');
10
10
  var milliseconds = require('ms');
11
11
  var utils = require('../utils');
12
12
  var supportsColor = require('supports-color');
13
+ var symbols = require('log-symbols');
13
14
  var constants = require('../runner').constants;
14
15
  var EVENT_TEST_PASS = constants.EVENT_TEST_PASS;
15
16
  var EVENT_TEST_FAIL = constants.EVENT_TEST_FAIL;
@@ -55,6 +56,11 @@ exports.useColors =
55
56
 
56
57
  exports.inlineDiffs = false;
57
58
 
59
+ /**
60
+ * Truncate diffs longer than this value to avoid slow performance
61
+ */
62
+ exports.maxDiffSize = 8192;
63
+
58
64
  /**
59
65
  * Default color map.
60
66
  */
@@ -88,20 +94,13 @@ exports.colors = {
88
94
  */
89
95
 
90
96
  exports.symbols = {
91
- ok: '✓',
92
- err: '✖',
93
- dot: '',
97
+ ok: symbols.success,
98
+ err: symbols.error,
99
+ dot: '.',
94
100
  comma: ',',
95
101
  bang: '!'
96
102
  };
97
103
 
98
- // With node.js on Windows: use symbols available in terminal default fonts
99
- if (process.platform === 'win32') {
100
- exports.symbols.ok = '\u221A';
101
- exports.symbols.err = '\u00D7';
102
- exports.symbols.dot = '.';
103
- }
104
-
105
104
  /**
106
105
  * Color `str` with the given `type`,
107
106
  * allowing colors to be disabled,
@@ -113,7 +112,7 @@ if (process.platform === 'win32') {
113
112
  * @param {string} str
114
113
  * @return {string}
115
114
  */
116
- var color = (exports.color = function(type, str) {
115
+ var color = (exports.color = function (type, str) {
117
116
  if (!exports.useColors) {
118
117
  return String(str);
119
118
  }
@@ -141,23 +140,23 @@ if (isatty) {
141
140
  */
142
141
 
143
142
  exports.cursor = {
144
- hide: function() {
143
+ hide: function () {
145
144
  isatty && process.stdout.write('\u001b[?25l');
146
145
  },
147
146
 
148
- show: function() {
147
+ show: function () {
149
148
  isatty && process.stdout.write('\u001b[?25h');
150
149
  },
151
150
 
152
- deleteLine: function() {
151
+ deleteLine: function () {
153
152
  isatty && process.stdout.write('\u001b[2K');
154
153
  },
155
154
 
156
- beginningOfLine: function() {
155
+ beginningOfLine: function () {
157
156
  isatty && process.stdout.write('\u001b[0G');
158
157
  },
159
158
 
160
- CR: function() {
159
+ CR: function () {
161
160
  if (isatty) {
162
161
  exports.cursor.deleteLine();
163
162
  exports.cursor.beginningOfLine();
@@ -167,7 +166,7 @@ exports.cursor = {
167
166
  }
168
167
  };
169
168
 
170
- var showDiff = (exports.showDiff = function(err) {
169
+ var showDiff = (exports.showDiff = function (err) {
171
170
  return (
172
171
  err &&
173
172
  err.showDiff !== false &&
@@ -194,11 +193,23 @@ function stringifyDiffObjs(err) {
194
193
  * @param {string} expected
195
194
  * @return {string} Diff
196
195
  */
197
- var generateDiff = (exports.generateDiff = function(actual, expected) {
196
+
197
+ var generateDiff = (exports.generateDiff = function (actual, expected) {
198
198
  try {
199
- return exports.inlineDiffs
199
+ var maxLen = exports.maxDiffSize;
200
+ var skipped = 0;
201
+ if (maxLen > 0) {
202
+ skipped = Math.max(actual.length - maxLen, expected.length - maxLen);
203
+ actual = actual.slice(0, maxLen);
204
+ expected = expected.slice(0, maxLen);
205
+ }
206
+ let result = exports.inlineDiffs
200
207
  ? inlineDiff(actual, expected)
201
208
  : unifiedDiff(actual, expected);
209
+ if (skipped > 0) {
210
+ result = `${result}\n [mocha] output truncated to ${maxLen} characters, see "maxDiffSize" reporter-option\n`;
211
+ }
212
+ return result;
202
213
  } catch (err) {
203
214
  var msg =
204
215
  '\n ' +
@@ -219,10 +230,10 @@ var generateDiff = (exports.generateDiff = function(actual, expected) {
219
230
  * @param {Object[]} failures - Each is Test instance with corresponding
220
231
  * Error property
221
232
  */
222
- exports.list = function(failures) {
233
+ exports.list = function (failures) {
223
234
  var multipleErr, multipleTest;
224
235
  Base.consoleLog();
225
- failures.forEach(function(test, i) {
236
+ failures.forEach(function (test, i) {
226
237
  // format
227
238
  var fmt =
228
239
  color('error title', ' %s) %s:\n') +
@@ -242,10 +253,10 @@ exports.list = function(failures) {
242
253
  err = test.err;
243
254
  }
244
255
  var message;
245
- if (err.message && typeof err.message.toString === 'function') {
246
- message = err.message + '';
247
- } else if (typeof err.inspect === 'function') {
256
+ if (typeof err.inspect === 'function') {
248
257
  message = err.inspect() + '';
258
+ } else if (err.message && typeof err.message.toString === 'function') {
259
+ message = err.message + '';
249
260
  } else {
250
261
  message = '';
251
262
  }
@@ -281,7 +292,7 @@ exports.list = function(failures) {
281
292
 
282
293
  // indented test title
283
294
  var testTitle = '';
284
- test.titlePath().forEach(function(str, index) {
295
+ test.titlePath().forEach(function (str, index) {
285
296
  if (index !== 0) {
286
297
  testTitle += '\n ';
287
298
  }
@@ -317,7 +328,13 @@ function Base(runner, options) {
317
328
  this.runner = runner;
318
329
  this.stats = runner.stats; // assigned so Reporters keep a closer reference
319
330
 
320
- runner.on(EVENT_TEST_PASS, function(test) {
331
+ var maxDiffSizeOpt =
332
+ this.options.reporterOption && this.options.reporterOption.maxDiffSize;
333
+ if (maxDiffSizeOpt !== undefined && !isNaN(Number(maxDiffSizeOpt))) {
334
+ exports.maxDiffSize = Number(maxDiffSizeOpt);
335
+ }
336
+
337
+ runner.on(EVENT_TEST_PASS, function (test) {
321
338
  if (test.duration > test.slow()) {
322
339
  test.speed = 'slow';
323
340
  } else if (test.duration > test.slow() / 2) {
@@ -327,7 +344,7 @@ function Base(runner, options) {
327
344
  }
328
345
  });
329
346
 
330
- runner.on(EVENT_TEST_FAIL, function(test, err) {
347
+ runner.on(EVENT_TEST_FAIL, function (test, err) {
331
348
  if (showDiff(err)) {
332
349
  stringifyDiffObjs(err);
333
350
  }
@@ -347,7 +364,7 @@ function Base(runner, options) {
347
364
  * @public
348
365
  * @memberof Mocha.reporters
349
366
  */
350
- Base.prototype.epilogue = function() {
367
+ Base.prototype.epilogue = function () {
351
368
  var stats = this.stats;
352
369
  var fmt;
353
370
 
@@ -410,7 +427,7 @@ function inlineDiff(actual, expected) {
410
427
  if (lines.length > 4) {
411
428
  var width = String(lines.length).length;
412
429
  msg = lines
413
- .map(function(str, i) {
430
+ .map(function (str, i) {
414
431
  return pad(++i, width) + ' |' + ' ' + str;
415
432
  })
416
433
  .join('\n');
@@ -467,10 +484,7 @@ function unifiedDiff(actual, expected) {
467
484
  ' ' +
468
485
  colorLines('diff removed', '- actual') +
469
486
  '\n\n' +
470
- lines
471
- .map(cleanUp)
472
- .filter(notBlank)
473
- .join('\n')
487
+ lines.map(cleanUp).filter(notBlank).join('\n')
474
488
  );
475
489
  }
476
490
 
@@ -485,7 +499,7 @@ function unifiedDiff(actual, expected) {
485
499
  function errorDiff(actual, expected) {
486
500
  return diff
487
501
  .diffWordsWithSpace(actual, expected)
488
- .map(function(str) {
502
+ .map(function (str) {
489
503
  if (str.added) {
490
504
  return colorLines('diff added inline', str.value);
491
505
  }
@@ -508,7 +522,7 @@ function errorDiff(actual, expected) {
508
522
  function colorLines(name, str) {
509
523
  return str
510
524
  .split('\n')
511
- .map(function(str) {
525
+ .map(function (str) {
512
526
  return color(name, str);
513
527
  })
514
528
  .join('\n');
@@ -39,7 +39,7 @@ function Doc(runner, options) {
39
39
  return Array(indents).join(' ');
40
40
  }
41
41
 
42
- runner.on(EVENT_SUITE_BEGIN, function(suite) {
42
+ runner.on(EVENT_SUITE_BEGIN, function (suite) {
43
43
  if (suite.root) {
44
44
  return;
45
45
  }
@@ -50,7 +50,7 @@ function Doc(runner, options) {
50
50
  Base.consoleLog('%s<dl>', indent());
51
51
  });
52
52
 
53
- runner.on(EVENT_SUITE_END, function(suite) {
53
+ runner.on(EVENT_SUITE_END, function (suite) {
54
54
  if (suite.root) {
55
55
  return;
56
56
  }
@@ -60,14 +60,14 @@ function Doc(runner, options) {
60
60
  --indents;
61
61
  });
62
62
 
63
- runner.on(EVENT_TEST_PASS, function(test) {
63
+ runner.on(EVENT_TEST_PASS, function (test) {
64
64
  Base.consoleLog('%s <dt>%s</dt>', indent(), utils.escape(test.title));
65
65
  Base.consoleLog('%s <dt>%s</dt>', indent(), utils.escape(test.file));
66
66
  var code = utils.escape(utils.clean(test.body));
67
67
  Base.consoleLog('%s <dd><pre><code>%s</code></pre></dd>', indent(), code);
68
68
  });
69
69
 
70
- runner.on(EVENT_TEST_FAIL, function(test, err) {
70
+ runner.on(EVENT_TEST_FAIL, function (test, err) {
71
71
  Base.consoleLog(
72
72
  '%s <dt class="error">%s</dt>',
73
73
  indent(),
@@ -38,18 +38,18 @@ function Dot(runner, options) {
38
38
  var width = (Base.window.width * 0.75) | 0;
39
39
  var n = -1;
40
40
 
41
- runner.on(EVENT_RUN_BEGIN, function() {
41
+ runner.on(EVENT_RUN_BEGIN, function () {
42
42
  process.stdout.write('\n');
43
43
  });
44
44
 
45
- runner.on(EVENT_TEST_PENDING, function() {
45
+ runner.on(EVENT_TEST_PENDING, function () {
46
46
  if (++n % width === 0) {
47
47
  process.stdout.write('\n ');
48
48
  }
49
49
  process.stdout.write(Base.color('pending', Base.symbols.comma));
50
50
  });
51
51
 
52
- runner.on(EVENT_TEST_PASS, function(test) {
52
+ runner.on(EVENT_TEST_PASS, function (test) {
53
53
  if (++n % width === 0) {
54
54
  process.stdout.write('\n ');
55
55
  }
@@ -60,14 +60,14 @@ function Dot(runner, options) {
60
60
  }
61
61
  });
62
62
 
63
- runner.on(EVENT_TEST_FAIL, function() {
63
+ runner.on(EVENT_TEST_FAIL, function () {
64
64
  if (++n % width === 0) {
65
65
  process.stdout.write('\n ');
66
66
  }
67
67
  process.stdout.write(Base.color('fail', Base.symbols.bang));
68
68
  });
69
69
 
70
- runner.once(EVENT_RUN_END, function() {
70
+ runner.once(EVENT_RUN_END, function () {
71
71
  process.stdout.write('\n');
72
72
  self.epilogue();
73
73
  });
@@ -91,7 +91,7 @@ function HTML(runner, options) {
91
91
  }
92
92
 
93
93
  // pass toggle
94
- on(passesLink, 'click', function(evt) {
94
+ on(passesLink, 'click', function (evt) {
95
95
  evt.preventDefault();
96
96
  unhide();
97
97
  var name = /pass/.test(report.className) ? '' : ' pass';
@@ -102,7 +102,7 @@ function HTML(runner, options) {
102
102
  });
103
103
 
104
104
  // failure toggle
105
- on(failuresLink, 'click', function(evt) {
105
+ on(failuresLink, 'click', function (evt) {
106
106
  evt.preventDefault();
107
107
  unhide();
108
108
  var name = /fail/.test(report.className) ? '' : ' fail';
@@ -119,7 +119,7 @@ function HTML(runner, options) {
119
119
  progress.size(40);
120
120
  }
121
121
 
122
- runner.on(EVENT_SUITE_BEGIN, function(suite) {
122
+ runner.on(EVENT_SUITE_BEGIN, function (suite) {
123
123
  if (suite.root) {
124
124
  return;
125
125
  }
@@ -138,7 +138,7 @@ function HTML(runner, options) {
138
138
  el.appendChild(stack[0]);
139
139
  });
140
140
 
141
- runner.on(EVENT_SUITE_END, function(suite) {
141
+ runner.on(EVENT_SUITE_END, function (suite) {
142
142
  if (suite.root) {
143
143
  updateStats();
144
144
  return;
@@ -146,7 +146,7 @@ function HTML(runner, options) {
146
146
  stack.shift();
147
147
  });
148
148
 
149
- runner.on(EVENT_TEST_PASS, function(test) {
149
+ runner.on(EVENT_TEST_PASS, function (test) {
150
150
  var url = self.testURL(test);
151
151
  var markup =
152
152
  '<li class="test pass %e"><h2>%e<span class="duration">%ems</span> ' +
@@ -159,7 +159,7 @@ function HTML(runner, options) {
159
159
  updateStats();
160
160
  });
161
161
 
162
- runner.on(EVENT_TEST_FAIL, function(test) {
162
+ runner.on(EVENT_TEST_FAIL, function (test) {
163
163
  var el = fragment(
164
164
  '<li class="test fail"><h2>%e <a href="%e" class="replay">' +
165
165
  playIcon +
@@ -215,7 +215,7 @@ function HTML(runner, options) {
215
215
  updateStats();
216
216
  });
217
217
 
218
- runner.on(EVENT_TEST_PENDING, function(test) {
218
+ runner.on(EVENT_TEST_PENDING, function (test) {
219
219
  var el = fragment(
220
220
  '<li class="test pass pending"><h2>%e</h2></li>',
221
221
  test.title
@@ -273,7 +273,7 @@ function makeUrl(s) {
273
273
  *
274
274
  * @param {Object} [suite]
275
275
  */
276
- HTML.prototype.suiteURL = function(suite) {
276
+ HTML.prototype.suiteURL = function (suite) {
277
277
  return makeUrl(suite.fullTitle());
278
278
  };
279
279
 
@@ -282,7 +282,7 @@ HTML.prototype.suiteURL = function(suite) {
282
282
  *
283
283
  * @param {Object} [test]
284
284
  */
285
- HTML.prototype.testURL = function(test) {
285
+ HTML.prototype.testURL = function (test) {
286
286
  return makeUrl(test.fullTitle());
287
287
  };
288
288
 
@@ -292,10 +292,10 @@ HTML.prototype.testURL = function(test) {
292
292
  * @param {HTMLLIElement} el
293
293
  * @param {string} contents
294
294
  */
295
- HTML.prototype.addCodeToggle = function(el, contents) {
295
+ HTML.prototype.addCodeToggle = function (el, contents) {
296
296
  var h2 = el.getElementsByTagName('h2')[0];
297
297
 
298
- on(h2, 'click', function() {
298
+ on(h2, 'click', function () {
299
299
  pre.style.display = pre.style.display === 'none' ? 'block' : 'none';
300
300
  });
301
301
 
@@ -323,7 +323,7 @@ function fragment(html) {
323
323
  var div = document.createElement('div');
324
324
  var i = 1;
325
325
 
326
- div.innerHTML = html.replace(/%([se])/g, function(_, type) {
326
+ div.innerHTML = html.replace(/%([se])/g, function (_, type) {
327
327
  switch (type) {
328
328
  case 's':
329
329
  return String(args[i++]);
@@ -35,22 +35,22 @@ function JSONStream(runner, options) {
35
35
  var self = this;
36
36
  var total = runner.total;
37
37
 
38
- runner.once(EVENT_RUN_BEGIN, function() {
38
+ runner.once(EVENT_RUN_BEGIN, function () {
39
39
  writeEvent(['start', {total: total}]);
40
40
  });
41
41
 
42
- runner.on(EVENT_TEST_PASS, function(test) {
42
+ runner.on(EVENT_TEST_PASS, function (test) {
43
43
  writeEvent(['pass', clean(test)]);
44
44
  });
45
45
 
46
- runner.on(EVENT_TEST_FAIL, function(test, err) {
46
+ runner.on(EVENT_TEST_FAIL, function (test, err) {
47
47
  test = clean(test);
48
48
  test.err = err.message;
49
49
  test.stack = err.stack || null;
50
50
  writeEvent(['fail', test]);
51
51
  });
52
52
 
53
- runner.once(EVENT_RUN_END, function() {
53
+ runner.once(EVENT_RUN_END, function () {
54
54
  writeEvent(['end', self.stats]);
55
55
  });
56
56
  }
@@ -7,12 +7,16 @@
7
7
  */
8
8
 
9
9
  var Base = require('./base');
10
+ var fs = require('fs');
11
+ var path = require('path');
12
+ const createUnsupportedError = require('../errors').createUnsupportedError;
13
+ const utils = require('../utils');
10
14
  var constants = require('../runner').constants;
11
15
  var EVENT_TEST_PASS = constants.EVENT_TEST_PASS;
16
+ var EVENT_TEST_PENDING = constants.EVENT_TEST_PENDING;
12
17
  var EVENT_TEST_FAIL = constants.EVENT_TEST_FAIL;
13
18
  var EVENT_TEST_END = constants.EVENT_TEST_END;
14
19
  var EVENT_RUN_END = constants.EVENT_RUN_END;
15
- var EVENT_TEST_PENDING = constants.EVENT_TEST_PENDING;
16
20
 
17
21
  /**
18
22
  * Expose `JSON`.
@@ -30,7 +34,7 @@ exports = module.exports = JSONReporter;
30
34
  * @param {Runner} runner - Instance triggers reporter actions.
31
35
  * @param {Object} [options] - runner options
32
36
  */
33
- function JSONReporter(runner, options) {
37
+ function JSONReporter(runner, options = {}) {
34
38
  Base.call(this, runner, options);
35
39
 
36
40
  var self = this;
@@ -38,24 +42,32 @@ function JSONReporter(runner, options) {
38
42
  var pending = [];
39
43
  var failures = [];
40
44
  var passes = [];
45
+ var output;
41
46
 
42
- runner.on(EVENT_TEST_END, function(test) {
47
+ if (options.reporterOption && options.reporterOption.output) {
48
+ if (utils.isBrowser()) {
49
+ throw createUnsupportedError('file output not supported in browser');
50
+ }
51
+ output = options.reporterOption.output;
52
+ }
53
+
54
+ runner.on(EVENT_TEST_END, function (test) {
43
55
  tests.push(test);
44
56
  });
45
57
 
46
- runner.on(EVENT_TEST_PASS, function(test) {
58
+ runner.on(EVENT_TEST_PASS, function (test) {
47
59
  passes.push(test);
48
60
  });
49
61
 
50
- runner.on(EVENT_TEST_FAIL, function(test) {
62
+ runner.on(EVENT_TEST_FAIL, function (test) {
51
63
  failures.push(test);
52
64
  });
53
65
 
54
- runner.on(EVENT_TEST_PENDING, function(test) {
66
+ runner.on(EVENT_TEST_PENDING, function (test) {
55
67
  pending.push(test);
56
68
  });
57
69
 
58
- runner.once(EVENT_RUN_END, function() {
70
+ runner.once(EVENT_RUN_END, function () {
59
71
  var obj = {
60
72
  stats: self.stats,
61
73
  tests: tests.map(clean),
@@ -66,7 +78,20 @@ function JSONReporter(runner, options) {
66
78
 
67
79
  runner.testResults = obj;
68
80
 
69
- process.stdout.write(JSON.stringify(obj, null, 2));
81
+ var json = JSON.stringify(obj, null, 2);
82
+ if (output) {
83
+ try {
84
+ fs.mkdirSync(path.dirname(output), {recursive: true});
85
+ fs.writeFileSync(output, json);
86
+ } catch (err) {
87
+ console.error(
88
+ `${Base.symbols.err} [mocha] writing output to "${output}" failed: ${err.message}\n`
89
+ );
90
+ process.stdout.write(json);
91
+ }
92
+ } else {
93
+ process.stdout.write(json);
94
+ }
70
95
  });
71
96
  }
72
97
 
@@ -105,7 +130,7 @@ function clean(test) {
105
130
  function cleanCycles(obj) {
106
131
  var cache = [];
107
132
  return JSON.parse(
108
- JSON.stringify(obj, function(key, value) {
133
+ JSON.stringify(obj, function (key, value) {
109
134
  if (typeof value === 'object' && value !== null) {
110
135
  if (cache.indexOf(value) !== -1) {
111
136
  // Instead of going in a circle, we'll print [object Object]
@@ -128,7 +153,7 @@ function cleanCycles(obj) {
128
153
  */
129
154
  function errorJSON(err) {
130
155
  var res = {};
131
- Object.getOwnPropertyNames(err).forEach(function(key) {
156
+ Object.getOwnPropertyNames(err).forEach(function (key) {
132
157
  res[key] = err[key];
133
158
  }, err);
134
159
  return res;
@@ -68,12 +68,12 @@ function Landing(runner, options) {
68
68
  return ' ' + color('runway', buf);
69
69
  }
70
70
 
71
- runner.on(EVENT_RUN_BEGIN, function() {
71
+ runner.on(EVENT_RUN_BEGIN, function () {
72
72
  stream.write('\n\n\n ');
73
73
  cursor.hide();
74
74
  });
75
75
 
76
- runner.on(EVENT_TEST_END, function(test) {
76
+ runner.on(EVENT_TEST_END, function (test) {
77
77
  // check if the plane crashed
78
78
  var col = crashed === -1 ? ((width * ++n) / ++total) | 0 : crashed;
79
79
  // show the crash
@@ -93,16 +93,16 @@ function Landing(runner, options) {
93
93
  stream.write('\u001b[0m');
94
94
  });
95
95
 
96
- runner.once(EVENT_RUN_END, function() {
96
+ runner.once(EVENT_RUN_END, function () {
97
97
  cursor.show();
98
98
  process.stdout.write('\n');
99
99
  self.epilogue();
100
100
  });
101
101
 
102
102
  // if cursor is hidden when we ctrl-C, then it will remain hidden unless...
103
- process.once('SIGINT', function() {
103
+ process.once('SIGINT', function () {
104
104
  cursor.show();
105
- process.nextTick(function() {
105
+ process.nextTick(function () {
106
106
  process.kill(process.pid, 'SIGINT');
107
107
  });
108
108
  });