@culur/config-stylelint 1.0.4 → 1.1.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.
Files changed (142) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +18 -0
  3. package/dist/chunk-25GAG7VZ.cjs +14 -0
  4. package/dist/chunk-25GAG7VZ.cjs.map +1 -0
  5. package/dist/chunk-3EXGA24H.cjs +14 -0
  6. package/dist/chunk-3EXGA24H.cjs.map +1 -0
  7. package/dist/chunk-5B6KVSBM.cjs +21 -0
  8. package/dist/chunk-5B6KVSBM.cjs.map +1 -0
  9. package/dist/chunk-6KBIBHQC.js +17 -0
  10. package/dist/chunk-6KBIBHQC.js.map +1 -0
  11. package/dist/chunk-6TFCLJEL.js +12 -0
  12. package/dist/chunk-6TFCLJEL.js.map +1 -0
  13. package/dist/chunk-7GVP73HJ.js +12 -0
  14. package/dist/chunk-7GVP73HJ.js.map +1 -0
  15. package/dist/chunk-7HEUVQEH.cjs +14 -0
  16. package/dist/chunk-7HEUVQEH.cjs.map +1 -0
  17. package/dist/chunk-7MXAEVIH.js +12 -0
  18. package/dist/chunk-7MXAEVIH.js.map +1 -0
  19. package/dist/chunk-A7OLAKMM.cjs +15 -0
  20. package/dist/chunk-A7OLAKMM.cjs.map +1 -0
  21. package/dist/chunk-BUXFTQGN.js +12 -0
  22. package/dist/chunk-BUXFTQGN.js.map +1 -0
  23. package/dist/chunk-C27K4OM4.js +12 -0
  24. package/dist/chunk-C27K4OM4.js.map +1 -0
  25. package/dist/chunk-C64I73TJ.cjs +14 -0
  26. package/dist/chunk-C64I73TJ.cjs.map +1 -0
  27. package/dist/{index.js → chunk-DCLB4SF5.cjs} +43 -42
  28. package/dist/chunk-DCLB4SF5.cjs.map +1 -0
  29. package/dist/chunk-DHBMZYEQ.js +13 -0
  30. package/dist/chunk-DHBMZYEQ.js.map +1 -0
  31. package/dist/chunk-IYMC4Z7C.js +12 -0
  32. package/dist/chunk-IYMC4Z7C.js.map +1 -0
  33. package/dist/chunk-OGKNAGXF.cjs +14 -0
  34. package/dist/chunk-OGKNAGXF.cjs.map +1 -0
  35. package/dist/chunk-OHYFOP6B.js +12 -0
  36. package/dist/chunk-OHYFOP6B.js.map +1 -0
  37. package/dist/{index.cjs → chunk-RGZTVH2G.js} +42 -45
  38. package/dist/chunk-RGZTVH2G.js.map +1 -0
  39. package/dist/chunk-VILYU6GB.cjs +14 -0
  40. package/dist/chunk-VILYU6GB.cjs.map +1 -0
  41. package/dist/chunk-Y6Z2IDP7.cjs +14 -0
  42. package/dist/chunk-Y6Z2IDP7.cjs.map +1 -0
  43. package/dist/factory.cjs +10 -0
  44. package/dist/factory.cjs.map +1 -0
  45. package/dist/factory.d.cts +6 -0
  46. package/dist/factory.d.ts +6 -0
  47. package/dist/factory.js +4 -0
  48. package/dist/factory.js.map +1 -0
  49. package/dist/magic-string.es-KHKLXHFY.js +1273 -0
  50. package/dist/magic-string.es-KHKLXHFY.js.map +1 -0
  51. package/dist/magic-string.es-Y5KWYA2U.cjs +1279 -0
  52. package/dist/magic-string.es-Y5KWYA2U.cjs.map +1 -0
  53. package/dist/shareable-configs/auto.cjs +11 -0
  54. package/dist/shareable-configs/auto.cjs.map +1 -0
  55. package/dist/shareable-configs/auto.js +5 -0
  56. package/dist/shareable-configs/auto.js.map +1 -0
  57. package/dist/shareable-configs/none.cjs +11 -0
  58. package/dist/shareable-configs/none.cjs.map +1 -0
  59. package/dist/shareable-configs/none.d.cts +5 -0
  60. package/dist/shareable-configs/none.d.ts +5 -0
  61. package/dist/shareable-configs/none.js +5 -0
  62. package/dist/shareable-configs/none.js.map +1 -0
  63. package/dist/shareable-configs/sass-vue.cjs +11 -0
  64. package/dist/shareable-configs/sass-vue.cjs.map +1 -0
  65. package/dist/shareable-configs/sass-vue.d.cts +5 -0
  66. package/dist/shareable-configs/sass-vue.d.ts +5 -0
  67. package/dist/shareable-configs/sass-vue.js +5 -0
  68. package/dist/shareable-configs/sass-vue.js.map +1 -0
  69. package/dist/shareable-configs/sass.cjs +11 -0
  70. package/dist/shareable-configs/sass.cjs.map +1 -0
  71. package/dist/shareable-configs/sass.d.cts +5 -0
  72. package/dist/shareable-configs/sass.d.ts +5 -0
  73. package/dist/shareable-configs/sass.js +5 -0
  74. package/dist/shareable-configs/sass.js.map +1 -0
  75. package/dist/shareable-configs/shareable-configs.test.cjs +15579 -0
  76. package/dist/shareable-configs/shareable-configs.test.cjs.map +1 -0
  77. package/dist/shareable-configs/shareable-configs.test.d.cts +2 -0
  78. package/dist/shareable-configs/shareable-configs.test.d.ts +2 -0
  79. package/dist/shareable-configs/shareable-configs.test.js +15577 -0
  80. package/dist/shareable-configs/shareable-configs.test.js.map +1 -0
  81. package/dist/shareable-configs/tailwind-sass-vue.cjs +11 -0
  82. package/dist/shareable-configs/tailwind-sass-vue.cjs.map +1 -0
  83. package/dist/shareable-configs/tailwind-sass-vue.d.cts +5 -0
  84. package/dist/shareable-configs/tailwind-sass-vue.d.ts +5 -0
  85. package/dist/shareable-configs/tailwind-sass-vue.js +5 -0
  86. package/dist/shareable-configs/tailwind-sass-vue.js.map +1 -0
  87. package/dist/shareable-configs/tailwind-sass.cjs +11 -0
  88. package/dist/shareable-configs/tailwind-sass.cjs.map +1 -0
  89. package/dist/shareable-configs/tailwind-sass.d.cts +5 -0
  90. package/dist/shareable-configs/tailwind-sass.d.ts +5 -0
  91. package/dist/shareable-configs/tailwind-sass.js +5 -0
  92. package/dist/shareable-configs/tailwind-sass.js.map +1 -0
  93. package/dist/shareable-configs/tailwind.cjs +11 -0
  94. package/dist/shareable-configs/tailwind.cjs.map +1 -0
  95. package/dist/shareable-configs/tailwind.d.cts +5 -0
  96. package/dist/shareable-configs/tailwind.d.ts +5 -0
  97. package/dist/shareable-configs/tailwind.js +5 -0
  98. package/dist/shareable-configs/tailwind.js.map +1 -0
  99. package/dist/shareable-configs/vue.cjs +11 -0
  100. package/dist/shareable-configs/vue.cjs.map +1 -0
  101. package/dist/shareable-configs/vue.d.cts +5 -0
  102. package/dist/shareable-configs/vue.d.ts +5 -0
  103. package/dist/shareable-configs/vue.js +5 -0
  104. package/dist/shareable-configs/vue.js.map +1 -0
  105. package/package.json +28 -18
  106. package/src/__tests__/describe-lint-and-fix.ts +8 -17
  107. package/src/__tests__/describe-rule-or-config.ts +19 -28
  108. package/src/__tests__/index.ts +0 -4
  109. package/src/configs/css.test.ts +1 -2
  110. package/src/configs/css.ts +5 -4
  111. package/src/configs/scss.test.ts +1 -2
  112. package/src/configs/scss.ts +3 -2
  113. package/src/configs/shared.test.ts +1 -2
  114. package/src/configs/vue.test.ts +2 -4
  115. package/src/configs/vue.ts +3 -3
  116. package/src/factory.test.ts +27 -13
  117. package/src/factory.ts +5 -6
  118. package/src/rules/at-rule-no-unknown.test.ts +11 -15
  119. package/src/rules/at-rule-no-unknown.ts +7 -7
  120. package/src/rules/declaration-block-no-redundant-longhand-properties.test.ts +2 -7
  121. package/src/rules/dollar-variable-pattern.test.ts +8 -7
  122. package/src/rules/function-no-unknown.test.ts +6 -9
  123. package/src/rules/function-no-unknown.ts +10 -10
  124. package/src/rules/order.test.ts +8 -11
  125. package/src/rules/order.ts +8 -8
  126. package/src/shareable-configs/auto.ts +10 -0
  127. package/src/shareable-configs/none.ts +7 -0
  128. package/src/shareable-configs/sass-vue.ts +7 -0
  129. package/src/shareable-configs/sass.ts +7 -0
  130. package/src/shareable-configs/shareable-configs.test.ts +21 -0
  131. package/src/shareable-configs/tailwind-sass-vue.ts +7 -0
  132. package/src/shareable-configs/tailwind-sass.ts +7 -0
  133. package/src/shareable-configs/tailwind.ts +7 -0
  134. package/src/shareable-configs/vue.ts +7 -0
  135. package/dist/index.cjs.map +0 -1
  136. package/dist/index.js.map +0 -1
  137. package/src/__tests__/mock.ts +0 -34
  138. package/src/__tests__/spy-on-utils-packages.ts +0 -14
  139. package/src/index.test.ts +0 -9
  140. package/src/index.ts +0 -3
  141. /package/dist/{index.d.cts → shareable-configs/auto.d.cts} +0 -0
  142. /package/dist/{index.d.ts → shareable-configs/auto.d.ts} +0 -0
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunk7HEUVQEH_cjs = require('../chunk-7HEUVQEH.cjs');
4
+ require('../chunk-DCLB4SF5.cjs');
5
+ require('../chunk-5B6KVSBM.cjs');
6
+
7
+
8
+
9
+ module.exports = chunk7HEUVQEH_cjs.tailwind_sass_vue_default;
10
+ //# sourceMappingURL=tailwind-sass-vue.cjs.map
11
+ //# sourceMappingURL=tailwind-sass-vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tailwind-sass-vue.cjs"}
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ export { tailwind_sass_vue_default as default } from '../chunk-7GVP73HJ.js';
2
+ import '../chunk-RGZTVH2G.js';
3
+ import '../chunk-6KBIBHQC.js';
4
+ //# sourceMappingURL=tailwind-sass-vue.js.map
5
+ //# sourceMappingURL=tailwind-sass-vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tailwind-sass-vue.js"}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunkOGKNAGXF_cjs = require('../chunk-OGKNAGXF.cjs');
4
+ require('../chunk-DCLB4SF5.cjs');
5
+ require('../chunk-5B6KVSBM.cjs');
6
+
7
+
8
+
9
+ module.exports = chunkOGKNAGXF_cjs.tailwind_sass_default;
10
+ //# sourceMappingURL=tailwind-sass.cjs.map
11
+ //# sourceMappingURL=tailwind-sass.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tailwind-sass.cjs"}
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ export { tailwind_sass_default as default } from '../chunk-6TFCLJEL.js';
2
+ import '../chunk-RGZTVH2G.js';
3
+ import '../chunk-6KBIBHQC.js';
4
+ //# sourceMappingURL=tailwind-sass.js.map
5
+ //# sourceMappingURL=tailwind-sass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tailwind-sass.js"}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunk25GAG7VZ_cjs = require('../chunk-25GAG7VZ.cjs');
4
+ require('../chunk-DCLB4SF5.cjs');
5
+ require('../chunk-5B6KVSBM.cjs');
6
+
7
+
8
+
9
+ module.exports = chunk25GAG7VZ_cjs.tailwind_default;
10
+ //# sourceMappingURL=tailwind.cjs.map
11
+ //# sourceMappingURL=tailwind.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tailwind.cjs"}
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ export { tailwind_default as default } from '../chunk-C27K4OM4.js';
2
+ import '../chunk-RGZTVH2G.js';
3
+ import '../chunk-6KBIBHQC.js';
4
+ //# sourceMappingURL=tailwind.js.map
5
+ //# sourceMappingURL=tailwind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tailwind.js"}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var chunkVILYU6GB_cjs = require('../chunk-VILYU6GB.cjs');
4
+ require('../chunk-DCLB4SF5.cjs');
5
+ require('../chunk-5B6KVSBM.cjs');
6
+
7
+
8
+
9
+ module.exports = chunkVILYU6GB_cjs.vue_default;
10
+ //# sourceMappingURL=vue.cjs.map
11
+ //# sourceMappingURL=vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"vue.cjs"}
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ import * as node_modules_stylelint_types_stylelint from 'node_modules/stylelint/types/stylelint';
2
+
3
+ declare const _default: node_modules_stylelint_types_stylelint.Config;
4
+
5
+ export { _default as default };
@@ -0,0 +1,5 @@
1
+ export { vue_default as default } from '../chunk-BUXFTQGN.js';
2
+ import '../chunk-RGZTVH2G.js';
3
+ import '../chunk-6KBIBHQC.js';
4
+ //# sourceMappingURL=vue.js.map
5
+ //# sourceMappingURL=vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"vue.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@culur/config-stylelint",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Culur's stylelint configuration",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,12 +25,22 @@
25
25
  "exports": {
26
26
  ".": {
27
27
  "import": {
28
- "types": "./dist/index.d.ts",
29
- "default": "./dist/index.js"
28
+ "types": "./dist/shareable-configs/auto.d.ts",
29
+ "default": "./dist/shareable-configs/auto.js"
30
30
  },
31
31
  "require": {
32
- "types": "./dist/index.d.cts",
33
- "default": "./dist/index.cjs"
32
+ "types": "./shareable-configs/auto.d.cts",
33
+ "default": "./dist/shareable-configs/auto.cjs"
34
+ }
35
+ },
36
+ "./*": {
37
+ "import": {
38
+ "types": "./dist/shareable-configs/*.d.ts",
39
+ "default": "./dist/shareable-configs/*.js"
40
+ },
41
+ "require": {
42
+ "types": "./shareable-configs/*.d.cts",
43
+ "default": "./dist/shareable-configs/*.cjs"
34
44
  }
35
45
  },
36
46
  "./factory": {
@@ -66,33 +76,33 @@
66
76
  "node": ">=20"
67
77
  },
68
78
  "dependencies": {
69
- "@culur/utils-packages": "1.0.4",
79
+ "@culur/utils-packages": "1.0.5",
70
80
  "stylelint-config-clean-order": "^6.1.0",
71
81
  "stylelint-config-html": "^1.1.0",
72
82
  "stylelint-config-standard": "^36.0.1",
73
83
  "stylelint-config-standard-scss": "^13.1.0",
74
84
  "stylelint-config-standard-vue": "^1.0.0",
75
85
  "stylelint-order": "^6.0.4",
76
- "stylelint-scss": "^6.4.1",
86
+ "stylelint-scss": "^6.5.1",
77
87
  "stylelint-selector-bem-pattern": "^4.0.0"
78
88
  },
79
89
  "devDependencies": {
80
- "@culur/config-tsup": "1.1.2",
81
- "@culur/config-typescript": "1.0.3",
82
- "@culur/config-vite": "1.0.5",
83
- "@types/node": "^20.14.10",
84
- "@vitest/coverage-v8": "^2.0.2",
85
- "@vitest/ui": "^2.0.2",
90
+ "@culur/config-tsup": "1.1.3",
91
+ "@culur/config-typescript": "1.0.4",
92
+ "@culur/config-vite": "1.0.6",
93
+ "@types/node": "^20.16.2",
94
+ "@vitest/coverage-v8": "^2.0.5",
95
+ "@vitest/ui": "^2.0.5",
86
96
  "dedent": "^1.5.3",
87
- "postcss": "^8.4.39",
97
+ "postcss": "^8.4.41",
88
98
  "postcss-html": "^1.7.0",
89
99
  "postcss-sass": "^0.5.0",
90
100
  "postcss-scss": "^4.0.9",
91
101
  "rimraf": "^6.0.1",
92
- "stylelint": "^16.7.0",
93
- "tsup": "^8.1.0",
94
- "typescript": "^5.5.3",
95
- "vitest": "^2.0.2"
102
+ "stylelint": "^16.9.0",
103
+ "tsup": "^8.2.4",
104
+ "typescript": "^5.5.4",
105
+ "vitest": "^2.0.5"
96
106
  },
97
107
  "peerDependencies": {
98
108
  "stylelint": ">=16.0.0"
@@ -1,10 +1,8 @@
1
1
  import { resolve } from 'node:path';
2
- import type { Awaitable } from 'vitest';
3
- import { afterEach, describe, expect, it, vi } from 'vitest';
4
2
  import type { Config } from 'stylelint';
3
+ import type { Packages } from '@culur/utils-packages';
4
+ import { describe, expect, it } from 'vitest';
5
5
  import stylelint from 'stylelint';
6
- import type { UtilsPackages } from './mock';
7
- import { spyOnUtilsPackages } from './spy-on-utils-packages';
8
6
 
9
7
  type LintAndFixCase = {
10
8
  code: string;
@@ -12,15 +10,14 @@ type LintAndFixCase = {
12
10
  isError?: boolean;
13
11
  ext?: 'css' | 'scss' | 'vue';
14
12
  debug?: boolean;
15
- } & UtilsPackages;
13
+ } & Partial<Packages>;
16
14
 
17
- export function describeLintAndFix(
18
- utilsPackages: typeof import('@culur/utils-packages'),
19
- getConfig: Config | (() => Awaitable<Config>),
20
- testCases: LintAndFixCase[],
15
+ export function describeLintAndFix<TTestCase extends LintAndFixCase>(
16
+ getConfig: Config | ((testCase: TTestCase) => Promise<Config> | Config),
17
+ testCases: TTestCase[],
21
18
  ) {
22
19
  const itName = [
23
- ...(['hasTailwind', 'hasSass', 'hasVue', 'isError'] as const) //
20
+ ...(['tailwind', 'sass', 'vue', 'isError'] as const) //
24
21
  .filter(field => testCases.some(t => typeof t[field] === 'boolean')),
25
22
  ...(['code', 'fixedCode'] as const) //
26
23
  .filter(field => testCases.some(t => typeof t[field] === 'string')),
@@ -29,15 +26,9 @@ export function describeLintAndFix(
29
26
  .join(', ');
30
27
 
31
28
  describe('test lint and fix', () => {
32
- afterEach(() => {
33
- vi.restoreAllMocks();
34
- });
35
-
36
29
  it.each(testCases)(itName, async testCase => {
37
- spyOnUtilsPackages(utilsPackages, testCase);
38
-
39
30
  const config =
40
- typeof getConfig === 'function' ? await getConfig() : getConfig;
31
+ typeof getConfig === 'function' ? await getConfig(testCase) : getConfig;
41
32
 
42
33
  const result = await stylelint.lint({
43
34
  code: testCase.code,
@@ -1,69 +1,60 @@
1
- import type { Awaitable } from 'vitest';
2
- import { afterEach, describe, it, vi } from 'vitest';
1
+ import type { Packages } from '@culur/utils-packages';
3
2
  import type { Config, ConfigRuleSettings } from 'stylelint';
4
- import type { UtilsPackages } from './mock';
5
- import { hasValues, spyOnUtilsPackages } from './spy-on-utils-packages';
3
+ import { describe, it } from 'vitest';
6
4
  import type {
7
5
  ConfigRulePrimaryOption,
8
6
  ConfigRuleSecondaryOptions,
9
7
  } from '~/utils';
10
8
 
11
9
  type Fn<
12
- TTestCase extends UtilsPackages & object,
13
10
  TRuleOrConfig extends
14
11
  | ConfigRuleSettings<ConfigRulePrimaryOption, ConfigRuleSecondaryOptions>
15
12
  | Config,
16
- > = (
17
- ruleOrConfig: TRuleOrConfig,
18
- options: UtilsPackages & TTestCase,
19
- ) => Promise<void> | void;
13
+ TTestCase extends Partial<Packages>,
14
+ > = (rule: TRuleOrConfig, testCase: TTestCase) => Promise<void> | void;
20
15
 
21
- export function describeRuleOrConfigFactory<
16
+ function describeRuleOrConfigFactory<
22
17
  TBaseRuleOrConfig extends
23
18
  | ConfigRuleSettings<ConfigRulePrimaryOption, ConfigRuleSecondaryOptions>
24
19
  | Config,
25
20
  >(describeName: string) {
26
- function describeRuleOrConfig<
21
+ return function describeRuleOrConfig<
27
22
  TRuleOrConfig extends TBaseRuleOrConfig,
28
- TTestCase extends UtilsPackages & object,
23
+ TTestCase extends Partial<Packages>,
29
24
  >(
30
- utilsPackages: typeof import('@culur/utils-packages'),
31
- getRuleOrConfig: (() => Awaitable<TRuleOrConfig>) | TRuleOrConfig,
25
+ getRuleOrConfig:
26
+ | TRuleOrConfig
27
+ | ((
28
+ packages: Partial<Packages>,
29
+ ) => Promise<TRuleOrConfig> | TRuleOrConfig),
32
30
  ...args:
33
- | [testCases: TTestCase[], fn: Fn<TTestCase, TRuleOrConfig>]
34
- | [fn: Fn<TTestCase, TRuleOrConfig>]
31
+ | [testCases: TTestCase[], fn: Fn<TRuleOrConfig, TTestCase>]
32
+ | [fn: Fn<TRuleOrConfig, TTestCase>]
35
33
  ) {
36
34
  const [testCases, fn] =
37
35
  args.length === 2 //
38
36
  ? [...args]
39
- : [[{} as UtilsPackages & TTestCase], ...args];
37
+ : [[{} as TTestCase], ...args];
40
38
 
41
39
  const itName =
42
- hasValues
40
+ (['tailwind', 'sass', 'vue'] as const)
43
41
  .filter(field => testCases.some(t => typeof t[field] === 'boolean'))
44
42
  .map(field => `${field} = $${field}`)
45
43
  .join(', ') || 'default';
46
44
 
47
45
  describe(describeName, () => {
48
- afterEach(() => {
49
- vi.restoreAllMocks();
50
- });
51
-
52
46
  it.each(testCases)(itName, async testCase => {
53
- spyOnUtilsPackages(utilsPackages, testCase);
54
-
55
47
  const ruleOrConfig =
56
48
  typeof getRuleOrConfig === 'function'
57
- ? await getRuleOrConfig()
49
+ ? await getRuleOrConfig(testCase)
58
50
  : getRuleOrConfig;
59
51
 
60
52
  fn(ruleOrConfig, testCase);
61
53
  });
62
54
  });
63
- }
64
-
65
- return describeRuleOrConfig;
55
+ };
66
56
  }
57
+
67
58
  export const describeConfig = describeRuleOrConfigFactory<Config>('config');
68
59
  export const describeRule = describeRuleOrConfigFactory<
69
60
  ConfigRuleSettings<
@@ -1,8 +1,4 @@
1
1
  export * from './dedent';
2
2
  export * from './describe-lint-and-fix';
3
3
  export * from './describe-rule-or-config';
4
- // export * from './mock';
5
- export * from './spy-on-utils-packages';
6
4
  export * from './syntax';
7
- // export * from './test-lint-and-fix';
8
- // export * from './test-rule-or-config-value';
@@ -1,9 +1,8 @@
1
1
  import { assert } from 'vitest';
2
- import * as utilsPackages from '@culur/utils-packages';
3
2
  import { configCss } from './css';
4
3
  import { describeConfig } from '~/__tests__';
5
4
 
6
- describeConfig(utilsPackages, configCss, config => {
5
+ describeConfig(configCss, config => {
7
6
  assert(Array.isArray(config.extends));
8
7
  assert(Array.isArray(config.plugins));
9
8
  });
@@ -1,16 +1,17 @@
1
+ import type { Packages } from '@culur/utils-packages';
1
2
  import type { Config } from 'stylelint';
2
3
  import { atRuleNoUnknownCSS } from '~/rules/at-rule-no-unknown';
3
4
  import { declarationBlockNoRedundantLonghandProperties } from '~/rules/declaration-block-no-redundant-longhand-properties';
4
5
  import { functionNoUnknown } from '~/rules/function-no-unknown';
5
6
  import { order } from '~/rules/order';
6
7
 
7
- export const configCss = (): Config => ({
8
+ export const configCss = (packages: Partial<Packages>): Config => ({
8
9
  extends: ['stylelint-config-standard', 'stylelint-config-clean-order'],
9
10
  plugins: ['stylelint-order', 'stylelint-selector-bem-pattern'],
10
11
  rules: {
11
- ...atRuleNoUnknownCSS(),
12
+ ...atRuleNoUnknownCSS(packages),
12
13
  ...declarationBlockNoRedundantLonghandProperties,
13
- ...functionNoUnknown(),
14
- ...order(),
14
+ ...functionNoUnknown(packages),
15
+ ...order(packages),
15
16
  },
16
17
  });
@@ -1,8 +1,7 @@
1
- import * as utilsPackages from '@culur/utils-packages';
2
1
  import { assert } from 'vitest';
3
2
  import { configScss } from './scss';
4
3
  import { describeConfig } from '~/__tests__';
5
4
 
6
- describeConfig(utilsPackages, configScss, config => {
5
+ describeConfig(configScss, config => {
7
6
  assert(Array.isArray(config.extends));
8
7
  });
@@ -1,11 +1,12 @@
1
+ import type { Packages } from '@culur/utils-packages';
1
2
  import type { Config } from 'stylelint';
2
3
  import { atRuleNoUnknownSCSS } from '~/rules/at-rule-no-unknown';
3
4
  import { dollarVariablePatternSCSS } from '~/rules/dollar-variable-pattern';
4
5
 
5
- export const configScss = (): Config => ({
6
+ export const configScss = (packages: Partial<Packages>): Config => ({
6
7
  extends: ['stylelint-config-standard-scss'],
7
8
  rules: {
8
- ...atRuleNoUnknownSCSS(),
9
+ ...atRuleNoUnknownSCSS(packages),
9
10
  ...dollarVariablePatternSCSS,
10
11
  },
11
12
  });
@@ -1,8 +1,7 @@
1
1
  import { assert } from 'vitest';
2
- import * as utilsPackages from '@culur/utils-packages';
3
2
  import { configShared } from './shared';
4
3
  import { describeConfig } from '~/__tests__';
5
4
 
6
- describeConfig(utilsPackages, configShared, config => {
5
+ describeConfig(configShared, config => {
7
6
  assert(Array.isArray(config.extends));
8
7
  });
@@ -1,17 +1,15 @@
1
1
  import { assert } from 'vitest';
2
- import * as utilsPackages from '@culur/utils-packages';
3
2
  import { configVue } from './vue';
4
3
  import { describeConfig } from '~/__tests__';
5
4
 
6
5
  describeConfig(
7
- utilsPackages,
8
6
  configVue,
9
- [{ hasSass: true }, { hasSass: false }],
7
+ [{ sass: true }, { sass: false }],
10
8
  (config, testCase) => {
11
9
  assert(Array.isArray(config.extends));
12
10
  assert(Array.isArray(config.extends));
13
11
  config.extends.includes(
14
- testCase.hasSass
12
+ testCase.sass
15
13
  ? 'stylelint-config-standard-vue/scss'
16
14
  : 'stylelint-config-standard-vue',
17
15
  );
@@ -1,9 +1,9 @@
1
- import { hasSass } from '@culur/utils-packages';
1
+ import type { Packages } from '@culur/utils-packages';
2
2
  import type { Config } from 'stylelint';
3
3
 
4
- export const configVue = (): Config => ({
4
+ export const configVue = (packages: Partial<Packages>): Config => ({
5
5
  extends: [
6
- hasSass()
6
+ packages.sass
7
7
  ? 'stylelint-config-standard-vue/scss'
8
8
  : 'stylelint-config-standard-vue',
9
9
  ],
@@ -1,16 +1,30 @@
1
- import * as utilsPackages from '@culur/utils-packages';
2
1
  import { css, describeLintAndFix } from './__tests__';
3
2
  import defineConfig from './factory';
4
3
 
5
- describeLintAndFix(utilsPackages, defineConfig, [
6
- {
7
- code: css`
8
- a {
9
- color: red;
10
- }
11
- `,
12
- hasSass: true,
13
- hasVue: true,
14
- isError: false,
15
- },
16
- ]);
4
+ describeLintAndFix(
5
+ () => defineConfig({ vue: true, sass: true }),
6
+ [
7
+ {
8
+ code: css`
9
+ a {
10
+ color: red;
11
+ }
12
+ `,
13
+ isError: false,
14
+ },
15
+ ],
16
+ );
17
+
18
+ describeLintAndFix(
19
+ () => defineConfig(),
20
+ [
21
+ {
22
+ code: css`
23
+ a {
24
+ color: red;
25
+ }
26
+ `,
27
+ isError: false,
28
+ },
29
+ ],
30
+ );
package/src/factory.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { Packages } from '@culur/utils-packages';
2
- import { hasSass, hasVue, updateDefaultPackages } from '@culur/utils-packages';
3
2
  import type { Config } from 'stylelint';
4
3
  import { configCss } from './configs/css';
5
4
  import { configScss } from './configs/scss';
@@ -8,16 +7,16 @@ import { configVue } from './configs/vue';
8
7
  import { mergeConfigs } from './utils';
9
8
 
10
9
  export default function defineConfig(
11
- options?: Partial<Packages>,
10
+ packages?: Partial<Packages>,
12
11
  config?: Config,
13
12
  ): Config {
14
- updateDefaultPackages(options);
13
+ const packages_ = packages ?? {};
15
14
 
16
15
  return mergeConfigs(
17
16
  configShared(),
18
- configCss(),
19
- hasSass() && configScss(),
20
- hasVue() && configVue(),
17
+ configCss(packages_),
18
+ packages_.sass && configScss(packages_),
19
+ packages_.vue && configVue(packages_),
21
20
  config,
22
21
  );
23
22
  }
@@ -1,4 +1,3 @@
1
- import * as utilsPackages from '@culur/utils-packages';
2
1
  import { assert, expect } from 'vitest';
3
2
  import {
4
3
  atRuleNoUnknownCSS,
@@ -8,11 +7,10 @@ import {
8
7
  import { describeLintAndFix, describeRule, syntaxScss } from '~/__tests__';
9
8
 
10
9
  describeRule(
11
- utilsPackages,
12
10
  atRuleNoUnknownRule,
13
11
  [
14
- { hasTailwind: false, length: 0 },
15
- { hasTailwind: true, length: 7 },
12
+ { tailwind: false, length: 0 },
13
+ { tailwind: true, length: 7 },
16
14
  ],
17
15
  (rule, testCase) => {
18
16
  assert(Array.isArray(rule));
@@ -22,25 +20,23 @@ describeRule(
22
20
  );
23
21
 
24
22
  describeLintAndFix(
25
- utilsPackages, //
26
- () => ({ rules: atRuleNoUnknownCSS() }),
23
+ o => ({ rules: atRuleNoUnknownCSS(o) }),
27
24
  [
28
- { hasTailwind: false, code: '@unknown {}', isError: true },
29
- { hasTailwind: false, code: '@media {}', isError: false },
30
- { hasTailwind: true, code: '@tailwind {}', isError: false },
25
+ { tailwind: false, code: '@unknown {}', isError: true },
26
+ { tailwind: false, code: '@media {}', isError: false },
27
+ { tailwind: true, code: '@tailwind {}', isError: false },
31
28
  ],
32
29
  );
33
30
 
34
31
  describeLintAndFix(
35
- utilsPackages,
36
- () => ({
32
+ o => ({
37
33
  plugins: ['stylelint-scss'],
38
- rules: atRuleNoUnknownSCSS(),
34
+ rules: atRuleNoUnknownSCSS(o),
39
35
  overrides: [syntaxScss],
40
36
  }),
41
37
  [
42
- { ext: 'scss', hasTailwind: false, code: '@unknown {}', isError: true },
43
- { ext: 'scss', hasTailwind: false, code: '@media {}', isError: false },
44
- { ext: 'scss', hasTailwind: true, code: '@tailwind {}', isError: false },
38
+ { ext: 'scss', tailwind: false, code: '@unknown {}', isError: true },
39
+ { ext: 'scss', tailwind: false, code: '@media {}', isError: false },
40
+ { ext: 'scss', tailwind: true, code: '@tailwind {}', isError: false },
45
41
  ],
46
42
  );