@swisspost/design-system-eslint 10.0.0-next.66 → 10.0.0-next.67

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 (28) hide show
  1. package/dist/configs/unicorn.d.ts +8 -0
  2. package/dist/configs/unicorn.d.ts.map +1 -0
  3. package/dist/configs/unicorn.js +26 -0
  4. package/dist/configs/unicorn.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/rules/html/migrations/index.d.ts +1 -0
  10. package/dist/rules/html/migrations/index.d.ts.map +1 -1
  11. package/dist/rules/html/migrations/index.js +3 -1
  12. package/dist/rules/html/migrations/index.js.map +1 -1
  13. package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.d.ts +4 -0
  14. package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.d.ts.map +1 -0
  15. package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.js +32 -0
  16. package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.js.map +1 -0
  17. package/dist/utils/class-binding-helpers.d.ts +13 -0
  18. package/dist/utils/class-binding-helpers.d.ts.map +1 -0
  19. package/dist/utils/class-binding-helpers.js +56 -0
  20. package/dist/utils/class-binding-helpers.js.map +1 -0
  21. package/dist/utils/create-class-update-rule.d.ts.map +1 -1
  22. package/dist/utils/create-class-update-rule.js +3 -49
  23. package/dist/utils/create-class-update-rule.js.map +1 -1
  24. package/dist/utils/create-responsive-class-update-rule.d.ts +28 -0
  25. package/dist/utils/create-responsive-class-update-rule.d.ts.map +1 -0
  26. package/dist/utils/create-responsive-class-update-rule.js +121 -0
  27. package/dist/utils/create-responsive-class-update-rule.js.map +1 -0
  28. package/package.json +4 -3
@@ -0,0 +1,8 @@
1
+ import type { TSESLint } from '@typescript-eslint/utils';
2
+ /**
3
+ * ESLint configuration for eslint-plugin-unicorn rules.
4
+ * @see https://github.com/sindresorhus/eslint-plugin-unicorn
5
+ */
6
+ declare const _default: () => TSESLint.FlatConfig.ConfigArray;
7
+ export default _default;
8
+ //# sourceMappingURL=unicorn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicorn.d.ts","sourceRoot":"","sources":["../../src/configs/unicorn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD;;;GAGG;8BACgB,QAAQ,CAAC,UAAU,CAAC,WAAW;AAAlD,wBAcE"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const eslint_plugin_unicorn_1 = __importDefault(require("eslint-plugin-unicorn"));
7
+ /**
8
+ * ESLint configuration for eslint-plugin-unicorn rules.
9
+ * @see https://github.com/sindresorhus/eslint-plugin-unicorn
10
+ */
11
+ exports.default = () => [
12
+ {
13
+ name: '@swisspost/design-system-eslint/unicorn-recommended',
14
+ files: ['**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
15
+ plugins: {
16
+ unicorn: eslint_plugin_unicorn_1.default,
17
+ },
18
+ rules: {
19
+ ...eslint_plugin_unicorn_1.default.configs.recommended.rules,
20
+ // Disable rules that may conflict with the project's conventions
21
+ 'unicorn/filename-case': 'off',
22
+ 'unicorn/prevent-abbreviations': 'off',
23
+ },
24
+ },
25
+ ];
26
+ //# sourceMappingURL=unicorn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unicorn.js","sourceRoot":"","sources":["../../src/configs/unicorn.ts"],"names":[],"mappings":";;;;;AACA,kFAAkD;AAElD;;;GAGG;AACH,kBAAe,GAAoC,EAAE,CAAC;IACpD;QACE,IAAI,EAAE,qDAAqD;QAC3D,KAAK,EAAE,CAAC,sCAAsC,CAAC;QAC/C,OAAO,EAAE;YACP,OAAO,EAAE,+BAAa;SACvB;QACD,KAAK,EAAE;YACL,GAAG,+BAAa,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;YAC1C,iEAAiE;YACjE,uBAAuB,EAAE,KAAK;YAC9B,+BAA+B,EAAE,KAAK;SACvC;KACF;CACF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ declare const configs: {
8
8
  tsAll: TSESLint.FlatConfig.ConfigArray;
9
9
  tsRecommended: TSESLint.FlatConfig.ConfigArray;
10
10
  stencilRecommended: TSESLint.FlatConfig.Config;
11
+ unicornRecommended: TSESLint.FlatConfig.ConfigArray;
11
12
  };
12
13
  declare const _default: {
13
14
  htmlParser: {
@@ -24,6 +25,7 @@ declare const _default: {
24
25
  tsAll: TSESLint.FlatConfig.ConfigArray;
25
26
  tsRecommended: TSESLint.FlatConfig.ConfigArray;
26
27
  stencilRecommended: TSESLint.FlatConfig.Config;
28
+ unicornRecommended: TSESLint.FlatConfig.ConfigArray;
27
29
  };
28
30
  };
29
31
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAY5C,QAAA,MAAM,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAKrC,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,MAQnC,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;;CAMZ,CAAC;;;;;;;;;;;;;;;;;;AAGF,wBAKE;AACF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAa5C,QAAA,MAAM,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAKrC,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,MAQnC,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;;;CAOZ,CAAC;;;;;;;;;;;;;;;;;;;AAGF,wBAKE;AACF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ const recommended_1 = __importDefault(require("./configs/html/recommended"));
15
15
  const all_2 = __importDefault(require("./configs/ts/all"));
16
16
  const recommended_2 = __importDefault(require("./configs/ts/recommended"));
17
17
  const recommended_3 = __importDefault(require("./configs/stencil/recommended"));
18
+ const unicorn_1 = __importDefault(require("./configs/unicorn"));
18
19
  const htmlPlugin = {
19
20
  rules: html_2.htmlRules,
20
21
  meta: {
@@ -38,6 +39,7 @@ const configs = {
38
39
  tsAll: (0, all_2.default)(tsPlugin, typescript_eslint_1.parser),
39
40
  tsRecommended: (0, recommended_2.default)(tsPlugin, typescript_eslint_1.parser),
40
41
  stencilRecommended: (0, recommended_3.default)(tsPlugin, typescript_eslint_1.parser),
42
+ unicornRecommended: (0, unicorn_1.default)(),
41
43
  };
42
44
  exports.configs = configs;
43
45
  /* default and named exports allow people to use this package from both CJS and ESM. */
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,yDAA2C;AAC3C,yCAA4C;AA4CnC,2FA5CA,iBAAU,OA4CA;AA1CnB,uCAAyC;AACzC,mCAAqC;AACrC,mCAAyC;AAEzC,6DAA+C;AAC/C,6EAA+D;AAC/D,2DAA2C;AAC3C,2EAA2D;AAC3D,gFAAqE;AAErE,MAAM,UAAU,GAA+B;IAC7C,KAAK,EAAE,gBAAS;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,6CAA6C;KACpD;CACF,CAAC;AA2BmB,gCAAU;AAzB/B,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE;QACL,GAAG,YAAO,EAAE,8CAA8C;QAC1D,GAAG,sBAAc,EAAE,iCAAiC;KACrD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,wCAAwC;KAC/C;CACF,CAAC;AAiB+B,4BAAQ;AAfzC,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,IAAA,aAAa,EAAC,UAAU,EAAE,iBAAU,CAAC;IAC9C,eAAe,EAAE,IAAA,qBAAqB,EAAC,UAAU,EAAE,iBAAU,CAAC;IAC9D,KAAK,EAAE,IAAA,aAAW,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACpC,aAAa,EAAE,IAAA,qBAAmB,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACpD,kBAAkB,EAAE,IAAA,qBAAwB,EAAC,QAAQ,EAAE,0BAAM,CAAC;CAC/D,CAAC;AASyC,0BAAO;AAPlD,uFAAuF;AACvF,kBAAe;IACb,UAAU,EAAV,iBAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;CACR,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,yDAA2C;AAC3C,yCAA4C;AA8CnC,2FA9CA,iBAAU,OA8CA;AA5CnB,uCAAyC;AACzC,mCAAqC;AACrC,mCAAyC;AAEzC,6DAA+C;AAC/C,6EAA+D;AAC/D,2DAA2C;AAC3C,2EAA2D;AAC3D,gFAAqE;AACrE,gEAAyD;AAEzD,MAAM,UAAU,GAA+B;IAC7C,KAAK,EAAE,gBAAS;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,6CAA6C;KACpD;CACF,CAAC;AA4BmB,gCAAU;AA1B/B,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE;QACL,GAAG,YAAO,EAAE,8CAA8C;QAC1D,GAAG,sBAAc,EAAE,iCAAiC;KACrD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,wCAAwC;KAC/C;CACF,CAAC;AAkB+B,4BAAQ;AAhBzC,MAAM,OAAO,GAAG;IACd,OAAO,EAAE,IAAA,aAAa,EAAC,UAAU,EAAE,iBAAU,CAAC;IAC9C,eAAe,EAAE,IAAA,qBAAqB,EAAC,UAAU,EAAE,iBAAU,CAAC;IAC9D,KAAK,EAAE,IAAA,aAAW,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACpC,aAAa,EAAE,IAAA,qBAAmB,EAAC,QAAQ,EAAE,0BAAM,CAAC;IACpD,kBAAkB,EAAE,IAAA,qBAAwB,EAAC,QAAQ,EAAE,0BAAM,CAAC;IAC9D,kBAAkB,EAAE,IAAA,iBAAwB,GAAE;CAC/C,CAAC;AASyC,0BAAO;AAPlD,uFAAuF;AACvF,kBAAe;IACb,UAAU,EAAV,iBAAU;IACV,UAAU;IACV,QAAQ;IACR,OAAO;CACR,CAAC"}
@@ -4,5 +4,6 @@ export declare const htmlMigrationRules: {
4
4
  "no-deprecated-breakpoints-phase-2": import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], import("../../../utils/create-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
5
5
  "no-deprecated-font-sizes": import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], import("../../../utils/create-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
6
6
  "no-deprecated-alert": import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedAlert", [], import("../../../utils/create-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
+ "no-deprecated-responsive-spacing-utilities": import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], import("../../../utils/create-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
7
8
  };
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rules/html/migrations/index.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,kBAAkB;;;;;;CA0B9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/rules/html/migrations/index.ts"],"names":[],"mappings":"AAsDA,eAAO,MAAM,kBAAkB;;;;;;;CA2B9B,CAAC"}
@@ -54,6 +54,7 @@ const no_deprecated_alert_1 = __importStar(require("./no-deprecated-alert"));
54
54
  const no_deprecated_position_helpers_1 = __importStar(require("./no-deprecated-position-helpers"));
55
55
  const no_deprecated_breakpoints_1 = require("./no-deprecated-breakpoints");
56
56
  const no_deprecated_css_classes_1 = __importStar(require("./no-deprecated-css-classes"));
57
+ const no_deprecated_responsive_spacing_utilities_1 = __importStar(require("./no-deprecated-responsive-spacing-utilities"));
57
58
  exports.htmlMigrationRules = {
58
59
  [no_deprecated_breakpoints_1.namePhase1]: no_deprecated_breakpoints_1.rulePhase1,
59
60
  [no_deprecated_breakpoints_1.namePhase2]: no_deprecated_breakpoints_1.rulePhase2,
@@ -63,7 +64,7 @@ exports.htmlMigrationRules = {
63
64
  [no_deprecated_spacing_utilities_1.rules[0].name]: no_deprecated_spacing_utilities_1.rules[0].rule,
64
65
  [no_deprecated_spacing_utilities_1.rules[1].name]: no_deprecated_spacing_utilities_1.rules[1].rule,
65
66
  [no_deprecated_sizing_utilities_1.rules[0].name]: no_deprecated_sizing_utilities_1.rules[0].rule,
66
- [no_deprecated_sizing_utilities_1.rules[0].name]: no_deprecated_sizing_utilities_1.rules[1].rule,
67
+ [no_deprecated_sizing_utilities_1.rules[1].name]: no_deprecated_sizing_utilities_1.rules[1].rule,
67
68
  [no_deprecated_gutter_utilities_1.rules[0].name]: no_deprecated_gutter_utilities_1.rules[0].rule,
68
69
  [no_deprecated_gutter_utilities_1.rules[1].name]: no_deprecated_gutter_utilities_1.rules[1].rule,
69
70
  [no_deprecated_gap_utilities_1.rules[0].name]: no_deprecated_gap_utilities_1.rules[0].rule,
@@ -80,5 +81,6 @@ exports.htmlMigrationRules = {
80
81
  [no_deprecated_chip_filter_1.name]: no_deprecated_chip_filter_1.default,
81
82
  [no_deprecated_alert_1.name]: no_deprecated_alert_1.default,
82
83
  [no_deprecated_css_classes_1.name]: no_deprecated_css_classes_1.default,
84
+ [no_deprecated_responsive_spacing_utilities_1.name]: no_deprecated_responsive_spacing_utilities_1.default,
83
85
  };
84
86
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rules/html/migrations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+EAAkG;AAClG,+EAAoG;AACpG,6FAEuC;AACvC,uFAA0F;AAC1F,qFAAwF;AACxF,qFAAwF;AACxF,+EAAkF;AAClF,+DAA4E;AAC5E,yFAEqC;AACrC,mGAE0C;AAC1C,yGAE6C;AAC7C,uFAEoC;AACpC,mGAE0C;AAC1C,yFAEqC;AACrC,uFAEoC;AACpC,yFAEqC;AACrC,6EAAyF;AACzF,mGAE0C;AAE1C,2EAKqC;AAErC,yFAEqC;AAExB,QAAA,kBAAkB,GAAG;IAChC,CAAC,sCAAqC,CAAC,EAAE,sCAAiC;IAC1E,CAAC,sCAAqC,CAAC,EAAE,sCAAiC;IAC1E,CAAC,2BAAyB,CAAC,EAAE,8BAAqB;IAClD,CAAC,2BAA0B,CAAC,EAAE,8BAAsB;IACpD,CAAC,kCAAgC,CAAC,EAAE,qCAA4B;IAChE,CAAC,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC5E,CAAC,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC5E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI;IACpE,CAAC,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI;IACpE,CAAC,mBAAkB,CAAC,EAAE,sBAAc;IACpC,CAAC,gCAA8B,CAAC,EAAE,mCAA0B;IAC5D,CAAC,qCAAmC,CAAC,EAAE,wCAA+B;IACtE,CAAC,+BAAyB,CAAC,EAAE,kCAAqB;IAClD,CAAC,qCAAmC,CAAC,EAAE,wCAA+B;IACtE,CAAC,gCAA8B,CAAC,EAAE,mCAA0B;IAC5D,CAAC,qCAAmC,CAAC,EAAE,wCAA+B;IACtE,CAAC,wCAAsC,CAAC,EAAE,2CAAkC;IAC5E,CAAC,+BAA6B,CAAC,EAAE,kCAAyB;IAC1D,CAAC,gCAA0B,CAAC,EAAE,mCAAsB;IACpD,CAAC,0BAAqB,CAAC,EAAE,6BAAiB;IAC1C,CAAC,gCAA8B,CAAC,EAAE,mCAAsB;CACzD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rules/html/migrations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+EAAkG;AAClG,+EAAoG;AACpG,6FAEuC;AACvC,uFAA0F;AAC1F,qFAAwF;AACxF,qFAAwF;AACxF,+EAAkF;AAClF,+DAA4E;AAC5E,yFAEqC;AACrC,mGAE0C;AAC1C,yGAE6C;AAC7C,uFAEoC;AACpC,mGAE0C;AAC1C,yFAEqC;AACrC,uFAEoC;AACpC,yFAEqC;AACrC,6EAAyF;AACzF,mGAE0C;AAE1C,2EAKqC;AAErC,yFAEqC;AAErC,2HAEsD;AAEzC,QAAA,kBAAkB,GAAG;IAChC,CAAC,sCAAqC,CAAC,EAAE,sCAAiC;IAC1E,CAAC,sCAAqC,CAAC,EAAE,sCAAiC;IAC1E,CAAC,2BAAyB,CAAC,EAAE,8BAAqB;IAClD,CAAC,2BAA0B,CAAC,EAAE,8BAAsB;IACpD,CAAC,kCAAgC,CAAC,EAAE,qCAA4B;IAChE,CAAC,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC5E,CAAC,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,uCAA4B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC5E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,sCAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI;IACpE,CAAC,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,mCAAwB,CAAC,CAAC,CAAC,CAAC,IAAI;IACpE,CAAC,mBAAkB,CAAC,EAAE,sBAAc;IACpC,CAAC,gCAA8B,CAAC,EAAE,mCAA0B;IAC5D,CAAC,qCAAmC,CAAC,EAAE,wCAA+B;IACtE,CAAC,+BAAyB,CAAC,EAAE,kCAAqB;IAClD,CAAC,qCAAmC,CAAC,EAAE,wCAA+B;IACtE,CAAC,gCAA8B,CAAC,EAAE,mCAA0B;IAC5D,CAAC,qCAAmC,CAAC,EAAE,wCAA+B;IACtE,CAAC,wCAAsC,CAAC,EAAE,2CAAkC;IAC5E,CAAC,+BAA6B,CAAC,EAAE,kCAAyB;IAC1D,CAAC,gCAA0B,CAAC,EAAE,mCAAsB;IACpD,CAAC,0BAAqB,CAAC,EAAE,6BAAiB;IAC1C,CAAC,gCAA8B,CAAC,EAAE,mCAAsB;IACxD,CAAC,iDAA8C,CAAC,EAAE,oDAA0C;CAC7F,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const name = "no-deprecated-responsive-spacing-utilities";
2
+ export declare const rule: import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], import("../../../utils/create-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>, data: import("../../../utils/create-responsive-class-update-rule").ResponsiveClassUpdateData;
3
+ export default rule;
4
+ //# sourceMappingURL=no-deprecated-responsive-spacing-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-deprecated-responsive-spacing-utilities.d.ts","sourceRoot":"","sources":["../../../../src/rules/html/migrations/no-deprecated-responsive-spacing-utilities.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,IAAI,+CAA+C,CAAC;AAEjE,eAAO,MAAQ,IAAI,iLAAE,IAAI,wFAKvB,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.data = exports.rule = exports.name = void 0;
5
+ const create_responsive_class_update_rule_1 = require("../../../utils/create-responsive-class-update-rule");
6
+ // Class name prefixes that had responsive variants
7
+ const prefixes = ['m', 'mt', 'mb', 'ml', 'mr', 'p', 'pt', 'pb', 'pl', 'pr', 'gap'];
8
+ // Previous size tokens mapped to the new responsive pixel class suffixes.
9
+ // Entries marked needsReview: true are not 1:1 migrations and must be manually checked.
10
+ const sizeMap = {
11
+ 'tiny': { suffixes: ['-12', '-md-16'] },
12
+ 'small': { suffixes: ['-12', '-sm-16'] },
13
+ 'regular': { suffixes: ['-16', '-md-24'] },
14
+ 'large': { suffixes: ['-16', '-md-24', '-lg-32'], needsReview: true },
15
+ 'big': { suffixes: ['-24', '-md-32', '-lg-40'], needsReview: true },
16
+ 'bigger-big': { suffixes: ['-24', '-md-48'] },
17
+ 'huge': { suffixes: ['-32', '-md-40', '-lg-56'], needsReview: true },
18
+ 'giant': { suffixes: ['-56', '-md-80'] },
19
+ };
20
+ const classesMap = prefixes.flatMap(prefix => Object.entries(sizeMap).map(([token, { suffixes, needsReview }]) => ({
21
+ old: `${prefix}-${token}-r`,
22
+ new: suffixes.map(s => `${prefix}${s}`),
23
+ needsReview,
24
+ })));
25
+ exports.name = 'no-deprecated-responsive-spacing-utilities';
26
+ _a = (0, create_responsive_class_update_rule_1.createResponsiveClassUpdateRule)({
27
+ name: exports.name,
28
+ description: 'Flags all deprecated responsive spacing utility classes and replaces them with the new ones.',
29
+ classesMap,
30
+ }), exports.rule = _a.rule, exports.data = _a.data;
31
+ exports.default = exports.rule;
32
+ //# sourceMappingURL=no-deprecated-responsive-spacing-utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-deprecated-responsive-spacing-utilities.js","sourceRoot":"","sources":["../../../../src/rules/html/migrations/no-deprecated-responsive-spacing-utilities.ts"],"names":[],"mappings":";;;;AAAA,4GAAqG;AAErG,mDAAmD;AACnD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEnF,0EAA0E;AAC1E,wFAAwF;AACxF,MAAM,OAAO,GAAkE;IAC7E,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;IACvC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;IACxC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;IAC1C,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IACrE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IACnE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;IAC7C,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IACpE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;CACzC,CAAC;AAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAC3C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,IAAI;IAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;IACvC,WAAW;CACZ,CAAC,CAAC,CACJ,CAAC;AAEW,QAAA,IAAI,GAAG,4CAA4C,CAAC;AAEpD,KAAiB,IAAA,qEAA+B,EAAC;IAC5D,IAAI,EAAJ,YAAI;IACJ,WAAW,EACT,8FAA8F;IAChG,UAAU;CACX,CAAC,EALa,YAAI,YAAE,YAAI,WAKtB;AAEH,kBAAe,YAAI,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AnyNode } from 'domhandler';
2
+ import type { Cheerio } from 'cheerio';
3
+ export declare function getDynamicClassType(attrName: string, value: string | undefined, oldClass: string): {
4
+ isClassBinding: boolean;
5
+ isNgClass: boolean;
6
+ isClass: boolean;
7
+ };
8
+ export declare function isStringLiteral(value: string): boolean;
9
+ export declare function isObjectLiteral(value: string): boolean;
10
+ export declare function getNewAttrValue($node: Cheerio<AnyNode>, attrName: string, oldClass: string, newClass: string, value: string): string | null;
11
+ export declare function updateStringLiteral(value: string, oldClass: string, newClass: string): string;
12
+ export declare function updateObjectLiteral(rawAttr: string, oldClass: string, newClass: string): string | null;
13
+ //# sourceMappingURL=class-binding-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-binding-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/class-binding-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,MAAM,GACf;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAUnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAItD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAQf;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ7F;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAWf"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDynamicClassType = getDynamicClassType;
4
+ exports.isStringLiteral = isStringLiteral;
5
+ exports.isObjectLiteral = isObjectLiteral;
6
+ exports.getNewAttrValue = getNewAttrValue;
7
+ exports.updateStringLiteral = updateStringLiteral;
8
+ exports.updateObjectLiteral = updateObjectLiteral;
9
+ // Determine type of dynamic class attribute
10
+ function getDynamicClassType(attrName, value, oldClass) {
11
+ const escaped = oldClass.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
12
+ const regex = new RegExp(`(^|[^A-Za-z0-9_-])${escaped}([^A-Za-z0-9_-]|$)`);
13
+ const hasExactClass = typeof value === 'string' && regex.test(value);
14
+ return {
15
+ isClassBinding: attrName === `[class.${oldClass}]`,
16
+ isNgClass: attrName.toLowerCase() === '[ngclass]' && hasExactClass,
17
+ isClass: attrName.toLowerCase() === '[class]' && hasExactClass,
18
+ };
19
+ }
20
+ function isStringLiteral(value) {
21
+ const first = value[0], last = value.at(-1);
22
+ return ['"', "'", '`'].includes(first) && first === last;
23
+ }
24
+ function isObjectLiteral(value) {
25
+ return value.startsWith('{') && value.endsWith('}');
26
+ }
27
+ function getNewAttrValue($node, attrName, oldClass, newClass, value) {
28
+ if (isStringLiteral(value))
29
+ return updateStringLiteral(value, oldClass, newClass);
30
+ if (isObjectLiteral(value)) {
31
+ const rawAttr = $node.attr(attrName);
32
+ if (!rawAttr)
33
+ return null;
34
+ return updateObjectLiteral(rawAttr, oldClass, newClass);
35
+ }
36
+ return null;
37
+ }
38
+ function updateStringLiteral(value, oldClass, newClass) {
39
+ const quote = value[0];
40
+ const inner = value.slice(1, -1);
41
+ const parts = inner
42
+ .split(/\s+/)
43
+ .map(cls => (cls === oldClass ? newClass : cls))
44
+ .filter(Boolean);
45
+ return parts.length ? quote + parts.join(' ') + quote : '';
46
+ }
47
+ function updateObjectLiteral(rawAttr, oldClass, newClass) {
48
+ const sanitized = rawAttr.replace(/['"\s]/g, '');
49
+ const inner = sanitized.slice(1, -1);
50
+ const keys = inner.split(',').map(p => p.split(':')[0]);
51
+ if (!keys.includes(oldClass))
52
+ return null;
53
+ const escapedOldClass = oldClass.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
54
+ return rawAttr.replace(new RegExp(`(?<![\\w-])${escapedOldClass}(?![\\w-])`, 'g'), newClass ?? '');
55
+ }
56
+ //# sourceMappingURL=class-binding-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-binding-helpers.js","sourceRoot":"","sources":["../../src/utils/class-binding-helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-class-update-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-class-update-rule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAM9B,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,EAAE,CAAC;CACL;AAED,KAAK,qBAAqB,CAAC,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK,4BAA4B,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAExE,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpE,QAAQ,qBAAqB,CAAC,CAAC,CAAC,qKA6F9B,CAAC;AAoEL,eAAO,MAAM,4BAA4B,GAAI,QAAQ,4BAA4B;;;;CAUhF,CAAC"}
1
+ {"version":3,"file":"create-class-update-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-class-update-rule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK9B,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,EAAE,CAAC;CACL;AAED,KAAK,qBAAqB,CAAC,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK,4BAA4B,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAExE,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpE,QAAQ,qBAAqB,CAAC,CAAC,CAAC,qKA6F9B,CAAC;AAEL,eAAO,MAAM,4BAA4B,GAAI,QAAQ,4BAA4B;;;;CAUhF,CAAC"}
@@ -4,6 +4,7 @@ exports.createClassUpdateRuleWrapper = exports.createClassUpdateRule = void 0;
4
4
  const create_rule_1 = require("./create-rule");
5
5
  const generate_mutations_1 = require("./generate-mutations");
6
6
  const generate_messages_1 = require("./generate-messages");
7
+ const class_binding_helpers_1 = require("./class-binding-helpers");
7
8
  const createClassUpdateRule = (config) => (0, create_rule_1.createRule)({
8
9
  name: config.name,
9
10
  meta: {
@@ -48,7 +49,7 @@ const createClassUpdateRule = (config) => (0, create_rule_1.createRule)({
48
49
  const attribs = root.attribs;
49
50
  for (const attrName of Object.keys(attribs)) {
50
51
  const value = $node.attr(attrName);
51
- const { isClassBinding, isNgClass, isClass } = getDynamicClassType(attrName, value, oldClass);
52
+ const { isClassBinding, isNgClass, isClass } = (0, class_binding_helpers_1.getDynamicClassType)(attrName, value, oldClass);
52
53
  if (!isClassBinding && !isNgClass && !isClass)
53
54
  continue;
54
55
  context.report({
@@ -67,7 +68,7 @@ const createClassUpdateRule = (config) => (0, create_rule_1.createRule)({
67
68
  const raw = $node.attr(attrName)?.trim();
68
69
  if (!raw)
69
70
  return null;
70
- const newValue = getNewAttrValue($node, attrName, oldClass, newClass, raw);
71
+ const newValue = (0, class_binding_helpers_1.getNewAttrValue)($node, attrName, oldClass, newClass, raw);
71
72
  if (newValue === null)
72
73
  return null;
73
74
  const targetAttr = isNgClass ? '[ngClass]' : '[class]';
@@ -87,53 +88,6 @@ const createClassUpdateRule = (config) => (0, create_rule_1.createRule)({
87
88
  },
88
89
  });
89
90
  exports.createClassUpdateRule = createClassUpdateRule;
90
- // Determine type of dynamic class attribute
91
- function getDynamicClassType(attrName, value, oldClass) {
92
- const escaped = oldClass.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
93
- const regex = new RegExp(`(^|[^A-Za-z0-9_-])${escaped}([^A-Za-z0-9_-]|$)`);
94
- const hasExactClass = typeof value === 'string' && regex.test(value);
95
- return {
96
- isClassBinding: attrName === `[class.${oldClass}]`,
97
- isNgClass: attrName.toLowerCase() === '[ngclass]' && hasExactClass,
98
- isClass: attrName.toLowerCase() === '[class]' && hasExactClass,
99
- };
100
- }
101
- function getNewAttrValue($node, attrName, oldClass, newClass, value) {
102
- if (isStringLiteral(value))
103
- return updateStringLiteral(value, oldClass, newClass);
104
- if (isObjectLiteral(value)) {
105
- const rawAttr = $node.attr(attrName);
106
- if (!rawAttr)
107
- return null;
108
- return updateObjectLiteral(rawAttr, oldClass, newClass);
109
- }
110
- return null;
111
- }
112
- function isStringLiteral(value) {
113
- const first = value[0], last = value.at(-1);
114
- return ['"', "'", '`'].includes(first) && first === last;
115
- }
116
- function isObjectLiteral(value) {
117
- return value.startsWith('{') && value.endsWith('}');
118
- }
119
- function updateStringLiteral(value, oldClass, newClass) {
120
- const quote = value[0];
121
- const inner = value.slice(1, -1);
122
- const parts = inner
123
- .split(/\s+/)
124
- .map(cls => (cls === oldClass ? newClass : cls))
125
- .filter(Boolean); // remove empty strings if deleting class
126
- return parts.length ? quote + parts.join(' ') + quote : '';
127
- }
128
- function updateObjectLiteral(rawAttr, oldClass, newClass) {
129
- const sanitized = rawAttr.replace(/['"\s]/g, '');
130
- const inner = sanitized.slice(1, -1);
131
- const keys = inner.split(',').map(p => p.split(':')[0]);
132
- if (!keys.includes(oldClass))
133
- return null;
134
- const escapedOldClass = oldClass.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
135
- return rawAttr.replace(new RegExp(`(?<![\\w-])${escapedOldClass}(?![\\w-])`, 'g'), newClass ?? '');
136
- }
137
91
  const createClassUpdateRuleWrapper = (config) => {
138
92
  const data = (0, generate_mutations_1.generateReplacedClassMutations)(config.classesMap);
139
93
  const rule = (0, exports.createClassUpdateRule)({
@@ -1 +1 @@
1
- {"version":3,"file":"create-class-update-rule.js","sourceRoot":"","sources":["../../src/utils/create-class-update-rule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-class-update-rule.js","sourceRoot":"","sources":["../../src/utils/create-class-update-rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface ResponsiveClassMapping {
2
+ old: string;
3
+ new: string[];
4
+ needsReview?: boolean;
5
+ }
6
+ export interface ResponsiveClassUpdateData {
7
+ mutations: Record<string, [string, string[]]>;
8
+ }
9
+ interface ResponsiveRuleConfig {
10
+ name: string;
11
+ description: string;
12
+ classesMap: ResponsiveClassMapping[];
13
+ }
14
+ /**
15
+ * Creates an ESLint rule that replaces a single deprecated class with multiple new classes.
16
+ * Unlike `createClassUpdateRule`, mutations map [oldClass, newClasses[]] (one-to-many).
17
+ * No two-phase approach is needed since the old `-r` suffix classes never collide with new names.
18
+ *
19
+ * Dynamic binding behaviour:
20
+ * - `[class.old]` and object-literal `[ngClass]`/`[class]` are flagged without autofix
21
+ * - String-literal `[ngClass]`/`[class]` are auto-fixed inline
22
+ */
23
+ export declare const createResponsiveClassUpdateRule: (config: ResponsiveRuleConfig) => {
24
+ rule: import("@typescript-eslint/utils/ts-eslint").RuleModule<string, [], import("./create-rule").RuleDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
25
+ data: ResponsiveClassUpdateData;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=create-responsive-class-update-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-responsive-class-update-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-responsive-class-update-rule.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC/C;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,GAAI,QAAQ,oBAAoB;;;CAkI3E,CAAC"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createResponsiveClassUpdateRule = void 0;
4
+ const create_rule_1 = require("./create-rule");
5
+ const class_binding_helpers_1 = require("./class-binding-helpers");
6
+ /**
7
+ * Creates an ESLint rule that replaces a single deprecated class with multiple new classes.
8
+ * Unlike `createClassUpdateRule`, mutations map [oldClass, newClasses[]] (one-to-many).
9
+ * No two-phase approach is needed since the old `-r` suffix classes never collide with new names.
10
+ *
11
+ * Dynamic binding behaviour:
12
+ * - `[class.old]` and object-literal `[ngClass]`/`[class]` are flagged without autofix
13
+ * - String-literal `[ngClass]`/`[class]` are auto-fixed inline
14
+ */
15
+ const createResponsiveClassUpdateRule = (config) => {
16
+ const messages = {};
17
+ const mutations = {};
18
+ config.classesMap.forEach(mapping => {
19
+ const key = mapping.old;
20
+ const newClassesStr = mapping.new.join(' ');
21
+ messages[key] = mapping.needsReview
22
+ ? `The "${mapping.old}" class is deprecated. Please replace it with "${newClassesStr}". ⚠️ This is not a 1:1 migration — review the output carefully.`
23
+ : `The "${mapping.old}" class is deprecated. Please replace it with "${newClassesStr}".`;
24
+ mutations[key] = [mapping.old, mapping.new];
25
+ });
26
+ const data = { mutations };
27
+ const handleDynamicBindings = ($node, node, attribs, context) => {
28
+ const ctx = context;
29
+ for (const [messageId, [oldClass, newClasses]] of Object.entries(mutations)) {
30
+ const newClassesStr = newClasses.join(' ');
31
+ for (const attrName of Object.keys(attribs)) {
32
+ const value = $node.attr(attrName);
33
+ const { isClassBinding, isNgClass, isClass } = (0, class_binding_helpers_1.getDynamicClassType)(attrName, value, oldClass);
34
+ if (!isClassBinding && !isNgClass && !isClass)
35
+ continue;
36
+ // `[class.old]` cannot expand to multiple bindings — flag without autofix
37
+ if (isClassBinding) {
38
+ ctx.report({ messageId, loc: node.loc });
39
+ continue;
40
+ }
41
+ // String-literal `[ngClass]`/`[class]` can be fixed inline
42
+ if ((isNgClass || isClass) && value && (0, class_binding_helpers_1.isStringLiteral)(value)) {
43
+ ctx.report({
44
+ messageId,
45
+ loc: node.loc,
46
+ fix(fixer) {
47
+ const newValue = (0, class_binding_helpers_1.updateStringLiteral)(value, oldClass, newClassesStr);
48
+ const targetAttr = isNgClass ? '[ngClass]' : '[class]';
49
+ if (newValue === '')
50
+ $node.removeAttr(targetAttr);
51
+ else
52
+ $node.attr(targetAttr, newValue);
53
+ if (isNgClass && attrName !== targetAttr)
54
+ $node.removeAttr(attrName);
55
+ return fixer.replaceTextRange(node.range, $node.toString());
56
+ },
57
+ });
58
+ continue;
59
+ }
60
+ // Object-literal `[ngClass]`/`[class]` cannot expand one key to many — flag without autofix
61
+ ctx.report({ messageId, loc: node.loc });
62
+ }
63
+ }
64
+ };
65
+ const rule = (0, create_rule_1.createRule)({
66
+ name: config.name,
67
+ meta: {
68
+ docs: {
69
+ dir: 'html',
70
+ description: config.description,
71
+ },
72
+ messages,
73
+ type: 'problem',
74
+ fixable: 'code',
75
+ schema: [],
76
+ },
77
+ defaultOptions: [],
78
+ create(context) {
79
+ return {
80
+ tag(node) {
81
+ const $node = node.toCheerio();
82
+ // Collect all matching deprecated classes first, then emit a single report
83
+ // with one combined fix to avoid ESLint discarding overlapping fixes
84
+ const matches = [];
85
+ Object.entries(mutations).forEach(([messageId, [oldClass, newClasses]]) => {
86
+ if ($node.hasClass(oldClass)) {
87
+ matches.push({ messageId, oldClass, newClasses });
88
+ }
89
+ });
90
+ if (matches.length > 0) {
91
+ context.report({
92
+ messageId: matches[0].messageId,
93
+ loc: node.loc,
94
+ fix(fixer) {
95
+ const fixedNode = $node.clone();
96
+ matches.forEach(({ oldClass, newClasses }) => {
97
+ fixedNode.removeClass(oldClass);
98
+ newClasses.forEach(cls => fixedNode.addClass(cls));
99
+ });
100
+ // Remove empty class attribute
101
+ if (!fixedNode.attr('class')?.trim())
102
+ fixedNode.removeAttr('class');
103
+ return fixer.replaceTextRange(node.range, fixedNode.toString());
104
+ },
105
+ });
106
+ // Plain `class` attribute handled above — skip dynamic-binding pass
107
+ return;
108
+ }
109
+ const root = $node[0];
110
+ if (!root || root.type !== 'tag')
111
+ return;
112
+ const attribs = root.attribs;
113
+ handleDynamicBindings($node, node, attribs, context);
114
+ },
115
+ };
116
+ },
117
+ });
118
+ return { rule, data };
119
+ };
120
+ exports.createResponsiveClassUpdateRule = createResponsiveClassUpdateRule;
121
+ //# sourceMappingURL=create-responsive-class-update-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-responsive-class-update-rule.js","sourceRoot":"","sources":["../../src/utils/create-responsive-class-update-rule.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@swisspost/design-system-eslint",
3
3
  "private": false,
4
- "version": "10.0.0-next.66",
4
+ "version": "10.0.0-next.67",
5
5
  "description": "A set of custom ESLint rules to help keeping projects using the Swiss Post Design System up-to-date.",
6
6
  "author": "Swiss Post <design-system@post.ch>",
7
7
  "license": "Apache-2.0",
@@ -29,18 +29,19 @@
29
29
  "dependencies": {
30
30
  "@typescript-eslint/utils": "8.49.0",
31
31
  "cheerio": "1.0.0",
32
+ "eslint-plugin-unicorn": "^56.0.0",
32
33
  "eslint-scope": "8.2.0"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@eslint/js": "9.19.0",
36
37
  "@types/eslint-scope": "3.7.7",
37
- "@types/jest": "29.5.14",
38
+ "@types/jest": "^30.0.0",
38
39
  "@typescript-eslint/rule-tester": "8.49.0",
39
40
  "concurrently": "9.2.1",
40
41
  "domhandler": "5.0.3",
41
42
  "eslint": "9.26.0",
42
43
  "globals": "17.3.0",
43
- "jest": "29.7.0",
44
+ "jest": "30.3.0",
44
45
  "parse5": "7.2.1",
45
46
  "rimraf": "6.0.1",
46
47
  "ts-jest": "29.4.6",