1
0
mirror of https://github.com/thangisme/notes.git synced 2024-11-01 04:17:33 -04:00
notes/node_modules/stylelint/lib/rules/no-browser-hacks/index.js
Patrick Marsceill b7b0d0d7bf
Initial commit
2017-03-09 13:16:08 -05:00

60 lines
1.7 KiB
JavaScript

"use strict"
const report = require("../../utils/report")
const ruleMessages = require("../../utils/ruleMessages")
const validateOptions = require("../../utils/validateOptions")
const Result = require("postcss/lib/result")
const _ = require("lodash")
const stylehacks = require("stylehacks")
const ruleName = "no-browser-hacks"
const messages = ruleMessages(ruleName, {
rejected: (type, hack) => `Unexpected ${type} hack "${hack}"`,
})
const rule = function (on, options) {
return (root, result) => {
const validOptions = validateOptions(result, ruleName, { actual: on }, {
optional: true,
actual: options,
possible: {
browsers: [_.isString],
},
})
if (!validOptions) {
return
}
result.warn((
`'${ruleName}' has been deprecated and in 8.0 will be removed. Use 'stylelint-no-browser-hacks' plugin instead.`
), {
stylelintType: "deprecation",
stylelintReference: `https://stylelint.io/user-guide/rules/${ruleName}/`,
})
const stylehacksOptions = { lint: true }
if (options && options.browsers) {
stylehacksOptions.browsers = options.browsers
}
const stylehacksResult = new Result()
stylehacks(stylehacksOptions)(root, stylehacksResult)
stylehacksResult.warnings().forEach(stylehacksWarning => {
const message = messages.rejected(stylehacksWarning.identifier, stylehacksWarning.hack)
report({
ruleName,
result,
message,
node: stylehacksWarning.node,
line: stylehacksWarning.line,
column: stylehacksWarning.column,
})
})
}
}
rule.ruleName = ruleName
rule.messages = messages
module.exports = rule