@ethlete/cli 3.0.0-next.22 → 3.0.0-next.24
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/CHANGELOG.md +66 -0
- package/design/contrast.ts +49 -0
- package/design/define-call.ts +5 -8
- package/design/define-part.ts +63 -1
- package/design/morph.ts +67 -0
- package/design/motion-runtime.ts +200 -0
- package/design/web/env.d.ts +6 -2
- package/design/web/frame.ts +39 -1
- package/package.json +2 -1
- package/playwright/failure-reporter.d.ts +2 -0
- package/playwright/failure-reporter.js +1 -0
- package/src/lib/design/changed-parts.d.ts +4 -4
- package/src/lib/design/changed-parts.js +10 -6
- package/src/lib/design/changed-parts.js.map +1 -1
- package/src/lib/design/check.js +1 -1
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/contact-sheet.d.ts +39 -8
- package/src/lib/design/contact-sheet.js +131 -21
- package/src/lib/design/contact-sheet.js.map +1 -1
- package/src/lib/design/design-command.js +22 -2
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/generated-stylesheets.d.ts +15 -0
- package/src/lib/design/generated-stylesheets.js +52 -0
- package/src/lib/design/generated-stylesheets.js.map +1 -0
- package/src/lib/design/inbox-command.d.ts +1 -0
- package/src/lib/design/inbox-command.js +15 -0
- package/src/lib/design/inbox-command.js.map +1 -1
- package/src/lib/design/merge-compare.d.ts +10 -0
- package/src/lib/design/merge-compare.js +17 -4
- package/src/lib/design/merge-compare.js.map +1 -1
- package/src/lib/design/paths.d.ts +11 -0
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/render.d.ts +3 -1
- package/src/lib/design/render.js +17 -1
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/serve.js +317 -254
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/shot-command.d.ts +25 -0
- package/src/lib/design/shot-command.js +162 -62
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot.d.ts +14 -4
- package/src/lib/design/shot.js +71 -50
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-command.d.ts +7 -1
- package/src/lib/design/sketch-command.js +108 -31
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/sketch-stylesheets.d.ts +7 -0
- package/src/lib/design/sketch-stylesheets.js +63 -0
- package/src/lib/design/sketch-stylesheets.js.map +1 -0
- package/src/lib/design/studio-api.d.ts +20 -7
- package/src/lib/design/studio-api.js +99 -28
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/check-system.js +8 -0
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/comments/comment.d.ts +18 -1
- package/src/lib/design/system/comments/comment.js +35 -1
- package/src/lib/design/system/comments/comment.js.map +1 -1
- package/src/lib/design/system/comments/complete.js +4 -2
- package/src/lib/design/system/comments/complete.js.map +1 -1
- package/src/lib/design/system/complete-command.d.ts +9 -0
- package/src/lib/design/system/complete-command.js +64 -0
- package/src/lib/design/system/complete-command.js.map +1 -0
- package/src/lib/design/system/complete.d.ts +73 -0
- package/src/lib/design/system/complete.js +655 -0
- package/src/lib/design/system/complete.js.map +1 -0
- package/src/lib/design/system/contrast-check.d.ts +26 -0
- package/src/lib/design/system/contrast-check.js +153 -0
- package/src/lib/design/system/contrast-check.js.map +1 -0
- package/src/lib/design/system/imports.d.ts +28 -3
- package/src/lib/design/system/imports.js +84 -7
- package/src/lib/design/system/imports.js.map +1 -1
- package/src/lib/design/system/list-system.d.ts +11 -0
- package/src/lib/design/system/list-system.js +17 -1
- package/src/lib/design/system/list-system.js.map +1 -1
- package/src/lib/design/system/product-stylesheets.d.ts +3 -0
- package/src/lib/design/system/product-stylesheets.js +40 -0
- package/src/lib/design/system/product-stylesheets.js.map +1 -0
- package/src/lib/design/system/render-check.js +11 -3
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/rules/canonical-class.d.ts +9 -0
- package/src/lib/design/system/rules/canonical-class.js +132 -0
- package/src/lib/design/system/rules/canonical-class.js.map +1 -0
- package/src/lib/design/system/rules/inline-svg.d.ts +7 -0
- package/src/lib/design/system/rules/inline-svg.js +28 -0
- package/src/lib/design/system/rules/inline-svg.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +4 -0
- package/src/lib/design/system/rules/motion.js +46 -2
- package/src/lib/design/system/rules/motion.js.map +1 -1
- package/src/lib/design/system/rules/utility-css.d.ts +11 -0
- package/src/lib/design/system/rules/utility-css.js +290 -0
- package/src/lib/design/system/rules/utility-css.js.map +1 -0
- package/src/lib/design/system/sketch/baseline.d.ts +3 -2
- package/src/lib/design/system/sketch/baseline.js +10 -4
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/merge-preview.d.ts +4 -2
- package/src/lib/design/system/sketch/merge-preview.js +20 -3
- package/src/lib/design/system/sketch/merge-preview.js.map +1 -1
- package/src/lib/design/system/sketch/merge-shared.d.ts +42 -6
- package/src/lib/design/system/sketch/merge-shared.js +122 -24
- package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
- package/src/lib/design/system/sketch/merge.d.ts +3 -3
- package/src/lib/design/system/sketch/merge.js +57 -29
- package/src/lib/design/system/sketch/merge.js.map +1 -1
- package/src/lib/design/system/sketch/merged-parts.d.ts +7 -0
- package/src/lib/design/system/sketch/merged-parts.js +13 -1
- package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
- package/src/lib/design/system/sketch/no-visible-change.d.ts +4 -3
- package/src/lib/design/system/sketch/no-visible-change.js +50 -19
- package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
- package/src/lib/design/system/sketch/overlay.js +7 -2
- package/src/lib/design/system/sketch/overlay.js.map +1 -1
- package/src/lib/design/system/sketch/part-definition.d.ts +12 -0
- package/src/lib/design/system/sketch/part-definition.js +40 -1
- package/src/lib/design/system/sketch/part-definition.js.map +1 -1
- package/src/lib/design/system/sketch/sketch.d.ts +63 -12
- package/src/lib/design/system/sketch/sketch.js +165 -36
- package/src/lib/design/system/sketch/sketch.js.map +1 -1
- package/src/lib/design/system/sketch/unchanged-states.d.ts +11 -5
- package/src/lib/design/system/sketch/unchanged-states.js +39 -25
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/system-modules.d.ts +5 -1
- package/src/lib/design/system/system-modules.js +26 -8
- package/src/lib/design/system/system-modules.js.map +1 -1
- package/src/lib/design/system/system-tsconfig.js +2 -1
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/thumb.d.ts +6 -2
- package/src/lib/design/thumb.js +36 -15
- package/src/lib/design/thumb.js.map +1 -1
- package/src/lib/design/typecheck.d.ts +2 -0
- package/src/lib/design/typecheck.js +19 -2
- package/src/lib/design/typecheck.js.map +1 -1
- package/src/lib/design/variant-diff.d.ts +24 -6
- package/src/lib/design/variant-diff.js +26 -10
- package/src/lib/design/variant-diff.js.map +1 -1
- package/src/lib/design/warm-pages.d.ts +20 -0
- package/src/lib/design/warm-pages.js +78 -0
- package/src/lib/design/warm-pages.js.map +1 -0
- package/src/lib/playwright/failure-reporter.d.ts +35 -0
- package/src/lib/playwright/failure-reporter.js +66 -0
- package/src/lib/playwright/failure-reporter.js.map +1 -0
- package/src/lib/update/commits.d.ts +9 -0
- package/src/lib/update/commits.js +15 -1
- package/src/lib/update/commits.js.map +1 -1
- package/src/lib/update/migration-manifest.d.ts +6 -0
- package/src/lib/update/migration-manifest.js +7 -0
- package/src/lib/update/migration-manifest.js.map +1 -1
- package/src/lib/update/migrations-command.js +1 -0
- package/src/lib/update/migrations-command.js.map +1 -1
- package/src/lib/update/run-migrations.d.ts +22 -0
- package/src/lib/update/run-migrations.js +60 -1
- package/src/lib/update/run-migrations.js.map +1 -1
- package/src/lib/update/update-command.d.ts +10 -0
- package/src/lib/update/update-command.js +28 -2
- package/src/lib/update/update-command.js.map +1 -1
|
@@ -0,0 +1,290 @@
|
|
|
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
|
+
exports.utilityCssOf = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const postcss_1 = __importDefault(require("postcss"));
|
|
10
|
+
const css_source_1 = require("../css-source");
|
|
11
|
+
const imports_1 = require("../imports");
|
|
12
|
+
const ts_source_1 = require("../ts-source");
|
|
13
|
+
const ALIGN = ['start', 'end', 'center', 'stretch', 'baseline', 'flex-start', 'flex-end', 'normal'];
|
|
14
|
+
const DISTRIBUTE = [...ALIGN, 'space-between', 'space-around', 'space-evenly'];
|
|
15
|
+
const OVERFLOW = ['auto', 'hidden', 'visible', 'scroll', 'clip'];
|
|
16
|
+
const SIZE = ['100%', 'auto', 'fit-content', 'min-content', 'max-content', '100vw', '100vh', '100dvh'];
|
|
17
|
+
const KEYWORDS = {
|
|
18
|
+
display: [
|
|
19
|
+
'flex',
|
|
20
|
+
'inline-flex',
|
|
21
|
+
'grid',
|
|
22
|
+
'inline-grid',
|
|
23
|
+
'block',
|
|
24
|
+
'inline-block',
|
|
25
|
+
'inline',
|
|
26
|
+
'none',
|
|
27
|
+
'contents',
|
|
28
|
+
'flow-root',
|
|
29
|
+
],
|
|
30
|
+
position: ['static', 'relative', 'absolute', 'fixed', 'sticky'],
|
|
31
|
+
'flex-direction': ['row', 'row-reverse', 'column', 'column-reverse'],
|
|
32
|
+
'flex-wrap': ['wrap', 'nowrap', 'wrap-reverse'],
|
|
33
|
+
flex: ['1', 'auto', 'none', 'initial'],
|
|
34
|
+
'flex-grow': ['0', '1'],
|
|
35
|
+
'flex-shrink': ['0', '1'],
|
|
36
|
+
'align-items': ALIGN,
|
|
37
|
+
'align-self': [...ALIGN, 'auto'],
|
|
38
|
+
'align-content': DISTRIBUTE,
|
|
39
|
+
'justify-content': DISTRIBUTE,
|
|
40
|
+
'justify-items': ALIGN,
|
|
41
|
+
'justify-self': [...ALIGN, 'auto'],
|
|
42
|
+
'place-items': ALIGN,
|
|
43
|
+
'place-content': DISTRIBUTE,
|
|
44
|
+
overflow: OVERFLOW,
|
|
45
|
+
'overflow-x': OVERFLOW,
|
|
46
|
+
'overflow-y': OVERFLOW,
|
|
47
|
+
'text-align': ['left', 'center', 'right', 'justify', 'start', 'end'],
|
|
48
|
+
'white-space': ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'],
|
|
49
|
+
'text-overflow': ['ellipsis', 'clip'],
|
|
50
|
+
'text-transform': ['uppercase', 'lowercase', 'capitalize', 'none'],
|
|
51
|
+
'font-style': ['italic', 'normal'],
|
|
52
|
+
'pointer-events': ['none', 'auto'],
|
|
53
|
+
'user-select': ['none', 'text', 'all', 'auto'],
|
|
54
|
+
visibility: ['visible', 'hidden', 'collapse'],
|
|
55
|
+
'box-sizing': ['border-box', 'content-box'],
|
|
56
|
+
cursor: ['pointer', 'default', 'not-allowed', 'text', 'move', 'grab', 'grabbing', 'wait', 'help', 'none', 'auto'],
|
|
57
|
+
width: SIZE,
|
|
58
|
+
height: SIZE,
|
|
59
|
+
'min-width': SIZE,
|
|
60
|
+
'min-height': SIZE,
|
|
61
|
+
'max-width': SIZE,
|
|
62
|
+
'max-height': SIZE,
|
|
63
|
+
};
|
|
64
|
+
const SPACING = [
|
|
65
|
+
'gap',
|
|
66
|
+
'row-gap',
|
|
67
|
+
'column-gap',
|
|
68
|
+
'padding',
|
|
69
|
+
'padding-top',
|
|
70
|
+
'padding-right',
|
|
71
|
+
'padding-bottom',
|
|
72
|
+
'padding-left',
|
|
73
|
+
'padding-inline',
|
|
74
|
+
'padding-block',
|
|
75
|
+
'margin',
|
|
76
|
+
'margin-top',
|
|
77
|
+
'margin-right',
|
|
78
|
+
'margin-bottom',
|
|
79
|
+
'margin-left',
|
|
80
|
+
'margin-inline',
|
|
81
|
+
'margin-block',
|
|
82
|
+
'inset',
|
|
83
|
+
'top',
|
|
84
|
+
'right',
|
|
85
|
+
'bottom',
|
|
86
|
+
'left',
|
|
87
|
+
'width',
|
|
88
|
+
'height',
|
|
89
|
+
'min-width',
|
|
90
|
+
'min-height',
|
|
91
|
+
'max-width',
|
|
92
|
+
'max-height',
|
|
93
|
+
];
|
|
94
|
+
const COLOUR = [
|
|
95
|
+
'color',
|
|
96
|
+
'background',
|
|
97
|
+
'background-color',
|
|
98
|
+
'border-color',
|
|
99
|
+
'border-top-color',
|
|
100
|
+
'border-right-color',
|
|
101
|
+
'border-bottom-color',
|
|
102
|
+
'border-left-color',
|
|
103
|
+
'outline-color',
|
|
104
|
+
'text-decoration-color',
|
|
105
|
+
'caret-color',
|
|
106
|
+
'accent-color',
|
|
107
|
+
'fill',
|
|
108
|
+
'stroke',
|
|
109
|
+
];
|
|
110
|
+
const RADIUS = [
|
|
111
|
+
'border-radius',
|
|
112
|
+
'border-top-left-radius',
|
|
113
|
+
'border-top-right-radius',
|
|
114
|
+
'border-bottom-left-radius',
|
|
115
|
+
'border-bottom-right-radius',
|
|
116
|
+
];
|
|
117
|
+
const NAMESPACES = [
|
|
118
|
+
['--color-', COLOUR],
|
|
119
|
+
['--spacing-', SPACING],
|
|
120
|
+
['--font-weight-', ['font-weight']],
|
|
121
|
+
['--font-', ['font-family']],
|
|
122
|
+
['--text-', ['font-size']],
|
|
123
|
+
['--leading-', ['line-height']],
|
|
124
|
+
['--tracking-', ['letter-spacing']],
|
|
125
|
+
['--radius-', RADIUS],
|
|
126
|
+
['--shadow-', ['box-shadow']],
|
|
127
|
+
];
|
|
128
|
+
const stylesheetImportsOf = (file, css) => {
|
|
129
|
+
const files = [];
|
|
130
|
+
let tailwind = false;
|
|
131
|
+
postcss_1.default.parse(css).walkAtRules('import', (rule) => {
|
|
132
|
+
var _a;
|
|
133
|
+
const specifier = (_a = /^(?:url\(\s*)?['"]?([^'"\s)]+)/u.exec(rule.params.trim())) === null || _a === void 0 ? void 0 : _a[1];
|
|
134
|
+
if (specifier === null || specifier === void 0 ? void 0 : specifier.startsWith('.'))
|
|
135
|
+
files.push((0, path_1.resolve)((0, path_1.dirname)(file), specifier));
|
|
136
|
+
if (specifier === 'tailwindcss' || (specifier === null || specifier === void 0 ? void 0 : specifier.startsWith('tailwindcss/')))
|
|
137
|
+
tailwind = true;
|
|
138
|
+
});
|
|
139
|
+
return { files, tailwind };
|
|
140
|
+
};
|
|
141
|
+
const themeDeclarationsOf = (sources) => {
|
|
142
|
+
const root = (source) => (0, path_1.resolve)((0, path_1.dirname)(source.configFile), '../..');
|
|
143
|
+
const queue = sources.flatMap((source) => { var _a; return ((_a = source.config.styles) !== null && _a !== void 0 ? _a : []).map((style) => (0, path_1.resolve)(root(source), style)); });
|
|
144
|
+
const seen = new Set();
|
|
145
|
+
const declarations = [];
|
|
146
|
+
let tailwind = false;
|
|
147
|
+
for (let file = queue.shift(); file !== undefined; file = queue.shift()) {
|
|
148
|
+
if (seen.has(file) || !(0, fs_1.existsSync)(file))
|
|
149
|
+
continue;
|
|
150
|
+
seen.add(file);
|
|
151
|
+
const css = (0, fs_1.readFileSync)(file, 'utf8');
|
|
152
|
+
try {
|
|
153
|
+
const imports = stylesheetImportsOf(file, css);
|
|
154
|
+
queue.push(...imports.files);
|
|
155
|
+
tailwind || (tailwind = imports.tailwind);
|
|
156
|
+
postcss_1.default.parse(css).walkAtRules('theme', (rule) => rule.walkDecls((declaration) => {
|
|
157
|
+
declarations.push([declaration.prop, declaration.value.trim()]);
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
catch (_a) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { declarations, tailwind };
|
|
165
|
+
};
|
|
166
|
+
const utilitiesOf = (product) => {
|
|
167
|
+
const values = new Map();
|
|
168
|
+
let spacingScale = false;
|
|
169
|
+
const { declarations, tailwind } = themeDeclarationsOf([product, ...(product.base ? [product.base] : [])]);
|
|
170
|
+
const add = (properties, value) => {
|
|
171
|
+
var _a;
|
|
172
|
+
for (const property of properties)
|
|
173
|
+
values.set(property, ((_a = values.get(property)) !== null && _a !== void 0 ? _a : new Set()).add(value));
|
|
174
|
+
};
|
|
175
|
+
for (const [name, value] of declarations) {
|
|
176
|
+
if (name === '--spacing')
|
|
177
|
+
spacingScale = true;
|
|
178
|
+
const namespace = NAMESPACES.find(([prefix]) => name.startsWith(prefix));
|
|
179
|
+
if (!namespace || name.includes('*') || value === 'initial') {
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
add(namespace[1], `var(${name})`);
|
|
183
|
+
if (/^var\(--[\w-]+\)$/u.test(value))
|
|
184
|
+
add(namespace[1], value);
|
|
185
|
+
}
|
|
186
|
+
return { values, spacingScale, tailwind };
|
|
187
|
+
};
|
|
188
|
+
const topLevelPartsOf = (value) => {
|
|
189
|
+
const parts = [];
|
|
190
|
+
let depth = 0;
|
|
191
|
+
let part = '';
|
|
192
|
+
for (const char of value) {
|
|
193
|
+
if (char === '(')
|
|
194
|
+
depth++;
|
|
195
|
+
if (char === ')')
|
|
196
|
+
depth--;
|
|
197
|
+
if (char === ' ' && depth === 0) {
|
|
198
|
+
if (part)
|
|
199
|
+
parts.push(part);
|
|
200
|
+
part = '';
|
|
201
|
+
}
|
|
202
|
+
else
|
|
203
|
+
part += char;
|
|
204
|
+
}
|
|
205
|
+
return part ? [...parts, part] : parts;
|
|
206
|
+
};
|
|
207
|
+
const isSpacing = (utilities, { property, value }) => {
|
|
208
|
+
var _a;
|
|
209
|
+
return value === '0' ||
|
|
210
|
+
!!((_a = utilities.values.get(property)) === null || _a === void 0 ? void 0 : _a.has(value)) ||
|
|
211
|
+
(utilities.spacingScale &&
|
|
212
|
+
/^(?:var\(--spacing\)|calc\(var\(--spacing\)\*-?\d*\.?\d+\))$/u.test(value.replace(/ /g, '')));
|
|
213
|
+
};
|
|
214
|
+
const hasUtility = (utilities, { property, value }) => {
|
|
215
|
+
var _a, _b;
|
|
216
|
+
if ((_a = KEYWORDS[property]) === null || _a === void 0 ? void 0 : _a.includes(value))
|
|
217
|
+
return true;
|
|
218
|
+
if (COLOUR.includes(property) && ['transparent', 'currentcolor'].includes(value))
|
|
219
|
+
return true;
|
|
220
|
+
if (SPACING.includes(property)) {
|
|
221
|
+
const parts = topLevelPartsOf(value);
|
|
222
|
+
if (parts.length <= 4 && parts.every((part) => isSpacing(utilities, { property, value: part })))
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
return !!((_b = utilities.values.get(property)) === null || _b === void 0 ? void 0 : _b.has(value));
|
|
226
|
+
};
|
|
227
|
+
const withoutKeyframes = (css) => css.replace(/@keyframes[^{]*\{(?:[^{}]*\{[^{}]*\})*[^{}]*\}/gu, '');
|
|
228
|
+
const lastCompoundOf = (selector) => {
|
|
229
|
+
var _a;
|
|
230
|
+
return (_a = selector
|
|
231
|
+
.trim()
|
|
232
|
+
.split(/[\s>+~]+/u)
|
|
233
|
+
.pop()) !== null && _a !== void 0 ? _a : '';
|
|
234
|
+
};
|
|
235
|
+
const withoutSdkElementRules = (css) => {
|
|
236
|
+
try {
|
|
237
|
+
const root = postcss_1.default.parse(css);
|
|
238
|
+
root.walkRules((rule) => {
|
|
239
|
+
if (rule.selectors.every((selector) => /\.et-[\w-]/u.test(lastCompoundOf(selector))))
|
|
240
|
+
rule.remove();
|
|
241
|
+
});
|
|
242
|
+
return root.toString();
|
|
243
|
+
}
|
|
244
|
+
catch (_a) {
|
|
245
|
+
return css;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
const expressibleDeclarationsOf = (utilities, css) => (0, css_source_1.cssBlocksOf)(withoutSdkElementRules(withoutKeyframes(css))).declarations.flatMap((declaration) => {
|
|
249
|
+
var _a;
|
|
250
|
+
const property = declaration.slice(0, declaration.indexOf(':')).trim().toLowerCase();
|
|
251
|
+
const value = ((_a = (0, css_source_1.declarationValueOf)(declaration)) !== null && _a !== void 0 ? _a : '')
|
|
252
|
+
.replace(/!important/u, '')
|
|
253
|
+
.replace(/\s+/g, ' ')
|
|
254
|
+
.trim()
|
|
255
|
+
.toLowerCase();
|
|
256
|
+
return value && hasUtility(utilities, { property, value }) ? [`${property}: ${value}`] : [];
|
|
257
|
+
});
|
|
258
|
+
const utilityProblemsOf = (file, declarations) => [...new Set(declarations)].map((declaration) => ({
|
|
259
|
+
rule: 'UTILITY-CSS',
|
|
260
|
+
file,
|
|
261
|
+
message: `${declaration} outside foundations - a Tailwind utility in the markup draws it`,
|
|
262
|
+
}));
|
|
263
|
+
const sourceFilesIn = (dir) => (0, fs_1.existsSync)(dir)
|
|
264
|
+
? (0, fs_1.readdirSync)(dir, { recursive: true })
|
|
265
|
+
.filter((path) => /\.(ts|css)$/u.test(path) && !path.endsWith('.d.ts'))
|
|
266
|
+
.map((path) => (0, path_1.resolve)(dir, path))
|
|
267
|
+
: [];
|
|
268
|
+
/**
|
|
269
|
+
* A declaration that a Tailwind utility of the product draws, in a CSS file below the folder of a part outside
|
|
270
|
+
* foundations or in the CSS of a TS file there: a core layout keyword such as `display: flex`, or a value of a
|
|
271
|
+
* spacing, colour, type, radius or shadow token that a `@theme` block of the product's stylesheets registers. A rule
|
|
272
|
+
* whose selectors all end on an SDK `.et-*` element passes: the part's markup cannot put a utility there. A product
|
|
273
|
+
* whose stylesheets import no `tailwindcss` has no utilities, so nothing is flagged.
|
|
274
|
+
*/
|
|
275
|
+
const utilityCssOf = (product) => {
|
|
276
|
+
const utilities = utilitiesOf(product);
|
|
277
|
+
if (!utilities.tailwind)
|
|
278
|
+
return [];
|
|
279
|
+
const below = product.parts
|
|
280
|
+
.filter((part) => part.layer !== 'foundations')
|
|
281
|
+
.flatMap((part) => sourceFilesIn((0, path_1.dirname)(part.file)));
|
|
282
|
+
const files = new Set([...below, ...(0, imports_1.ownSharedFilesOf)(product, below)]);
|
|
283
|
+
return [...files].sort().flatMap((file) => {
|
|
284
|
+
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
285
|
+
const texts = file.endsWith('.css') ? [source] : (0, ts_source_1.textsOf)(source);
|
|
286
|
+
return utilityProblemsOf(file, texts.flatMap((text) => expressibleDeclarationsOf(utilities, text)));
|
|
287
|
+
});
|
|
288
|
+
};
|
|
289
|
+
exports.utilityCssOf = utilityCssOf;
|
|
290
|
+
//# sourceMappingURL=utility-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility-css.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/utility-css.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@ import { PartFile } from '../product';
|
|
|
2
2
|
import { ResolvedProduct } from '../resolve-product';
|
|
3
3
|
export declare const FIXTURES_KEY = "fixtures.ts";
|
|
4
4
|
/**
|
|
5
|
-
* The content hash of a part folder together with the bytes of each
|
|
6
|
-
*
|
|
5
|
+
* The content hash of a part folder together with the bytes of each product `shared/` file it reaches through
|
|
6
|
+
* `@shared/` and each `@assets/` file it or those files import, as `product` resolves them. A part that imports
|
|
7
|
+
* neither hashes as its folder alone.
|
|
7
8
|
*/
|
|
8
9
|
export declare const partHashOf: (options: {
|
|
9
10
|
product: Pick<ResolvedProduct, "dir" | "base">;
|
|
@@ -5,25 +5,31 @@ const crypto_1 = require("crypto");
|
|
|
5
5
|
const fs_1 = require("fs");
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const assets_1 = require("../assets");
|
|
8
|
+
const imports_1 = require("../imports");
|
|
8
9
|
const product_1 = require("../product");
|
|
9
10
|
const resolve_product_1 = require("../resolve-product");
|
|
10
11
|
exports.FIXTURES_KEY = 'fixtures.ts';
|
|
11
12
|
const hashOf = (paths) => {
|
|
12
|
-
var _a;
|
|
13
|
+
var _a, _b;
|
|
13
14
|
const hash = (0, crypto_1.createHash)('sha256');
|
|
14
15
|
for (const file of paths.files)
|
|
15
16
|
hash.update(`${(0, path_1.relative)(paths.root, file)}\0`).update((0, fs_1.readFileSync)(file));
|
|
16
17
|
for (const asset of (_a = paths.assets) !== null && _a !== void 0 ? _a : [])
|
|
17
18
|
hash.update(`${assets_1.ASSETS_PREFIX}${asset.path}\0`).update((0, fs_1.readFileSync)(asset.file));
|
|
19
|
+
for (const shared of (_b = paths.shared) !== null && _b !== void 0 ? _b : [])
|
|
20
|
+
hash.update(`${imports_1.SHARED_PREFIX}${shared.path}\0`).update((0, fs_1.readFileSync)(shared.file));
|
|
18
21
|
return hash.digest('hex').slice(0, 16);
|
|
19
22
|
};
|
|
20
23
|
/**
|
|
21
|
-
* The content hash of a part folder together with the bytes of each
|
|
22
|
-
*
|
|
24
|
+
* The content hash of a part folder together with the bytes of each product `shared/` file it reaches through
|
|
25
|
+
* `@shared/` and each `@assets/` file it or those files import, as `product` resolves them. A part that imports
|
|
26
|
+
* neither hashes as its folder alone.
|
|
23
27
|
*/
|
|
24
28
|
const partHashOf = (options) => {
|
|
25
29
|
const files = (0, assets_1.filesBelow)(options.dir);
|
|
26
|
-
|
|
30
|
+
const shared = (0, imports_1.importedSharedOf)({ product: options.product, files });
|
|
31
|
+
const assets = (0, assets_1.importedAssetsOf)({ product: options.product, files: [...files, ...shared.map(({ file }) => file)] });
|
|
32
|
+
return hashOf({ root: options.dir, files, assets, shared });
|
|
27
33
|
};
|
|
28
34
|
exports.partHashOf = partHashOf;
|
|
29
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/baseline.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,2BAAkC;AAClC,+BAAkD;AAClD,sCAAwE;AACxE,wCAA+D;AAC/D,wDAAgE;AAEnD,QAAA,YAAY,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,13 @@ import { ResolvedProduct } from '../resolve-product';
|
|
|
2
2
|
import { Sketch } from './sketch';
|
|
3
3
|
export type MergePreview = {
|
|
4
4
|
changed: string[];
|
|
5
|
+
shared: string[];
|
|
5
6
|
affected: string[];
|
|
6
7
|
};
|
|
7
8
|
/**
|
|
8
|
-
* What a merge of one variant changes: the parts the variant holds
|
|
9
|
-
* uses one of them, directly or
|
|
9
|
+
* What a merge of one variant changes: the parts the variant holds and, in `shared`, each other part that imports a
|
|
10
|
+
* `shared/` file the variant edits (both in `changed`), and each element and page that uses one of them, directly or
|
|
11
|
+
* through another part.
|
|
10
12
|
*/
|
|
11
13
|
export declare const mergePreviewOf: (options: {
|
|
12
14
|
product: ResolvedProduct;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergePreviewOf = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
4
5
|
const imports_1 = require("../imports");
|
|
5
6
|
const resolve_product_1 = require("../resolve-product");
|
|
7
|
+
const merge_shared_1 = require("./merge-shared");
|
|
6
8
|
const overlay_1 = require("./overlay");
|
|
9
|
+
const sketch_1 = require("./sketch");
|
|
7
10
|
const SHOWN = new Set(['elements', 'pages']);
|
|
8
11
|
const usersOf = (product) => {
|
|
9
12
|
var _a;
|
|
@@ -16,14 +19,27 @@ const usersOf = (product) => {
|
|
|
16
19
|
}
|
|
17
20
|
return users;
|
|
18
21
|
};
|
|
22
|
+
const sharedReachOf = (options) => {
|
|
23
|
+
const { product, held } = options;
|
|
24
|
+
const edited = new Set((0, merge_shared_1.editedSharedPathsOf)(options));
|
|
25
|
+
if (edited.size === 0)
|
|
26
|
+
return [];
|
|
27
|
+
return product.parts
|
|
28
|
+
.filter((part) => !held.has((0, resolve_product_1.partKeyOf)(part)))
|
|
29
|
+
.filter((part) => (0, imports_1.importedSharedOf)({ product, files: (0, sketch_1.sourceFilesIn)((0, path_1.dirname)(part.file)) }).some(({ path }) => edited.has(path)))
|
|
30
|
+
.map(resolve_product_1.partKeyOf);
|
|
31
|
+
};
|
|
19
32
|
/**
|
|
20
|
-
* What a merge of one variant changes: the parts the variant holds
|
|
21
|
-
* uses one of them, directly or
|
|
33
|
+
* What a merge of one variant changes: the parts the variant holds and, in `shared`, each other part that imports a
|
|
34
|
+
* `shared/` file the variant edits (both in `changed`), and each element and page that uses one of them, directly or
|
|
35
|
+
* through another part.
|
|
22
36
|
*/
|
|
23
37
|
const mergePreviewOf = (options) => {
|
|
24
38
|
var _a;
|
|
25
39
|
const users = usersOf(options.product);
|
|
26
|
-
const
|
|
40
|
+
const held = new Set((0, overlay_1.overlaySketch)(options).sketched);
|
|
41
|
+
const shared = sharedReachOf(Object.assign(Object.assign({}, options), { held }));
|
|
42
|
+
const changed = new Set([...held, ...shared]);
|
|
27
43
|
const reached = new Set();
|
|
28
44
|
const queue = [...changed];
|
|
29
45
|
for (let key = queue.shift(); key !== undefined; key = queue.shift()) {
|
|
@@ -36,6 +52,7 @@ const mergePreviewOf = (options) => {
|
|
|
36
52
|
}
|
|
37
53
|
return {
|
|
38
54
|
changed: [...changed].sort(),
|
|
55
|
+
shared: shared.sort(),
|
|
39
56
|
affected: [...reached].filter((key) => { var _a; return !changed.has(key) && SHOWN.has((_a = key.split('/')[0]) !== null && _a !== void 0 ? _a : ''); }).sort(),
|
|
40
57
|
};
|
|
41
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-preview.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge-preview.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"merge-preview.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,61 @@
|
|
|
1
|
+
import { ProductSource } from '../base';
|
|
1
2
|
import { Sketch } from './sketch';
|
|
2
3
|
type PartFile = {
|
|
3
4
|
layer: string;
|
|
4
5
|
name: string;
|
|
5
6
|
file: string;
|
|
6
7
|
};
|
|
8
|
+
type SharedProduct = Pick<ProductSource, 'dir'> & {
|
|
9
|
+
base: Pick<ProductSource, 'dir'> | null;
|
|
10
|
+
};
|
|
7
11
|
/**
|
|
8
|
-
* What a merge does with the sketch's `shared/` folder: `carry`
|
|
9
|
-
*
|
|
10
|
-
*
|
|
12
|
+
* What a merge does with the sketch's `shared/` folder: `carry` names the folder of each target with the paths of the
|
|
13
|
+
* files the product's `shared/` does not hold that it takes - each file it imports, directly or through another such
|
|
14
|
+
* file, and each file nobody imports that its `shared/` held in the product; a file nobody imports and no target held
|
|
15
|
+
* goes to the one target importing `@shared/`. Or why the merge must stop - a part other than a target imports one, a
|
|
16
|
+
* target taking files holds a `shared/` folder of its own, or a file nobody imports has no target to go to.
|
|
11
17
|
*/
|
|
12
18
|
export declare const sharedPlanOf: (options: {
|
|
13
19
|
sketch: Sketch;
|
|
20
|
+
variant: string;
|
|
14
21
|
parts: PartFile[];
|
|
15
|
-
|
|
22
|
+
product: SharedProduct & {
|
|
23
|
+
parts: PartFile[];
|
|
24
|
+
};
|
|
25
|
+
}) => {
|
|
26
|
+
carry: {
|
|
27
|
+
targetDir: string;
|
|
28
|
+
paths: string[];
|
|
29
|
+
}[];
|
|
30
|
+
} | string;
|
|
31
|
+
/**
|
|
32
|
+
* The files of the sketch's and the variant's `shared/` whose path the product's or its base's `shared/` holds, each
|
|
33
|
+
* with the file it replaces in the product's own `shared/`.
|
|
34
|
+
*/
|
|
35
|
+
export declare const productSharedChangesOf: (options: {
|
|
36
|
+
sketch: Sketch;
|
|
37
|
+
variant: string;
|
|
38
|
+
product: SharedProduct;
|
|
39
|
+
}) => {
|
|
40
|
+
from: string;
|
|
41
|
+
to: string;
|
|
42
|
+
}[];
|
|
43
|
+
/** The paths of the product's or its base's `shared/` files that the sketch's or the variant's `shared/` changes. */
|
|
44
|
+
export declare const editedSharedPathsOf: (options: {
|
|
45
|
+
sketch: Sketch;
|
|
46
|
+
variant: string;
|
|
47
|
+
product: SharedProduct;
|
|
48
|
+
}) => string[];
|
|
16
49
|
/**
|
|
17
|
-
* Copies the sketch's `shared/` folder,
|
|
18
|
-
* and turns each `@shared/` import there
|
|
50
|
+
* Copies the files at `paths` of the sketch's `shared/` folder, the picked variant's own `shared/` winning, into the
|
|
51
|
+
* merged target's folder, and turns each `@shared/` import there of a file the product's `shared/` does not hold into a
|
|
52
|
+
* relative one.
|
|
19
53
|
*/
|
|
20
54
|
export declare const carryShared: (options: {
|
|
21
55
|
sketch: Sketch;
|
|
22
56
|
variant: string;
|
|
23
57
|
targetDir: string;
|
|
58
|
+
paths: string[];
|
|
59
|
+
product: SharedProduct;
|
|
24
60
|
}) => void;
|
|
25
61
|
export {};
|