Spaces:
Paused
Paused
| ; | |
| /* | |
| this seems to be not only shorter, but faster than | |
| string.replace(/\\/g, '\\\\'). | |
| replace(/\u0008/g, '\\b'). | |
| replace(/\t/g, '\\t'). | |
| replace(/\n/g, '\\n'). | |
| replace(/\f/g, '\\f'). | |
| replace(/\r/g, '\\r'). | |
| replace(/'/g, '\\\''). | |
| replace(/"/g, '\\"'); | |
| or string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") | |
| see http://jsperf.com/string-escape-regexp-vs-json-stringify | |
| */ | |
| function srcEscape(str) { | |
| return JSON.stringify({ | |
| [str]: 1, | |
| }).slice(1, -3); | |
| } | |
| exports.srcEscape = srcEscape; | |
| let highlightFn; | |
| let cardinalRecommended = false; | |
| try { | |
| // the purpose of this is to prevent projects using Webpack from displaying a warning during runtime if cardinal is not a dependency | |
| const REQUIRE_TERMINATOR = ''; | |
| highlightFn = require(`cardinal${REQUIRE_TERMINATOR}`).highlight; | |
| } catch (err) { | |
| highlightFn = (text) => { | |
| if (!cardinalRecommended) { | |
| // eslint-disable-next-line no-console | |
| console.log('For nicer debug output consider install cardinal@^2.0.0'); | |
| cardinalRecommended = true; | |
| } | |
| return text; | |
| }; | |
| } | |
| /** | |
| * Prints debug message with code frame, will try to use `cardinal` if available. | |
| */ | |
| function printDebugWithCode(msg, code) { | |
| // eslint-disable-next-line no-console | |
| console.log(`\n\n${msg}:\n`); | |
| // eslint-disable-next-line no-console | |
| console.log(`${highlightFn(code)}\n`); | |
| } | |
| exports.printDebugWithCode = printDebugWithCode; | |
| /** | |
| * checks whether the `type` is in the `list` | |
| */ | |
| function typeMatch(type, list, Types) { | |
| if (Array.isArray(list)) { | |
| return list.some((t) => type === Types[t]); | |
| } | |
| return !!list; | |
| } | |
| exports.typeMatch = typeMatch; | |
| const privateObjectProps = new Set([ | |
| '__defineGetter__', | |
| '__defineSetter__', | |
| '__lookupGetter__', | |
| '__lookupSetter__', | |
| '__proto__', | |
| ]); | |
| exports.privateObjectProps = privateObjectProps; | |