index.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /*global window, global*/
  2. var util = require("util")
  3. var assert = require("assert")
  4. function now() { return new Date().getTime() }
  5. var slice = Array.prototype.slice
  6. var console
  7. var times = {}
  8. if (typeof global !== "undefined" && global.console) {
  9. console = global.console
  10. } else if (typeof window !== "undefined" && window.console) {
  11. console = window.console
  12. } else {
  13. console = {}
  14. }
  15. var functions = [
  16. [log, "log"],
  17. [info, "info"],
  18. [warn, "warn"],
  19. [error, "error"],
  20. [time, "time"],
  21. [timeEnd, "timeEnd"],
  22. [trace, "trace"],
  23. [dir, "dir"],
  24. [consoleAssert, "assert"]
  25. ]
  26. for (var i = 0; i < functions.length; i++) {
  27. var tuple = functions[i]
  28. var f = tuple[0]
  29. var name = tuple[1]
  30. if (!console[name]) {
  31. console[name] = f
  32. }
  33. }
  34. module.exports = console
  35. function log() {}
  36. function info() {
  37. console.log.apply(console, arguments)
  38. }
  39. function warn() {
  40. console.log.apply(console, arguments)
  41. }
  42. function error() {
  43. console.warn.apply(console, arguments)
  44. }
  45. function time(label) {
  46. times[label] = now()
  47. }
  48. function timeEnd(label) {
  49. var time = times[label]
  50. if (!time) {
  51. throw new Error("No such label: " + label)
  52. }
  53. delete times[label]
  54. var duration = now() - time
  55. console.log(label + ": " + duration + "ms")
  56. }
  57. function trace() {
  58. var err = new Error()
  59. err.name = "Trace"
  60. err.message = util.format.apply(null, arguments)
  61. console.error(err.stack)
  62. }
  63. function dir(object) {
  64. console.log(util.inspect(object) + "\n")
  65. }
  66. function consoleAssert(expression) {
  67. if (!expression) {
  68. var arr = slice.call(arguments, 1)
  69. assert.ok(false, util.format.apply(null, arr))
  70. }
  71. }