penambahan web socket

This commit is contained in:
2025-09-18 19:01:22 +07:00
parent 1d053646a9
commit d7bb2eb5bb
15070 changed files with 2402916 additions and 0 deletions

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
Copyright (c) Ben Briggs <[email protected]> (http://beneb.info)
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
+91
View File
@@ -0,0 +1,91 @@
# stylehacks
> Detect/remove browser hacks from CSS files.
## Install
With [npm](https://npmjs.org/package/stylehacks) do:
```
npm install stylehacks --save
```
## Example
In its default mode, stylehacks will remove hacks from your CSS file, based on
the browsers that you wish to support.
### Input
```css
h1 {
_color: white;
color: rgba(255, 255, 255, 0.5);
}
```
### Output
```css
h1 {
color: rgba(255, 255, 255, 0.5);
}
```
## API
### `stylehacks.detect(node)`
Type: `function`
Returns: `boolean`
This method will take any PostCSS *node*, run applicable plugins depending on
its type, then will return a boolean depending on whether it found any of
the supported hacks. For example, if the `decl` node found below is passed to
the `detect` function, it will return `true`. But if the `rule` node is passed,
it will return `false` instead.
```css
h1 { _color: red }
```
### `postcss([ stylehacks(opts) ])`
stylehacks can also be consumed as a PostCSS plugin. See the
[documentation](https://github.com/postcss/postcss#usage) for examples for
your environment.
#### options
##### lint
Type: `boolean`
Default: `false`
If lint mode is enabled, stylehacks will not remove hacks from the CSS; instead,
it will add warnings to `Result#messages`.
## Related
stylehacks works well with your existing PostCSS setup:
* [stylelint] - Comprehensive & modern CSS linter, to ensure that your code
style rules are respected.
## Contributing
Pull requests are welcome. If you add functionality, then please add unit tests
to cover it.
## License
MIT © [Ben Briggs](http://beneb.info)
[stylelint]: https://github.com/stylelint/stylelint
+46
View File
@@ -0,0 +1,46 @@
{
"name": "stylehacks",
"version": "7.0.6",
"description": "Detect/remove browser hacks from CSS files.",
"main": "src/index.js",
"types": "types/index.d.ts",
"files": [
"LICENSE-MIT",
"src",
"types"
],
"keywords": [
"browsers",
"css",
"hack",
"hacks",
"optimise",
"postcss",
"postcss-plugin",
"stylehacks"
],
"license": "MIT",
"homepage": "https://github.com/cssnano/cssnano",
"author": {
"name": "Ben Briggs",
"email": "[email protected]",
"url": "http://beneb.info"
},
"repository": "cssnano/cssnano",
"dependencies": {
"browserslist": "^4.25.1",
"postcss-selector-parser": "^7.1.0"
},
"bugs": {
"url": "https://github.com/cssnano/cssnano/issues"
},
"engines": {
"node": "^18.12.0 || ^20.9.0 || >=22.0"
},
"devDependencies": {
"postcss": "^8.5.6"
},
"peerDependencies": {
"postcss": "^8.4.32"
}
}
@@ -0,0 +1,9 @@
'use strict';
const FF_2 = 'firefox 2';
const IE_5_5 = 'ie 5.5';
const IE_6 = 'ie 6';
const IE_7 = 'ie 7';
const IE_8 = 'ie 8';
const OP_9 = 'opera 9';
module.exports = { FF_2, IE_5_5, IE_6, IE_7, IE_8, OP_9 };
@@ -0,0 +1,7 @@
'use strict';
const MEDIA_QUERY = 'media query';
const PROPERTY = 'property';
const SELECTOR = 'selector';
const VALUE = 'value';
module.exports = { MEDIA_QUERY, PROPERTY, SELECTOR, VALUE };
@@ -0,0 +1,6 @@
'use strict';
const ATRULE = 'atrule';
const DECL = 'decl';
const RULE = 'rule';
module.exports = { ATRULE, DECL, RULE };
@@ -0,0 +1,5 @@
'use strict';
const BODY = 'body';
const HTML = 'html';
module.exports = { BODY, HTML };
+13
View File
@@ -0,0 +1,13 @@
'use strict';
/**
* @param {import('postcss-selector-parser').Selector} selector
* @param {number} index
* @param {string} value
* @return {boolean | undefined | ''}
*/
module.exports = function exists(selector, index, value) {
const node = selector.at(index);
return node && node.value && node.value.toLowerCase() === value;
};
+71
View File
@@ -0,0 +1,71 @@
'use strict';
const { dirname } = require('path');
const browserslist = require('browserslist');
const plugins = require('./plugins');
/**
* @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
* @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
* @typedef {{lint?: boolean} & AutoprefixerOptions & BrowserslistOptions} Options
*/
/**
* @type {import('postcss').PluginCreator<Options>}
* @param {Options} opts
* @return {import('postcss').Plugin}
*/
function pluginCreator(opts = {}) {
return {
postcssPlugin: 'stylehacks',
/**
* @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,
});
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);
}
return proc.detectAndResolve(node);
});
});
},
};
},
};
}
/** @type {(node: import('postcss').Node) => boolean} */
pluginCreator.detect = (node) => {
return plugins.some((Plugin) => {
const hack = new Plugin();
return hack.any(node);
});
};
pluginCreator.postcss = true;
module.exports = pluginCreator;
+15
View File
@@ -0,0 +1,15 @@
'use strict';
/**
* @param {import('postcss').Rule} node
* @return {boolean}
*/
module.exports = function isMixin(node) {
const { selector } = node;
// If the selector ends with a ':' it is likely a part of a custom mixin.
if (!selector || selector[selector.length - 1] === ':') {
return true;
}
return false;
};
+108
View File
@@ -0,0 +1,108 @@
'use strict';
/**
* @typedef {object} Plugin
* @prop {Set<string>} targets
* @prop {Set<string>} nodeTypes
* @prop {(node: import('postcss').Node) => void} detectAndResolve
* @prop {(node: import('postcss').Node) => void} detectAndWarn
*/
/**
* @typedef {import('postcss').Node & {_stylehacks: {
message: string,
browsers: Set<string>,
identifier: string,
hack: string }}} NodeWithInfo
*/
module.exports = class BasePlugin {
/**
* @param {string[]} targets
* @param {string[]} nodeTypes
* @param {import('postcss').Result=} result
*/
constructor(targets, nodeTypes, result) {
/** @type {NodeWithInfo[]} */
this.nodes = [];
this.targets = new Set(targets);
this.nodeTypes = new Set(nodeTypes);
this.result = result;
}
/**
* @param {import('postcss').Node} node
* @param {{identifier: string, hack: string}} metadata
* @return {void}
*/
push(node, metadata) {
/** @type {NodeWithInfo} */ (node)._stylehacks = Object.assign(
{},
metadata,
{
message: `Bad ${metadata.identifier}: ${metadata.hack}`,
browsers: this.targets,
}
);
this.nodes.push(/** @type {NodeWithInfo} */ (node));
}
/**
* @param {import('postcss').Node} node
* @return {boolean}
*/
any(node) {
if (this.nodeTypes.has(node.type)) {
this.detect(node);
return /** @type {NodeWithInfo} */ (node)._stylehacks !== undefined;
}
return false;
}
/**
* @param {import('postcss').Node} node
* @return {void}
*/
detectAndResolve(node) {
this.nodes = [];
this.detect(node);
return this.resolve();
}
/**
* @param {import('postcss').Node} node
* @return {void}
*/
detectAndWarn(node) {
this.nodes = [];
this.detect(node);
return this.warn();
}
/** @param {import('postcss').Node} node */
// eslint-disable-next-line no-unused-vars
detect(node) {
throw new Error('You need to implement this method in a subclass.');
}
/** @return {void} */
resolve() {
return this.nodes.forEach((node) => node.remove());
}
warn() {
return this.nodes.forEach((node) => {
const { message, browsers, identifier, hack } = node._stylehacks;
return node.warn(
/** @type {import('postcss').Result} */ (this.result),
message + JSON.stringify({ browsers, identifier, hack })
);
});
}
};
@@ -0,0 +1,49 @@
'use strict';
const parser = require('postcss-selector-parser');
const exists = require('../exists');
const isMixin = require('../isMixin');
const BasePlugin = require('../plugin');
const { FF_2 } = require('../dictionary/browsers');
const { SELECTOR } = require('../dictionary/identifiers');
const { RULE } = require('../dictionary/postcss');
const { BODY } = require('../dictionary/tags');
module.exports = class BodyEmpty extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result) {
super([FF_2], [RULE], result);
}
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule) {
if (isMixin(rule)) {
return;
}
parser(this.analyse(rule)).processSync(rule.selector);
}
/**
* @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule) {
return (selectors) => {
selectors.each((selector) => {
if (
exists(selector, 0, BODY) &&
exists(selector, 1, ':empty') &&
exists(selector, 2, ' ') &&
selector.at(3)
) {
this.push(rule, {
identifier: SELECTOR,
hack: selector.toString(),
});
}
});
};
}
};
@@ -0,0 +1,54 @@
'use strict';
const parser = require('postcss-selector-parser');
const exists = require('../exists');
const isMixin = require('../isMixin');
const BasePlugin = require('../plugin');
const { IE_5_5, IE_6, IE_7 } = require('../dictionary/browsers');
const { SELECTOR } = require('../dictionary/identifiers');
const { RULE } = require('../dictionary/postcss');
const { BODY, HTML } = require('../dictionary/tags');
module.exports = class HtmlCombinatorCommentBody extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result) {
super([IE_5_5, IE_6, IE_7], [RULE], result);
}
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule) {
if (isMixin(rule)) {
return;
}
if (rule.raws.selector && rule.raws.selector.raw) {
parser(this.analyse(rule)).processSync(rule.raws.selector.raw);
}
}
/** @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule) {
return (selectors) => {
selectors.each((selector) => {
if (
exists(selector, 0, HTML) &&
(exists(selector, 1, '>') || exists(selector, 1, '~')) &&
selector.at(2) &&
selector.at(2).type === 'comment' &&
exists(selector, 3, ' ') &&
exists(selector, 4, BODY) &&
exists(selector, 5, ' ') &&
selector.at(6)
) {
this.push(rule, {
identifier: SELECTOR,
hack: selector.toString(),
});
}
});
};
}
};
@@ -0,0 +1,50 @@
'use strict';
const parser = require('postcss-selector-parser');
const exists = require('../exists');
const isMixin = require('../isMixin');
const BasePlugin = require('../plugin');
const { OP_9 } = require('../dictionary/browsers');
const { SELECTOR } = require('../dictionary/identifiers');
const { RULE } = require('../dictionary/postcss');
const { HTML } = require('../dictionary/tags');
module.exports = class HtmlFirstChild extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result) {
super([OP_9], [RULE], result);
}
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule) {
if (isMixin(rule)) {
return;
}
parser(this.analyse(rule)).processSync(rule.selector);
}
/**
* @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule) {
return (selectors) => {
selectors.each((selector) => {
if (
exists(selector, 0, HTML) &&
exists(selector, 1, ':first-child') &&
exists(selector, 2, ' ') &&
selector.at(3)
) {
this.push(rule, {
identifier: SELECTOR,
hack: selector.toString(),
});
}
});
};
}
};
@@ -0,0 +1,25 @@
'use strict';
const BasePlugin = require('../plugin');
const { IE_5_5, IE_6, IE_7 } = require('../dictionary/browsers');
const { DECL } = require('../dictionary/postcss');
module.exports = class Important extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result) {
super([IE_5_5, IE_6, IE_7], [DECL], result);
}
/**
* @param {import('postcss').Declaration} decl
* @return {void}
*/
detect(decl) {
const match = decl.value.match(/!\w/);
if (match && match.index) {
const hack = decl.value.substr(match.index, decl.value.length - 1);
this.push(decl, {
identifier: '!important',
hack,
});
}
}
};
@@ -0,0 +1,28 @@
'use strict';
const bodyEmpty = require('./bodyEmpty');
const htmlCombinatorCommentBody = require('./htmlCombinatorCommentBody');
const htmlFirstChild = require('./htmlFirstChild');
const important = require('./important');
const leadingStar = require('./leadingStar');
const leadingUnderscore = require('./leadingUnderscore');
const mediaSlash0 = require('./mediaSlash0');
const mediaSlash0Slash9 = require('./mediaSlash0Slash9');
const mediaSlash9 = require('./mediaSlash9');
const slash9 = require('./slash9');
const starHtml = require('./starHtml');
const trailingSlashComma = require('./trailingSlashComma');
module.exports = [
bodyEmpty,
htmlCombinatorCommentBody,
htmlFirstChild,
important,
leadingStar,
leadingUnderscore,
mediaSlash0,
mediaSlash0Slash9,
mediaSlash9,
slash9,
starHtml,
trailingSlashComma,
];
@@ -0,0 +1,55 @@
'use strict';
const BasePlugin = require('../plugin');
const { IE_5_5, IE_6, IE_7 } = require('../dictionary/browsers');
const { PROPERTY } = require('../dictionary/identifiers');
const { ATRULE, DECL } = require('../dictionary/postcss');
const hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
module.exports = class LeadingStar extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result) {
super([IE_5_5, IE_6, IE_7], [ATRULE, DECL], result);
}
/**
* @param {import('postcss').Declaration | import('postcss').AtRule} node
* @return {void}
*/
detect(node) {
if (node.type === DECL) {
// some values are not picked up by before, so ensure they are
// at the beginning of the value
hacks.forEach((hack) => {
if (!node.prop.indexOf(hack)) {
this.push(node, {
identifier: PROPERTY,
hack: node.prop,
});
}
});
const { before } = node.raws;
if (!before) {
return;
}
hacks.forEach((hack) => {
if (before.includes(hack)) {
this.push(node, {
identifier: PROPERTY,
hack: `${before.trim()}${node.prop}`,
});
}
});
} else {
// test for the @property: value; hack
const { name } = node;
const len = name.length - 1;
if (name.lastIndexOf(':') === len) {
this.push(node, {
identifier: PROPERTY,
hack: `@${name.substr(0, len)}`,
});
}
}
}
};
@@ -0,0 +1,51 @@
'use strict';
const BasePlugin = require('../plugin');
const { IE_6 } = require('../dictionary/browsers');
const { PROPERTY } = require('../dictionary/identifiers');
const { DECL } = require('../dictionary/postcss');
/**
* @param {string} prop
* @return {string}
*/
function vendorPrefix(prop) {
let match = prop.match(/^(-\w+-)/);
if (match) {
return match[0];
}
return '';
}
module.exports = class LeadingUnderscore extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result) {
super([IE_6], [DECL], result);
}
/**
* @param {import('postcss').Declaration} decl
* @return {void}
*/
detect(decl) {
const { before } = decl.raws;
if (before && before.includes('_')) {
this.push(decl, {
identifier: PROPERTY,
hack: `${before.trim()}${decl.prop}`,
});
}
if (
decl.prop[0] === '-' &&
decl.prop[1] !== '-' &&
vendorPrefix(decl.prop) === ''
) {
this.push(decl, {
identifier: PROPERTY,
hack: decl.prop,
});
}
}
};
@@ -0,0 +1,26 @@
'use strict';
const BasePlugin = require('../plugin');
const { IE_8 } = require('../dictionary/browsers');
const { MEDIA_QUERY } = require('../dictionary/identifiers');
const { ATRULE } = require('../dictionary/postcss');
module.exports = class MediaSlash0 extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result) {
super([IE_8], [ATRULE], result);
}
/**
* @param {import('postcss').AtRule} rule
* @return {void}
*/
detect(rule) {
const params = rule.params.trim();
if (params.toLowerCase() === '\\0screen') {
this.push(rule, {
identifier: MEDIA_QUERY,
hack: params,
});
}
}
};
@@ -0,0 +1,27 @@
'use strict';
const BasePlugin = require('../plugin');
const { IE_5_5, IE_6, IE_7, IE_8 } = require('../dictionary/browsers');
const { MEDIA_QUERY } = require('../dictionary/identifiers');
const { ATRULE } = require('../dictionary/postcss');
module.exports = class MediaSlash0Slash9 extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result) {
super([IE_5_5, IE_6, IE_7, IE_8], [ATRULE], result);
}
/**
* @param {import('postcss').AtRule} rule
* @return {void}
*/
detect(rule) {
const params = rule.params.trim();
if (params.toLowerCase() === '\\0screen\\,screen\\9') {
this.push(rule, {
identifier: MEDIA_QUERY,
hack: params,
});
}
}
};
@@ -0,0 +1,27 @@
'use strict';
const BasePlugin = require('../plugin');
const { IE_5_5, IE_6, IE_7 } = require('../dictionary/browsers');
const { MEDIA_QUERY } = require('../dictionary/identifiers');
const { ATRULE } = require('../dictionary/postcss');
module.exports = class MediaSlash9 extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result) {
super([IE_5_5, IE_6, IE_7], [ATRULE], result);
}
/**
* @param {import('postcss').AtRule} rule
* @return {void}
*/
detect(rule) {
const params = rule.params.trim();
if (params.toLowerCase() === 'screen\\9') {
this.push(rule, {
identifier: MEDIA_QUERY,
hack: params,
});
}
}
};
@@ -0,0 +1,26 @@
'use strict';
const BasePlugin = require('../plugin.js');
const { IE_6, IE_7, IE_8 } = require('../dictionary/browsers');
const { VALUE } = require('../dictionary/identifiers');
const { DECL } = require('../dictionary/postcss');
module.exports = class Slash9 extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result) {
super([IE_6, IE_7, IE_8], [DECL], result);
}
/**
* @param {import('postcss').Declaration} decl
* @return {void}
*/
detect(decl) {
let v = decl.value;
if (v && v.length > 2 && v.indexOf('\\9') === v.length - 2) {
this.push(decl, {
identifier: VALUE,
hack: v,
});
}
}
};
@@ -0,0 +1,50 @@
'use strict';
const parser = require('postcss-selector-parser');
const exists = require('../exists');
const isMixin = require('../isMixin');
const BasePlugin = require('../plugin');
const { IE_5_5, IE_6 } = require('../dictionary/browsers');
const { SELECTOR } = require('../dictionary/identifiers');
const { RULE } = require('../dictionary/postcss');
const { HTML } = require('../dictionary/tags');
module.exports = class StarHtml extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result) {
super([IE_5_5, IE_6], [RULE], result);
}
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule) {
if (isMixin(rule)) {
return;
}
parser(this.analyse(rule)).processSync(rule.selector);
}
/**
* @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule) {
return (selectors) => {
selectors.each((selector) => {
if (
exists(selector, 0, '*') &&
exists(selector, 1, ' ') &&
exists(selector, 2, HTML) &&
exists(selector, 3, ' ') &&
selector.at(4)
) {
this.push(rule, {
identifier: SELECTOR,
hack: selector.toString(),
});
}
});
};
}
};
@@ -0,0 +1,36 @@
'use strict';
const BasePlugin = require('../plugin');
const isMixin = require('../isMixin');
const { IE_5_5, IE_6, IE_7 } = require('../dictionary/browsers');
const { SELECTOR } = require('../dictionary/identifiers');
const { RULE } = require('../dictionary/postcss');
module.exports = class TrailingSlashComma extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result) {
super([IE_5_5, IE_6, IE_7], [RULE], result);
}
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule) {
if (isMixin(rule)) {
return;
}
const { selector } = rule;
const trim = selector.trim();
if (
trim.lastIndexOf(',') === selector.length - 1 ||
trim.lastIndexOf('\\') === selector.length - 1
) {
this.push(rule, {
identifier: SELECTOR,
hack: selector,
});
}
}
};
@@ -0,0 +1,7 @@
export const FF_2: "firefox 2";
export const IE_5_5: "ie 5.5";
export const IE_6: "ie 6";
export const IE_7: "ie 7";
export const IE_8: "ie 8";
export const OP_9: "opera 9";
//# sourceMappingURL=browsers.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"browsers.d.ts","sourceRoot":"","sources":["../../src/dictionary/browsers.js"],"names":[],"mappings":"AACA,mBAAa,WAAW,CAAC;AACzB,qBAAe,QAAQ,CAAC;AACxB,mBAAa,MAAM,CAAC;AACpB,mBAAa,MAAM,CAAC;AACpB,mBAAa,MAAM,CAAC;AACpB,mBAAa,SAAS,CAAC"}
@@ -0,0 +1,5 @@
export const MEDIA_QUERY: "media query";
export const PROPERTY: "property";
export const SELECTOR: "selector";
export const VALUE: "value";
//# sourceMappingURL=identifiers.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/dictionary/identifiers.js"],"names":[],"mappings":"AACA,0BAAoB,aAAa,CAAC;AAClC,uBAAiB,UAAU,CAAC;AAC5B,uBAAiB,UAAU,CAAC;AAC5B,oBAAc,OAAO,CAAC"}
@@ -0,0 +1,4 @@
export const ATRULE: "atrule";
export const DECL: "decl";
export const RULE: "rule";
//# sourceMappingURL=postcss.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"postcss.d.ts","sourceRoot":"","sources":["../../src/dictionary/postcss.js"],"names":[],"mappings":"AACA,qBAAe,QAAQ,CAAC;AACxB,mBAAa,MAAM,CAAC;AACpB,mBAAa,MAAM,CAAC"}
@@ -0,0 +1,3 @@
export const BODY: "body";
export const HTML: "html";
//# sourceMappingURL=tags.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/dictionary/tags.js"],"names":[],"mappings":"AACA,mBAAa,MAAM,CAAC;AACpB,mBAAa,MAAM,CAAC"}
@@ -0,0 +1,3 @@
declare function _exports(selector: import("postcss-selector-parser").Selector, index: number, value: string): boolean | undefined | "";
export = _exports;
//# sourceMappingURL=exists.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../src/exists.js"],"names":[],"mappings":"AAQiB,oCALN,OAAO,yBAAyB,EAAE,QAAQ,SAC1C,MAAM,SACN,MAAM,GACL,OAAO,GAAG,SAAS,GAAG,EAAE,CAMnC"}
@@ -0,0 +1,26 @@
export = pluginCreator;
/**
* @typedef {{ overrideBrowserslist?: string | string[] }} AutoprefixerOptions
* @typedef {Pick<browserslist.Options, 'stats' | 'path' | 'env'>} BrowserslistOptions
* @typedef {{lint?: boolean} & AutoprefixerOptions & BrowserslistOptions} Options
*/
/**
* @type {import('postcss').PluginCreator<Options>}
* @param {Options} opts
* @return {import('postcss').Plugin}
*/
declare function pluginCreator(opts?: Options): import("postcss").Plugin;
declare namespace pluginCreator {
export { detect, postcss, AutoprefixerOptions, BrowserslistOptions, Options };
}
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">;
type Options = {
lint?: boolean;
} & AutoprefixerOptions & BrowserslistOptions;
import browserslist = require("browserslist");
//# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";AAKA;;;;GAIG;AAEH;;;;GAIG;AACH,sCAHW,OAAO,GACN,OAAO,SAAS,EAAE,MAAM,CA4CnC;;;;AAEU,8BAAO,OAAO,SAAS,EAAE,IAAI,GAAK,OAAO,CAAA;;2BAtDvC;IAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE;2BAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;eACpD;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAC,GAAG,mBAAmB,GAAG,mBAAmB"}
@@ -0,0 +1,3 @@
declare function _exports(node: import("postcss").Rule): boolean;
export = _exports;
//# sourceMappingURL=isMixin.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"isMixin.d.ts","sourceRoot":"","sources":["../src/isMixin.js"],"names":[],"mappings":"AAKiB,gCAHN,OAAO,SAAS,EAAE,IAAI,GACrB,OAAO,CAWlB"}
@@ -0,0 +1,61 @@
export = BasePlugin;
declare class BasePlugin {
/**
* @param {string[]} targets
* @param {string[]} nodeTypes
* @param {import('postcss').Result=} result
*/
constructor(targets: string[], nodeTypes: string[], result?: import("postcss").Result | undefined);
/** @type {NodeWithInfo[]} */
nodes: NodeWithInfo[];
targets: Set<string>;
nodeTypes: Set<string>;
result: import("postcss").Result<import("postcss").Document | import("postcss").Root> | undefined;
/**
* @param {import('postcss').Node} node
* @param {{identifier: string, hack: string}} metadata
* @return {void}
*/
push(node: import("postcss").Node, metadata: {
identifier: string;
hack: string;
}): void;
/**
* @param {import('postcss').Node} node
* @return {boolean}
*/
any(node: import("postcss").Node): boolean;
/**
* @param {import('postcss').Node} node
* @return {void}
*/
detectAndResolve(node: import("postcss").Node): void;
/**
* @param {import('postcss').Node} node
* @return {void}
*/
detectAndWarn(node: import("postcss").Node): void;
/** @param {import('postcss').Node} node */
detect(node: import("postcss").Node): void;
/** @return {void} */
resolve(): void;
warn(): void;
}
declare namespace BasePlugin {
export { Plugin, NodeWithInfo };
}
type Plugin = {
targets: Set<string>;
nodeTypes: Set<string>;
detectAndResolve: (node: import("postcss").Node) => void;
detectAndWarn: (node: import("postcss").Node) => void;
};
type NodeWithInfo = import("postcss").Node & {
_stylehacks: {
message: string;
browsers: Set<string>;
identifier: string;
hack: string;
};
};
//# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.js"],"names":[],"mappings":";AAiBiB;IACf;;;;OAIG;IACH,qBAJW,MAAM,EAAE,aACR,MAAM,EAAE,WACR,OAAO,SAAS,EAAE,MAAM,YAAC,EAQnC;IALC,6BAA6B;IAC7B,OADW,YAAY,EAAE,CACV;IACf,qBAA+B;IAC/B,uBAAmC;IACnC,kGAAoB;IAGtB;;;;OAIG;IACH,WAJW,OAAO,SAAS,EAAE,IAAI,YACtB;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GACjC,IAAI,CAaf;IAED;;;OAGG;IACH,UAHW,OAAO,SAAS,EAAE,IAAI,GACrB,OAAO,CAUlB;IAED;;;OAGG;IACH,uBAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CAQf;IAED;;;OAGG;IACH,oBAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CAQf;IACD,2CAA2C;IAE3C,aAFY,OAAO,SAAS,EAAE,IAAI,QAIjC;IAED,qBAAqB;IACrB,WADa,IAAI,CAGhB;IAED,aASC;CACF;;;;;aAxGS,GAAG,CAAC,MAAM,CAAC;eACX,GAAG,CAAC,MAAM,CAAC;sBACX,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,IAAI,KAAK,IAAI;mBACtC,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,IAAI,KAAK,IAAI;;oBAInC,OAAO,SAAS,EAAE,IAAI,GAAG;IAAC,WAAW,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAC"}
@@ -0,0 +1,18 @@
export = BodyEmpty;
declare class BodyEmpty extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result: import("postcss").Result);
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule: import("postcss").Rule): void;
/**
* @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule: import("postcss").Rule): parser.SyncProcessor<void>;
}
import BasePlugin = require("../plugin");
import parser = require("postcss-selector-parser");
//# sourceMappingURL=bodyEmpty.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"bodyEmpty.d.ts","sourceRoot":"","sources":["../../src/plugins/bodyEmpty.js"],"names":[],"mappings":";AAUiB;IACf,+CAA+C;IAC/C,oBADY,OAAO,SAAS,EAAE,MAAM,EAGnC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CAOf;IAED;;;OAGG;IACH,cAHW,OAAO,SAAS,EAAE,IAAI,GACrB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAkBrC;CACF"}
@@ -0,0 +1,17 @@
export = HtmlCombinatorCommentBody;
declare class HtmlCombinatorCommentBody extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result: import("postcss").Result);
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule: import("postcss").Rule): void;
/** @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule: import("postcss").Rule): parser.SyncProcessor<void>;
}
import BasePlugin = require("../plugin");
import parser = require("postcss-selector-parser");
//# sourceMappingURL=htmlCombinatorCommentBody.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"htmlCombinatorCommentBody.d.ts","sourceRoot":"","sources":["../../src/plugins/htmlCombinatorCommentBody.js"],"names":[],"mappings":";AAUiB;IACf,+CAA+C;IAC/C,oBADY,OAAO,SAAS,EAAE,MAAM,EAGnC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CASf;IAED;;OAEG;IACH,cAHY,OAAO,SAAS,EAAE,IAAI,GACrB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAsBtC;CACF"}
@@ -0,0 +1,18 @@
export = HtmlFirstChild;
declare class HtmlFirstChild extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result: import("postcss").Result);
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule: import("postcss").Rule): void;
/**
* @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule: import("postcss").Rule): parser.SyncProcessor<void>;
}
import BasePlugin = require("../plugin");
import parser = require("postcss-selector-parser");
//# sourceMappingURL=htmlFirstChild.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"htmlFirstChild.d.ts","sourceRoot":"","sources":["../../src/plugins/htmlFirstChild.js"],"names":[],"mappings":";AAUiB;IACf,+CAA+C;IAC/C,oBADY,OAAO,SAAS,EAAE,MAAM,EAGnC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CAQf;IAED;;;OAGG;IACH,cAHW,OAAO,SAAS,EAAE,IAAI,GACrB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAkBrC;CACF"}
@@ -0,0 +1,12 @@
export = Important;
declare class Important extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result?: import("postcss").Result | undefined);
/**
* @param {import('postcss').Declaration} decl
* @return {void}
*/
detect(decl: import("postcss").Declaration): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=important.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"important.d.ts","sourceRoot":"","sources":["../../src/plugins/important.js"],"names":[],"mappings":";AAKiB;IACf,gDAAgD;IAChD,qBADY,OAAO,SAAS,EAAE,MAAM,YAAC,EAGpC;IACD;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,WAAW,GAC5B,IAAI,CAWf;CACF"}
@@ -0,0 +1,9 @@
declare const _exports: ({
new (result?: import("postcss").Result | undefined): important;
} | {
new (result?: import("postcss").Result | undefined): trailingSlashComma;
})[];
export = _exports;
import important = require("./important");
import trailingSlashComma = require("./trailingSlashComma");
//# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.js"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
export = LeadingStar;
declare class LeadingStar extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result?: import("postcss").Result | undefined);
/**
* @param {import('postcss').Declaration | import('postcss').AtRule} node
* @return {void}
*/
detect(node: import("postcss").Declaration | import("postcss").AtRule): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=leadingStar.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"leadingStar.d.ts","sourceRoot":"","sources":["../../src/plugins/leadingStar.js"],"names":[],"mappings":";AAQiB;IACf,gDAAgD;IAChD,qBADY,OAAO,SAAS,EAAE,MAAM,YAAC,EAGpC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,WAAW,GAAG,OAAO,SAAS,EAAE,MAAM,GACvD,IAAI,CAqCf;CACF"}
@@ -0,0 +1,12 @@
export = LeadingUnderscore;
declare class LeadingUnderscore extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result?: import("postcss").Result | undefined);
/**
* @param {import('postcss').Declaration} decl
* @return {void}
*/
detect(decl: import("postcss").Declaration): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=leadingUnderscore.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"leadingUnderscore.d.ts","sourceRoot":"","sources":["../../src/plugins/leadingUnderscore.js"],"names":[],"mappings":";AAmBiB;IACf,gDAAgD;IAChD,qBADY,OAAO,SAAS,EAAE,MAAM,YAAC,EAGpC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,WAAW,GAC5B,IAAI,CAsBf;CACF"}
@@ -0,0 +1,12 @@
export = MediaSlash0;
declare class MediaSlash0 extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result: import("postcss").Result);
/**
* @param {import('postcss').AtRule} rule
* @return {void}
*/
detect(rule: import("postcss").AtRule): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=mediaSlash0.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"mediaSlash0.d.ts","sourceRoot":"","sources":["../../src/plugins/mediaSlash0.js"],"names":[],"mappings":";AAMiB;IACf,+CAA+C;IAC/C,oBADY,OAAO,SAAS,EAAE,MAAM,EAGnC;IACD;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,MAAM,GACvB,IAAI,CAWf;CACF"}
@@ -0,0 +1,12 @@
export = MediaSlash0Slash9;
declare class MediaSlash0Slash9 extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result: import("postcss").Result);
/**
* @param {import('postcss').AtRule} rule
* @return {void}
*/
detect(rule: import("postcss").AtRule): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=mediaSlash0Slash9.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"mediaSlash0Slash9.d.ts","sourceRoot":"","sources":["../../src/plugins/mediaSlash0Slash9.js"],"names":[],"mappings":";AAMiB;IACf,+CAA+C;IAC/C,oBADY,OAAO,SAAS,EAAE,MAAM,EAGnC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,MAAM,GACvB,IAAI,CAWf;CACF"}
@@ -0,0 +1,12 @@
export = MediaSlash9;
declare class MediaSlash9 extends BasePlugin {
/** @param {import('postcss').Result} result */
constructor(result: import("postcss").Result);
/**
* @param {import('postcss').AtRule} rule
* @return {void}
*/
detect(rule: import("postcss").AtRule): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=mediaSlash9.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"mediaSlash9.d.ts","sourceRoot":"","sources":["../../src/plugins/mediaSlash9.js"],"names":[],"mappings":";AAMiB;IACf,+CAA+C;IAC/C,oBADY,OAAO,SAAS,EAAE,MAAM,EAGnC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,MAAM,GACvB,IAAI,CAWf;CACF"}
@@ -0,0 +1,12 @@
export = Slash9;
declare class Slash9 extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result?: import("postcss").Result | undefined);
/**
* @param {import('postcss').Declaration} decl
* @return {void}
*/
detect(decl: import("postcss").Declaration): void;
}
import BasePlugin = require("../plugin.js");
//# sourceMappingURL=slash9.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"slash9.d.ts","sourceRoot":"","sources":["../../src/plugins/slash9.js"],"names":[],"mappings":";AAMiB;IACf,gDAAgD;IAChD,qBADY,OAAO,SAAS,EAAE,MAAM,YAAC,EAGpC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,WAAW,GAC5B,IAAI,CAUf;CACF"}
@@ -0,0 +1,18 @@
export = StarHtml;
declare class StarHtml extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result?: import("postcss").Result | undefined);
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule: import("postcss").Rule): void;
/**
* @param {import('postcss').Rule} rule
* @return {parser.SyncProcessor<void>}
*/
analyse(rule: import("postcss").Rule): parser.SyncProcessor<void>;
}
import BasePlugin = require("../plugin");
import parser = require("postcss-selector-parser");
//# sourceMappingURL=starHtml.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"starHtml.d.ts","sourceRoot":"","sources":["../../src/plugins/starHtml.js"],"names":[],"mappings":";AAUiB;IACf,gDAAgD;IAChD,qBADY,OAAO,SAAS,EAAE,MAAM,YAAC,EAGpC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CAOf;IAED;;;OAGG;IACH,cAHW,OAAO,SAAS,EAAE,IAAI,GACrB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAmBrC;CACF"}
@@ -0,0 +1,12 @@
export = TrailingSlashComma;
declare class TrailingSlashComma extends BasePlugin {
/** @param {import('postcss').Result=} result */
constructor(result?: import("postcss").Result | undefined);
/**
* @param {import('postcss').Rule} rule
* @return {void}
*/
detect(rule: import("postcss").Rule): void;
}
import BasePlugin = require("../plugin");
//# sourceMappingURL=trailingSlashComma.d.ts.map
@@ -0,0 +1 @@
{"version":3,"file":"trailingSlashComma.d.ts","sourceRoot":"","sources":["../../src/plugins/trailingSlashComma.js"],"names":[],"mappings":";AAOiB;IACf,gDAAgD;IAChD,qBADY,OAAO,SAAS,EAAE,MAAM,YAAC,EAGpC;IAED;;;OAGG;IACH,aAHW,OAAO,SAAS,EAAE,IAAI,GACrB,IAAI,CAmBf;CACF"}