@duro-app/eslint-plugin 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -10
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/rules/index.d.ts +2 -1
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +2 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/no-raw-breakpoint-query.d.ts +16 -0
- package/dist/rules/no-raw-breakpoint-query.d.ts.map +1 -0
- package/dist/rules/no-raw-breakpoint-query.js +78 -0
- package/dist/rules/no-raw-breakpoint-query.js.map +1 -0
- package/dist/rules/no-raw-design-values.d.ts +19 -7
- package/dist/rules/no-raw-design-values.d.ts.map +1 -1
- package/dist/rules/no-raw-design-values.js +194 -26
- package/dist/rules/no-raw-design-values.js.map +1 -1
- package/dist/util/tokens.d.ts +24 -0
- package/dist/util/tokens.d.ts.map +1 -1
- package/dist/util/tokens.js +64 -0
- package/dist/util/tokens.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -35,7 +35,8 @@ another key — you'd get two live namespaces and confusing config.
|
|
|
35
35
|
| `duro/no-raw-html-element` | error | suggestion |
|
|
36
36
|
| `duro/no-tokens-barrel-import` | error | autofix |
|
|
37
37
|
| `duro/no-deprecated-table-parts` | error | autofix / suggestion |
|
|
38
|
-
| `duro/no-raw-design-values` |
|
|
38
|
+
| `duro/no-raw-design-values` | error | suggestion |
|
|
39
|
+
| `duro/no-raw-breakpoint-query` | error | autofix |
|
|
39
40
|
|
|
40
41
|
### no-raw-html-element
|
|
41
42
|
|
|
@@ -67,20 +68,47 @@ default) — configure via `tableIdentifiers`.
|
|
|
67
68
|
|
|
68
69
|
### no-raw-design-values
|
|
69
70
|
|
|
70
|
-
Inside `css.create()` objects
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
Inside `css.create()` objects, a raw design value is the finding — anything
|
|
72
|
+
with a token equivalent, and anything on a tokenised property that is off the
|
|
73
|
+
scale:
|
|
74
|
+
|
|
75
|
+
- **colors** — a hex / `rgb()` / `hsl()` literal anywhere. A palette value
|
|
76
|
+
suggests its `colors.*` token; an off-palette one reports without a fix.
|
|
77
|
+
- **spacing and radius** — a number or `'Npx'` on the padding/margin/gap
|
|
78
|
+
families → `spacing.*`, on the border-radius family → `radii.*`. On the
|
|
79
|
+
scale it suggests the token; off the scale (`marginTop: 23`) it reports —
|
|
80
|
+
"not a token" is the point.
|
|
81
|
+
- **breakpoints** — a px inside a `'@media …'` / `'@container …'` condition
|
|
82
|
+
key. On the scale it suggests the computed key
|
|
83
|
+
``[`@media (min-width: ${breakpoints.md})`]`` and the import.
|
|
84
|
+
- **font size** (number, `px` or `rem`) → `typography.fontSize*` or, for the
|
|
85
|
+
steps typography lacks, `typeScale.fontSizeN`; **font weight** 400–700 →
|
|
86
|
+
`typography.fontWeight*`; **`boxShadow`** → `shadows.*` on an exact match,
|
|
87
|
+
otherwise a report; **`transitionDuration` / `animationDuration`** `'Nms'` →
|
|
88
|
+
`duration.*`; **timing functions** → `easing.*`.
|
|
89
|
+
|
|
90
|
+
Skipped on purpose: `0`, negatives, shorthands (`'8px 16px'`,
|
|
91
|
+
`'opacity 150ms'`), identifiers, member expressions, template literals, and
|
|
92
|
+
`width` / `top` / `lineHeight` — same numbers, different meaning. Since 3.0 it
|
|
93
|
+
ships as `error`: a raw value is the drift the design system exists to stop.
|
|
77
94
|
|
|
78
95
|
Options: `{factories?: string[], spacingProperties?: string[], radiiProperties?: string[]}`
|
|
79
96
|
(property lists replace the defaults, they don't merge)
|
|
80
97
|
|
|
98
|
+
### no-raw-breakpoint-query
|
|
99
|
+
|
|
100
|
+
A media-query string anywhere in a file — `useMediaQuery('(min-width:
|
|
101
|
+
768px)')`, `matchMedia(...)`, a constant — carries a raw breakpoint that
|
|
102
|
+
`no-raw-design-values` never sees (it only reads `css.create`). On the scale
|
|
103
|
+
the autofix rewrites the literal to `` `(min-width: ${breakpoints.md})` `` and
|
|
104
|
+
adds the import (a `css.defineConsts` string, so it interpolates to
|
|
105
|
+
`'768px'`); off the scale it reports. Skips `css.create` keys, and skips the
|
|
106
|
+
fix when a local `breakpoints` binding would shadow the import.
|
|
107
|
+
|
|
81
108
|
## Token data
|
|
82
109
|
|
|
83
|
-
The rule data (deep-path map, spacing/radius px values,
|
|
84
|
-
|
|
110
|
+
The rule data (deep-path map, spacing/radius/breakpoint px values, font
|
|
111
|
+
sizes and weights, shadows, durations, easings, color palette) is mirrored
|
|
112
|
+
from `@duro-app/tokens` as literals so the published plugin stays
|
|
85
113
|
dependency-free. `test/token-drift.test.ts` rebuilds every table from the real
|
|
86
114
|
tokens package and fails CI when they drift.
|
package/dist/index.d.ts
CHANGED
|
@@ -16,11 +16,12 @@ declare const plugin: {
|
|
|
16
16
|
'no-deprecated-table-parts': TSESLint.RuleModule<"deprecatedContainer" | "deprecatedIsActions" | "removeIsActions", [({
|
|
17
17
|
tableIdentifiers?: string[];
|
|
18
18
|
} | undefined)?], unknown, TSESLint.RuleListener>;
|
|
19
|
-
'no-raw-design-values': TSESLint.RuleModule<"rawColorToken" | "rawColor" | "rawSpacing" | "rawRadius" | "replaceWithToken", [({
|
|
19
|
+
'no-raw-design-values': TSESLint.RuleModule<"rawColorToken" | "rawColor" | "rawSpacing" | "rawRadius" | "offScaleSpacing" | "offScaleRadius" | "rawBreakpoint" | "rawFontSize" | "rawFontWeight" | "rawShadow" | "rawDuration" | "rawEasing" | "replaceWithToken", [({
|
|
20
20
|
factories?: string[];
|
|
21
21
|
spacingProperties?: string[];
|
|
22
22
|
radiiProperties?: string[];
|
|
23
23
|
} | undefined)?], unknown, TSESLint.RuleListener>;
|
|
24
|
+
'no-raw-breakpoint-query': TSESLint.RuleModule<"rawBreakpointQuery", [], unknown, TSESLint.RuleListener>;
|
|
24
25
|
'no-flex-grow-web': TSESLint.RuleModule<"flexGrowForced", [({
|
|
25
26
|
factories?: string[];
|
|
26
27
|
} | undefined)?], unknown, TSESLint.RuleListener>;
|
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,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAEtC,QAAA,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAEtC,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAGK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;CAC1D,CAAA;AAwBD,eAAe,MAAM,CAAA;AACrB,OAAO,EAAC,KAAK,EAAC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,12 @@ Object.assign(plugin.configs, {
|
|
|
14
14
|
'duro/no-raw-html-element': 'error',
|
|
15
15
|
'duro/no-tokens-barrel-import': 'error',
|
|
16
16
|
'duro/no-deprecated-table-parts': 'error',
|
|
17
|
-
|
|
17
|
+
// Errors since 3.0: a raw design value is the drift the system exists
|
|
18
|
+
// to prevent. Consumers with debt ratchet with an explicit-file
|
|
19
|
+
// baseline block (see @duro-app/eslint-config README), never a glob
|
|
20
|
+
// and never --max-warnings.
|
|
21
|
+
'duro/no-raw-design-values': 'error',
|
|
22
|
+
'duro/no-raw-breakpoint-query': 'error',
|
|
18
23
|
'duro/no-flex-grow-web': 'warn',
|
|
19
24
|
'duro/prefer-ds-form-components': 'error',
|
|
20
25
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAEtC,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;IACpB,KAAK;IACL,OAAO,EAAE,EAAgD;CAC1D,CAAA;AAED,2EAA2E;AAC3E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;IAC5B,WAAW,EAAE;QACX,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;QACvB,KAAK,EAAE;YACL,0BAA0B,EAAE,OAAO;YACnC,8BAA8B,EAAE,OAAO;YACvC,gCAAgC,EAAE,OAAO;YACzC,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAA;AAEtC,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;IACpB,KAAK;IACL,OAAO,EAAE,EAAgD;CAC1D,CAAA;AAED,2EAA2E;AAC3E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;IAC5B,WAAW,EAAE;QACX,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC;QACvB,KAAK,EAAE;YACL,0BAA0B,EAAE,OAAO;YACnC,8BAA8B,EAAE,OAAO;YACvC,gCAAgC,EAAE,OAAO;YACzC,sEAAsE;YACtE,gEAAgE;YAChE,oEAAoE;YACpE,4BAA4B;YAC5B,2BAA2B,EAAE,OAAO;YACpC,8BAA8B,EAAE,OAAO;YACvC,uBAAuB,EAAE,MAAM;YAC/B,gCAAgC,EAAE,OAAO;SAC1C;KACmC;CACvC,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA;AACrB,OAAO,EAAC,KAAK,EAAC,CAAA"}
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -10,11 +10,12 @@ export declare const rules: {
|
|
|
10
10
|
'no-deprecated-table-parts': import("@typescript-eslint/utils/ts-eslint").RuleModule<"deprecatedContainer" | "deprecatedIsActions" | "removeIsActions", [({
|
|
11
11
|
tableIdentifiers?: string[];
|
|
12
12
|
} | undefined)?], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
13
|
-
'no-raw-design-values': import("@typescript-eslint/utils/ts-eslint").RuleModule<"rawColorToken" | "rawColor" | "rawSpacing" | "rawRadius" | "replaceWithToken", [({
|
|
13
|
+
'no-raw-design-values': import("@typescript-eslint/utils/ts-eslint").RuleModule<"rawColorToken" | "rawColor" | "rawSpacing" | "rawRadius" | "offScaleSpacing" | "offScaleRadius" | "rawBreakpoint" | "rawFontSize" | "rawFontWeight" | "rawShadow" | "rawDuration" | "rawEasing" | "replaceWithToken", [({
|
|
14
14
|
factories?: string[];
|
|
15
15
|
spacingProperties?: string[];
|
|
16
16
|
radiiProperties?: string[];
|
|
17
17
|
} | undefined)?], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
18
|
+
'no-raw-breakpoint-query': import("@typescript-eslint/utils/ts-eslint").RuleModule<"rawBreakpointQuery", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
18
19
|
'no-flex-grow-web': import("@typescript-eslint/utils/ts-eslint").RuleModule<"flexGrowForced", [({
|
|
19
20
|
factories?: string[];
|
|
20
21
|
} | undefined)?], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;CAQjB,CAAA"}
|
package/dist/rules/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { noRawHtmlElement } from './no-raw-html-element.js';
|
|
|
2
2
|
import { noTokensBarrelImport } from './no-tokens-barrel-import.js';
|
|
3
3
|
import { noDeprecatedTableParts } from './no-deprecated-table-parts.js';
|
|
4
4
|
import { noRawDesignValues } from './no-raw-design-values.js';
|
|
5
|
+
import { noRawBreakpointQuery } from './no-raw-breakpoint-query.js';
|
|
5
6
|
import { noFlexGrowWeb } from './no-flex-grow-web.js';
|
|
6
7
|
import { preferDsFormComponents } from './prefer-ds-form-components.js';
|
|
7
8
|
export const rules = {
|
|
@@ -9,6 +10,7 @@ export const rules = {
|
|
|
9
10
|
'no-tokens-barrel-import': noTokensBarrelImport,
|
|
10
11
|
'no-deprecated-table-parts': noDeprecatedTableParts,
|
|
11
12
|
'no-raw-design-values': noRawDesignValues,
|
|
13
|
+
'no-raw-breakpoint-query': noRawBreakpointQuery,
|
|
12
14
|
'no-flex-grow-web': noFlexGrowWeb,
|
|
13
15
|
'prefer-ds-form-components': preferDsFormComponents,
|
|
14
16
|
};
|
package/dist/rules/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAA;AAErE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,qBAAqB,EAAE,gBAAgB;IACvC,yBAAyB,EAAE,oBAAoB;IAC/C,2BAA2B,EAAE,sBAAsB;IACnD,sBAAsB,EAAE,iBAAiB;IACzC,kBAAkB,EAAE,aAAa;IACjC,2BAA2B,EAAE,sBAAsB;CACpD,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAA;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAC,sBAAsB,EAAC,MAAM,gCAAgC,CAAA;AAErE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,qBAAqB,EAAE,gBAAgB;IACvC,yBAAyB,EAAE,oBAAoB;IAC/C,2BAA2B,EAAE,sBAAsB;IACnD,sBAAsB,EAAE,iBAAiB;IACzC,yBAAyB,EAAE,oBAAoB;IAC/C,kBAAkB,EAAE,aAAa;IACjC,2BAA2B,EAAE,sBAAsB;CACpD,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
+
type MessageIds = 'rawBreakpointQuery';
|
|
3
|
+
type Options = [];
|
|
4
|
+
/**
|
|
5
|
+
* A media-query string anywhere in a file — `useMediaQuery("(min-width:
|
|
6
|
+
* 768px)")`, `matchMedia(...)`, a hook's constant — carries a raw breakpoint.
|
|
7
|
+
* `no-raw-design-values` covers the `@media` keys inside css.create; this
|
|
8
|
+
* covers the strings that never reach a style object and so slipped past it.
|
|
9
|
+
*
|
|
10
|
+
* On the scale the fix rewrites the literal to a template literal reading
|
|
11
|
+
* `breakpoints.<key>` (a css.defineConsts string, so `${breakpoints.md}`
|
|
12
|
+
* interpolates to '768px') and adds the import. Off the scale it reports.
|
|
13
|
+
*/
|
|
14
|
+
export declare const noRawBreakpointQuery: TSESLint.RuleModule<MessageIds, Options>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=no-raw-breakpoint-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-raw-breakpoint-query.d.ts","sourceRoot":"","sources":["../../src/rules/no-raw-breakpoint-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAW,MAAM,0BAA0B,CAAA;AAIhE,KAAK,UAAU,GAAG,oBAAoB,CAAA;AACtC,KAAK,OAAO,GAAG,EAAE,CAAA;AAUjB;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CA+DzE,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { BREAKPOINT_TOKENS_BY_PX } from '../util/tokens.js';
|
|
2
|
+
import { ensureNamedImport, isShadowed } from '../util/imports.js';
|
|
3
|
+
const QUERY_RE = /\((?:min|max)-(?:width|height)\s*:\s*(\d+)px\)/;
|
|
4
|
+
const BREAKPOINTS_MODULE = '@duro-app/tokens/tokens/breakpoints.css';
|
|
5
|
+
const SCALE = Object.keys(BREAKPOINT_TOKENS_BY_PX)
|
|
6
|
+
.map(Number)
|
|
7
|
+
.sort((a, b) => a - b)
|
|
8
|
+
.join(' / ');
|
|
9
|
+
/**
|
|
10
|
+
* A media-query string anywhere in a file — `useMediaQuery("(min-width:
|
|
11
|
+
* 768px)")`, `matchMedia(...)`, a hook's constant — carries a raw breakpoint.
|
|
12
|
+
* `no-raw-design-values` covers the `@media` keys inside css.create; this
|
|
13
|
+
* covers the strings that never reach a style object and so slipped past it.
|
|
14
|
+
*
|
|
15
|
+
* On the scale the fix rewrites the literal to a template literal reading
|
|
16
|
+
* `breakpoints.<key>` (a css.defineConsts string, so `${breakpoints.md}`
|
|
17
|
+
* interpolates to '768px') and adds the import. Off the scale it reports.
|
|
18
|
+
*/
|
|
19
|
+
export const noRawBreakpointQuery = {
|
|
20
|
+
defaultOptions: [],
|
|
21
|
+
meta: {
|
|
22
|
+
type: 'suggestion',
|
|
23
|
+
docs: {
|
|
24
|
+
description: 'Disallow raw px breakpoints in media-query strings; use breakpoints.<key>',
|
|
25
|
+
},
|
|
26
|
+
fixable: 'code',
|
|
27
|
+
schema: [],
|
|
28
|
+
messages: {
|
|
29
|
+
rawBreakpointQuery: '{{value}}px is a raw breakpoint in a media query. Use `breakpoints.{{token}}` from @duro-app/tokens/tokens/breakpoints.css (the scale is {{scale}}px).',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
create(context) {
|
|
33
|
+
const sourceCode = context.sourceCode;
|
|
34
|
+
function isStyleKey(node) {
|
|
35
|
+
return node.parent?.type === 'Property' && node.parent.key === node;
|
|
36
|
+
}
|
|
37
|
+
function check(node, text) {
|
|
38
|
+
const match = QUERY_RE.exec(text);
|
|
39
|
+
if (!match)
|
|
40
|
+
return;
|
|
41
|
+
// css.create condition keys belong to no-raw-design-values.
|
|
42
|
+
if (isStyleKey(node))
|
|
43
|
+
return;
|
|
44
|
+
const px = Number(match[1]);
|
|
45
|
+
const token = BREAKPOINT_TOKENS_BY_PX[px];
|
|
46
|
+
const data = { value: String(px), token: token ?? '*', scale: SCALE };
|
|
47
|
+
if (!token) {
|
|
48
|
+
context.report({ node, messageId: 'rawBreakpointQuery', data });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const shadowed = isShadowed(sourceCode.getScope(node), 'breakpoints', BREAKPOINTS_MODULE);
|
|
52
|
+
context.report({
|
|
53
|
+
node,
|
|
54
|
+
messageId: 'rawBreakpointQuery',
|
|
55
|
+
data,
|
|
56
|
+
fix: shadowed
|
|
57
|
+
? null
|
|
58
|
+
: (fixer) => {
|
|
59
|
+
const { local, fixes } = ensureNamedImport(sourceCode, fixer, BREAKPOINTS_MODULE, 'breakpoints');
|
|
60
|
+
const rewritten = text.replace(`${px}px`, `\${${local}.${token}}`);
|
|
61
|
+
return [...fixes, fixer.replaceText(node, '`' + rewritten.replace(/`/g, '\\`') + '`')];
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
Literal(node) {
|
|
67
|
+
if (typeof node.value === 'string')
|
|
68
|
+
check(node, node.value);
|
|
69
|
+
},
|
|
70
|
+
TemplateLiteral(node) {
|
|
71
|
+
if (node.expressions.length > 0)
|
|
72
|
+
return;
|
|
73
|
+
check(node, node.quasis.map((q) => q.value.cooked ?? '').join(''));
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=no-raw-breakpoint-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-raw-breakpoint-query.js","sourceRoot":"","sources":["../../src/rules/no-raw-breakpoint-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
-
type MessageIds = 'rawColorToken' | 'rawColor' | 'rawSpacing' | 'rawRadius' | 'replaceWithToken';
|
|
2
|
+
type MessageIds = 'rawColorToken' | 'rawColor' | 'rawSpacing' | 'rawRadius' | 'offScaleSpacing' | 'offScaleRadius' | 'rawBreakpoint' | 'rawFontSize' | 'rawFontWeight' | 'rawShadow' | 'rawDuration' | 'rawEasing' | 'replaceWithToken';
|
|
3
3
|
type Options = [
|
|
4
4
|
{
|
|
5
5
|
factories?: string[];
|
|
@@ -8,12 +8,24 @@ type Options = [
|
|
|
8
8
|
}?
|
|
9
9
|
];
|
|
10
10
|
/**
|
|
11
|
-
* Inside css.create() style objects, flag raw design values
|
|
12
|
-
* equivalent
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* Inside css.create() style objects, flag raw design values — anything with a
|
|
12
|
+
* token equivalent, and anything on a tokenised property that is off the
|
|
13
|
+
* scale:
|
|
14
|
+
*
|
|
15
|
+
* - colors: a hex / rgb() / hsl() literal anywhere. A palette value suggests
|
|
16
|
+
* its token; an off-palette one reports without a fix.
|
|
17
|
+
* - spacing and radius: a px value on the properties where that mapping is
|
|
18
|
+
* unambiguous. On the scale → suggest the token; off the scale (`marginTop:
|
|
19
|
+
* 23`) → report, because "not a token" is the finding.
|
|
20
|
+
* - breakpoints: a px inside a `@media` / `@container` condition key. On the
|
|
21
|
+
* scale → suggest the `breakpoints.<key>` template-literal key.
|
|
22
|
+
* - font size (px or rem), font weight, box-shadow, transition/animation
|
|
23
|
+
* duration and timing function: a literal suggests its token when one
|
|
24
|
+
* matches, else reports.
|
|
25
|
+
*
|
|
26
|
+
* Skipped on purpose: 0, negatives (UnaryExpression), shorthands ('8px 16px',
|
|
27
|
+
* 'opacity 150ms'), identifiers, member expressions, template literals and
|
|
28
|
+
* calls — the rule reads literals, not expressions.
|
|
17
29
|
*/
|
|
18
30
|
export declare const noRawDesignValues: TSESLint.RuleModule<MessageIds, Options>;
|
|
19
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-raw-design-values.d.ts","sourceRoot":"","sources":["../../src/rules/no-raw-design-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAW,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"no-raw-design-values.d.ts","sourceRoot":"","sources":["../../src/rules/no-raw-design-values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAW,MAAM,0BAA0B,CAAA;AAmBhE,KAAK,UAAU,GACX,eAAe,GACf,UAAU,GACV,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,eAAe,GACf,WAAW,GACX,aAAa,GACb,WAAW,GACX,kBAAkB,CAAA;AACtB,KAAK,OAAO,GAAG;IACb;QACE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;QACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;QAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;KAC3B,CAAC;CACH,CAAA;AAmBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CA0VtE,CAAA"}
|
|
@@ -1,21 +1,44 @@
|
|
|
1
|
-
import { COLOR_TOKENS, RADII_PROPERTIES, RADII_TOKENS_BY_PX, SPACING_PROPERTIES, SPACING_TOKENS_BY_PX, normalizeHex, } from '../util/tokens.js';
|
|
1
|
+
import { BREAKPOINT_TOKENS_BY_PX, COLOR_TOKENS, COLOR_TOKENS_NORMALIZED, DURATION_TOKENS_BY_MS, EASING_TOKENS, FONT_SIZE_TOKENS_BY_REM, FONT_WEIGHT_TOKENS, RADII_PROPERTIES, RADII_TOKENS_BY_PX, SHADOW_TOKENS, SPACING_PROPERTIES, SPACING_TOKENS_BY_PX, normalizeHex, normalizeValue, } from '../util/tokens.js';
|
|
2
2
|
import { ensureNamedImport } from '../util/imports.js';
|
|
3
3
|
const HEX_RE = /#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})\b/;
|
|
4
|
+
const FUNC_COLOR_RE = /\b(?:rgba?|hsla?)\([^)]*\)/;
|
|
5
|
+
const BREAKPOINT_KEY_RE = /^@(?:media|container)\b.*\b(?:min|max)-(?:width|height)\s*:\s*(\d+)px/;
|
|
4
6
|
const TOKENS_PKG = '@duro-app/tokens';
|
|
7
|
+
const FONT_SIZE_PROPERTIES = new Set(['fontSize']);
|
|
8
|
+
const FONT_WEIGHT_PROPERTIES = new Set(['fontWeight']);
|
|
9
|
+
const SHADOW_PROPERTIES = new Set(['boxShadow']);
|
|
10
|
+
const DURATION_PROPERTIES = new Set(['transitionDuration', 'animationDuration']);
|
|
11
|
+
const EASING_PROPERTIES = new Set(['transitionTimingFunction', 'animationTimingFunction']);
|
|
12
|
+
const scale = (table) => Object.keys(table)
|
|
13
|
+
.map(Number)
|
|
14
|
+
.sort((a, b) => a - b)
|
|
15
|
+
.join(' / ');
|
|
5
16
|
/**
|
|
6
|
-
* Inside css.create() style objects, flag raw design values
|
|
7
|
-
* equivalent
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
17
|
+
* Inside css.create() style objects, flag raw design values — anything with a
|
|
18
|
+
* token equivalent, and anything on a tokenised property that is off the
|
|
19
|
+
* scale:
|
|
20
|
+
*
|
|
21
|
+
* - colors: a hex / rgb() / hsl() literal anywhere. A palette value suggests
|
|
22
|
+
* its token; an off-palette one reports without a fix.
|
|
23
|
+
* - spacing and radius: a px value on the properties where that mapping is
|
|
24
|
+
* unambiguous. On the scale → suggest the token; off the scale (`marginTop:
|
|
25
|
+
* 23`) → report, because "not a token" is the finding.
|
|
26
|
+
* - breakpoints: a px inside a `@media` / `@container` condition key. On the
|
|
27
|
+
* scale → suggest the `breakpoints.<key>` template-literal key.
|
|
28
|
+
* - font size (px or rem), font weight, box-shadow, transition/animation
|
|
29
|
+
* duration and timing function: a literal suggests its token when one
|
|
30
|
+
* matches, else reports.
|
|
31
|
+
*
|
|
32
|
+
* Skipped on purpose: 0, negatives (UnaryExpression), shorthands ('8px 16px',
|
|
33
|
+
* 'opacity 150ms'), identifiers, member expressions, template literals and
|
|
34
|
+
* calls — the rule reads literals, not expressions.
|
|
12
35
|
*/
|
|
13
36
|
export const noRawDesignValues = {
|
|
14
37
|
defaultOptions: [{}],
|
|
15
38
|
meta: {
|
|
16
39
|
type: 'suggestion',
|
|
17
40
|
docs: {
|
|
18
|
-
description: 'Prefer design tokens over raw
|
|
41
|
+
description: 'Prefer design tokens over raw colors, lengths, breakpoints, type, shadows and motion in css.create styles',
|
|
19
42
|
},
|
|
20
43
|
hasSuggestions: true,
|
|
21
44
|
schema: [
|
|
@@ -34,6 +57,14 @@ export const noRawDesignValues = {
|
|
|
34
57
|
rawColor: "'{{value}}' is not in the palette. Use a semantic token from {{pkg}}/tokens/colors.css instead of a raw color.",
|
|
35
58
|
rawSpacing: '{{value}} on `{{property}}` is the {{token}} spacing token. Use `spacing.{{token}}` from {{pkg}}/tokens/spacing.css.',
|
|
36
59
|
rawRadius: '{{value}} on `{{property}}` is the {{token}} radius token. Use `radii.{{token}}` from {{pkg}}/tokens/spacing.css.',
|
|
60
|
+
offScaleSpacing: '{{value}} on `{{property}}` is off the spacing scale ({{scale}}px). Use the nearest `spacing.*` token from {{pkg}}/tokens/spacing.css, or disable this line with the reason.',
|
|
61
|
+
offScaleRadius: '{{value}} on `{{property}}` is off the radius scale ({{scale}}px). Use the nearest `radii.*` token from {{pkg}}/tokens/spacing.css, or disable this line with the reason.',
|
|
62
|
+
rawBreakpoint: '{{value}}px in `{{key}}` is a raw breakpoint. Use `breakpoints.{{token}}` from {{pkg}}/tokens/breakpoints.css in a template-literal key (the scale is {{scale}}px).',
|
|
63
|
+
rawFontSize: '{{value}} on `fontSize` is the {{group}}.{{token}} token. Use it from {{pkg}}/tokens/typography.css.',
|
|
64
|
+
rawFontWeight: '{{value}} on `fontWeight` is the typography.{{token}} token. Use it from {{pkg}}/tokens/typography.css.',
|
|
65
|
+
rawShadow: "'{{value}}' on `boxShadow` is a raw shadow. Use `shadows.{{token}}` from {{pkg}}/tokens/shadows.css.",
|
|
66
|
+
rawDuration: "'{{value}}' on `{{property}}` is a raw duration. Use `duration.{{token}}` from {{pkg}}/tokens/motion.css.",
|
|
67
|
+
rawEasing: "'{{value}}' on `{{property}}` is a raw easing. Use `easing.{{token}}` from {{pkg}}/tokens/motion.css.",
|
|
37
68
|
replaceWithToken: 'Replace with {{replacement}}',
|
|
38
69
|
},
|
|
39
70
|
},
|
|
@@ -50,47 +81,55 @@ export const noRawDesignValues = {
|
|
|
50
81
|
function calleeText(node) {
|
|
51
82
|
return sourceCode.getText(node.callee);
|
|
52
83
|
}
|
|
53
|
-
|
|
84
|
+
/** A suggestion that swaps `node` for `<importName>.<token>`, importing it. */
|
|
85
|
+
function suggestReplacement(node, replacement, importName, importPath, render = (local) => replacement.replace(`${importName}.`, `${local}.`)) {
|
|
54
86
|
return [
|
|
55
87
|
{
|
|
56
88
|
messageId: 'replaceWithToken',
|
|
57
89
|
data: { replacement },
|
|
58
90
|
fix(fixer) {
|
|
59
91
|
const { local, fixes } = ensureNamedImport(sourceCode, fixer, `${TOKENS_PKG}/${importPath}`, importName);
|
|
60
|
-
|
|
61
|
-
return [...fixes, fixer.replaceText(node, target)];
|
|
92
|
+
return [...fixes, fixer.replaceText(node, render(local))];
|
|
62
93
|
},
|
|
63
94
|
},
|
|
64
95
|
];
|
|
65
96
|
}
|
|
66
97
|
function checkColorValue(node, raw) {
|
|
67
|
-
const match = HEX_RE.exec(raw);
|
|
98
|
+
const match = HEX_RE.exec(raw) ?? FUNC_COLOR_RE.exec(raw);
|
|
68
99
|
if (!match)
|
|
69
100
|
return;
|
|
70
|
-
const
|
|
71
|
-
const token =
|
|
101
|
+
const literal = match[0];
|
|
102
|
+
const token = literal.startsWith('#')
|
|
103
|
+
? COLOR_TOKENS[normalizeHex(literal)]
|
|
104
|
+
: COLOR_TOKENS_NORMALIZED[normalizeValue(literal)];
|
|
72
105
|
if (token) {
|
|
73
106
|
// Only suggest a direct replacement when the literal IS the color —
|
|
74
107
|
// inside a compound value (a boxShadow) the rewrite would be wrong.
|
|
75
|
-
const isWholeValue = raw.trim() ===
|
|
108
|
+
const isWholeValue = raw.trim() === literal;
|
|
76
109
|
context.report({
|
|
77
110
|
node,
|
|
78
111
|
messageId: 'rawColorToken',
|
|
79
|
-
data: { value:
|
|
112
|
+
data: { value: literal, token, pkg: TOKENS_PKG },
|
|
80
113
|
suggest: isWholeValue
|
|
81
114
|
? suggestReplacement(node, `colors.${token}`, 'colors', 'tokens/colors.css')
|
|
82
115
|
: [],
|
|
83
116
|
});
|
|
84
117
|
}
|
|
85
118
|
else {
|
|
86
|
-
context.report({ node, messageId: 'rawColor', data: { value:
|
|
119
|
+
context.report({ node, messageId: 'rawColor', data: { value: literal, pkg: TOKENS_PKG } });
|
|
87
120
|
}
|
|
88
121
|
}
|
|
89
|
-
function
|
|
122
|
+
function checkPxValue(node, property, px, display) {
|
|
90
123
|
if (spacingProperties.has(property)) {
|
|
91
124
|
const token = SPACING_TOKENS_BY_PX[px];
|
|
92
|
-
if (!token)
|
|
125
|
+
if (!token) {
|
|
126
|
+
context.report({
|
|
127
|
+
node,
|
|
128
|
+
messageId: 'offScaleSpacing',
|
|
129
|
+
data: { value: display, property, scale: scale(SPACING_TOKENS_BY_PX), pkg: TOKENS_PKG },
|
|
130
|
+
});
|
|
93
131
|
return;
|
|
132
|
+
}
|
|
94
133
|
context.report({
|
|
95
134
|
node,
|
|
96
135
|
messageId: 'rawSpacing',
|
|
@@ -100,8 +139,14 @@ export const noRawDesignValues = {
|
|
|
100
139
|
}
|
|
101
140
|
else if (radiiProperties.has(property)) {
|
|
102
141
|
const token = RADII_TOKENS_BY_PX[px];
|
|
103
|
-
if (!token)
|
|
142
|
+
if (!token) {
|
|
143
|
+
context.report({
|
|
144
|
+
node,
|
|
145
|
+
messageId: 'offScaleRadius',
|
|
146
|
+
data: { value: display, property, scale: scale(RADII_TOKENS_BY_PX), pkg: TOKENS_PKG },
|
|
147
|
+
});
|
|
104
148
|
return;
|
|
149
|
+
}
|
|
105
150
|
context.report({
|
|
106
151
|
node,
|
|
107
152
|
messageId: 'rawRadius',
|
|
@@ -109,19 +154,109 @@ export const noRawDesignValues = {
|
|
|
109
154
|
suggest: suggestReplacement(node, `radii.${token}`, 'radii', 'tokens/spacing.css'),
|
|
110
155
|
});
|
|
111
156
|
}
|
|
157
|
+
else if (FONT_SIZE_PROPERTIES.has(property)) {
|
|
158
|
+
checkFontSize(node, px / 16, display);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function checkFontSize(node, rem, display) {
|
|
162
|
+
const hit = FONT_SIZE_TOKENS_BY_REM[rem];
|
|
163
|
+
if (!hit)
|
|
164
|
+
return;
|
|
165
|
+
context.report({
|
|
166
|
+
node,
|
|
167
|
+
messageId: 'rawFontSize',
|
|
168
|
+
data: { value: display, group: hit.group, token: hit.token, pkg: TOKENS_PKG },
|
|
169
|
+
suggest: suggestReplacement(node, `${hit.group}.${hit.token}`, hit.group, 'tokens/typography.css'),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function checkFontWeight(node, weight, display) {
|
|
173
|
+
const token = FONT_WEIGHT_TOKENS[weight];
|
|
174
|
+
if (!token)
|
|
175
|
+
return;
|
|
176
|
+
context.report({
|
|
177
|
+
node,
|
|
178
|
+
messageId: 'rawFontWeight',
|
|
179
|
+
data: { value: display, token, pkg: TOKENS_PKG },
|
|
180
|
+
suggest: suggestReplacement(node, `typography.${token}`, 'typography', 'tokens/typography.css'),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
function checkStringValue(node, property, value) {
|
|
184
|
+
const px = /^(\d+(?:\.\d+)?)px$/.exec(value);
|
|
185
|
+
const rem = /^(\d+(?:\.\d+)?)rem$/.exec(value);
|
|
186
|
+
const ms = /^(\d+(?:\.\d+)?)ms$/.exec(value);
|
|
187
|
+
const display = `'${value}'`;
|
|
188
|
+
if (px) {
|
|
189
|
+
checkPxValue(node, property, Number(px[1]), display);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (rem && FONT_SIZE_PROPERTIES.has(property)) {
|
|
193
|
+
checkFontSize(node, Number(rem[1]), display);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (FONT_WEIGHT_PROPERTIES.has(property) && /^\d{3}$/.test(value)) {
|
|
197
|
+
checkFontWeight(node, Number(value), display);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (SHADOW_PROPERTIES.has(property)) {
|
|
201
|
+
if (value === 'none')
|
|
202
|
+
return;
|
|
203
|
+
const token = SHADOW_TOKENS[normalizeValue(value)];
|
|
204
|
+
context.report({
|
|
205
|
+
node,
|
|
206
|
+
messageId: 'rawShadow',
|
|
207
|
+
data: { value, token: token ?? '*', pkg: TOKENS_PKG },
|
|
208
|
+
suggest: token
|
|
209
|
+
? suggestReplacement(node, `shadows.${token}`, 'shadows', 'tokens/shadows.css')
|
|
210
|
+
: [],
|
|
211
|
+
});
|
|
212
|
+
// A palette shadow's own rgba() is the token, not a second finding.
|
|
213
|
+
if (!token)
|
|
214
|
+
checkColorValue(node, value);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (DURATION_PROPERTIES.has(property) && ms) {
|
|
218
|
+
const token = DURATION_TOKENS_BY_MS[Number(ms[1])];
|
|
219
|
+
context.report({
|
|
220
|
+
node,
|
|
221
|
+
messageId: 'rawDuration',
|
|
222
|
+
data: { value, property, token: token ?? '*', pkg: TOKENS_PKG },
|
|
223
|
+
suggest: token
|
|
224
|
+
? suggestReplacement(node, `duration.${token}`, 'duration', 'tokens/motion.css')
|
|
225
|
+
: [],
|
|
226
|
+
});
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
if (EASING_PROPERTIES.has(property)) {
|
|
230
|
+
const token = EASING_TOKENS[normalizeValue(value)];
|
|
231
|
+
context.report({
|
|
232
|
+
node,
|
|
233
|
+
messageId: 'rawEasing',
|
|
234
|
+
data: { value, property, token: token ?? '*', pkg: TOKENS_PKG },
|
|
235
|
+
suggest: token
|
|
236
|
+
? suggestReplacement(node, `easing.${token}`, 'easing', 'tokens/motion.css')
|
|
237
|
+
: [],
|
|
238
|
+
});
|
|
239
|
+
}
|
|
112
240
|
}
|
|
113
241
|
function checkValue(node, property) {
|
|
114
242
|
if (node.type === 'Literal') {
|
|
115
243
|
if (typeof node.value === 'string') {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
244
|
+
if (property && SHADOW_PROPERTIES.has(property)) {
|
|
245
|
+
checkStringValue(node, property, node.value);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
checkColorValue(node, node.value);
|
|
249
|
+
if (property)
|
|
250
|
+
checkStringValue(node, property, node.value);
|
|
121
251
|
}
|
|
122
252
|
}
|
|
123
253
|
else if (typeof node.value === 'number' && property && node.value > 0) {
|
|
124
|
-
|
|
254
|
+
if (FONT_WEIGHT_PROPERTIES.has(property)) {
|
|
255
|
+
checkFontWeight(node, node.value, String(node.value));
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
checkPxValue(node, property, node.value, String(node.value));
|
|
259
|
+
}
|
|
125
260
|
}
|
|
126
261
|
return;
|
|
127
262
|
}
|
|
@@ -131,6 +266,37 @@ export const noRawDesignValues = {
|
|
|
131
266
|
// Everything else (identifiers, member expressions, template literals,
|
|
132
267
|
// calls, negatives via UnaryExpression) is deliberately skipped.
|
|
133
268
|
}
|
|
269
|
+
/** A `@media (min-width: 768px)` key: report, and offer the const key. */
|
|
270
|
+
function checkConditionKey(prop, key) {
|
|
271
|
+
const match = BREAKPOINT_KEY_RE.exec(key);
|
|
272
|
+
if (!match)
|
|
273
|
+
return;
|
|
274
|
+
const px = Number(match[1]);
|
|
275
|
+
const token = BREAKPOINT_TOKENS_BY_PX[px];
|
|
276
|
+
const data = {
|
|
277
|
+
value: String(px),
|
|
278
|
+
key,
|
|
279
|
+
token: token ?? '*',
|
|
280
|
+
scale: scale(BREAKPOINT_TOKENS_BY_PX),
|
|
281
|
+
pkg: TOKENS_PKG,
|
|
282
|
+
};
|
|
283
|
+
if (!token) {
|
|
284
|
+
context.report({ node: prop.key, messageId: 'rawBreakpoint', data });
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
// css.create needs a computed key for a const; brackets included so a
|
|
288
|
+
// plain string key becomes `[`@media (... ${breakpoints.md})`]`.
|
|
289
|
+
const template = key.replace(`${px}px`, `\${%LOCAL%.${token}}`);
|
|
290
|
+
context.report({
|
|
291
|
+
node: prop.key,
|
|
292
|
+
messageId: 'rawBreakpoint',
|
|
293
|
+
data,
|
|
294
|
+
suggest: suggestReplacement(prop.key, `breakpoints.${token}`, 'breakpoints', 'tokens/breakpoints.css', (local) => {
|
|
295
|
+
const inner = '`' + template.replace('%LOCAL%', local) + '`';
|
|
296
|
+
return prop.computed ? inner : `[${inner}]`;
|
|
297
|
+
}),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
134
300
|
function walkStyleObject(obj, property) {
|
|
135
301
|
for (const prop of obj.properties) {
|
|
136
302
|
if (prop.type !== 'Property')
|
|
@@ -148,6 +314,8 @@ export const noRawDesignValues = {
|
|
|
148
314
|
// Condition keys (default, :hover, @media …) keep the enclosing
|
|
149
315
|
// property; anything else IS the property.
|
|
150
316
|
const isCondition = key === 'default' || /^[:@]/.test(key);
|
|
317
|
+
if (isCondition)
|
|
318
|
+
checkConditionKey(prop, key);
|
|
151
319
|
checkValue(prop.value, isCondition ? property : key);
|
|
152
320
|
}
|
|
153
321
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-raw-design-values.js","sourceRoot":"","sources":["../../src/rules/no-raw-design-values.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"no-raw-design-values.js","sourceRoot":"","sources":["../../src/rules/no-raw-design-values.ts"],"names":[],"mappings":"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"}
|
package/dist/util/tokens.d.ts
CHANGED
|
@@ -11,6 +11,30 @@ export declare const RADII_TOKENS_BY_PX: Record<number, string>;
|
|
|
11
11
|
* (e.g. #6aaffc is both `accent` and `info` in the dark palette → `accent`).
|
|
12
12
|
*/
|
|
13
13
|
export declare const COLOR_TOKENS: Record<string, string>;
|
|
14
|
+
/** px value → breakpoint token name (`breakpoints.md` is the '768px' const). */
|
|
15
|
+
export declare const BREAKPOINT_TOKENS_BY_PX: Record<number, string>;
|
|
16
|
+
/**
|
|
17
|
+
* rem value → font-size token. Built from typeScale.fontSize1..9 first, then
|
|
18
|
+
* typography.fontSize* on top — so a size both scales carry suggests the
|
|
19
|
+
* named `typography` token, and only the steps typography lacks (13px, 30px,
|
|
20
|
+
* 36px) fall back to the numbered typeScale one.
|
|
21
|
+
*/
|
|
22
|
+
export declare const FONT_SIZE_TOKENS_BY_REM: Record<number, {
|
|
23
|
+
group: string;
|
|
24
|
+
token: string;
|
|
25
|
+
}>;
|
|
26
|
+
/** numeric weight → typography token. */
|
|
27
|
+
export declare const FONT_WEIGHT_TOKENS: Record<number, string>;
|
|
28
|
+
/** Shadow value (base palette, whitespace-normalized) → shadows token. */
|
|
29
|
+
export declare const SHADOW_TOKENS: Record<string, string>;
|
|
30
|
+
/** ms value → duration token. */
|
|
31
|
+
export declare const DURATION_TOKENS_BY_MS: Record<number, string>;
|
|
32
|
+
/** Easing value (whitespace-normalized) → easing token. */
|
|
33
|
+
export declare const EASING_TOKENS: Record<string, string>;
|
|
34
|
+
/** Collapse whitespace so `rgba(0, 0, 0, .3)` and `rgba(0,0,0,.3)` compare equal. */
|
|
35
|
+
export declare function normalizeValue(value: string): string;
|
|
36
|
+
/** COLOR_TOKENS keyed by normalized value, so rgba() entries are reachable. */
|
|
37
|
+
export declare const COLOR_TOKENS_NORMALIZED: Record<string, string>;
|
|
14
38
|
/** Expand #abc / #abcd to the 6/8-digit form, lowercased. */
|
|
15
39
|
export declare function normalizeHex(hex: string): string;
|
|
16
40
|
/** Style properties whose numeric values map to the spacing scale. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"AAKA,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"AAKA,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0CnD,CAAA;AAED,qCAAqC;AACrC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASvD,CAAA;AAED,oCAAoC;AACpC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMrD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4D/C,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM1D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAUlF,CAAA;AAED,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKrD,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAA;AAED,iCAAiC;AACjC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKxD,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAA;AAED,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE1D,CAAA;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,aA0B7B,CAAA;AAEF,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,aAU3B,CAAA"}
|
package/dist/util/tokens.js
CHANGED
|
@@ -33,6 +33,13 @@ export const TOKEN_DEEP_PATHS = {
|
|
|
33
33
|
DurationToken: 'keys',
|
|
34
34
|
ICON_SIZES: 'keys',
|
|
35
35
|
IconSize: 'keys',
|
|
36
|
+
BREAKPOINT_KEYS: 'keys',
|
|
37
|
+
BREAKPOINTS_PX: 'keys',
|
|
38
|
+
FONT_SIZE_REM: 'keys',
|
|
39
|
+
FONT_WEIGHTS: 'keys',
|
|
40
|
+
TYPE_SCALE_FONT_SIZE_REM: 'keys',
|
|
41
|
+
SHADOWS: 'keys',
|
|
42
|
+
EASINGS: 'keys',
|
|
36
43
|
ColorToken: 'keys',
|
|
37
44
|
RawColors: 'raw',
|
|
38
45
|
darkColors: 'raw',
|
|
@@ -125,6 +132,63 @@ export const COLOR_TOKENS = {
|
|
|
125
132
|
'rgba(96, 165, 250, 0.5)': 'infoBorder',
|
|
126
133
|
'#bfdbfe': 'infoText',
|
|
127
134
|
};
|
|
135
|
+
/** px value → breakpoint token name (`breakpoints.md` is the '768px' const). */
|
|
136
|
+
export const BREAKPOINT_TOKENS_BY_PX = {
|
|
137
|
+
480: 'xs',
|
|
138
|
+
640: 'sm',
|
|
139
|
+
768: 'md',
|
|
140
|
+
1024: 'lg',
|
|
141
|
+
1280: 'xl',
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* rem value → font-size token. Built from typeScale.fontSize1..9 first, then
|
|
145
|
+
* typography.fontSize* on top — so a size both scales carry suggests the
|
|
146
|
+
* named `typography` token, and only the steps typography lacks (13px, 30px,
|
|
147
|
+
* 36px) fall back to the numbered typeScale one.
|
|
148
|
+
*/
|
|
149
|
+
export const FONT_SIZE_TOKENS_BY_REM = {
|
|
150
|
+
0.75: { group: 'typography', token: 'fontSizeXs' },
|
|
151
|
+
0.8125: { group: 'typeScale', token: 'fontSize2' },
|
|
152
|
+
0.875: { group: 'typography', token: 'fontSizeSm' },
|
|
153
|
+
1: { group: 'typography', token: 'fontSizeMd' },
|
|
154
|
+
1.125: { group: 'typography', token: 'fontSizeLg' },
|
|
155
|
+
1.25: { group: 'typography', token: 'fontSizeXl' },
|
|
156
|
+
1.5: { group: 'typography', token: 'fontSizeHeading' },
|
|
157
|
+
1.875: { group: 'typeScale', token: 'fontSize8' },
|
|
158
|
+
2.25: { group: 'typeScale', token: 'fontSize9' },
|
|
159
|
+
};
|
|
160
|
+
/** numeric weight → typography token. */
|
|
161
|
+
export const FONT_WEIGHT_TOKENS = {
|
|
162
|
+
400: 'fontWeightNormal',
|
|
163
|
+
500: 'fontWeightMedium',
|
|
164
|
+
600: 'fontWeightSemibold',
|
|
165
|
+
700: 'fontWeightBold',
|
|
166
|
+
};
|
|
167
|
+
/** Shadow value (base palette, whitespace-normalized) → shadows token. */
|
|
168
|
+
export const SHADOW_TOKENS = {
|
|
169
|
+
'02px4pxrgba(0,0,0,0.3)': 'sm',
|
|
170
|
+
'04px12pxrgba(0,0,0,0.4)': 'md',
|
|
171
|
+
'08px24pxrgba(0,0,0,0.5)': 'lg',
|
|
172
|
+
};
|
|
173
|
+
/** ms value → duration token. */
|
|
174
|
+
export const DURATION_TOKENS_BY_MS = {
|
|
175
|
+
0: 'instant',
|
|
176
|
+
150: 'fast',
|
|
177
|
+
200: 'base',
|
|
178
|
+
280: 'slow',
|
|
179
|
+
};
|
|
180
|
+
/** Easing value (whitespace-normalized) → easing token. */
|
|
181
|
+
export const EASING_TOKENS = {
|
|
182
|
+
ease: 'standard',
|
|
183
|
+
'cubic-bezier(0.32,0.72,0,1)': 'easeOut',
|
|
184
|
+
'cubic-bezier(0.72,0,0.68,0.28)': 'easeIn',
|
|
185
|
+
};
|
|
186
|
+
/** Collapse whitespace so `rgba(0, 0, 0, .3)` and `rgba(0,0,0,.3)` compare equal. */
|
|
187
|
+
export function normalizeValue(value) {
|
|
188
|
+
return value.trim().replace(/\s+/g, '');
|
|
189
|
+
}
|
|
190
|
+
/** COLOR_TOKENS keyed by normalized value, so rgba() entries are reachable. */
|
|
191
|
+
export const COLOR_TOKENS_NORMALIZED = Object.fromEntries(Object.entries(COLOR_TOKENS).map(([value, token]) => [normalizeValue(value), token]));
|
|
128
192
|
/** Expand #abc / #abcd to the 6/8-digit form, lowercased. */
|
|
129
193
|
export function normalizeHex(hex) {
|
|
130
194
|
const lower = hex.toLowerCase();
|
package/dist/util/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duro-app/eslint-plugin",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "ESLint rules enforcing the Duro design system conventions: react-strict-dom html.* elements, deep token imports, token values over raw px/hex, and no deprecated Table parts.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@typescript-eslint/utils": "^8.0.0",
|
|
49
49
|
"eslint": "^9.20.0",
|
|
50
50
|
"typescript": "^5.7.0",
|
|
51
|
-
"@duro-app/tokens": "^
|
|
51
|
+
"@duro-app/tokens": "^3.0.0"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "tsc -p tsconfig.build.json",
|