modestbench 0.5.1 → 0.7.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 (117) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +6 -2
  3. package/dist/adapters/jest-adapter.cjs +496 -0
  4. package/dist/adapters/jest-adapter.cjs.map +1 -0
  5. package/dist/adapters/jest-adapter.d.cts +42 -0
  6. package/dist/adapters/jest-adapter.d.cts.map +1 -0
  7. package/dist/adapters/jest-adapter.d.ts +42 -0
  8. package/dist/adapters/jest-adapter.d.ts.map +1 -0
  9. package/dist/adapters/jest-adapter.js +459 -0
  10. package/dist/adapters/jest-adapter.js.map +1 -0
  11. package/dist/adapters/jest-hooks.cjs +83 -0
  12. package/dist/adapters/jest-hooks.cjs.map +1 -0
  13. package/dist/adapters/jest-hooks.d.cts +24 -0
  14. package/dist/adapters/jest-hooks.d.cts.map +1 -0
  15. package/dist/adapters/jest-hooks.d.ts +24 -0
  16. package/dist/adapters/jest-hooks.d.ts.map +1 -0
  17. package/dist/adapters/jest-hooks.js +78 -0
  18. package/dist/adapters/jest-hooks.js.map +1 -0
  19. package/dist/adapters/jest-register.cjs +17 -0
  20. package/dist/adapters/jest-register.cjs.map +1 -0
  21. package/dist/adapters/jest-register.d.cts +12 -0
  22. package/dist/adapters/jest-register.d.cts.map +1 -0
  23. package/dist/adapters/jest-register.d.ts +12 -0
  24. package/dist/adapters/jest-register.d.ts.map +1 -0
  25. package/dist/adapters/jest-register.js +15 -0
  26. package/dist/adapters/jest-register.js.map +1 -0
  27. package/dist/adapters/types.cjs.map +1 -1
  28. package/dist/adapters/types.d.cts +5 -1
  29. package/dist/adapters/types.d.cts.map +1 -1
  30. package/dist/adapters/types.d.ts +5 -1
  31. package/dist/adapters/types.d.ts.map +1 -1
  32. package/dist/adapters/types.js.map +1 -1
  33. package/dist/cli/commands/run.cjs +17 -11
  34. package/dist/cli/commands/run.cjs.map +1 -1
  35. package/dist/cli/commands/run.js +9 -3
  36. package/dist/cli/commands/run.js.map +1 -1
  37. package/dist/cli/commands/test.cjs +17 -15
  38. package/dist/cli/commands/test.cjs.map +1 -1
  39. package/dist/cli/commands/test.d.cts.map +1 -1
  40. package/dist/cli/commands/test.d.ts.map +1 -1
  41. package/dist/cli/commands/test.js +5 -3
  42. package/dist/cli/commands/test.js.map +1 -1
  43. package/dist/cli/index.cjs +5 -2
  44. package/dist/cli/index.cjs.map +1 -1
  45. package/dist/cli/index.d.cts.map +1 -1
  46. package/dist/cli/index.d.ts.map +1 -1
  47. package/dist/cli/index.js +6 -3
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/constants.cjs +1 -0
  50. package/dist/constants.cjs.map +1 -1
  51. package/dist/constants.d.cts +1 -0
  52. package/dist/constants.d.cts.map +1 -1
  53. package/dist/constants.d.ts +1 -0
  54. package/dist/constants.d.ts.map +1 -1
  55. package/dist/constants.js +1 -0
  56. package/dist/constants.js.map +1 -1
  57. package/dist/index.cjs +4 -1
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.d.cts +1 -0
  60. package/dist/index.d.cts.map +1 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +2 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/reporters/index.cjs +3 -1
  66. package/dist/reporters/index.cjs.map +1 -1
  67. package/dist/reporters/index.d.cts +1 -0
  68. package/dist/reporters/index.d.cts.map +1 -1
  69. package/dist/reporters/index.d.ts +1 -0
  70. package/dist/reporters/index.d.ts.map +1 -1
  71. package/dist/reporters/index.js +1 -0
  72. package/dist/reporters/index.js.map +1 -1
  73. package/dist/reporters/nyan.cjs +318 -0
  74. package/dist/reporters/nyan.cjs.map +1 -0
  75. package/dist/reporters/nyan.d.cts +118 -0
  76. package/dist/reporters/nyan.d.cts.map +1 -0
  77. package/dist/reporters/nyan.d.ts +118 -0
  78. package/dist/reporters/nyan.d.ts.map +1 -0
  79. package/dist/reporters/nyan.js +314 -0
  80. package/dist/reporters/nyan.js.map +1 -0
  81. package/dist/types/core.cjs.map +1 -1
  82. package/dist/types/core.d.cts +13 -12
  83. package/dist/types/core.d.cts.map +1 -1
  84. package/dist/types/core.d.ts +13 -12
  85. package/dist/types/core.d.ts.map +1 -1
  86. package/dist/types/core.js.map +1 -1
  87. package/dist/types/index.cjs +0 -2
  88. package/dist/types/index.cjs.map +1 -1
  89. package/dist/types/index.d.cts +0 -1
  90. package/dist/types/index.d.cts.map +1 -1
  91. package/dist/types/index.d.ts +0 -1
  92. package/dist/types/index.d.ts.map +1 -1
  93. package/dist/types/index.js +0 -2
  94. package/dist/types/index.js.map +1 -1
  95. package/package.json +28 -8
  96. package/src/adapters/jest-adapter.ts +563 -0
  97. package/src/adapters/jest-hooks.ts +82 -0
  98. package/src/adapters/jest-register.ts +16 -0
  99. package/src/adapters/types.ts +5 -1
  100. package/src/cli/commands/run.ts +10 -3
  101. package/src/cli/commands/test.ts +5 -3
  102. package/src/cli/index.ts +10 -2
  103. package/src/constants.ts +2 -1
  104. package/src/index.ts +3 -0
  105. package/src/reporters/index.ts +1 -0
  106. package/src/reporters/nyan.ts +409 -0
  107. package/src/types/core.ts +16 -14
  108. package/src/types/index.ts +0 -3
  109. package/dist/types/cli.cjs +0 -12
  110. package/dist/types/cli.cjs.map +0 -1
  111. package/dist/types/cli.d.cts +0 -75
  112. package/dist/types/cli.d.cts.map +0 -1
  113. package/dist/types/cli.d.ts +0 -75
  114. package/dist/types/cli.d.ts.map +0 -1
  115. package/dist/types/cli.js +0 -9
  116. package/dist/types/cli.js.map +0 -1
  117. package/src/types/cli.ts +0 -82
package/dist/index.d.cts CHANGED
@@ -6,6 +6,7 @@
6
6
  * library.
7
7
  */
8
8
  export { bootstrap as modestbench } from "./bootstrap.cjs";
9
+ export { ExitCodes } from "./constants.cjs";
9
10
  export { ModestBenchEngine } from "./core/engine.cjs";
10
11
  export { AccurateEngine, TinybenchEngine } from "./core/engines/index.cjs";
11
12
  export { calculateStatistics, removeOutliersIQR, type SampleStatistics, } from "./core/stats-utils.cjs";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,wBAAuB;AAG1D,OAAO,EAAE,iBAAiB,EAAE,0BAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iCAAgC;AAG1E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,+BAA8B;AAG/B,mCAAkC;AAGlC,OAAO,EAAE,WAAW,EAAE,4BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,8BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,6BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,sCAAqC;AAGpE,OAAO,EAAE,+BAA+B,EAAE,sCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,mCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,uCAAsC;AAEnE,OAAO,EAAE,aAAa,EAAE,+CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,+CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,+CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,wCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,yCAAwC;AAGzC,kCAAiC;AAGjC,OAAO,EAAE,eAAe,EAAE,4BAA2B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,wBAAuB;AAG1D,OAAO,EAAE,SAAS,EAAE,wBAAuB;AAG3C,OAAO,EAAE,iBAAiB,EAAE,0BAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iCAAgC;AAG1E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,+BAA8B;AAG/B,mCAAkC;AAGlC,OAAO,EAAE,WAAW,EAAE,4BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,8BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,6BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,sCAAqC;AAGpE,OAAO,EAAE,+BAA+B,EAAE,sCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,mCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,uCAAsC;AAEnE,OAAO,EAAE,aAAa,EAAE,+CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,+CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,+CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,wCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,yCAAwC;AAGzC,kCAAiC;AAGjC,OAAO,EAAE,eAAe,EAAE,4BAA2B"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  * library.
7
7
  */
8
8
  export { bootstrap as modestbench } from "./bootstrap.js";
9
+ export { ExitCodes } from "./constants.js";
9
10
  export { ModestBenchEngine } from "./core/engine.js";
10
11
  export { AccurateEngine, TinybenchEngine } from "./core/engines/index.js";
11
12
  export { calculateStatistics, removeOutliersIQR, type SampleStatistics, } from "./core/stats-utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAG1D,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAG1E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,8BAA8B;AAG/B,kCAAkC;AAGlC,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AAGpE,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,sCAAsC;AAEnE,OAAO,EAAE,aAAa,EAAE,8CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,8CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,8CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,uCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,wCAAwC;AAGzC,iCAAiC;AAGjC,OAAO,EAAE,eAAe,EAAE,2BAA2B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAG1D,OAAO,EAAE,SAAS,EAAE,uBAAuB;AAG3C,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAG1E,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,8BAA8B;AAG/B,kCAAkC;AAGlC,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AAGpE,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,sCAAsC;AAEnE,OAAO,EAAE,aAAa,EAAE,8CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,8CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,8CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,uCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,wCAAwC;AAGzC,iCAAiC;AAGjC,OAAO,EAAE,eAAe,EAAE,2BAA2B"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@
6
6
  * library.
7
7
  */
8
8
  export { bootstrap as modestbench } from "./bootstrap.js";
9
+ // Constants
10
+ export { ExitCodes } from "./constants.js";
9
11
  // Core engine
10
12
  export { ModestBenchEngine } from "./core/engine.js";
11
13
  export { AccurateEngine, TinybenchEngine } from "./core/engines/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAE1D,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAE1E,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAElB,8BAA8B;AAE/B,gBAAgB;AAChB,kCAAkC;AAElC,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AAEpE,WAAW;AACX,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,sCAAsC;AACnE,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,8CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,8CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,8CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,uCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,wCAAwC;AAEzC,mBAAmB;AACnB,iCAAiC;AAEjC,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,2BAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,uBAAuB;AAE1D,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,uBAAuB;AAE3C,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,yBAAyB;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,gCAAgC;AAE1E,wBAAwB;AACxB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAElB,8BAA8B;AAE/B,gBAAgB;AAChB,kCAAkC;AAElC,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,2BAA2B;AACjD,OAAO,EAAE,aAAa,EAAE,6BAA6B;AACrD,OAAO,EAAE,YAAY,EAAE,4BAA4B;AACnD,OAAO,EAAE,oBAAoB,EAAE,qCAAqC;AAEpE,WAAW;AACX,OAAO,EAAE,+BAA+B,EAAE,qCAAqC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,kCAAkC;AAChE,OAAO,EAAE,kBAAkB,EAAE,sCAAsC;AACnE,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,8CAA8C;AACtE,OAAO,EAAE,YAAY,EAAE,8CAA8C;AAErE,OAAO,EAAE,gBAAgB,EAAE,8CAA8C;AACzE,OAAO,EAAE,0BAA0B,EAAE,uCAAuC;AAC5E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,GAC5B,wCAAwC;AAEzC,mBAAmB;AACnB,iCAAiC;AAEjC,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,2BAA2B"}
@@ -5,13 +5,15 @@
5
5
  * Export all available reporters and registry functionality.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.SimpleReporter = exports.JsonReporter = exports.HumanReporter = exports.CsvReporter = void 0;
8
+ exports.SimpleReporter = exports.NyanReporter = exports.JsonReporter = exports.HumanReporter = exports.CsvReporter = void 0;
9
9
  var csv_js_1 = require("./csv.cjs");
10
10
  Object.defineProperty(exports, "CsvReporter", { enumerable: true, get: function () { return csv_js_1.CsvReporter; } });
11
11
  var human_js_1 = require("./human.cjs");
12
12
  Object.defineProperty(exports, "HumanReporter", { enumerable: true, get: function () { return human_js_1.HumanReporter; } });
13
13
  var json_js_1 = require("./json.cjs");
14
14
  Object.defineProperty(exports, "JsonReporter", { enumerable: true, get: function () { return json_js_1.JsonReporter; } });
15
+ var nyan_js_1 = require("./nyan.cjs");
16
+ Object.defineProperty(exports, "NyanReporter", { enumerable: true, get: function () { return nyan_js_1.NyanReporter; } });
15
17
  var simple_js_1 = require("./simple.cjs");
16
18
  Object.defineProperty(exports, "SimpleReporter", { enumerable: true, get: function () { return simple_js_1.SimpleReporter; } });
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,oCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,wCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,sCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,0CAA6C;AAApC,2GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,oCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,wCAA2C;AAAlC,yGAAA,aAAa,OAAA;AACtB,sCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,sCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,0CAA6C;AAApC,2GAAA,cAAc,OAAA"}
@@ -6,5 +6,6 @@
6
6
  export { CsvReporter } from "./csv.cjs";
7
7
  export { HumanReporter } from "./human.cjs";
8
8
  export { JsonReporter } from "./json.cjs";
9
+ export { NyanReporter } from "./nyan.cjs";
9
10
  export { SimpleReporter } from "./simple.cjs";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,kBAAiB;AACvC,OAAO,EAAE,aAAa,EAAE,oBAAmB;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAkB;AACzC,OAAO,EAAE,cAAc,EAAE,qBAAoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,kBAAiB;AACvC,OAAO,EAAE,aAAa,EAAE,oBAAmB;AAC3C,OAAO,EAAE,YAAY,EAAE,mBAAkB;AACzC,OAAO,EAAE,YAAY,EAAE,mBAAkB;AACzC,OAAO,EAAE,cAAc,EAAE,qBAAoB"}
@@ -6,5 +6,6 @@
6
6
  export { CsvReporter } from "./csv.js";
7
7
  export { HumanReporter } from "./human.js";
8
8
  export { JsonReporter } from "./json.js";
9
+ export { NyanReporter } from "./nyan.js";
9
10
  export { SimpleReporter } from "./simple.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB;AACvC,OAAO,EAAE,aAAa,EAAE,mBAAmB;AAC3C,OAAO,EAAE,YAAY,EAAE,kBAAkB;AACzC,OAAO,EAAE,cAAc,EAAE,oBAAoB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB;AACvC,OAAO,EAAE,aAAa,EAAE,mBAAmB;AAC3C,OAAO,EAAE,YAAY,EAAE,kBAAkB;AACzC,OAAO,EAAE,YAAY,EAAE,kBAAkB;AACzC,OAAO,EAAE,cAAc,EAAE,oBAAoB"}
@@ -6,5 +6,6 @@
6
6
  export { CsvReporter } from "./csv.js";
7
7
  export { HumanReporter } from "./human.js";
8
8
  export { JsonReporter } from "./json.js";
9
+ export { NyanReporter } from "./nyan.js";
9
10
  export { SimpleReporter } from "./simple.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB;AACvC,OAAO,EAAE,aAAa,EAAE,mBAAmB;AAC3C,OAAO,EAAE,YAAY,EAAE,kBAAkB;AACzC,OAAO,EAAE,cAAc,EAAE,oBAAoB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB;AACvC,OAAO,EAAE,aAAa,EAAE,mBAAmB;AAC3C,OAAO,EAAE,YAAY,EAAE,kBAAkB;AACzC,OAAO,EAAE,YAAY,EAAE,kBAAkB;AACzC,OAAO,EAAE,cAAc,EAAE,oBAAoB"}
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Nyan Cat Reporter
4
+ *
5
+ * Because benchmarking should be more colorful. Displays an animated nyan cat
6
+ * flying through a rainbow trail as benchmarks complete.
7
+ *
8
+ * Based on Mocha's legendary nyan reporter, adapted for the glory of
9
+ * performance measurement.
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.NyanReporter = void 0;
15
+ const reporter_registry_js_1 = require("../services/reporter-registry.cjs");
16
+ const ansi_js_1 = require("../utils/ansi.cjs");
17
+ /**
18
+ * Nyan Cat reporter - because your benchmarks deserve rainbow power
19
+ */
20
+ class NyanReporter extends reporter_registry_js_1.BaseReporter {
21
+ /** Index into rainbow colors for cycling */
22
+ colorIndex = 0;
23
+ /** Current file being processed */
24
+ currentFile = '';
25
+ /** Current suite being processed */
26
+ currentSuite = '';
27
+ /** Total failed tasks */
28
+ failed = 0;
29
+ /** Collected failures for summary */
30
+ failures = [];
31
+ /** Number of lines the cat occupies */
32
+ numberOfLines = 4;
33
+ /** Total passed tasks */
34
+ passed = 0;
35
+ /** Whether the display is active */
36
+ progressActive = false;
37
+ /** Quiet mode - suppress output */
38
+ quiet;
39
+ /** Generated rainbow color palette */
40
+ rainbowColors = [];
41
+ /** Width of scoreboard */
42
+ scoreboardWidth = 5;
43
+ /** Start time for duration calculation */
44
+ startTime = 0;
45
+ /** Animation tick (alternates between frames) */
46
+ tick = false;
47
+ /** Rainbow trail storage - one trajectory per cat line */
48
+ trajectories = [[], [], [], []];
49
+ /** Maximum width of the rainbow trail */
50
+ trajectoryWidthMax = 0;
51
+ /** Whether to use colors */
52
+ useColor;
53
+ constructor(options = {}) {
54
+ super('nyan', options);
55
+ this.quiet = options.quiet ?? false;
56
+ // Auto-detect color support if not explicitly set
57
+ this.useColor =
58
+ options.color ??
59
+ (process.stdout.isTTY &&
60
+ process.env.FORCE_COLOR !== '0' &&
61
+ process.env.NO_COLOR == null);
62
+ // Generate the rainbow colors on construction
63
+ this.rainbowColors = this.generateColors();
64
+ // Calculate trajectory width based on terminal width
65
+ // Leave room for scoreboard (5) + cat (11) + some padding
66
+ const termWidth = process.stdout.columns || 80;
67
+ const nyanCatWidth = 11;
68
+ this.trajectoryWidthMax = Math.floor(termWidth * 0.75) - nyanCatWidth;
69
+ }
70
+ onEnd(run) {
71
+ if (this.quiet) {
72
+ return;
73
+ }
74
+ // Show cursor and move past the cat
75
+ this.showCursor();
76
+ for (let i = 0; i < this.numberOfLines; i++) {
77
+ process.stdout.write('\n');
78
+ }
79
+ // Print summary
80
+ this.printEpilogue(run);
81
+ }
82
+ onError(error) {
83
+ if (this.quiet) {
84
+ return;
85
+ }
86
+ // Make sure cursor is visible
87
+ this.showCursor();
88
+ console.error(`\n${ansi_js_1.colors.red}Error: ${error.message}${ansi_js_1.colors.reset}`);
89
+ }
90
+ onFileEnd(_result) {
91
+ // Just keep flying
92
+ }
93
+ onFileStart(file) {
94
+ this.currentFile = file;
95
+ }
96
+ onStart(_run) {
97
+ this.startTime = Date.now();
98
+ this.passed = 0;
99
+ this.failed = 0;
100
+ this.failures = [];
101
+ this.colorIndex = 0;
102
+ this.tick = false;
103
+ this.trajectories = [[], [], [], []];
104
+ if (this.quiet) {
105
+ return;
106
+ }
107
+ // Hide cursor for cleaner animation
108
+ this.hideCursor();
109
+ // Initial draw
110
+ this.draw();
111
+ this.progressActive = true;
112
+ }
113
+ onSuiteEnd(_result) {
114
+ // Keep flying
115
+ }
116
+ onSuiteStart(suite) {
117
+ this.currentSuite = suite;
118
+ }
119
+ onTaskResult(result) {
120
+ if (result.error) {
121
+ this.failed++;
122
+ this.failures.push({
123
+ error: result.error.message || String(result.error),
124
+ file: this.currentFile,
125
+ suite: this.currentSuite,
126
+ task: result.name,
127
+ });
128
+ }
129
+ else if (!result.aborted) {
130
+ this.passed++;
131
+ }
132
+ if (this.quiet) {
133
+ return;
134
+ }
135
+ this.draw();
136
+ }
137
+ onTaskStart(_task) {
138
+ // The cat flies on results, not starts
139
+ }
140
+ /**
141
+ * Append a segment to the rainbow trail
142
+ */
143
+ appendRainbow() {
144
+ const segment = this.tick ? '_' : '-';
145
+ const rainbowified = this.rainbowify(segment);
146
+ for (let index = 0; index < this.numberOfLines; index++) {
147
+ const trajectory = this.trajectories[index];
148
+ if (trajectory.length >= this.trajectoryWidthMax) {
149
+ trajectory.shift();
150
+ }
151
+ trajectory.push(rainbowified);
152
+ }
153
+ }
154
+ /**
155
+ * Move cursor down n lines
156
+ */
157
+ cursorDown(n) {
158
+ process.stdout.write(`\x1b[${n}B`);
159
+ }
160
+ /**
161
+ * Move cursor up n lines
162
+ */
163
+ cursorUp(n) {
164
+ process.stdout.write(`\x1b[${n}A`);
165
+ }
166
+ /**
167
+ * Draw the complete nyan cat scene
168
+ */
169
+ draw() {
170
+ this.appendRainbow();
171
+ this.drawScoreboard();
172
+ this.drawRainbow();
173
+ this.drawNyanCat();
174
+ this.tick = !this.tick;
175
+ }
176
+ /**
177
+ * Draw the nyan cat ASCII art
178
+ */
179
+ drawNyanCat() {
180
+ const startWidth = this.scoreboardWidth + this.trajectories[0].length;
181
+ const dist = `\x1b[${startWidth}C`;
182
+ process.stdout.write(dist);
183
+ process.stdout.write('_,------,');
184
+ process.stdout.write('\n');
185
+ process.stdout.write(dist);
186
+ const padding1 = this.tick ? ' ' : ' ';
187
+ process.stdout.write(`_|${padding1}/\\_/\\ `);
188
+ process.stdout.write('\n');
189
+ process.stdout.write(dist);
190
+ const padding2 = this.tick ? '_' : '__';
191
+ const tail = this.tick ? '~' : '^';
192
+ process.stdout.write(`${tail}|${padding2}${this.face()} `);
193
+ process.stdout.write('\n');
194
+ process.stdout.write(dist);
195
+ const padding3 = this.tick ? ' ' : ' ';
196
+ process.stdout.write(`${padding3}"" "" `);
197
+ process.stdout.write('\n');
198
+ this.cursorUp(this.numberOfLines);
199
+ }
200
+ /**
201
+ * Draw the rainbow trail
202
+ */
203
+ drawRainbow() {
204
+ for (const line of this.trajectories) {
205
+ process.stdout.write(`\x1b[${this.scoreboardWidth}C`);
206
+ process.stdout.write(line.join(''));
207
+ process.stdout.write('\n');
208
+ }
209
+ this.cursorUp(this.numberOfLines);
210
+ }
211
+ /**
212
+ * Draw the scoreboard showing pass/fail counts
213
+ */
214
+ drawScoreboard() {
215
+ const draw = (type, n) => {
216
+ process.stdout.write(' ');
217
+ if (this.useColor) {
218
+ process.stdout.write(`${ansi_js_1.colors[type]}${n}${ansi_js_1.colors.reset}`);
219
+ }
220
+ else {
221
+ process.stdout.write(String(n));
222
+ }
223
+ process.stdout.write('\n');
224
+ };
225
+ draw('green', this.passed);
226
+ draw('red', this.failed);
227
+ process.stdout.write('\n');
228
+ process.stdout.write('\n');
229
+ this.cursorUp(this.numberOfLines);
230
+ }
231
+ /**
232
+ * Get the nyan cat's face based on current state
233
+ */
234
+ face() {
235
+ if (this.failed > 0) {
236
+ return '( x .x)';
237
+ }
238
+ else if (this.passed > 0) {
239
+ return '( ^ .^)';
240
+ }
241
+ return '( - .-)';
242
+ }
243
+ /**
244
+ * Generate rainbow colors using sine wave color cycling
245
+ *
246
+ * Uses 256-color palette (colors 16-231 are a 6x6x6 color cube)
247
+ */
248
+ generateColors() {
249
+ const colorList = [];
250
+ // Generate 42 colors (6 * 7) cycling through the spectrum
251
+ for (let i = 0; i < 6 * 7; i++) {
252
+ const pi3 = Math.floor(Math.PI / 3);
253
+ const n = i * (1.0 / 6);
254
+ const r = Math.floor(3 * Math.sin(n) + 3);
255
+ const g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3);
256
+ const b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3);
257
+ // Calculate 256-color code from RGB values (16 + 36*r + 6*g + b)
258
+ colorList.push(36 * r + 6 * g + b + 16);
259
+ }
260
+ return colorList;
261
+ }
262
+ /**
263
+ * Hide the cursor
264
+ */
265
+ hideCursor() {
266
+ if (process.stdout.isTTY) {
267
+ process.stdout.write('\x1b[?25l');
268
+ }
269
+ }
270
+ /**
271
+ * Print the epilogue summary after the run
272
+ */
273
+ printEpilogue(run) {
274
+ const duration = Date.now() - this.startTime;
275
+ const durationStr = reporter_registry_js_1.BaseReporter.formatDuration(duration * 1000000);
276
+ console.log();
277
+ console.log(` ${this.useColor ? ansi_js_1.colors.green : ''}${this.passed} passing${this.useColor ? ansi_js_1.colors.reset : ''} ${this.useColor ? ansi_js_1.colors.gray : ''}(${durationStr})${this.useColor ? ansi_js_1.colors.reset : ''}`);
278
+ if (this.failed > 0) {
279
+ console.log(` ${this.useColor ? ansi_js_1.colors.red : ''}${this.failed} failing${this.useColor ? ansi_js_1.colors.reset : ''}`);
280
+ console.log();
281
+ // Print failure details
282
+ for (let i = 0; i < this.failures.length; i++) {
283
+ const failure = this.failures[i];
284
+ console.log(` ${i + 1}) ${failure.suite === 'default' ? '' : failure.suite + ' > '}${failure.task}`);
285
+ console.log(` ${this.useColor ? ansi_js_1.colors.red : ''}${failure.error}${this.useColor ? ansi_js_1.colors.reset : ''}`);
286
+ console.log();
287
+ }
288
+ }
289
+ // Show total files/suites for context
290
+ let totalSuites = 0;
291
+ for (const file of run.files) {
292
+ totalSuites += file.suites.length;
293
+ }
294
+ console.log();
295
+ console.log(` ${this.useColor ? ansi_js_1.colors.gray : ''}Files: ${run.files.length} | Suites: ${totalSuites} | Tasks: ${this.passed + this.failed}${this.useColor ? ansi_js_1.colors.reset : ''}`);
296
+ }
297
+ /**
298
+ * Apply rainbow coloring to a string
299
+ */
300
+ rainbowify(str) {
301
+ if (!this.useColor) {
302
+ return str;
303
+ }
304
+ const color = this.rainbowColors[this.colorIndex % this.rainbowColors.length];
305
+ this.colorIndex += 1;
306
+ return `\x1b[38;5;${color}m${str}\x1b[0m`;
307
+ }
308
+ /**
309
+ * Show the cursor
310
+ */
311
+ showCursor() {
312
+ if (process.stdout.isTTY) {
313
+ process.stdout.write('\x1b[?25h');
314
+ }
315
+ }
316
+ }
317
+ exports.NyanReporter = NyanReporter;
318
+ //# sourceMappingURL=nyan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nyan.js","sourceRoot":"","sources":["../../src/reporters/nyan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * ModestBench Nyan Cat Reporter
3
+ *
4
+ * Because benchmarking should be more colorful. Displays an animated nyan cat
5
+ * flying through a rainbow trail as benchmarks complete.
6
+ *
7
+ * Based on Mocha's legendary nyan reporter, adapted for the glory of
8
+ * performance measurement.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ import type { BenchmarkRun, FileResult, SuiteResult, TaskResult } from "../types/index.cjs";
13
+ import { BaseReporter } from "../services/reporter-registry.cjs";
14
+ /**
15
+ * Nyan Cat reporter - because your benchmarks deserve rainbow power
16
+ */
17
+ export declare class NyanReporter extends BaseReporter {
18
+ /** Index into rainbow colors for cycling */
19
+ private colorIndex;
20
+ /** Current file being processed */
21
+ private currentFile;
22
+ /** Current suite being processed */
23
+ private currentSuite;
24
+ /** Total failed tasks */
25
+ private failed;
26
+ /** Collected failures for summary */
27
+ private failures;
28
+ /** Number of lines the cat occupies */
29
+ private readonly numberOfLines;
30
+ /** Total passed tasks */
31
+ private passed;
32
+ /** Whether the display is active */
33
+ private progressActive;
34
+ /** Quiet mode - suppress output */
35
+ private readonly quiet;
36
+ /** Generated rainbow color palette */
37
+ private rainbowColors;
38
+ /** Width of scoreboard */
39
+ private readonly scoreboardWidth;
40
+ /** Start time for duration calculation */
41
+ private startTime;
42
+ /** Animation tick (alternates between frames) */
43
+ private tick;
44
+ /** Rainbow trail storage - one trajectory per cat line */
45
+ private trajectories;
46
+ /** Maximum width of the rainbow trail */
47
+ private trajectoryWidthMax;
48
+ /** Whether to use colors */
49
+ private readonly useColor;
50
+ constructor(options?: {
51
+ color?: boolean;
52
+ quiet?: boolean;
53
+ });
54
+ onEnd(run: BenchmarkRun): void;
55
+ onError(error: Error): void;
56
+ onFileEnd(_result: FileResult): void;
57
+ onFileStart(file: string): void;
58
+ onStart(_run: BenchmarkRun): void;
59
+ onSuiteEnd(_result: SuiteResult): void;
60
+ onSuiteStart(suite: string): void;
61
+ onTaskResult(result: TaskResult): void;
62
+ onTaskStart(_task: string): void;
63
+ /**
64
+ * Append a segment to the rainbow trail
65
+ */
66
+ private appendRainbow;
67
+ /**
68
+ * Move cursor down n lines
69
+ */
70
+ private cursorDown;
71
+ /**
72
+ * Move cursor up n lines
73
+ */
74
+ private cursorUp;
75
+ /**
76
+ * Draw the complete nyan cat scene
77
+ */
78
+ private draw;
79
+ /**
80
+ * Draw the nyan cat ASCII art
81
+ */
82
+ private drawNyanCat;
83
+ /**
84
+ * Draw the rainbow trail
85
+ */
86
+ private drawRainbow;
87
+ /**
88
+ * Draw the scoreboard showing pass/fail counts
89
+ */
90
+ private drawScoreboard;
91
+ /**
92
+ * Get the nyan cat's face based on current state
93
+ */
94
+ private face;
95
+ /**
96
+ * Generate rainbow colors using sine wave color cycling
97
+ *
98
+ * Uses 256-color palette (colors 16-231 are a 6x6x6 color cube)
99
+ */
100
+ private generateColors;
101
+ /**
102
+ * Hide the cursor
103
+ */
104
+ private hideCursor;
105
+ /**
106
+ * Print the epilogue summary after the run
107
+ */
108
+ private printEpilogue;
109
+ /**
110
+ * Apply rainbow coloring to a string
111
+ */
112
+ private rainbowify;
113
+ /**
114
+ * Show the cursor
115
+ */
116
+ private showCursor;
117
+ }
118
+ //# sourceMappingURL=nyan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nyan.d.ts","sourceRoot":"","sources":["../../src/reporters/nyan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EACX,2BAA0B;AAE3B,OAAO,EAAE,YAAY,EAAE,0CAAyC;AAGhE;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,4CAA4C;IAC5C,OAAO,CAAC,UAAU,CAAK;IAEvB,mCAAmC;IACnC,OAAO,CAAC,WAAW,CAAM;IAEzB,oCAAoC;IACpC,OAAO,CAAC,YAAY,CAAM;IAE1B,yBAAyB;IACzB,OAAO,CAAC,MAAM,CAAK;IAEnB,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAKR;IAER,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAK;IAEnC,yBAAyB;IACzB,OAAO,CAAC,MAAM,CAAK;IAEnB,oCAAoC;IACpC,OAAO,CAAC,cAAc,CAAS;IAE/B,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,sCAAsC;IACtC,OAAO,CAAC,aAAa,CAAgB;IAErC,0BAA0B;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IAErC,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAK;IAEtB,iDAAiD;IACjD,OAAO,CAAC,IAAI,CAAS;IAErB,0DAA0D;IAC1D,OAAO,CAAC,YAAY,CAAgC;IAEpD,yCAAyC;IACzC,OAAO,CAAC,kBAAkB,CAAK;IAE/B,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAGjC,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;KACZ;IAuBR,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAe9B,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAW3B,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAIpC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI/B,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAqBjC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAItC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAoBtC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,IAAI;IAQZ;;OAEG;IACH,OAAO,CAAC,WAAW;IA2BnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,IAAI;IASZ;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwCrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAYlB;;OAEG;IACH,OAAO,CAAC,UAAU;CAKnB"}