warning.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.call = call;
  6. exports.default = void 0;
  7. exports.note = note;
  8. exports.noteOnce = noteOnce;
  9. exports.preMessage = void 0;
  10. exports.resetWarned = resetWarned;
  11. exports.warning = warning;
  12. exports.warningOnce = warningOnce;
  13. /* eslint-disable no-console */
  14. var warned = {};
  15. var preWarningFns = [];
  16. /**
  17. * Pre warning enable you to parse content before console.error.
  18. * Modify to null will prevent warning.
  19. */
  20. var preMessage = exports.preMessage = function preMessage(fn) {
  21. preWarningFns.push(fn);
  22. };
  23. /**
  24. * Warning if condition not match.
  25. * @param valid Condition
  26. * @param message Warning message
  27. * @example
  28. * ```js
  29. * warning(false, 'some error'); // print some error
  30. * warning(true, 'some error'); // print nothing
  31. * warning(1 === 2, 'some error'); // print some error
  32. * ```
  33. */
  34. function warning(valid, message) {
  35. if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {
  36. var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {
  37. return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');
  38. }, message);
  39. if (finalMessage) {
  40. console.error("Warning: ".concat(finalMessage));
  41. }
  42. }
  43. }
  44. /** @see Similar to {@link warning} */
  45. function note(valid, message) {
  46. if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {
  47. var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {
  48. return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');
  49. }, message);
  50. if (finalMessage) {
  51. console.warn("Note: ".concat(finalMessage));
  52. }
  53. }
  54. }
  55. function resetWarned() {
  56. warned = {};
  57. }
  58. function call(method, valid, message) {
  59. if (!valid && !warned[message]) {
  60. method(false, message);
  61. warned[message] = true;
  62. }
  63. }
  64. /** @see Same as {@link warning}, but only warn once for the same message */
  65. function warningOnce(valid, message) {
  66. call(warning, valid, message);
  67. }
  68. /** @see Same as {@link warning}, but only warn once for the same message */
  69. function noteOnce(valid, message) {
  70. call(note, valid, message);
  71. }
  72. warningOnce.preMessage = preMessage;
  73. warningOnce.resetWarned = resetWarned;
  74. warningOnce.noteOnce = noteOnce;
  75. var _default = exports.default = warningOnce;