| 'use strict'; |
| |
| /** |
| * Given an object of problem messages, return another |
| * that provides the same messages postfixed with the rule |
| * that has been violated. |
| * |
| * @template {import('stylelint').RuleMessages} T |
| * @template {{[K in keyof T]: T[K]}} R |
| * @param {string} ruleName |
| * @param {T} messages - Object whose keys are message identifiers |
| * and values are either message strings or functions that return message strings |
| * @returns {R} New message object, whose messages will be marked with the rule name |
| */ |
| function ruleMessages(ruleName, messages) { |
| /** @typedef {keyof T} K */ |
| const newMessages = /** @type {R} */ ({}); |
| |
| for (const [messageId, messageText] of /** @type {[K, T[K]][]} */ (Object.entries(messages))) { |
| if (typeof messageText === 'string') { |
| newMessages[messageId] = /** @type {R[K]} */ (`${messageText} (${ruleName})`); |
| } else { |
| newMessages[messageId] = /** @type {R[K]} */ ( |
| (...args) => `${messageText(...args)} (${ruleName})` |
| ); |
| } |
| } |
| |
| return newMessages; |
| } |
| |
| module.exports = /** @type {typeof import('stylelint').utils.ruleMessages} */ (ruleMessages); |