1234567891011121314151617181920212223242526272829303132 |
- '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);
|