stylehacks
Advanced tools
Comparing version 6.0.3 to 6.1.0
{ | ||
"name": "stylehacks", | ||
"version": "6.0.3", | ||
"version": "6.1.0", | ||
"description": "Detect/remove browser hacks from CSS files.", | ||
@@ -5,0 +5,0 @@ "main": "src/index.js", |
'use strict'; | ||
const { dirname } = require('path'); | ||
const browserslist = require('browserslist'); | ||
const plugins = require('./plugins'); | ||
/** @typedef {{lint?: boolean}} Options */ | ||
/** | ||
* @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions | ||
* @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions | ||
* @typedef {{lint?: boolean} & AutoprefixerOptions & BrowserslistOptions} Options | ||
*/ | ||
@@ -16,32 +21,38 @@ /** | ||
OnceExit(css, { result }) { | ||
/** @type {typeof result.opts & browserslist.Options} */ | ||
const resultOpts = result.opts || {}; | ||
const browsers = browserslist(null, { | ||
stats: resultOpts.stats, | ||
path: __dirname, | ||
env: resultOpts.env, | ||
/** | ||
* @param {import('postcss').Result & {opts: BrowserslistOptions & {file?: string}}} result | ||
*/ | ||
prepare(result) { | ||
const { stats, env, from, file } = result.opts || {}; | ||
const browsers = browserslist(opts.overrideBrowserslist, { | ||
stats: opts.stats || stats, | ||
path: opts.path || dirname(from || file || __filename), | ||
env: opts.env || env, | ||
}); | ||
/** @type {import('./plugin').Plugin[]} */ | ||
const processors = []; | ||
for (const Plugin of plugins) { | ||
const hack = new Plugin(result); | ||
if (!browsers.some((browser) => hack.targets.has(browser))) { | ||
processors.push(hack); | ||
} | ||
} | ||
css.walk((node) => { | ||
processors.forEach((proc) => { | ||
if (!proc.nodeTypes.has(node.type)) { | ||
return; | ||
return { | ||
OnceExit(css) { | ||
/** @type {import('./plugin').Plugin[]} */ | ||
const processors = []; | ||
for (const Plugin of plugins) { | ||
const hack = new Plugin(result); | ||
if (!browsers.some((browser) => hack.targets.has(browser))) { | ||
processors.push(hack); | ||
} | ||
} | ||
css.walk((node) => { | ||
processors.forEach((proc) => { | ||
if (!proc.nodeTypes.has(node.type)) { | ||
return; | ||
} | ||
if (opts.lint) { | ||
return proc.detectAndWarn(node); | ||
} | ||
if (opts.lint) { | ||
return proc.detectAndWarn(node); | ||
} | ||
return proc.detectAndResolve(node); | ||
}); | ||
}); | ||
return proc.detectAndResolve(node); | ||
}); | ||
}); | ||
}, | ||
}; | ||
}, | ||
@@ -48,0 +59,0 @@ }; |
@@ -7,1 +7,2 @@ export const FF_2: "firefox 2"; | ||
export const OP_9: "opera 9"; | ||
//# sourceMappingURL=browsers.d.ts.map |
@@ -5,1 +5,2 @@ export const MEDIA_QUERY: "media query"; | ||
export const VALUE: "value"; | ||
//# sourceMappingURL=identifiers.d.ts.map |
export const ATRULE: "atrule"; | ||
export const DECL: "decl"; | ||
export const RULE: "rule"; | ||
//# sourceMappingURL=postcss.d.ts.map |
export const BODY: "body"; | ||
export const HTML: "html"; | ||
//# sourceMappingURL=tags.d.ts.map |
declare function _exports(selector: import('postcss-selector-parser').Selector, index: number, value: string): boolean | undefined | ''; | ||
export = _exports; | ||
//# sourceMappingURL=exists.d.ts.map |
export = pluginCreator; | ||
/** @typedef {{lint?: boolean}} Options */ | ||
/** | ||
* @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions | ||
* @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions | ||
* @typedef {{lint?: boolean} & AutoprefixerOptions & BrowserslistOptions} Options | ||
*/ | ||
/** | ||
* @type {import('postcss').PluginCreator<Options>} | ||
@@ -10,8 +14,14 @@ * @param {Options} opts | ||
declare namespace pluginCreator { | ||
export { detect, postcss, Options }; | ||
export { detect, postcss, AutoprefixerOptions, BrowserslistOptions, Options }; | ||
} | ||
type Options = { | ||
lint?: boolean; | ||
}; | ||
} & AutoprefixerOptions & BrowserslistOptions; | ||
declare function detect(node: import('postcss').Node): boolean; | ||
declare var postcss: true; | ||
type AutoprefixerOptions = { | ||
overrideBrowserslist?: string | string[]; | ||
}; | ||
type BrowserslistOptions = Pick<browserslist.Options, 'stats' | 'path' | 'env'>; | ||
import browserslist = require("browserslist"); | ||
//# sourceMappingURL=index.d.ts.map |
declare function _exports(node: import('postcss').Rule): boolean; | ||
export = _exports; | ||
//# sourceMappingURL=isMixin.d.ts.map |
@@ -61,1 +61,2 @@ export = BasePlugin; | ||
}; | ||
//# sourceMappingURL=plugin.d.ts.map |
@@ -18,1 +18,2 @@ export = BodyEmpty; | ||
import parser = require("postcss-selector-parser"); | ||
//# sourceMappingURL=bodyEmpty.d.ts.map |
@@ -17,1 +17,2 @@ export = HtmlCombinatorCommentBody; | ||
import parser = require("postcss-selector-parser"); | ||
//# sourceMappingURL=htmlCombinatorCommentBody.d.ts.map |
@@ -18,1 +18,2 @@ export = HtmlFirstChild; | ||
import parser = require("postcss-selector-parser"); | ||
//# sourceMappingURL=htmlFirstChild.d.ts.map |
@@ -12,1 +12,2 @@ export = Important; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=important.d.ts.map |
@@ -9,1 +9,2 @@ declare const _exports: ({ | ||
import trailingSlashComma = require("./trailingSlashComma"); | ||
//# sourceMappingURL=index.d.ts.map |
@@ -12,1 +12,2 @@ export = LeadingStar; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=leadingStar.d.ts.map |
@@ -12,1 +12,2 @@ export = LeadingUnderscore; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=leadingUnderscore.d.ts.map |
@@ -12,1 +12,2 @@ export = MediaSlash0; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=mediaSlash0.d.ts.map |
@@ -12,1 +12,2 @@ export = MediaSlash0Slash9; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=mediaSlash0Slash9.d.ts.map |
@@ -12,1 +12,2 @@ export = MediaSlash9; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=mediaSlash9.d.ts.map |
@@ -12,1 +12,2 @@ export = Slash9; | ||
import BasePlugin = require("../plugin.js"); | ||
//# sourceMappingURL=slash9.d.ts.map |
@@ -18,1 +18,2 @@ export = StarHtml; | ||
import parser = require("postcss-selector-parser"); | ||
//# sourceMappingURL=starHtml.d.ts.map |
@@ -12,1 +12,2 @@ export = TrailingSlashComma; | ||
import BasePlugin = require("../plugin"); | ||
//# sourceMappingURL=trailingSlashComma.d.ts.map |
38792
66
934