stylelint-webpack-plugin 2.3.2 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/options.json CHANGED
@@ -1,80 +1,80 @@
1
- {
2
- "type": "object",
3
- "additionalProperties": true,
4
- "properties": {
5
- "context": {
6
- "description": "A string indicating the root of your files.",
7
- "type": "string"
8
- },
9
- "emitError": {
10
- "description": "The errors found will always be emitted, to disable set to `false`.",
11
- "type": "boolean"
12
- },
13
- "emitWarning": {
14
- "description": "The warnings found will always be emitted, to disable set to `false`.",
15
- "type": "boolean"
16
- },
17
- "exclude": {
18
- "description": "Specify the files and/or directories to exclude. Must be relative to `options.context`.",
19
- "anyOf": [{ "type": "string" }, { "type": "array" }]
20
- },
21
- "extensions": {
22
- "description": "Specify extensions that should be checked.",
23
- "anyOf": [{ "type": "string" }, { "type": "array" }]
24
- },
25
- "failOnError": {
26
- "description": "Will cause the module build to fail if there are any errors, to disable set to `false`.",
27
- "type": "boolean"
28
- },
29
- "failOnWarning": {
30
- "description": "Will cause the module build to fail if there are any warnings, if set to `true`.",
31
- "type": "boolean"
32
- },
33
- "files": {
34
- "description": "Specify directories, files, or globs. Must be relative to `options.context`. Directories are traveresed recursively looking for files matching `options.extensions`. File and glob patterns ignore `options.extensions`.",
35
- "anyOf": [{ "type": "string" }, { "type": "array" }]
36
- },
37
- "formatter": {
38
- "description": "Specify the formatter that you would like to use to format your results.",
39
- "anyOf": [{ "type": "string" }, { "instanceof": "Function" }]
40
- },
41
- "lintDirtyModulesOnly": {
42
- "description": "Lint only changed files, skip lint on start.",
43
- "type": "boolean"
44
- },
45
- "quiet": {
46
- "description": "Will process and report errors only and ignore warnings, if set to `true`.",
47
- "type": "boolean"
48
- },
49
- "stylelintPath": {
50
- "description": "Path to `stylelint` instance that will be used for linting.",
51
- "type": "string"
52
- },
53
- "outputReport": {
54
- "description": "Write the output of the errors to a file, for example a `json` file for use for reporting.",
55
- "anyOf": [
56
- {
57
- "type": "boolean"
58
- },
59
- {
60
- "type": "object",
61
- "additionalProperties": false,
62
- "properties": {
63
- "filePath": {
64
- "description": "The `filePath` is relative to the webpack config: `output.path`.",
65
- "anyOf": [{ "type": "string" }]
66
- },
67
- "formatter": {
68
- "description": "You can pass in a different formatter for the output file, if none is passed in the default/configured formatter will be used.",
69
- "anyOf": [{ "type": "string" }, { "instanceof": "Function" }]
70
- }
71
- }
72
- }
73
- ]
74
- },
75
- "threads": {
76
- "description": "Set to true for an auto-selected pool size based on number of cpus. Set to a number greater than 1 to set an explicit pool size. Set to false, 1, or less to disable and only run in main process.",
77
- "anyOf": [{ "type": "number" }, { "type": "boolean" }]
78
- }
79
- }
80
- }
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": true,
4
+ "properties": {
5
+ "context": {
6
+ "description": "A string indicating the root of your files.",
7
+ "type": "string"
8
+ },
9
+ "emitError": {
10
+ "description": "The errors found will always be emitted, to disable set to `false`.",
11
+ "type": "boolean"
12
+ },
13
+ "emitWarning": {
14
+ "description": "The warnings found will always be emitted, to disable set to `false`.",
15
+ "type": "boolean"
16
+ },
17
+ "exclude": {
18
+ "description": "Specify the files and/or directories to exclude. Must be relative to `options.context`.",
19
+ "anyOf": [{ "type": "string" }, { "type": "array" }]
20
+ },
21
+ "extensions": {
22
+ "description": "Specify extensions that should be checked.",
23
+ "anyOf": [{ "type": "string" }, { "type": "array" }]
24
+ },
25
+ "failOnError": {
26
+ "description": "Will cause the module build to fail if there are any errors, to disable set to `false`.",
27
+ "type": "boolean"
28
+ },
29
+ "failOnWarning": {
30
+ "description": "Will cause the module build to fail if there are any warnings, if set to `true`.",
31
+ "type": "boolean"
32
+ },
33
+ "files": {
34
+ "description": "Specify directories, files, or globs. Must be relative to `options.context`. Directories are traveresed recursively looking for files matching `options.extensions`. File and glob patterns ignore `options.extensions`.",
35
+ "anyOf": [{ "type": "string" }, { "type": "array" }]
36
+ },
37
+ "formatter": {
38
+ "description": "Specify the formatter that you would like to use to format your results.",
39
+ "anyOf": [{ "type": "string" }, { "instanceof": "Function" }]
40
+ },
41
+ "lintDirtyModulesOnly": {
42
+ "description": "Lint only changed files, skip lint on start.",
43
+ "type": "boolean"
44
+ },
45
+ "quiet": {
46
+ "description": "Will process and report errors only and ignore warnings, if set to `true`.",
47
+ "type": "boolean"
48
+ },
49
+ "stylelintPath": {
50
+ "description": "Path to `stylelint` instance that will be used for linting.",
51
+ "type": "string"
52
+ },
53
+ "outputReport": {
54
+ "description": "Write the output of the errors to a file, for example a `json` file for use for reporting.",
55
+ "anyOf": [
56
+ {
57
+ "type": "boolean"
58
+ },
59
+ {
60
+ "type": "object",
61
+ "additionalProperties": false,
62
+ "properties": {
63
+ "filePath": {
64
+ "description": "The `filePath` is relative to the webpack config: `output.path`.",
65
+ "anyOf": [{ "type": "string" }]
66
+ },
67
+ "formatter": {
68
+ "description": "You can pass in a different formatter for the output file, if none is passed in the default/configured formatter will be used.",
69
+ "anyOf": [{ "type": "string" }, { "instanceof": "Function" }]
70
+ }
71
+ }
72
+ }
73
+ ]
74
+ },
75
+ "threads": {
76
+ "description": "Set to true for an auto-selected pool size based on number of cpus. Set to a number greater than 1 to set an explicit pool size. Set to false, 1, or less to disable and only run in main process.",
77
+ "anyOf": [{ "type": "number" }, { "type": "boolean" }]
78
+ }
79
+ }
80
+ }
package/dist/utils.js CHANGED
@@ -1,56 +1,45 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.jsonStringifyReplacerSortKeys = void 0;
7
- exports.parseFiles = parseFiles;
8
- exports.parseFoldersToGlobs = parseFoldersToGlobs;
3
+ const {
4
+ resolve
5
+ } = require('path');
9
6
 
10
- var _path = require("path");
7
+ const {
8
+ statSync
9
+ } = require('fs');
11
10
 
12
- var _fs = require("fs");
11
+ const normalizePath = require('normalize-path');
13
12
 
14
- var _normalizePath = _interopRequireDefault(require("normalize-path"));
15
-
16
- var _arrify = _interopRequireDefault(require("arrify"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const arrify = require('arrify');
14
+ /**
15
+ * @param {string|(string|undefined)[]} files
16
+ * @param {string} context
17
+ * @returns {string[]}
18
+ */
19
19
 
20
- // @ts-ignore
21
- // @ts-ignore
22
20
 
23
- /**
24
- * @param {string|(string|undefined)[]} files
25
- * @param {string} context
26
- * @returns {string[]}
27
- */
28
21
  function parseFiles(files, context) {
29
- return (0, _arrify.default)(files).filter((
30
- /** @type {string} */
31
- file) => typeof file === 'string').map((
32
- /** @type {string} */
33
- file) => (0, _normalizePath.default)((0, _path.resolve)(context, file)));
22
+ return arrify(files).filter(file => typeof file === 'string').map(file => normalizePath(resolve(context, file || '')));
34
23
  }
35
- /**
36
- * @param {string|string[]} patterns
37
- * @param {string|string[]} extensions
38
- * @returns {string[]}
24
+ /**
25
+ * @param {string|string[]} patterns
26
+ * @param {string|string[]} extensions
27
+ * @returns {string[]}
39
28
  */
40
29
 
41
30
 
42
31
  function parseFoldersToGlobs(patterns, extensions = []) {
43
- const extensionsList = (0, _arrify.default)(extensions);
32
+ const extensionsList = arrify(extensions);
44
33
  const [prefix, postfix] = extensionsList.length > 1 ? ['{', '}'] : ['', ''];
45
34
  const extensionsGlob = extensionsList.map((
46
35
  /** @type {string} */
47
36
  extension) => extension.replace(/^\./u, '')).join(',');
48
- return (0, _arrify.default)(patterns).map((
37
+ return arrify(patterns).map((
49
38
  /** @type {string} */
50
39
  pattern) => {
51
40
  try {
52
41
  // The patterns are absolute because they are prepended with the context.
53
- const stats = (0, _fs.statSync)(pattern);
42
+ const stats = statSync(pattern);
54
43
  /* istanbul ignore else */
55
44
 
56
45
  if (stats.isDirectory()) {
@@ -62,17 +51,17 @@ function parseFoldersToGlobs(patterns, extensions = []) {
62
51
  return pattern;
63
52
  });
64
53
  }
65
- /**
66
- *
67
- * @param {string} _ key, but unused
68
- * @param {any} value
54
+ /**
55
+ *
56
+ * @param {string} _ key, but unused
57
+ * @param {any} value
69
58
  */
70
59
 
71
60
 
72
61
  const jsonStringifyReplacerSortKeys = (_, value) => {
73
- /**
74
- * @param {{ [x: string]: any; }} sorted
75
- * @param {string | number} key
62
+ /**
63
+ * @param {{ [x: string]: any; }} sorted
64
+ * @param {string | number} key
76
65
  */
77
66
  const insert = (sorted, key) => {
78
67
  // eslint-disable-next-line no-param-reassign
@@ -83,4 +72,8 @@ const jsonStringifyReplacerSortKeys = (_, value) => {
83
72
  return value instanceof Object && !(value instanceof Array) ? Object.keys(value).sort().reduce(insert, {}) : value;
84
73
  };
85
74
 
86
- exports.jsonStringifyReplacerSortKeys = jsonStringifyReplacerSortKeys;
75
+ module.exports = {
76
+ parseFiles,
77
+ parseFoldersToGlobs,
78
+ jsonStringifyReplacerSortKeys
79
+ };
package/dist/worker.js CHANGED
@@ -15,9 +15,9 @@ let stylelint;
15
15
  /** @type {Partial<StylelintOptions>} */
16
16
 
17
17
  let linterOptions;
18
- /**
19
- * @param {Options} options
20
- * @param {Partial<StylelintOptions>} stylelintOptions
18
+ /**
19
+ * @param {Options} options
20
+ * @param {Partial<StylelintOptions>} stylelintOptions
21
21
  */
22
22
 
23
23
  function setup(options, stylelintOptions) {
@@ -25,8 +25,8 @@ function setup(options, stylelintOptions) {
25
25
  linterOptions = stylelintOptions;
26
26
  return stylelint;
27
27
  }
28
- /**
29
- * @param {string | string[]} files
28
+ /**
29
+ * @param {string | string[]} files
30
30
  */
31
31
 
32
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stylelint-webpack-plugin",
3
- "version": "2.3.2",
3
+ "version": "2.4.0",
4
4
  "description": "A Stylelint plugin for webpack",
5
5
  "license": "MIT",
6
6
  "repository": "webpack-contrib/stylelint-webpack-plugin",
@@ -11,16 +11,16 @@
11
11
  "type": "opencollective",
12
12
  "url": "https://opencollective.com/webpack"
13
13
  },
14
- "main": "dist/cjs.js",
15
- "types": "declarations/index.d.ts",
14
+ "main": "dist/index.js",
15
+ "types": "types/index.d.ts",
16
16
  "engines": {
17
17
  "node": ">= 10.13.0"
18
18
  },
19
19
  "scripts": {
20
20
  "start": "npm run build -- -w",
21
- "clean": "del-cli dist declarations",
21
+ "clean": "del-cli dist types",
22
22
  "prebuild": "npm run clean",
23
- "build:types": "tsc --declaration --emitDeclarationOnly --outDir declarations && prettier \"declarations/**/*.ts\" --write",
23
+ "build:types": "tsc --declaration --emitDeclarationOnly --outDir types && prettier \"types/**/*.ts\" --write",
24
24
  "build:code": "cross-env NODE_ENV=production babel src -d dist --copy-files",
25
25
  "build": "npm-run-all -p \"build:**\"",
26
26
  "commitlint": "commitlint --from=master",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "files": [
41
41
  "dist",
42
- "declarations"
42
+ "types"
43
43
  ],
44
44
  "peerDependencies": {
45
45
  "stylelint": "^13.0.0 || ^14.0.0",
@@ -48,15 +48,15 @@
48
48
  "dependencies": {
49
49
  "arrify": "^2.0.1",
50
50
  "globby": "^11.0.4",
51
- "jest-worker": "^27.3.1",
52
- "micromatch": "^4.0.4",
51
+ "jest-worker": "^28.1.0",
52
+ "micromatch": "^4.0.5",
53
53
  "normalize-path": "^3.0.0",
54
54
  "schema-utils": "^3.1.1"
55
55
  },
56
56
  "devDependencies": {
57
- "@babel/cli": "^7.16.0",
58
- "@babel/core": "^7.16.0",
59
- "@babel/preset-env": "^7.16.0",
57
+ "@babel/cli": "^7.17.10",
58
+ "@babel/core": "^7.18.0",
59
+ "@babel/preset-env": "^7.18.0",
60
60
  "@commitlint/cli": "^12.1.4",
61
61
  "@commitlint/config-conventional": "^12.1.4",
62
62
  "@types/fs-extra": "^9.0.13",
@@ -65,26 +65,26 @@
65
65
  "@types/webpack": "^5.28.0",
66
66
  "@webpack-contrib/eslint-config-webpack": "^3.0.0",
67
67
  "babel-eslint": "^10.1.0",
68
- "babel-jest": "^27.3.1",
69
- "chokidar": "^3.5.2",
68
+ "babel-jest": "^28.1.0",
69
+ "chokidar": "^3.5.3",
70
70
  "cross-env": "^7.0.3",
71
- "del": "^6.0.0",
71
+ "del": "^6.1.0",
72
72
  "del-cli": "^3.0.1",
73
73
  "eslint": "^7.32.0",
74
- "eslint-config-prettier": "^8.3.0",
75
- "eslint-plugin-import": "^2.25.2",
74
+ "eslint-config-prettier": "^8.5.0",
75
+ "eslint-plugin-import": "^2.26.0",
76
76
  "file-loader": "^6.2.0",
77
77
  "fs-extra": "^9.1.0",
78
78
  "husky": "^6.0.0",
79
- "jest": "^27.3.1",
80
- "lint-staged": "^10.5.4",
79
+ "jest": "^28.1.0",
80
+ "lint-staged": "^11.2.6",
81
81
  "npm-run-all": "^4.1.5",
82
82
  "postcss-scss": "^3.0.5",
83
- "prettier": "^2.4.1",
84
- "standard-version": "^9.3.2",
85
- "stylelint": "^14.0.1",
86
- "typescript": "^4.4.4",
87
- "webpack": "^5.62.1"
83
+ "prettier": "^2.6.2",
84
+ "standard-version": "^9.5.0",
85
+ "stylelint": "^14.8.2",
86
+ "typescript": "^4.6.4",
87
+ "webpack": "^5.72.1"
88
88
  },
89
89
  "keywords": [
90
90
  "stylelint",
@@ -0,0 +1,8 @@
1
+ export = StylelintError;
2
+ declare class StylelintError extends Error {
3
+ /**
4
+ * @param {string=} messages
5
+ */
6
+ constructor(messages?: string | undefined);
7
+ stack: string;
8
+ }
@@ -1,14 +1,34 @@
1
1
  /// <reference types="stylelint" />
2
+ export = getStylelint;
2
3
  /**
3
4
  * @param {string|undefined} key
4
5
  * @param {Options} options
5
6
  * @returns {Linter}
6
7
  */
7
- export default function getStylelint(
8
+ declare function getStylelint(
8
9
  key: string | undefined,
9
10
  { threads, ...options }: Options
10
11
  ): Linter;
11
- export type Stylelint = import('postcss').PluginCreator<
12
+ declare namespace getStylelint {
13
+ export {
14
+ Stylelint,
15
+ LintResult,
16
+ Options,
17
+ AsyncTask,
18
+ LintTask,
19
+ Linter,
20
+ Worker,
21
+ };
22
+ }
23
+ type Options = import('./options').Options;
24
+ type Linter = {
25
+ api: import('stylelint').InternalApi;
26
+ stylelint: Stylelint;
27
+ lintFiles: LintTask;
28
+ cleanup: AsyncTask;
29
+ threads: number;
30
+ };
31
+ type Stylelint = import('postcss').PluginCreator<
12
32
  import('stylelint').PostcssPluginOptions
13
33
  > & {
14
34
  lint: (
@@ -30,6 +50,15 @@ export type Stylelint = import('postcss').PluginCreator<
30
50
  createLinter: (
31
51
  options: import('stylelint').LinterOptions
32
52
  ) => import('stylelint').InternalApi;
53
+ resolveConfig: (
54
+ filePath: string,
55
+ options?:
56
+ | Pick<
57
+ import('stylelint').LinterOptions,
58
+ 'cwd' | 'config' | 'configFile' | 'configBasedir'
59
+ >
60
+ | undefined
61
+ ) => Promise<import('stylelint').Config | undefined>;
33
62
  utils: {
34
63
  report: (problem: import('stylelint').Problem) => void;
35
64
  ruleMessages: <
@@ -54,17 +83,10 @@ export type Stylelint = import('postcss').PluginCreator<
54
83
  ) => void;
55
84
  };
56
85
  };
57
- export type LintResult = import('stylelint').LintResult;
58
- export type Options = import('./options').Options;
59
- export type AsyncTask = () => Promise<void>;
60
- export type LintTask = (files: string | string[]) => Promise<LintResult[]>;
61
- export type Worker = JestWorker & {
86
+ type LintResult = import('stylelint').LintResult;
87
+ type AsyncTask = () => Promise<void>;
88
+ type LintTask = (files: string | string[]) => Promise<LintResult[]>;
89
+ type Worker = JestWorker & {
62
90
  lintFiles: LintTask;
63
91
  };
64
- export type Linter = {
65
- stylelint: Stylelint;
66
- lintFiles: LintTask;
67
- cleanup: AsyncTask;
68
- threads: number;
69
- };
70
92
  import { Worker as JestWorker } from 'jest-worker';
@@ -1,13 +1,4 @@
1
- export default StylelintWebpackPlugin;
2
- export type Compiler = import('webpack').Compiler;
3
- export type Module = import('webpack').Module;
4
- export type Options = import('./options').Options;
5
- export type FileSystemInfoEntry = Partial<
6
- | {
7
- timestamp: number;
8
- }
9
- | number
10
- >;
1
+ export = StylelintWebpackPlugin;
11
2
  declare class StylelintWebpackPlugin {
12
3
  /**
13
4
  * @param {Options} options
@@ -17,8 +8,16 @@ declare class StylelintWebpackPlugin {
17
8
  options: Partial<import('./options').PluginOptions>;
18
9
  /**
19
10
  * @param {Compiler} compiler
11
+ * @param {Options} options
12
+ * @param {string[]} wanted
13
+ * @param {string[]} exclude
20
14
  */
21
- run(compiler: Compiler): Promise<void>;
15
+ run(
16
+ compiler: Compiler,
17
+ options: Options,
18
+ wanted: string[],
19
+ exclude: string[]
20
+ ): Promise<void>;
22
21
  startTime: number;
23
22
  /** @type {ReadonlyMap<string, null | FileSystemInfoEntry | "ignore" | undefined>} */
24
23
  prevTimestamps: ReadonlyMap<
@@ -54,3 +53,15 @@ declare class StylelintWebpackPlugin {
54
53
  >
55
54
  ): string[];
56
55
  }
56
+ declare namespace StylelintWebpackPlugin {
57
+ export { Compiler, Module, Options, FileSystemInfoEntry };
58
+ }
59
+ type Compiler = import('webpack').Compiler;
60
+ type Options = import('./options').Options;
61
+ type FileSystemInfoEntry = Partial<
62
+ | {
63
+ timestamp: number;
64
+ }
65
+ | number
66
+ >;
67
+ type Module = import('webpack').Module;
@@ -1,20 +1,44 @@
1
1
  /// <reference types="stylelint" />
2
+ export = linter;
2
3
  /**
3
4
  * @param {string|undefined} key
4
5
  * @param {Options} options
5
6
  * @param {Compilation} compilation
6
- * @returns {{lint: Linter, report: Reporter, threads: number}}
7
+ * @returns {{api: InternalApi, lint: Linter, report: Reporter, threads: number}}
7
8
  */
8
- export default function linter(
9
+ declare function linter(
9
10
  key: string | undefined,
10
11
  options: Options,
11
12
  compilation: Compilation
12
13
  ): {
14
+ api: InternalApi;
13
15
  lint: Linter;
14
16
  report: Reporter;
15
17
  threads: number;
16
18
  };
17
- export type Stylelint = import('postcss').PluginCreator<
19
+ declare namespace linter {
20
+ export {
21
+ Stylelint,
22
+ LintResult,
23
+ InternalApi,
24
+ Compiler,
25
+ Compilation,
26
+ Options,
27
+ FormatterType,
28
+ FormatterFunction,
29
+ GenerateReport,
30
+ Report,
31
+ Reporter,
32
+ Linter,
33
+ LintResultMap,
34
+ };
35
+ }
36
+ type Options = import('./options').Options;
37
+ type Compilation = import('webpack').Compilation;
38
+ type InternalApi = import('stylelint').InternalApi;
39
+ type Linter = (files: string | string[]) => void;
40
+ type Reporter = () => Promise<Report>;
41
+ type Stylelint = import('postcss').PluginCreator<
18
42
  import('stylelint').PostcssPluginOptions
19
43
  > & {
20
44
  lint: (
@@ -36,6 +60,15 @@ export type Stylelint = import('postcss').PluginCreator<
36
60
  createLinter: (
37
61
  options: import('stylelint').LinterOptions
38
62
  ) => import('stylelint').InternalApi;
63
+ resolveConfig: (
64
+ filePath: string,
65
+ options?:
66
+ | Pick<
67
+ import('stylelint').LinterOptions,
68
+ 'cwd' | 'config' | 'configFile' | 'configBasedir'
69
+ >
70
+ | undefined
71
+ ) => Promise<import('stylelint').Config | undefined>;
39
72
  utils: {
40
73
  report: (problem: import('stylelint').Problem) => void;
41
74
  ruleMessages: <
@@ -60,21 +93,17 @@ export type Stylelint = import('postcss').PluginCreator<
60
93
  ) => void;
61
94
  };
62
95
  };
63
- export type LintResult = import('stylelint').LintResult;
64
- export type Compiler = import('webpack').Compiler;
65
- export type Compilation = import('webpack').Compilation;
66
- export type Options = import('./options').Options;
67
- export type FormatterType = import('./options').FormatterType;
68
- export type FormatterFunction = (results: LintResult[]) => string;
69
- export type GenerateReport = (compilation: Compilation) => Promise<void>;
70
- export type Report = {
96
+ type LintResult = import('stylelint').LintResult;
97
+ type Compiler = import('webpack').Compiler;
98
+ type FormatterType = import('./options').FormatterType;
99
+ type FormatterFunction = (results: LintResult[]) => string;
100
+ type GenerateReport = (compilation: Compilation) => Promise<void>;
101
+ type Report = {
71
102
  errors?: StylelintError;
72
103
  warnings?: StylelintError;
73
104
  generateReportAsset?: GenerateReport;
74
105
  };
75
- export type Reporter = () => Promise<Report>;
76
- export type Linter = (files: string | string[]) => void;
77
- export type LintResultMap = {
106
+ type LintResultMap = {
78
107
  [files: string]: import('stylelint').LintResult;
79
108
  };
80
- import StylelintError from './StylelintError';
109
+ import StylelintError = require('./StylelintError');