report-creator.js 837 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // Report Creator
  2. // ==============
  3. //
  4. // Wrapper of Istanbul's report creator to allow registering
  5. // custom reporters
  6. // Dependencies
  7. // ------------
  8. var istanbulReports = require('istanbul-reports')
  9. var customReporterMap = {}
  10. function register (reporter) {
  11. var registeredType = reporter.TYPE
  12. if (!registeredType) {
  13. throw new Error('Registering a custom reporter requires a type!')
  14. }
  15. customReporterMap[registeredType] = reporter
  16. return registeredType
  17. }
  18. function create (type, opts) {
  19. var Reporter = customReporterMap[type]
  20. if (Reporter) {
  21. return new Reporter(opts)
  22. }
  23. // fallback to istanbul's report creator if reporter isn't found
  24. return istanbulReports.create(type, opts)
  25. }
  26. function reset () {
  27. customReporterMap = {}
  28. }
  29. module.exports = {
  30. create: create,
  31. register: register,
  32. reset: reset
  33. }