UNPKG

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