mocha 5.1.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +686 -984
  2. package/README.md +2 -1
  3. package/{images → assets/growl}/error.png +0 -0
  4. package/{images → assets/growl}/ok.png +0 -0
  5. package/bin/_mocha +4 -595
  6. package/bin/mocha +121 -61
  7. package/bin/options.js +6 -39
  8. package/browser-entry.js +21 -17
  9. package/lib/browser/growl.js +165 -2
  10. package/lib/browser/progress.js +11 -11
  11. package/lib/{template.html → browser/template.html} +0 -0
  12. package/lib/browser/tty.js +2 -2
  13. package/lib/cli/cli.js +68 -0
  14. package/lib/cli/commands.js +13 -0
  15. package/lib/cli/config.js +79 -0
  16. package/lib/cli/index.js +9 -0
  17. package/lib/cli/init.js +37 -0
  18. package/lib/cli/node-flags.js +69 -0
  19. package/lib/cli/one-and-dones.js +70 -0
  20. package/lib/cli/options.js +330 -0
  21. package/lib/cli/run-helpers.js +337 -0
  22. package/lib/cli/run-option-metadata.js +76 -0
  23. package/lib/cli/run.js +297 -0
  24. package/lib/context.js +14 -14
  25. package/lib/errors.js +141 -0
  26. package/lib/growl.js +136 -0
  27. package/lib/hook.js +5 -16
  28. package/lib/interfaces/bdd.js +16 -13
  29. package/lib/interfaces/common.js +62 -18
  30. package/lib/interfaces/exports.js +5 -8
  31. package/lib/interfaces/qunit.js +10 -10
  32. package/lib/interfaces/tdd.js +12 -11
  33. package/lib/mocha.js +477 -256
  34. package/lib/mocharc.json +10 -0
  35. package/lib/pending.js +1 -5
  36. package/lib/reporters/base.js +95 -117
  37. package/lib/reporters/doc.js +23 -9
  38. package/lib/reporters/dot.js +19 -13
  39. package/lib/reporters/html.js +82 -47
  40. package/lib/reporters/json-stream.js +43 -23
  41. package/lib/reporters/json.js +32 -23
  42. package/lib/reporters/landing.js +16 -9
  43. package/lib/reporters/list.js +19 -11
  44. package/lib/reporters/markdown.js +18 -12
  45. package/lib/reporters/min.js +8 -4
  46. package/lib/reporters/nyan.js +42 -35
  47. package/lib/reporters/progress.js +12 -7
  48. package/lib/reporters/spec.js +23 -12
  49. package/lib/reporters/tap.js +250 -32
  50. package/lib/reporters/xunit.js +61 -35
  51. package/lib/runnable.js +152 -95
  52. package/lib/runner.js +296 -248
  53. package/lib/stats-collector.js +83 -0
  54. package/lib/suite.js +294 -75
  55. package/lib/test.js +16 -15
  56. package/lib/utils.js +419 -146
  57. package/mocha.js +4589 -2228
  58. package/package.json +137 -38
  59. package/lib/ms.js +0 -94
  60. package/lib/reporters/base.js.orig +0 -498
  61. package/lib/reporters/json.js.orig +0 -128
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mocha",
3
- "version": "5.1.1",
3
+ "version": "6.0.0",
4
4
  "description": "simple, flexible, fun test framework",
5
5
  "keywords": [
6
6
  "mocha",
@@ -32,6 +32,7 @@
32
32
  "amsul <reach@amsul.ca>",
33
33
  "Anders Olsen Sandvik <Andersos@users.noreply.github.com>",
34
34
  "Andreas Brekken <andreas@opuno.com>",
35
+ "Andreas Lind <andreaslindpetersen@gmail.com>",
35
36
  "Andreas Lind Petersen <andreas@one.com>",
36
37
  "Andrew Krawchyk <903716+akrawchyk@users.noreply.github.com>",
37
38
  "Andrew Nesbitt <andrewnez@gmail.com>",
@@ -41,6 +42,7 @@
41
42
  "Angelica Valenta <angelicavalenta@gmail.com>",
42
43
  "Anis Safine <anis.safine.ext@francetv.fr>",
43
44
  "Anish Karandikar <anishkny@gmail.com>",
45
+ "Anna Henningsen <github@addaleax.net>",
44
46
  "Anthony <keppi@o2.pl>",
45
47
  "Anton <anton.redfox@gmail.com>",
46
48
  "anton <anton.valickij@gmail.com>",
@@ -56,6 +58,7 @@
56
58
  "badunk <baduncaduncan@gmail.com>",
57
59
  "Bamieh <ahmadbamieh@gmail.com>",
58
60
  "Ben Bradley <ben@bradleyit.com>",
61
+ "Ben Glassman <benglass@users.noreply.github.com>",
59
62
  "Ben Harris <benhdev@gmail.com>",
60
63
  "Ben Hutchison <ben@aldaviva.com>",
61
64
  "Ben Lindsey <ben.lindsey@vungle.com>",
@@ -74,6 +77,7 @@
74
77
  "Brian Lalor <blalor@bravo5.org>",
75
78
  "Brian M. Carlson <brian.m.carlson@gmail.com>",
76
79
  "Brian Moore <guardbionic-github@yahoo.com>",
80
+ "Brittany Moore <moore.brittanyann@gmail.com>",
77
81
  "Bryan Donovan <bdondo@gmail.com>",
78
82
  "Buck Doyle <b@chromatin.ca>",
79
83
  "C. Scott Ananian <cscott@cscott.net>",
@@ -83,7 +87,9 @@
83
87
  "Casey Foster <casey@caseywebdev.com>",
84
88
  "Charles Lowell <cowboyd@frontside.io>",
85
89
  "Charles Merriam <charles.merriam@gmail.com>",
90
+ "Charles Samborski <demurgos@demurgos.net>",
86
91
  "Charlie Rudolph <charles.w.rudolph@gmail.com>",
92
+ "Chen Yangjian <252317+cyjake@users.noreply.github.com>",
87
93
  "Chris <chrisleck@users.noreply.github.com>",
88
94
  "Chris Buckley <chris@cmbuckley.co.uk>",
89
95
  "Chris Lamb <chris@chris-lamb.co.uk>",
@@ -95,6 +101,7 @@
95
101
  "claudyus <claudyus@HEX.(none)>",
96
102
  "Connor Dunn <connorhd@gmail.com>",
97
103
  "Corey Butler <corey@coreybutler.com>",
104
+ "Corey Farrell <git@cfware.com>",
98
105
  "Cory Thomas <cory.thomas@bazaarvoice.com>",
99
106
  "Craig Taub <craigtaub@gmail.com>",
100
107
  "Cube <maty21@gmail.com>",
@@ -107,8 +114,10 @@
107
114
  "David Henderson <david.henderson@triggeredmessaging.com>",
108
115
  "David M. Lee <leedm777@yahoo.com>",
109
116
  "David Neubauer <davidneub@gmail.com>",
117
+ "DavNej <davnej.dev@gmail.com>",
110
118
  "Denis Bardadym <bardadymchik@gmail.com>",
111
119
  "Devin Weaver <suki@tritarget.org>",
120
+ "dfberry <dinaberry@outlook.com>",
112
121
  "Di Wu <dwu@palantir.com>",
113
122
  "Dina Berry <dfberry@users.noreply.github.com>",
114
123
  "Diogo Monteiro <diogo.gmt@gmail.com>",
@@ -129,12 +138,15 @@
129
138
  "Erik Eng <mail@ptz0n.se>",
130
139
  "Eugene Tiutiunnyk <eugene.tiutiunnyk@lookout.com>",
131
140
  "Fabio M. Costa <fabiomcosta@gmail.com>",
141
+ "Fábio Santos <fabiosantosart@gmail.com>",
132
142
  "Fagner Brack <github3@fagnermartins.com>",
143
+ "fargies <fargies@users.noreply.github.com>",
133
144
  "FARKAS Máté <mate.farkas@virtual-call-center.eu>",
134
145
  "fcrisci <fabio.crisci@amadeus.com>",
135
146
  "Fede Ramirez <i@2fd.me>",
136
147
  "Fedor Indutny <fedor.indutny@gmail.com>",
137
148
  "fengmk2 <fengmk2@gmail.com>",
149
+ "Fin Chen <finfin@gmail.com>",
138
150
  "Florian Margaine <florian@margaine.com>",
139
151
  "FND <FND@users.noreply.github.com>",
140
152
  "fool2fish <fool2fish@gmail.com>",
@@ -151,6 +163,7 @@
151
163
  "gaye <gaye@mozilla.com>",
152
164
  "gigadude <gigadude@users.noreply.github.com>",
153
165
  "Giovanni Bassi <giggio@giggio.net>",
166
+ "gizemkeser <44727928+gizemkeser@users.noreply.github.com>",
154
167
  "Glen Huang <curvedmark@gmail.com>",
155
168
  "Glen Mailer <glenjamin@gmail.com>",
156
169
  "grasGendarme <me@grasgendar.me>",
@@ -193,6 +206,7 @@
193
206
  "Jason Lai <jason@getpebble.com>",
194
207
  "Jason Leyba <jmleyba@gmail.com>",
195
208
  "Javier Aranda <javierav@javierav.com>",
209
+ "Jayasankar <jayasankar.m@gmail.com>",
196
210
  "Jean Ponchon <gelule@gmail.com>",
197
211
  "Jeff Kunkle <jeff.kunkle@nearinfinity.com>",
198
212
  "Jeff Schilling <jeff.schilling@q2ebanking.com>",
@@ -229,6 +243,7 @@
229
243
  "Joshua Krall <joshuakrall@pobox.com>",
230
244
  "JP Bochi <jpbochi@gmail.com>",
231
245
  "jsdevel <js.developer.undefined@gmail.com>",
246
+ "Juerg B <44573692+juergba@users.noreply.github.com>",
232
247
  "Julien Wajsberg <felash@gmail.com>",
233
248
  "Jupp Müller <jupp0r@gmail.com>",
234
249
  "Jussi Virtanen <jussi.k.virtanen@gmail.com>",
@@ -264,9 +279,12 @@
264
279
  "Mal Graty <mal.graty@googlemail.com>",
265
280
  "Marais Rossouw <me@maraisr.com>",
266
281
  "Marc Kuo <kuomarc2@gmail.com>",
282
+ "Marc Udoff <mlucool@gmail.com>",
267
283
  "Marcello Bastea-Forte <marcello@cellosoft.com>",
268
284
  "Mark Banner <standard8@mozilla.com>",
285
+ "Mark Owsiak <mark.owsiak@gmail.com>",
269
286
  "Markus Tacker <m@coderbyheart.com>",
287
+ "Martijn Cuppens <martijn.cuppens@intracto.com>",
270
288
  "Martin Marko <marcus@gratex.com>",
271
289
  "Mathieu Desvé <mathieudesve@MacBook-Pro-de-Mathieu.local>",
272
290
  "Matija Marohnić <matija.marohnic@gmail.com>",
@@ -299,6 +317,7 @@
299
317
  "Nathan Rajlich <nathan@tootallnate.net>",
300
318
  "nexdrew <andrew.goode@nextraq.com>",
301
319
  "Nick Fitzgerald <fitzgen@gmail.com>",
320
+ "Nicolas Girault <nic.girault@gmail.com>",
302
321
  "Nicolo Taddei <taddei.uk@gmail.com>",
303
322
  "Nik Nyby <nnyby@columbia.edu>",
304
323
  "Nikolaos Georgiou <Nikolaos.Georgiou@gmail.com>",
@@ -311,11 +330,13 @@
311
330
  "Oscar Godson <oscargodson@outlook.com>",
312
331
  "Outsider <outsideris@gmail.com>",
313
332
  "oveddan <stangogh@gmail.com>",
333
+ "P. Roebuck <plroebuck@users.noreply.github.com>",
314
334
  "Panu Horsmalahti <panu.horsmalahti@iki.fi>",
315
335
  "Parker Moore <parkrmoore@gmail.com>",
316
336
  "Pat Finnigan <patrick.k.finnigan@gmail.com>",
317
337
  "Paul Armstrong <paul@paularmstrongdesigns.com>",
318
338
  "Paul Miller <paul@paulmillr.com>",
339
+ "Paul Roebuck <plroebuck@users.noreply.github.com>",
319
340
  "Pavel Zubkou <pavel.zubkou@gmail.com>",
320
341
  "Pete Hawkins <pete@petes-imac.frontinternal.net>",
321
342
  "Peter Müller <munter@fumle.dk>",
@@ -389,6 +410,7 @@
389
410
  "Stone <baoshi.li@adleida.com>",
390
411
  "Sulabh Bista <sul4bh@gmail.com>",
391
412
  "Sune Simonsen <sune@we-knowhow.dk>",
413
+ "Svetlana <39729453+Lana-Light@users.noreply.github.com>",
392
414
  "Tapiwa Kelvin <tapiwa@munzwa.tk>",
393
415
  "Ted Yavuzkurt <hello@TedY.io>",
394
416
  "Teddy Zeenny <teddyzeenny@gmail.com>",
@@ -398,11 +420,13 @@
398
420
  "Thomas Grainger <tagrain@gmail.com>",
399
421
  "Thomas Vantuycom <thomasvantuycom@protonmail.com>",
400
422
  "Tim Ehat <timehat@gmail.com>",
423
+ "Tim Harshman <goteamtim+git@gmail.com>",
401
424
  "Timo Tijhof <krinklemail@gmail.com>",
402
425
  "Timothy Gu <timothygu99@gmail.com>",
403
426
  "Tingan Ho <tingan87@gmail.com>",
404
427
  "tmont <tommy.mont@gmail.com>",
405
428
  "Tobias Bieniek <tobias.bieniek@gmail.com>",
429
+ "Tobias Mollstam <tobias@mollstam.com>",
406
430
  "Todd Agulnick <tagulnick@onjack.com>",
407
431
  "Tom Coquereau <tom@thau.me>",
408
432
  "Tom Hughes <tom@compton.nu>",
@@ -421,6 +445,7 @@
421
445
  "vlad <iamvlad@gmail.com>",
422
446
  "Vlad Magdalin <vlad@webflow.com>",
423
447
  "Volker Buzek <volker.buzek@sap.com>",
448
+ "Wanseob Lim <email@wanseob.com>",
424
449
  "Wil Moore III <wil.moore@wilmoore.com>",
425
450
  "Will Langstroth <will@langstroth.com>",
426
451
  "wsw <wsw0108@gmail.com>",
@@ -441,81 +466,155 @@
441
466
  "type": "git",
442
467
  "url": "https://github.com/mochajs/mocha.git"
443
468
  },
469
+ "bugs": {
470
+ "url": "https://github.com/mochajs/mocha/issues/"
471
+ },
472
+ "homepage": "https://mochajs.org/",
473
+ "logo": "https://cldup.com/S9uQ-cOLYz.svg",
474
+ "notifyLogo": "https://ibin.co/4QuRuGjXvl36.png",
444
475
  "bin": {
445
476
  "mocha": "./bin/mocha",
446
477
  "_mocha": "./bin/_mocha"
447
478
  },
479
+ "directories": {
480
+ "lib": "./lib",
481
+ "test": "./test"
482
+ },
448
483
  "engines": {
449
- "node": ">= 4.0.0"
484
+ "node": ">= 6.0.0"
450
485
  },
451
486
  "scripts": {
452
487
  "prepublishOnly": "nps test clean build",
453
488
  "start": "nps",
454
- "test": "nps test"
489
+ "test": "nps test",
490
+ "version": "nps version"
455
491
  },
456
492
  "dependencies": {
493
+ "ansi-colors": "3.2.3",
457
494
  "browser-stdout": "1.3.1",
458
- "commander": "2.11.0",
459
- "debug": "3.1.0",
495
+ "debug": "3.2.6",
460
496
  "diff": "3.5.0",
461
497
  "escape-string-regexp": "1.0.5",
462
- "glob": "7.1.2",
463
- "growl": "1.10.3",
464
- "he": "1.1.1",
498
+ "findup-sync": "2.0.0",
499
+ "glob": "7.1.3",
500
+ "growl": "1.10.5",
501
+ "he": "1.2.0",
502
+ "js-yaml": "3.12.0",
503
+ "log-symbols": "2.2.0",
465
504
  "minimatch": "3.0.4",
466
505
  "mkdirp": "0.5.1",
467
- "supports-color": "4.4.0"
506
+ "ms": "2.1.1",
507
+ "node-environment-flags": "1.0.4",
508
+ "object.assign": "4.1.0",
509
+ "strip-json-comments": "2.0.1",
510
+ "supports-color": "6.0.0",
511
+ "which": "1.3.1",
512
+ "wide-align": "1.1.3",
513
+ "yargs": "12.0.5",
514
+ "yargs-parser": "11.1.1",
515
+ "yargs-unparser": "1.5.0"
468
516
  },
469
517
  "devDependencies": {
470
- "assert": "^1.4.1",
471
- "assetgraph-builder": "^5.6.4",
472
- "browserify": "^14.4.0",
518
+ "@11ty/eleventy": "^0.6.0",
519
+ "@mocha/contributors": "^1.0.3",
520
+ "@mocha/docdash": "^1.0.1",
521
+ "assetgraph-builder": "^6.4.2",
522
+ "browserify": "^16.2.3",
523
+ "browserify-package-json": "^1.0.1",
524
+ "chai": "^4.2.0",
473
525
  "coffee-script": "^1.10.0",
474
- "coveralls": "^3.0.0",
475
- "cross-spawn": "^5.1.0",
476
- "documentation": "^5.3.5",
477
- "eslint": "^4.19.1",
478
- "eslint-config-semistandard": "^12.0.1",
479
- "eslint-config-standard": "^11.0.0",
480
- "eslint-plugin-import": "^2.10.0",
481
- "eslint-plugin-node": "^6.0.1",
482
- "eslint-plugin-promise": "^3.7.0",
483
- "eslint-plugin-standard": "^3.0.1",
484
- "expect.js": "^0.3.1",
485
- "karma": "^1.7.1",
486
- "karma-browserify": "^5.0.5",
526
+ "coveralls": "^3.0.2",
527
+ "cross-env": "^5.2.0",
528
+ "cross-spawn": "^6.0.5",
529
+ "eslint": "^5.10.0",
530
+ "eslint-config-prettier": "^3.3.0",
531
+ "eslint-config-semistandard": "^13.0.0",
532
+ "eslint-config-standard": "^12.0.0",
533
+ "eslint-plugin-import": "^2.14.0",
534
+ "eslint-plugin-node": "^8.0.0",
535
+ "eslint-plugin-prettier": "^3.0.0",
536
+ "eslint-plugin-promise": "^4.0.1",
537
+ "eslint-plugin-standard": "^4.0.0",
538
+ "husky": "^1.2.1",
539
+ "jsdoc": "^3.5.5",
540
+ "karma": "^3.1.1",
541
+ "karma-browserify": "^5.3.0",
487
542
  "karma-chrome-launcher": "^2.0.0",
488
- "karma-expect": "^1.1.2",
489
543
  "karma-mocha": "^1.3.0",
490
544
  "karma-mocha-reporter": "^2.2.4",
491
545
  "karma-sauce-launcher": "^1.2.0",
546
+ "lint-staged": "^8.1.0",
547
+ "markdown-it": "^8.4.2",
548
+ "markdown-it-anchor": "^5.0.2",
549
+ "markdown-it-attrs": "^2.3.2",
550
+ "markdown-it-prism": "^2.0.1",
551
+ "markdown-magic": "^0.1.25",
552
+ "markdown-magic-package-json": "^2.0.0",
492
553
  "markdown-toc": "^1.2.0",
493
- "markdownlint-cli": "^0.6.0",
494
- "nps": "^5.7.1",
495
- "nyc": "^11.2.1",
554
+ "markdownlint-cli": "^0.13.0",
555
+ "nps": "^5.9.3",
556
+ "nyc": "^13.3.0",
557
+ "prettier": "^1.15.3",
558
+ "remark": "^10.0.1",
559
+ "remark-github": "^7.0.5",
560
+ "remark-inline-links": "^3.1.2",
561
+ "rewiremock": "^3.12.3",
496
562
  "rimraf": "^2.5.2",
497
- "svgo": "^0.7.2",
498
- "through2": "^2.0.1",
563
+ "sinon": "^7.1.1",
564
+ "strip-ansi": "^5.0.0",
565
+ "svgo": "^1.1.1",
566
+ "through2": "^3.0.0",
567
+ "to-vfile": "^5.0.2",
568
+ "unexpected": "^10.39.2",
569
+ "unexpected-eventemitter": "^1.1.3",
570
+ "unexpected-sinon": "^10.10.1",
571
+ "uslug": "^1.0.4",
499
572
  "watchify": "^3.7.0"
500
573
  },
501
574
  "files": [
502
- "bin",
503
- "images",
504
- "lib",
575
+ "bin/{*mocha,options.js}",
576
+ "assets/growl/*.png",
577
+ "lib/**/*.{js,html,json}",
505
578
  "index.js",
506
579
  "mocha.css",
507
580
  "mocha.js",
508
581
  "browser-entry.js"
509
582
  ],
583
+ "browserify": {
584
+ "transform": [
585
+ "./scripts/package-json-cullify"
586
+ ]
587
+ },
510
588
  "browser": {
511
- "growl": "./lib/browser/growl.js",
512
- "tty": "./lib/browser/tty.js",
513
589
  "./index.js": "./browser-entry.js",
590
+ "./lib/growl.js": "./lib/browser/growl.js",
591
+ "tty": "./lib/browser/tty.js",
514
592
  "fs": false,
515
593
  "glob": false,
516
594
  "path": false,
517
595
  "supports-color": false
518
596
  },
519
- "homepage": "https://mochajs.org",
520
- "logo": "https://cldup.com/S9uQ-cOLYz.svg"
597
+ "prettier": {
598
+ "singleQuote": true,
599
+ "bracketSpacing": false,
600
+ "endOfLine": "auto"
601
+ },
602
+ "yargs": {
603
+ "combine-arrays": true,
604
+ "short-option-groups": false,
605
+ "dot-notation": false
606
+ },
607
+ "gitter": "https://gitter.im/mochajs/mocha",
608
+ "@mocha/contributors": {
609
+ "exclude": [
610
+ "greenkeeperio-bot <support@greenkeeper.io>",
611
+ "greenkeeper[bot] <greenkeeper[bot]@users.noreply.github.com>",
612
+ "TJ Holowaychuk <tj@vision-media.ca>"
613
+ ]
614
+ },
615
+ "husky": {
616
+ "hooks": {
617
+ "pre-commit": "lint-staged"
618
+ }
619
+ }
521
620
  }
package/lib/ms.js DELETED
@@ -1,94 +0,0 @@
1
- 'use strict';
2
- /**
3
- * @module milliseconds
4
- */
5
- /**
6
- * Helpers.
7
- */
8
-
9
- var s = 1000;
10
- var m = s * 60;
11
- var h = m * 60;
12
- var d = h * 24;
13
- var y = d * 365.25;
14
-
15
- /**
16
- * Parse or format the given `val`.
17
- *
18
- * @memberof Mocha
19
- * @public
20
- * @api public
21
- * @param {string|number} val
22
- * @return {string|number}
23
- */
24
- module.exports = function (val) {
25
- if (typeof val === 'string') {
26
- return parse(val);
27
- }
28
- return format(val);
29
- };
30
-
31
- /**
32
- * Parse the given `str` and return milliseconds.
33
- *
34
- * @api private
35
- * @param {string} str
36
- * @return {number}
37
- */
38
- function parse (str) {
39
- var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str);
40
- if (!match) {
41
- return;
42
- }
43
- var n = parseFloat(match[1]);
44
- var type = (match[2] || 'ms').toLowerCase();
45
- switch (type) {
46
- case 'years':
47
- case 'year':
48
- case 'y':
49
- return n * y;
50
- case 'days':
51
- case 'day':
52
- case 'd':
53
- return n * d;
54
- case 'hours':
55
- case 'hour':
56
- case 'h':
57
- return n * h;
58
- case 'minutes':
59
- case 'minute':
60
- case 'm':
61
- return n * m;
62
- case 'seconds':
63
- case 'second':
64
- case 's':
65
- return n * s;
66
- case 'ms':
67
- return n;
68
- default:
69
- // No default case
70
- }
71
- }
72
-
73
- /**
74
- * Format for `ms`.
75
- *
76
- * @api private
77
- * @param {number} ms
78
- * @return {string}
79
- */
80
- function format (ms) {
81
- if (ms >= d) {
82
- return Math.round(ms / d) + 'd';
83
- }
84
- if (ms >= h) {
85
- return Math.round(ms / h) + 'h';
86
- }
87
- if (ms >= m) {
88
- return Math.round(ms / m) + 'm';
89
- }
90
- if (ms >= s) {
91
- return Math.round(ms / s) + 's';
92
- }
93
- return ms + 'ms';
94
- }