stylelint
Version:
A mighty CSS linter that helps you avoid errors and enforce conventions.
92 lines (77 loc) • 2.46 kB
JavaScript
// NOTICE: This file is generated by Rollup. To modify it,
// please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
;
const process = require('node:process');
// Each code must be unique across all warning types.
const DEPRECATION_CODES = {
COMMONJS_PLUGINS: '001',
COMMONJS_NODEJS_API: '002',
RESULT_OUTPUT_PROPERTY: '003',
GITHUB_FORMATTER: '004',
CONTEXT_FIX: '005',
RULE: '006', // either removal or renaming
REPORT_AMBIGUOUS_POSITION: '007',
};
const EXPERIMENTAL_CODES = {
SUPPRESSIONS: '101',
};
const emittedWarnings = new Set();
/**
* @typedef {DEPRECATION_CODES[keyof DEPRECATION_CODES] |
* EXPERIMENTAL_CODES[keyof EXPERIMENTAL_CODES]} WarningCode
*/
/**
* Emit a warning with the specified type.
*
* @param {string} message
* @param {'DeprecationWarning' | 'ExperimentalWarning'} type - See https://nodejs.org/api/process.html#nodejs-warning-names
* @param {WarningCode} code
* @param {string} detail
* @returns {void}
*/
function emitWarning(message, type, code, detail) {
const key = JSON.stringify({
message,
options: { type, code: `stylelint:${code}`, detail },
});
if (emittedWarnings.has(key)) return;
emittedWarnings.add(key);
process.emitWarning(message, { type, code: `stylelint:${code}`, detail });
}
/**
* Use this function for deprecation warnings, instead of `process.emitWarning()`.
*
* @param {string} message
* @param {keyof DEPRECATION_CODES} codeKey
* @param {string} detail
* @returns {void}
*/
function emitDeprecationWarning(message, codeKey, detail) {
emitWarning(message, 'DeprecationWarning', DEPRECATION_CODES[codeKey], detail);
}
/**
* Use this function for experimental warnings, instead of `process.emitWarning()`.
*
* @param {string} message
* @param {keyof EXPERIMENTAL_CODES} codeKey
* @param {string} detail
* @returns {void}
*/
function emitExperimentalWarning(message, codeKey, detail) {
emitWarning(message, 'ExperimentalWarning', EXPERIMENTAL_CODES[codeKey], detail);
}
/**
* Clear the already emitted warnings.
* Only useful in tests.
*
* @private
*/
function clearEmittedWarnings() {
if (process.env.NODE_ENV !== 'test') {
throw new Error('This function can only be called in test environments!');
}
emittedWarnings.clear();
}
exports.clearEmittedWarnings = clearEmittedWarnings;
exports.emitDeprecationWarning = emitDeprecationWarning;
exports.emitExperimentalWarning = emitExperimentalWarning;