@averay/codeformat 0.2.2 → 0.2.4
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/bin/codeformat.d.ts +2 -0
- package/dist/bin/codeformat.js +22 -0
- package/dist/bin/codeformat.js.map +1 -0
- package/dist/bin/tools/eslint.d.ts +13 -0
- package/dist/bin/tools/eslint.js +15 -0
- package/dist/bin/tools/eslint.js.map +1 -0
- package/dist/bin/tools/index.d.ts +5 -0
- package/dist/bin/tools/index.js +6 -0
- package/dist/bin/tools/index.js.map +1 -0
- package/dist/bin/tools/phpCsFixer.d.ts +16 -0
- package/dist/bin/tools/phpCsFixer.js +16 -0
- package/dist/bin/tools/phpCsFixer.js.map +1 -0
- package/dist/bin/tools/prettier.d.ts +13 -0
- package/dist/bin/tools/prettier.js +19 -0
- package/dist/bin/tools/prettier.js.map +1 -0
- package/dist/bin/tools/stylelint.d.ts +13 -0
- package/dist/bin/tools/stylelint.js +15 -0
- package/dist/bin/tools/stylelint.js.map +1 -0
- package/dist/bin/tools/tsc.d.ts +10 -0
- package/dist/bin/tools/tsc.js +11 -0
- package/dist/bin/tools/tsc.js.map +1 -0
- package/dist/bin/utils/Cli.d.ts +20 -0
- package/dist/bin/utils/Cli.js +58 -0
- package/dist/bin/utils/Cli.js.map +1 -0
- package/dist/bin/utils/Output.d.ts +9 -0
- package/dist/bin/utils/Output.js +29 -0
- package/dist/bin/utils/Output.js.map +1 -0
- package/dist/bin/utils/ToolRunner.d.ts +10 -0
- package/dist/bin/utils/ToolRunner.js +49 -0
- package/dist/bin/utils/ToolRunner.js.map +1 -0
- package/dist/bin/utils/filesystem.d.ts +2 -0
- package/dist/bin/utils/filesystem.js +15 -0
- package/dist/bin/utils/filesystem.js.map +1 -0
- package/dist/bin/utils/runners.d.ts +5 -0
- package/dist/bin/utils/runners.js +9 -0
- package/dist/bin/utils/runners.js.map +1 -0
- package/dist/bin/utils/types.d.ts +18 -0
- package/dist/bin/utils/types.js +2 -0
- package/dist/bin/utils/types.js.map +1 -0
- package/dist/lib/convertWarnsToErrors.d.ts +22 -0
- package/dist/lib/convertWarnsToErrors.js +34 -0
- package/dist/lib/convertWarnsToErrors.js.map +1 -0
- package/dist/lib/cssPatterns.d.ts +8 -0
- package/dist/lib/cssPatterns.js +17 -0
- package/dist/lib/cssPatterns.js.map +1 -0
- package/dist/rulesets/eslint/ruleset-shared.d.ts +356 -0
- package/dist/rulesets/eslint/ruleset-shared.js +340 -0
- package/dist/rulesets/eslint/ruleset-shared.js.map +1 -0
- package/dist/rulesets/eslint/ruleset-typescript.d.ts +5 -0
- package/dist/rulesets/eslint/ruleset-typescript.js +232 -0
- package/dist/rulesets/eslint/ruleset-typescript.js.map +1 -0
- package/dist/rulesets/stylelint/ruleset-css.d.ts +20 -0
- package/dist/rulesets/stylelint/ruleset-css.js +34 -0
- package/dist/rulesets/stylelint/ruleset-css.js.map +1 -0
- package/dist/rulesets/stylelint/ruleset-scss.d.ts +27 -0
- package/dist/rulesets/stylelint/ruleset-scss.js +42 -0
- package/dist/rulesets/stylelint/ruleset-scss.js.map +1 -0
- package/dist/src/extensions.d.ts +7 -0
- package/dist/src/extensions.js +7 -0
- package/dist/src/extensions.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/makeEslintConfig.d.ts +13 -0
- package/dist/src/makeEslintConfig.js +80 -0
- package/dist/src/makeEslintConfig.js.map +1 -0
- package/dist/src/makeStylelintConfig.d.ts +64 -0
- package/dist/src/makeStylelintConfig.js +39 -0
- package/dist/src/makeStylelintConfig.js.map +1 -0
- package/lib/cssPatterns.ts +15 -2
- package/package.json +17 -12
- package/rulesets/stylelint/ruleset-css.ts +1 -0
- package/rulesets/stylelint/ruleset-scss.ts +20 -5
- package/src/makeStylelintConfig.ts +2 -1
- package/tsconfig.build.json +13 -0
- package/tsconfig.json +1 -0
- package/types.d.ts +6 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import propertiesOrder from '@averay/css-properties-sort-order';
|
|
2
|
+
import recommended from 'stylelint-config-recommended';
|
|
3
|
+
import standard from 'stylelint-config-standard';
|
|
4
|
+
import patterns from "../../lib/cssPatterns.js";
|
|
5
|
+
export default {
|
|
6
|
+
...recommended.rules,
|
|
7
|
+
...standard.rules,
|
|
8
|
+
// Core rules
|
|
9
|
+
...{
|
|
10
|
+
'color-named': 'never',
|
|
11
|
+
'function-url-no-scheme-relative': true,
|
|
12
|
+
},
|
|
13
|
+
// Disable Prettier conflicts
|
|
14
|
+
...{
|
|
15
|
+
'at-rule-empty-line-before': null,
|
|
16
|
+
'comment-empty-line-before': null,
|
|
17
|
+
'rule-empty-line-before': null,
|
|
18
|
+
},
|
|
19
|
+
// Patterns
|
|
20
|
+
...{
|
|
21
|
+
'container-name-pattern': patterns.bem,
|
|
22
|
+
'custom-media-pattern': patterns.bem,
|
|
23
|
+
'custom-property-pattern': patterns.bem,
|
|
24
|
+
'keyframes-name-pattern': patterns.bem,
|
|
25
|
+
'layer-name-pattern': patterns.bem,
|
|
26
|
+
'selector-class-pattern': patterns.bemWithOptionalUnderscoresPrefix,
|
|
27
|
+
'selector-id-pattern': patterns.kebab,
|
|
28
|
+
},
|
|
29
|
+
// Extensions
|
|
30
|
+
'csstools/use-logical': 'always',
|
|
31
|
+
'order/order': ['custom-properties', 'declarations'],
|
|
32
|
+
'order/properties-order': [propertiesOrder, { unspecified: 'bottomAlphabetical' }],
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=ruleset-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleset-css.js","sourceRoot":"","sources":["../../../rulesets/stylelint/ruleset-css.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mCAAmC,CAAC;AAChE,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AAEjD,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,eAAe;IACb,GAAG,WAAW,CAAC,KAAK;IACpB,GAAG,QAAQ,CAAC,KAAK;IAEjB,aAAa;IACb,GAAG;QACD,aAAa,EAAE,OAAO;QACtB,iCAAiC,EAAE,IAAI;KACxC;IAED,6BAA6B;IAC7B,GAAG;QACD,2BAA2B,EAAE,IAAI;QACjC,2BAA2B,EAAE,IAAI;QACjC,wBAAwB,EAAE,IAAI;KAC/B;IAED,WAAW;IACX,GAAG;QACD,wBAAwB,EAAE,QAAQ,CAAC,GAAG;QACtC,sBAAsB,EAAE,QAAQ,CAAC,GAAG;QACpC,yBAAyB,EAAE,QAAQ,CAAC,GAAG;QACvC,wBAAwB,EAAE,QAAQ,CAAC,GAAG;QACtC,oBAAoB,EAAE,QAAQ,CAAC,GAAG;QAClC,wBAAwB,EAAE,QAAQ,CAAC,gCAAgC;QACnE,qBAAqB,EAAE,QAAQ,CAAC,KAAK;KACtC;IAED,aAAa;IACb,sBAAsB,EAAE,QAAQ;IAChC,aAAa,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;IACpD,wBAAwB,EAAE,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACnF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
'scss/at-if-no-null': null;
|
|
3
|
+
'container-name-pattern': string;
|
|
4
|
+
'custom-media-pattern': string;
|
|
5
|
+
'custom-property-pattern': string;
|
|
6
|
+
'keyframes-name-pattern': string;
|
|
7
|
+
'layer-name-pattern': string;
|
|
8
|
+
'scss/at-function-pattern': string;
|
|
9
|
+
'scss/at-mixin-pattern': string;
|
|
10
|
+
'scss/dollar-variable-pattern': string;
|
|
11
|
+
'scss/percent-placeholder-pattern': string;
|
|
12
|
+
'scss/at-else-closing-brace-newline-after': null;
|
|
13
|
+
'scss/at-else-closing-brace-space-after': null;
|
|
14
|
+
'scss/at-else-empty-line-before': null;
|
|
15
|
+
'scss/at-else-if-parentheses-space-before': null;
|
|
16
|
+
'scss/at-function-parentheses-space-before': null;
|
|
17
|
+
'scss/at-if-closing-brace-newline-after': null;
|
|
18
|
+
'scss/at-if-closing-brace-space-after': null;
|
|
19
|
+
'scss/at-mixin-parentheses-space-before': null;
|
|
20
|
+
'scss/dollar-variable-colon-newline-after': null;
|
|
21
|
+
'scss/dollar-variable-colon-space-after': null;
|
|
22
|
+
'scss/dollar-variable-colon-space-before': null;
|
|
23
|
+
'scss/operator-no-newline-after': null;
|
|
24
|
+
'scss/operator-no-newline-before': null;
|
|
25
|
+
'scss/operator-no-unspaced': null;
|
|
26
|
+
};
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import recommended from 'stylelint-config-recommended-scss';
|
|
2
|
+
import standard from 'stylelint-config-standard-scss';
|
|
3
|
+
import patterns, { patternOrScssInterpolation } from "../../lib/cssPatterns.js";
|
|
4
|
+
export default {
|
|
5
|
+
...recommended.rules,
|
|
6
|
+
...standard.rules,
|
|
7
|
+
// Disable Prettier conflicts
|
|
8
|
+
...{
|
|
9
|
+
'scss/at-else-closing-brace-newline-after': null,
|
|
10
|
+
'scss/at-else-closing-brace-space-after': null,
|
|
11
|
+
'scss/at-else-empty-line-before': null,
|
|
12
|
+
'scss/at-else-if-parentheses-space-before': null,
|
|
13
|
+
'scss/at-function-parentheses-space-before': null,
|
|
14
|
+
'scss/at-if-closing-brace-newline-after': null,
|
|
15
|
+
'scss/at-if-closing-brace-space-after': null,
|
|
16
|
+
'scss/at-mixin-parentheses-space-before': null,
|
|
17
|
+
'scss/dollar-variable-colon-newline-after': null,
|
|
18
|
+
'scss/dollar-variable-colon-space-after': null,
|
|
19
|
+
'scss/dollar-variable-colon-space-before': null,
|
|
20
|
+
'scss/operator-no-newline-after': null,
|
|
21
|
+
'scss/operator-no-newline-before': null,
|
|
22
|
+
'scss/operator-no-unspaced': null,
|
|
23
|
+
},
|
|
24
|
+
// Naming patterns
|
|
25
|
+
...{
|
|
26
|
+
'scss/at-function-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
27
|
+
'scss/at-mixin-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
28
|
+
'scss/dollar-variable-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
29
|
+
'scss/percent-placeholder-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
30
|
+
},
|
|
31
|
+
// Support interpolation for @ keywords
|
|
32
|
+
...{
|
|
33
|
+
'container-name-pattern': patternOrScssInterpolation(patterns.bem),
|
|
34
|
+
'custom-media-pattern': patternOrScssInterpolation(patterns.bem),
|
|
35
|
+
'custom-property-pattern': patternOrScssInterpolation(patterns.bem),
|
|
36
|
+
'keyframes-name-pattern': patternOrScssInterpolation(patterns.bem),
|
|
37
|
+
'layer-name-pattern': patternOrScssInterpolation(patterns.bem),
|
|
38
|
+
},
|
|
39
|
+
// Customise rulesets
|
|
40
|
+
'scss/at-if-no-null': null,
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=ruleset-scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleset-scss.js","sourceRoot":"","sources":["../../../rulesets/stylelint/ruleset-scss.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,mCAAmC,CAAC;AAC5D,OAAO,QAAQ,MAAM,gCAAgC,CAAC;AAEtD,OAAO,QAAQ,EAAE,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEhF,eAAe;IACb,GAAG,WAAW,CAAC,KAAK;IACpB,GAAG,QAAQ,CAAC,KAAK;IAEjB,6BAA6B;IAC7B,GAAG;QACD,0CAA0C,EAAE,IAAI;QAChD,wCAAwC,EAAE,IAAI;QAC9C,gCAAgC,EAAE,IAAI;QACtC,0CAA0C,EAAE,IAAI;QAChD,2CAA2C,EAAE,IAAI;QACjD,wCAAwC,EAAE,IAAI;QAC9C,sCAAsC,EAAE,IAAI;QAC5C,wCAAwC,EAAE,IAAI;QAC9C,0CAA0C,EAAE,IAAI;QAChD,wCAAwC,EAAE,IAAI;QAC9C,yCAAyC,EAAE,IAAI;QAC/C,gCAAgC,EAAE,IAAI;QACtC,iCAAiC,EAAE,IAAI;QACvC,2BAA2B,EAAE,IAAI;KAClC;IAED,kBAAkB;IAClB,GAAG;QACD,0BAA0B,EAAE,QAAQ,CAAC,qCAAqC;QAC1E,uBAAuB,EAAE,QAAQ,CAAC,qCAAqC;QACvE,8BAA8B,EAAE,QAAQ,CAAC,qCAAqC;QAC9E,kCAAkC,EAAE,QAAQ,CAAC,qCAAqC;KACnF;IAED,uCAAuC;IACvC,GAAG;QACD,wBAAwB,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClE,sBAAsB,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChE,yBAAyB,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnE,wBAAwB,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClE,oBAAoB,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC/D;IAED,qBAAqB;IACrB,oBAAoB,EAAE,IAAI;CAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/extensions.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IAC9C,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IAE9C,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,IAAI,EAAE,CAAC,MAAM,CAAC;CACoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as globals } from 'globals';
|
|
2
|
+
export { default as extensions } from "./extensions.js";
|
|
3
|
+
export { default as makeEslintConfig } from "./makeEslintConfig.js";
|
|
4
|
+
export { default as makeStylelintConfig } from "./makeStylelintConfig.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type TSESLint } from '@typescript-eslint/utils';
|
|
2
|
+
interface Options {
|
|
3
|
+
/** The ECMA version to use. */
|
|
4
|
+
ecmaVersion?: TSESLint.FlatConfig.EcmaVersion;
|
|
5
|
+
/** The relative path to the project's `tsconfig.json` file. */
|
|
6
|
+
tsconfigPath?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @param options Project-specific customisations.
|
|
10
|
+
* @returns The complete ESLint config.
|
|
11
|
+
*/
|
|
12
|
+
export default function makeEslintConfig({ ecmaVersion, tsconfigPath, }?: Options): TSESLint.FlatConfig.Config[];
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* eslint sort-keys: "error" -- Organise rules */
|
|
2
|
+
import stylisticPlugin from '@stylistic/eslint-plugin';
|
|
3
|
+
import typescriptPlugin from '@typescript-eslint/eslint-plugin';
|
|
4
|
+
import typescriptParser from '@typescript-eslint/parser';
|
|
5
|
+
import prettierConfig from 'eslint-config-prettier';
|
|
6
|
+
import eslintCommentsPlugin from 'eslint-plugin-eslint-comments';
|
|
7
|
+
import importPlugin from 'eslint-plugin-import';
|
|
8
|
+
import jsdocPlugin from 'eslint-plugin-jsdoc';
|
|
9
|
+
import promisePlugin from 'eslint-plugin-promise';
|
|
10
|
+
import regexpPlugin from 'eslint-plugin-regexp';
|
|
11
|
+
import sonarjsPlugin from 'eslint-plugin-sonarjs';
|
|
12
|
+
import unicornPlugin from 'eslint-plugin-unicorn';
|
|
13
|
+
import convertWarnsToErrors from "../lib/convertWarnsToErrors.js";
|
|
14
|
+
import rulesetEslintShared from "../rulesets/eslint/ruleset-shared.js";
|
|
15
|
+
import rulesetEslintTypescript, { moduleDeclarations as rulesetEslintTypescriptModuleDeclarations, } from "../rulesets/eslint/ruleset-typescript.js";
|
|
16
|
+
import extensions from "./extensions.js";
|
|
17
|
+
/**
|
|
18
|
+
* @param options Project-specific customisations.
|
|
19
|
+
* @returns The complete ESLint config.
|
|
20
|
+
*/
|
|
21
|
+
export default function makeEslintConfig({ ecmaVersion = 'latest', tsconfigPath, } = {}) {
|
|
22
|
+
return [
|
|
23
|
+
// JavaScript & TypeScript
|
|
24
|
+
{
|
|
25
|
+
files: [`**/*.{${[...extensions.js, ...extensions.ts].join(',')}}`],
|
|
26
|
+
languageOptions: {
|
|
27
|
+
parserOptions: {
|
|
28
|
+
ecmaVersion,
|
|
29
|
+
sourceType: 'module',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
linterOptions: {
|
|
33
|
+
reportUnusedDisableDirectives: true,
|
|
34
|
+
},
|
|
35
|
+
plugins: {
|
|
36
|
+
'@stylistic': stylisticPlugin,
|
|
37
|
+
'eslint-comments': eslintCommentsPlugin,
|
|
38
|
+
import: importPlugin,
|
|
39
|
+
jsdoc: jsdocPlugin,
|
|
40
|
+
promise: promisePlugin,
|
|
41
|
+
regexp: regexpPlugin,
|
|
42
|
+
sonarjs: sonarjsPlugin,
|
|
43
|
+
unicorn: unicornPlugin,
|
|
44
|
+
},
|
|
45
|
+
rules: convertWarnsToErrors(rulesetEslintShared),
|
|
46
|
+
settings: {
|
|
47
|
+
'import/parsers': {
|
|
48
|
+
espree: extensions.js.map((extension) => `.${extension}`),
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
// TypeScript
|
|
53
|
+
{
|
|
54
|
+
files: [`**/*.{${extensions.ts.join(',')}}`],
|
|
55
|
+
languageOptions: {
|
|
56
|
+
parser: typescriptParser,
|
|
57
|
+
parserOptions: tsconfigPath == null ? {} : { project: tsconfigPath },
|
|
58
|
+
},
|
|
59
|
+
plugins: {
|
|
60
|
+
'@typescript-eslint': typescriptPlugin,
|
|
61
|
+
},
|
|
62
|
+
rules: convertWarnsToErrors(rulesetEslintTypescript),
|
|
63
|
+
settings: {
|
|
64
|
+
...importPlugin.configs.typescript.settings,
|
|
65
|
+
'import/parsers': {
|
|
66
|
+
'@typescript-eslint/parser': extensions.ts.map((extension) => `.${extension}`),
|
|
67
|
+
},
|
|
68
|
+
'import/resolver': {
|
|
69
|
+
'eslint-import-resolver-typescript': tsconfigPath == null ? {} : { project: tsconfigPath },
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
files: ['**/*.d.ts'],
|
|
75
|
+
rules: rulesetEslintTypescriptModuleDeclarations,
|
|
76
|
+
},
|
|
77
|
+
prettierConfig,
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=makeEslintConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeEslintConfig.js","sourceRoot":"","sources":["../../src/makeEslintConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type Config, type CustomSyntax } from 'stylelint';
|
|
2
|
+
type ConfigRules = Config['rules'];
|
|
3
|
+
/**
|
|
4
|
+
* @returns The complete Stylelint config.
|
|
5
|
+
*/
|
|
6
|
+
export default function makeStylelintConfig(cssRules?: ConfigRules, scssRules?: ConfigRules): {
|
|
7
|
+
defaultSeverity: "error";
|
|
8
|
+
ignoreFiles: string[];
|
|
9
|
+
plugins: import("stylelint").Plugin[];
|
|
10
|
+
reportDescriptionlessDisables: true;
|
|
11
|
+
reportInvalidScopeDisables: true;
|
|
12
|
+
reportNeedlessDisables: true;
|
|
13
|
+
rules: {
|
|
14
|
+
'csstools/use-logical': string;
|
|
15
|
+
'order/order': string[];
|
|
16
|
+
'order/properties-order': (string[] | {
|
|
17
|
+
unspecified: string;
|
|
18
|
+
})[];
|
|
19
|
+
'container-name-pattern': string;
|
|
20
|
+
'custom-media-pattern': string;
|
|
21
|
+
'custom-property-pattern': string;
|
|
22
|
+
'keyframes-name-pattern': string;
|
|
23
|
+
'layer-name-pattern': string;
|
|
24
|
+
'selector-class-pattern': string;
|
|
25
|
+
'selector-id-pattern': string;
|
|
26
|
+
'at-rule-empty-line-before': null;
|
|
27
|
+
'comment-empty-line-before': null;
|
|
28
|
+
'rule-empty-line-before': null;
|
|
29
|
+
'color-named': string;
|
|
30
|
+
'function-url-no-scheme-relative': boolean;
|
|
31
|
+
};
|
|
32
|
+
overrides: {
|
|
33
|
+
customSyntax: CustomSyntax;
|
|
34
|
+
files: string[];
|
|
35
|
+
plugins: import("stylelint").Plugin[];
|
|
36
|
+
rules: {
|
|
37
|
+
'scss/at-if-no-null': null;
|
|
38
|
+
'container-name-pattern': string;
|
|
39
|
+
'custom-media-pattern': string;
|
|
40
|
+
'custom-property-pattern': string;
|
|
41
|
+
'keyframes-name-pattern': string;
|
|
42
|
+
'layer-name-pattern': string;
|
|
43
|
+
'scss/at-function-pattern': string;
|
|
44
|
+
'scss/at-mixin-pattern': string;
|
|
45
|
+
'scss/dollar-variable-pattern': string;
|
|
46
|
+
'scss/percent-placeholder-pattern': string;
|
|
47
|
+
'scss/at-else-closing-brace-newline-after': null;
|
|
48
|
+
'scss/at-else-closing-brace-space-after': null;
|
|
49
|
+
'scss/at-else-empty-line-before': null;
|
|
50
|
+
'scss/at-else-if-parentheses-space-before': null;
|
|
51
|
+
'scss/at-function-parentheses-space-before': null;
|
|
52
|
+
'scss/at-if-closing-brace-newline-after': null;
|
|
53
|
+
'scss/at-if-closing-brace-space-after': null;
|
|
54
|
+
'scss/at-mixin-parentheses-space-before': null;
|
|
55
|
+
'scss/dollar-variable-colon-newline-after': null;
|
|
56
|
+
'scss/dollar-variable-colon-space-after': null;
|
|
57
|
+
'scss/dollar-variable-colon-space-before': null;
|
|
58
|
+
'scss/operator-no-newline-after': null;
|
|
59
|
+
'scss/operator-no-newline-before': null;
|
|
60
|
+
'scss/operator-no-unspaced': null;
|
|
61
|
+
};
|
|
62
|
+
}[];
|
|
63
|
+
};
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint sort-keys: "error" -- Organise rules */
|
|
2
|
+
import postcssScss from 'postcss-scss';
|
|
3
|
+
import orderPlugin from 'stylelint-order';
|
|
4
|
+
import scssPlugin from 'stylelint-scss';
|
|
5
|
+
import useLogicalPlugin from 'stylelint-use-logical';
|
|
6
|
+
import rulesetStylelintCss from "../rulesets/stylelint/ruleset-css.js";
|
|
7
|
+
import rulesetStylelintScss from "../rulesets/stylelint/ruleset-scss.js";
|
|
8
|
+
import extensions from "./extensions.js";
|
|
9
|
+
/**
|
|
10
|
+
* @returns The complete Stylelint config.
|
|
11
|
+
*/
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type,@typescript-eslint/explicit-module-boundary-types -- Preserve specific object shape.
|
|
13
|
+
export default function makeStylelintConfig(cssRules = {}, scssRules = {}) {
|
|
14
|
+
return {
|
|
15
|
+
defaultSeverity: 'error',
|
|
16
|
+
ignoreFiles: ['**/*.min.*'],
|
|
17
|
+
plugins: [orderPlugin, useLogicalPlugin],
|
|
18
|
+
reportDescriptionlessDisables: true,
|
|
19
|
+
reportInvalidScopeDisables: true,
|
|
20
|
+
reportNeedlessDisables: true,
|
|
21
|
+
rules: {
|
|
22
|
+
...rulesetStylelintCss,
|
|
23
|
+
...cssRules,
|
|
24
|
+
},
|
|
25
|
+
// eslint-disable-next-line sort-keys -- Logically positioned.
|
|
26
|
+
overrides: [
|
|
27
|
+
{
|
|
28
|
+
customSyntax: postcssScss,
|
|
29
|
+
files: extensions.scss.map((ext) => `**/*.${ext}`), // Does not support glob braces
|
|
30
|
+
plugins: [scssPlugin],
|
|
31
|
+
rules: {
|
|
32
|
+
...rulesetStylelintScss,
|
|
33
|
+
...scssRules,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=makeStylelintConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeStylelintConfig.js","sourceRoot":"","sources":["../../src/makeStylelintConfig.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAErD,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AACvE,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AAEzE,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAIzC;;GAEG;AACH,iKAAiK;AACjK,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,WAAwB,EAAE,EAAE,YAAyB,EAAE;IACjG,OAAO;QACL,eAAe,EAAE,OAAO;QACxB,WAAW,EAAE,CAAC,YAAY,CAAC;QAC3B,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;QACxC,6BAA6B,EAAE,IAAI;QACnC,0BAA0B,EAAE,IAAI;QAChC,sBAAsB,EAAE,IAAI;QAC5B,KAAK,EAAE;YACL,GAAG,mBAAmB;YACtB,GAAG,QAAQ;SACZ;QAED,8DAA8D;QAC9D,SAAS,EAAE;YACT;gBACE,YAAY,EAAE,WAAsC;gBACpD,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,+BAA+B;gBACnF,OAAO,EAAE,CAAC,UAAU,CAAC;gBACrB,KAAK,EAAE;oBACL,GAAG,oBAAoB;oBACvB,GAAG,SAAS;iBACb;aACF;SACF;KACe,CAAC;AACrB,CAAC"}
|
package/lib/cssPatterns.ts
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
/* eslint require-unicode-regexp: 'off' -- Expressions are passed to Stylelint as strings so cannot use any flags in order to match their behaviour. */
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const patterns = {
|
|
3
4
|
bem: /^[a-z]+(?:(?:-|--|__)[a-z]+)*$/.source,
|
|
4
5
|
bemWithOptionalSingleUnderscorePrefix: /^_?[a-z]+(?:(?:-|--|__)[a-z]+)*$/.source,
|
|
5
6
|
bemWithOptionalUnderscoresPrefix: /^(?:__)?[a-z]+(?:(?:-|--|__)[a-z]+)*$/.source,
|
|
6
7
|
kebab: /^[a-z]+(?:-[a-z]+)*$/.source,
|
|
7
|
-
} satisfies Record<string, string>;
|
|
8
|
+
} as const satisfies Record<string, string>;
|
|
9
|
+
|
|
10
|
+
export function patternOrScssInterpolation(pattern: string): string {
|
|
11
|
+
// Remove anchors
|
|
12
|
+
if (!pattern.startsWith('^') || !pattern.endsWith('$')) {
|
|
13
|
+
throw new Error('Pattern must use both start & end anchors.');
|
|
14
|
+
}
|
|
15
|
+
pattern = pattern.slice(1, -1);
|
|
16
|
+
|
|
17
|
+
return new RegExp(`^(?:#{[^}]+}|${pattern})$`).source;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default patterns;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@averay/codeformat",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"author": "Adam Averay (https://adamaveray.com.au/)",
|
|
5
5
|
"homepage": "https://github.com/adamaveray/codeformat",
|
|
6
6
|
"repository": {
|
|
@@ -13,17 +13,21 @@
|
|
|
13
13
|
"engines": {
|
|
14
14
|
"bun": ">=1.2"
|
|
15
15
|
},
|
|
16
|
-
"source": "./src/index.ts",
|
|
17
16
|
"bin": {
|
|
18
|
-
"codeformat": "bin/codeformat.
|
|
17
|
+
"codeformat": "dist/bin/codeformat.js"
|
|
19
18
|
},
|
|
20
|
-
"main": "
|
|
19
|
+
"main": "dist/src/index.js",
|
|
20
|
+
"types": "dist/src/index.d.ts",
|
|
21
21
|
"scripts": {
|
|
22
|
+
"build": "rm -rf dist && bun run build:tsc && chmod +x dist/bin/*.js",
|
|
23
|
+
"build:tsc": "bun --bun x tsc --project tsconfig.build.json --outDir dist",
|
|
22
24
|
"test": "bun test",
|
|
23
|
-
"format": "bin/codeformat.
|
|
24
|
-
"lint": "bin/codeformat.
|
|
25
|
+
"format": "dist/bin/codeformat.js fix",
|
|
26
|
+
"lint": "dist/bin/codeformat.js check",
|
|
25
27
|
"prepare": "bun --bun x husky",
|
|
26
|
-
"
|
|
28
|
+
"prepack": "bun run build",
|
|
29
|
+
"release": "bun run lint && bun --bun x bumpp && bun publish",
|
|
30
|
+
"watch": "bun run build:tsc --watch"
|
|
27
31
|
},
|
|
28
32
|
"dependencies": {
|
|
29
33
|
"@averay/css-properties-sort-order": "^1.0.3",
|
|
@@ -32,8 +36,8 @@
|
|
|
32
36
|
"@prettier/plugin-php": "^0.22.4",
|
|
33
37
|
"@prettier/plugin-xml": "^3.4.1",
|
|
34
38
|
"@stylistic/eslint-plugin": "^4.4.1",
|
|
35
|
-
"@typescript-eslint/eslint-plugin": "^8.34.
|
|
36
|
-
"@typescript-eslint/parser": "^8.34.
|
|
39
|
+
"@typescript-eslint/eslint-plugin": "^8.34.1",
|
|
40
|
+
"@typescript-eslint/parser": "^8.34.1",
|
|
37
41
|
"eslint-config-prettier": "^10.1.5",
|
|
38
42
|
"eslint-import-resolver-typescript": "^4.4.3",
|
|
39
43
|
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
@@ -41,7 +45,7 @@
|
|
|
41
45
|
"eslint-plugin-jsdoc": "^51.0.1",
|
|
42
46
|
"eslint-plugin-promise": "^7.2.1",
|
|
43
47
|
"eslint-plugin-regexp": "^2.9.0",
|
|
44
|
-
"eslint-plugin-sonarjs": "^3.0.
|
|
48
|
+
"eslint-plugin-sonarjs": "^3.0.3",
|
|
45
49
|
"eslint-plugin-unicorn": "^59.0.1",
|
|
46
50
|
"globals": "^16.2.0",
|
|
47
51
|
"postcss-scss": "^4.0.9",
|
|
@@ -53,11 +57,12 @@
|
|
|
53
57
|
"stylelint-config-standard-scss": "^15.0.1",
|
|
54
58
|
"stylelint-order": "^7.0.0",
|
|
55
59
|
"stylelint-scss": "^6.12.1",
|
|
56
|
-
"
|
|
60
|
+
"stylelint-use-logical": "^2.1.2",
|
|
61
|
+
"typescript-eslint": "^8.34.1"
|
|
57
62
|
},
|
|
58
63
|
"devDependencies": {
|
|
59
64
|
"@types/bun": "latest",
|
|
60
|
-
"bumpp": "^10.
|
|
65
|
+
"bumpp": "^10.2.0",
|
|
61
66
|
"husky": "^9.1.7",
|
|
62
67
|
"typescript": "^5.8.3"
|
|
63
68
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import recommended from 'stylelint-config-recommended-scss';
|
|
2
2
|
import standard from 'stylelint-config-standard-scss';
|
|
3
3
|
|
|
4
|
-
import patterns from '../../lib/cssPatterns.ts';
|
|
4
|
+
import patterns, { patternOrScssInterpolation } from '../../lib/cssPatterns.ts';
|
|
5
5
|
|
|
6
6
|
export default {
|
|
7
7
|
...recommended.rules,
|
|
@@ -25,8 +25,23 @@ export default {
|
|
|
25
25
|
'scss/operator-no-unspaced': null,
|
|
26
26
|
},
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
// Naming patterns
|
|
29
|
+
...{
|
|
30
|
+
'scss/at-function-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
31
|
+
'scss/at-mixin-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
32
|
+
'scss/dollar-variable-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
33
|
+
'scss/percent-placeholder-pattern': patterns.bemWithOptionalSingleUnderscorePrefix,
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// Support interpolation for @ keywords
|
|
37
|
+
...{
|
|
38
|
+
'container-name-pattern': patternOrScssInterpolation(patterns.bem),
|
|
39
|
+
'custom-media-pattern': patternOrScssInterpolation(patterns.bem),
|
|
40
|
+
'custom-property-pattern': patternOrScssInterpolation(patterns.bem),
|
|
41
|
+
'keyframes-name-pattern': patternOrScssInterpolation(patterns.bem),
|
|
42
|
+
'layer-name-pattern': patternOrScssInterpolation(patterns.bem),
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
// Customise rulesets
|
|
46
|
+
'scss/at-if-no-null': null,
|
|
32
47
|
};
|
|
@@ -4,6 +4,7 @@ import postcssScss from 'postcss-scss';
|
|
|
4
4
|
import { type Config, type CustomSyntax } from 'stylelint';
|
|
5
5
|
import orderPlugin from 'stylelint-order';
|
|
6
6
|
import scssPlugin from 'stylelint-scss';
|
|
7
|
+
import useLogicalPlugin from 'stylelint-use-logical';
|
|
7
8
|
|
|
8
9
|
import rulesetStylelintCss from '../rulesets/stylelint/ruleset-css.ts';
|
|
9
10
|
import rulesetStylelintScss from '../rulesets/stylelint/ruleset-scss.ts';
|
|
@@ -20,7 +21,7 @@ export default function makeStylelintConfig(cssRules: ConfigRules = {}, scssRule
|
|
|
20
21
|
return {
|
|
21
22
|
defaultSeverity: 'error',
|
|
22
23
|
ignoreFiles: ['**/*.min.*'],
|
|
23
|
-
plugins: [orderPlugin],
|
|
24
|
+
plugins: [orderPlugin, useLogicalPlugin],
|
|
24
25
|
reportDescriptionlessDisables: true,
|
|
25
26
|
reportInvalidScopeDisables: true,
|
|
26
27
|
reportNeedlessDisables: true,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"module": "Node16",
|
|
6
|
+
"moduleResolution": "Node16",
|
|
7
|
+
"noEmit": false,
|
|
8
|
+
"rewriteRelativeImportExtensions": true,
|
|
9
|
+
"sourceMap": true
|
|
10
|
+
},
|
|
11
|
+
"include": ["bin/**/*.ts", "lib/**/*.ts", "rulesets/**/*.ts", "src/**/*.ts"],
|
|
12
|
+
"exclude": ["**/*.test.ts"]
|
|
13
|
+
}
|
package/tsconfig.json
CHANGED