diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-30 16:45:38 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-30 16:45:38 +0800 |
| commit | a0579f91bbdf0de62b59df381d97a008bb98df57 (patch) | |
| tree | 69c21333750c7bc7358f9383560438048d9adebf /node_modules/postcss-message-helpers/index.js | |
| parent | 2d8aeba452672bcda2096e5d76bf37131c34075e (diff) | |
update/upgrade
Diffstat (limited to 'node_modules/postcss-message-helpers/index.js')
| -rwxr-xr-x | node_modules/postcss-message-helpers/index.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/node_modules/postcss-message-helpers/index.js b/node_modules/postcss-message-helpers/index.js new file mode 100755 index 00000000..e57cc29f --- /dev/null +++ b/node_modules/postcss-message-helpers/index.js @@ -0,0 +1,81 @@ +/** + * Constants + */ +var SPLITTER = "\n at " + +/** + * PostCSS helpers + */ +module.exports = { + sourceString: sourceString, + message: formatMessage, + try: tryCatch +} + +/** + * Returns GNU style source + * + * @param {Object} source + */ +function sourceString(source) { + var message = "<css input>" + if (source) { + if (source.input && source.input.file) { + message = source.input.file + } + if (source.start) { + message += ":" + source.start.line + ":" + source.start.column + } + } + + return message +} + +/** + * Returns a GNU style message + * + * @param {String} message + * @param {Object} source a PostCSS source object + * @return {String} + */ +function formatMessage(message, source) { + return sourceString(source) + ": " + message +} + +/** + * Do something and throw an error with enhanced exception (from given source) + * + * @param {Function} fn [description] + * @param {[type]} source [description] + */ +function tryCatch(fn, source) { + try { + return fn() + } + catch (err) { + err.originalMessage = err.message + err.message = formatMessage(err.message, source) + + // if source seems interesting, enhance error + if (typeof source === "object") { + // add a stack item if something interesting available + if ((source.input && source.input.file) || source.start) { + var stack = err.stack.split(SPLITTER) + var firstStackItem = stack.shift() + stack.unshift(sourceString(source)) + stack.unshift(firstStackItem) + err.stack = stack.join(SPLITTER) + } + + if (source.input && source.input.file) { + err.fileName = source.input.file + } + if (source.start) { + err.lineNumber = source.start.line + err.columnNumber = source.start.column + } + } + + throw err + } +} |
