(...hintInfo: unknown[])
| 75 | * @throws Error |
| 76 | */ |
| 77 | export function makePrintable(...hintInfo: unknown[]): string { |
| 78 | let msg = ''; |
| 79 | |
| 80 | if (__DEV__) { |
| 81 | // Fuzzy stringify for print. |
| 82 | // This code only exist in dev environment. |
| 83 | const makePrintableStringIfPossible = (val: unknown): string => { |
| 84 | return val === void 0 ? 'undefined' |
| 85 | : val === Infinity ? 'Infinity' |
| 86 | : val === -Infinity ? '-Infinity' |
| 87 | : eqNaN(val) ? 'NaN' |
| 88 | : val instanceof Date ? 'Date(' + val.toISOString() + ')' |
| 89 | : isFunction(val) ? 'function () { ... }' |
| 90 | : isRegExp(val) ? val + '' |
| 91 | : null; |
| 92 | }; |
| 93 | msg = map(hintInfo, arg => { |
| 94 | if (isString(arg)) { |
| 95 | // Print without quotation mark for some statement. |
| 96 | return arg; |
| 97 | } |
| 98 | else { |
| 99 | const printableStr = makePrintableStringIfPossible(arg); |
| 100 | if (printableStr != null) { |
| 101 | return printableStr; |
| 102 | } |
| 103 | else if (typeof JSON !== 'undefined' && JSON.stringify) { |
| 104 | try { |
| 105 | return JSON.stringify(arg, function (n, val) { |
| 106 | const printableStr = makePrintableStringIfPossible(val); |
| 107 | return printableStr == null ? val : printableStr; |
| 108 | }); |
| 109 | // In most cases the info object is small, so do not line break. |
| 110 | } |
| 111 | catch (err) { |
| 112 | return '?'; |
| 113 | } |
| 114 | } |
| 115 | else { |
| 116 | return '?'; |
| 117 | } |
| 118 | } |
| 119 | }).join(' '); |
| 120 | } |
| 121 | |
| 122 | return msg; |
| 123 | } |
| 124 | |
| 125 | /** |
| 126 | * @throws Error |
no test coverage detected
searching dependent graphs…