@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.
- package/dist/configs/unicorn.d.ts +8 -0
- package/dist/configs/unicorn.d.ts.map +1 -0
- package/dist/configs/unicorn.js +26 -0
- package/dist/configs/unicorn.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/rules/html/migrations/index.d.ts +1 -0
- package/dist/rules/html/migrations/index.d.ts.map +1 -1
- package/dist/rules/html/migrations/index.js +3 -1
- package/dist/rules/html/migrations/index.js.map +1 -1
- package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.d.ts +4 -0
- package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.d.ts.map +1 -0
- package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.js +32 -0
- package/dist/rules/html/migrations/no-deprecated-responsive-spacing-utilities.js.map +1 -0
- package/dist/utils/class-binding-helpers.d.ts +13 -0
- package/dist/utils/class-binding-helpers.d.ts.map +1 -0
- package/dist/utils/class-binding-helpers.js +56 -0
- package/dist/utils/class-binding-helpers.js.map +1 -0
- package/dist/utils/create-class-update-rule.d.ts.map +1 -1
- package/dist/utils/create-class-update-rule.js +3 -49
- package/dist/utils/create-class-update-rule.js.map +1 -1
- package/dist/utils/create-responsive-class-update-rule.d.ts +28 -0
- package/dist/utils/create-responsive-class-update-rule.d.ts.map +1 -0
- package/dist/utils/create-responsive-class-update-rule.js +121 -0
- package/dist/utils/create-responsive-class-update-rule.js.map +1 -0
- 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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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":"
|
|
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[
|
|
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;
|
|
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":";;AAIA,kDAcC;AAED,0CAIC;AAED,0CAEC;AAED,0CAcC;AAED,kDAQC;AAED,kDAeC;AApED,4CAA4C;AAC5C,SAAgB,mBAAmB,CACjC,QAAgB,EAChB,KAAyB,EACzB,QAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,qBAAqB,OAAO,oBAAoB,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErE,OAAO;QACL,cAAc,EAAE,QAAQ,KAAK,UAAU,QAAQ,GAAG;QAClD,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,WAAW,IAAI,aAAa;QAClE,OAAO,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,SAAS,IAAI,aAAa;KAC/D,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EACpB,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC;AAC3D,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,eAAe,CAC7B,KAAuB,EACvB,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,KAAa;IAEb,IAAI,eAAe,CAAC,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClF,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK;SAChB,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC/C,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,SAAgB,mBAAmB,CACjC,OAAe,EACf,QAAgB,EAChB,QAAgB;IAEhB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,MAAM,CAAC,cAAc,eAAe,YAAY,EAAE,GAAG,CAAC,EAC1D,QAAQ,IAAI,EAAE,CACf,CAAC;AACJ,CAAC"}
|
|
@@ -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;
|
|
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":";;;AAAA,+CAA2C;AAG3C,6DAAsE;AACtE,2DAAoE;
|
|
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.
|
|
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": "
|
|
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": "
|
|
44
|
+
"jest": "30.3.0",
|
|
44
45
|
"parse5": "7.2.1",
|
|
45
46
|
"rimraf": "6.0.1",
|
|
46
47
|
"ts-jest": "29.4.6",
|