Files: 1f9a3fcaa6f6fa4a3ad0a219f6df1a476588f6d5 / node_modules / util-deprecate / browser.js
1614 bytesRaw
1 | |
2 | /** |
3 | * Module exports. |
4 | */ |
5 | |
6 | module.exports = deprecate; |
7 | |
8 | /** |
9 | * Mark that a method should not be used. |
10 | * Returns a modified function which warns once by default. |
11 | * |
12 | * If `localStorage.noDeprecation = true` is set, then it is a no-op. |
13 | * |
14 | * If `localStorage.throwDeprecation = true` is set, then deprecated functions |
15 | * will throw an Error when invoked. |
16 | * |
17 | * If `localStorage.traceDeprecation = true` is set, then deprecated functions |
18 | * will invoke `console.trace()` instead of `console.error()`. |
19 | * |
20 | * @param {Function} fn - the function to deprecate |
21 | * @param {String} msg - the string to print to the console when `fn` is invoked |
22 | * @returns {Function} a new "deprecated" version of `fn` |
23 | * @api public |
24 | */ |
25 | |
26 | function deprecate (fn, msg) { |
27 | if (config('noDeprecation')) { |
28 | return fn; |
29 | } |
30 | |
31 | var warned = false; |
32 | function deprecated() { |
33 | if (!warned) { |
34 | if (config('throwDeprecation')) { |
35 | throw new Error(msg); |
36 | } else if (config('traceDeprecation')) { |
37 | console.trace(msg); |
38 | } else { |
39 | console.warn(msg); |
40 | } |
41 | warned = true; |
42 | } |
43 | return fn.apply(this, arguments); |
44 | } |
45 | |
46 | return deprecated; |
47 | } |
48 | |
49 | /** |
50 | * Checks `localStorage` for boolean values for the given `name`. |
51 | * |
52 | * @param {String} name |
53 | * @returns {Boolean} |
54 | * @api private |
55 | */ |
56 | |
57 | function config (name) { |
58 | // accessing global.localStorage can trigger a DOMException in sandboxed iframes |
59 | try { |
60 | if (!global.localStorage) return false; |
61 | } catch (_) { |
62 | return false; |
63 | } |
64 | var val = global.localStorage[name]; |
65 | if (null == val) return false; |
66 | return String(val).toLowerCase() === 'true'; |
67 | } |
68 |
Built with git-ssb-web