Source: deprecated.js

  1. /**
  2. * Used to deprecate what ever you want
  3. * @module react-cmf/lib/deprecated
  4. */
  5. /* eslint-disable prefer-rest-params */
  6. /* eslint-disable no-console */
  7. /**
  8. * display a deprecated message on the first call of a function.
  9. * @param {Function} fn the function to deprecate
  10. * @param {String} msg the message to display
  11. * @param {function} log [description]
  12. * @return {any} the content of fn;
  13. */
  14. export default function deprecated(fn, msg, log) {
  15. let called = false;
  16. function wrapper() {
  17. if (!called) {
  18. called = true;
  19. let message = msg;
  20. if (typeof msg === 'function') {
  21. message = msg(arguments);
  22. }
  23. message = `DEPRECATED: ${message}`;
  24. if (log) {
  25. log(message);
  26. } else if (console) {
  27. if (console.warn) {
  28. console.warn(message);
  29. } else if (console.log) {
  30. console.log(message);
  31. }
  32. }
  33. }
  34. return fn.apply(this, arguments);
  35. }
  36. wrapper.wrappedFunction = fn;
  37. return wrapper;
  38. }