@ethlete/cli 3.0.0-next.24 → 3.0.0-next.26
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 +126 -0
- package/design/define-call.ts +69 -0
- package/design/define-part.ts +43 -9
- package/design/embed-page.ts +37 -4
- package/design/icon-sheet.ts +151 -0
- package/design/logo-sheet.ts +52 -0
- package/design/mark-part.ts +79 -2
- package/design/motion-drive.ts +215 -0
- package/design/motion-runtime.ts +224 -5
- package/design/motion-tokens.ts +177 -0
- package/design/spring.ts +53 -0
- package/design/token-sheet.ts +87 -0
- package/design/web/frame-fill.ts +4 -0
- package/design/web/frame-scheme.ts +44 -0
- package/design/web/frame.ts +239 -31
- package/package.json +1 -1
- package/src/lib/design/calls-tsconfig.d.ts +2 -0
- package/src/lib/design/calls-tsconfig.js +11 -5
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/check.d.ts +1 -0
- package/src/lib/design/check.js +62 -6
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/contact-sheet.d.ts +9 -0
- package/src/lib/design/contact-sheet.js +38 -4
- package/src/lib/design/contact-sheet.js.map +1 -1
- package/src/lib/design/design-command.js +56 -7
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/draw-ledger.d.ts +36 -0
- package/src/lib/design/draw-ledger.js +52 -0
- package/src/lib/design/draw-ledger.js.map +1 -0
- package/src/lib/design/force-interactions.d.ts +2 -1
- package/src/lib/design/force-interactions.js +7 -4
- package/src/lib/design/force-interactions.js.map +1 -1
- package/src/lib/design/mcp-command.d.ts +81 -0
- package/src/lib/design/mcp-command.js +422 -0
- package/src/lib/design/mcp-command.js.map +1 -0
- package/src/lib/design/motion-command.d.ts +71 -0
- package/src/lib/design/motion-command.js +308 -0
- package/src/lib/design/motion-command.js.map +1 -0
- package/src/lib/design/motion-endpoint.d.ts +61 -0
- package/src/lib/design/motion-endpoint.js +133 -0
- package/src/lib/design/motion-endpoint.js.map +1 -0
- package/src/lib/design/motion-flow.d.ts +5 -0
- package/src/lib/design/motion-flow.js +29 -0
- package/src/lib/design/motion-flow.js.map +1 -0
- package/src/lib/design/motion-shot.d.ts +43 -0
- package/src/lib/design/motion-shot.js +97 -0
- package/src/lib/design/motion-shot.js.map +1 -0
- package/src/lib/design/paths.d.ts +14 -0
- package/src/lib/design/paths.js +50 -1
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/ready-shots.d.ts +7 -0
- package/src/lib/design/ready-shots.js +22 -1
- package/src/lib/design/ready-shots.js.map +1 -1
- package/src/lib/design/render-packages.d.ts +14 -0
- package/src/lib/design/render-packages.js +18 -3
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js +1 -0
- package/src/lib/design/render-worker.js.map +1 -1
- package/src/lib/design/render.js +3 -3
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/serve.d.ts +2 -2
- package/src/lib/design/serve.js +191 -21
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/shot-command.d.ts +13 -4
- package/src/lib/design/shot-command.js +30 -24
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot-store.d.ts +24 -0
- package/src/lib/design/shot-store.js +120 -0
- package/src/lib/design/shot-store.js.map +1 -0
- package/src/lib/design/shot.d.ts +37 -1
- package/src/lib/design/shot.js +185 -34
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-command.js +197 -51
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +2 -0
- package/src/lib/design/ssr-shims.js +12 -1
- package/src/lib/design/ssr-shims.js.map +1 -1
- package/src/lib/design/studio-api.d.ts +31 -0
- package/src/lib/design/studio-api.js +118 -1
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/check-system.d.ts +6 -2
- package/src/lib/design/system/check-system.js +102 -20
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/colour.d.ts +4 -1
- package/src/lib/design/system/colour.js +54 -2
- package/src/lib/design/system/colour.js.map +1 -1
- package/src/lib/design/system/complete-command.d.ts +1 -1
- package/src/lib/design/system/complete-command.js +80 -6
- package/src/lib/design/system/complete-command.js.map +1 -1
- package/src/lib/design/system/complete.d.ts +172 -9
- package/src/lib/design/system/complete.js +792 -167
- package/src/lib/design/system/complete.js.map +1 -1
- package/src/lib/design/system/contrast-check.d.ts +6 -1
- package/src/lib/design/system/contrast-check.js +167 -12
- package/src/lib/design/system/contrast-check.js.map +1 -1
- package/src/lib/design/system/drawn-open-points.d.ts +16 -0
- package/src/lib/design/system/drawn-open-points.js +43 -0
- package/src/lib/design/system/drawn-open-points.js.map +1 -0
- package/src/lib/design/system/exceptions.d.ts +59 -0
- package/src/lib/design/system/exceptions.js +132 -0
- package/src/lib/design/system/exceptions.js.map +1 -0
- package/src/lib/design/system/flows/flow.d.ts +3 -0
- package/src/lib/design/system/flows/flow.js +5 -3
- package/src/lib/design/system/flows/flow.js.map +1 -1
- package/src/lib/design/system/handoff.d.ts +11 -0
- package/src/lib/design/system/handoff.js +30 -0
- package/src/lib/design/system/handoff.js.map +1 -0
- package/src/lib/design/system/inventory-approval.d.ts +41 -0
- package/src/lib/design/system/inventory-approval.js +71 -0
- package/src/lib/design/system/inventory-approval.js.map +1 -0
- package/src/lib/design/system/inventory.d.ts +65 -0
- package/src/lib/design/system/inventory.js +168 -0
- package/src/lib/design/system/inventory.js.map +1 -0
- package/src/lib/design/system/list-system.d.ts +4 -1
- package/src/lib/design/system/list-system.js +11 -3
- package/src/lib/design/system/list-system.js.map +1 -1
- package/src/lib/design/system/open-points.d.ts +101 -0
- package/src/lib/design/system/open-points.js +156 -0
- package/src/lib/design/system/open-points.js.map +1 -0
- package/src/lib/design/system/part-ready.d.ts +52 -0
- package/src/lib/design/system/part-ready.js +101 -0
- package/src/lib/design/system/part-ready.js.map +1 -0
- package/src/lib/design/system/read-open-points.d.ts +27 -0
- package/src/lib/design/system/read-open-points.js +81 -0
- package/src/lib/design/system/read-open-points.js.map +1 -0
- package/src/lib/design/system/ready-command.d.ts +7 -0
- package/src/lib/design/system/ready-command.js +65 -0
- package/src/lib/design/system/ready-command.js.map +1 -0
- package/src/lib/design/system/render-check.d.ts +2 -0
- package/src/lib/design/system/render-check.js +216 -32
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/resolve-product.d.ts +4 -4
- package/src/lib/design/system/resolve-product.js +22 -7
- package/src/lib/design/system/resolve-product.js.map +1 -1
- package/src/lib/design/system/rules/implements.d.ts +7 -0
- package/src/lib/design/system/rules/implements.js +43 -0
- package/src/lib/design/system/rules/implements.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +2 -0
- package/src/lib/design/system/rules/motion.js +26 -1
- package/src/lib/design/system/rules/motion.js.map +1 -1
- package/src/lib/design/system/rules/option-values.d.ts +15 -0
- package/src/lib/design/system/rules/option-values.js +145 -0
- package/src/lib/design/system/rules/option-values.js.map +1 -0
- package/src/lib/design/system/rules/stale-replace.js +80 -3
- package/src/lib/design/system/rules/stale-replace.js.map +1 -1
- package/src/lib/design/system/rules/token-selectors.js +1 -1
- package/src/lib/design/system/rules/token-selectors.js.map +1 -1
- package/src/lib/design/system/sketch/baseline.d.ts +11 -2
- package/src/lib/design/system/sketch/baseline.js +4 -2
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/check-sketches.d.ts +1 -0
- package/src/lib/design/system/sketch/check-sketches.js +4 -2
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
- package/src/lib/design/system/sketch/host-edit.d.ts +4 -0
- package/src/lib/design/system/sketch/host-edit.js +68 -0
- package/src/lib/design/system/sketch/host-edit.js.map +1 -0
- package/src/lib/design/system/sketch/merge.d.ts +3 -2
- package/src/lib/design/system/sketch/merge.js +79 -12
- package/src/lib/design/system/sketch/merge.js.map +1 -1
- package/src/lib/design/system/sketch/merged-parts.d.ts +11 -1
- package/src/lib/design/system/sketch/merged-parts.js +24 -3
- package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
- package/src/lib/design/system/sketch/no-visible-change.d.ts +6 -0
- package/src/lib/design/system/sketch/no-visible-change.js +25 -1
- package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
- package/src/lib/design/system/sketch/overlay.js +11 -3
- package/src/lib/design/system/sketch/overlay.js.map +1 -1
- package/src/lib/design/system/sketch/part-definition.d.ts +36 -0
- package/src/lib/design/system/sketch/part-definition.js +56 -2
- package/src/lib/design/system/sketch/part-definition.js.map +1 -1
- package/src/lib/design/system/sketch/sketch.d.ts +47 -0
- package/src/lib/design/system/sketch/sketch.js +137 -44
- package/src/lib/design/system/sketch/sketch.js.map +1 -1
- package/src/lib/design/system/sketch/unchanged-states.d.ts +4 -1
- package/src/lib/design/system/sketch/unchanged-states.js +9 -5
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.d.ts +12 -0
- package/src/lib/design/system/sketch/unused-closure.js +195 -0
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -0
- package/src/lib/design/system/sketch/unused-files.d.ts +1 -1
- package/src/lib/design/system/sketch/unused-files.js +6 -3
- package/src/lib/design/system/sketch/unused-files.js.map +1 -1
- package/src/lib/design/system/system-modules.js +6 -9
- package/src/lib/design/system/system-modules.js.map +1 -1
- package/src/lib/design/system/system-tsconfig.d.ts +2 -1
- package/src/lib/design/system/system-tsconfig.js +10 -6
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/system/ts-source.d.ts +3 -0
- package/src/lib/design/system/ts-source.js +21 -4
- package/src/lib/design/system/ts-source.js.map +1 -1
- package/src/lib/design/thumb.d.ts +31 -4
- package/src/lib/design/thumb.js +105 -40
- package/src/lib/design/thumb.js.map +1 -1
|
@@ -3,7 +3,59 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.coloursIn = void 0;
|
|
4
4
|
const HEX = /(?<![&\w/])#(?:[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{3,4})(?![\w-])/gi;
|
|
5
5
|
const FUNCTION = /(?<![\w-])(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\(/gi;
|
|
6
|
-
|
|
7
|
-
const
|
|
6
|
+
const VAR = /var\(/giy;
|
|
7
|
+
const closingParenOf = (text, open) => {
|
|
8
|
+
let depth = 0;
|
|
9
|
+
for (let index = open; index < text.length; index++) {
|
|
10
|
+
if (text[index] === '(')
|
|
11
|
+
depth++;
|
|
12
|
+
else if (text[index] === ')' && --depth === 0)
|
|
13
|
+
return index;
|
|
14
|
+
}
|
|
15
|
+
return -1;
|
|
16
|
+
};
|
|
17
|
+
const withoutVars = (text) => {
|
|
18
|
+
let out = '';
|
|
19
|
+
let index = 0;
|
|
20
|
+
while (index < text.length) {
|
|
21
|
+
VAR.lastIndex = index;
|
|
22
|
+
if (!VAR.test(text)) {
|
|
23
|
+
out += text[index++];
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const close = closingParenOf(text, index + 'var'.length);
|
|
27
|
+
if (close === -1)
|
|
28
|
+
return null;
|
|
29
|
+
out += ' ';
|
|
30
|
+
index = close + 1;
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
};
|
|
34
|
+
const channelsOf = (rest) => {
|
|
35
|
+
const slash = rest.indexOf('/');
|
|
36
|
+
if (slash !== -1)
|
|
37
|
+
return rest.slice(0, slash);
|
|
38
|
+
const comma = rest.lastIndexOf(',');
|
|
39
|
+
return comma === -1 ? rest : rest.slice(0, comma);
|
|
40
|
+
};
|
|
41
|
+
const isTokenRgb = (text, match) => {
|
|
42
|
+
if (!/^rgba?\($/iu.test(match[0]))
|
|
43
|
+
return false;
|
|
44
|
+
const open = match.index + match[0].length - 1;
|
|
45
|
+
const close = closingParenOf(text, open);
|
|
46
|
+
if (close === -1)
|
|
47
|
+
return false;
|
|
48
|
+
const args = text.slice(open + 1, close);
|
|
49
|
+
const rest = withoutVars(args);
|
|
50
|
+
return rest !== null && rest !== args && /^[\s,]*$/u.test(channelsOf(rest));
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* The hex colours and colour functions written in a piece of text. An `rgb()` or `rgba()` whose channels all come from
|
|
54
|
+
* `var()` is a token colour and does not count; its alpha may be a literal.
|
|
55
|
+
*/
|
|
56
|
+
const coloursIn = (text) => [
|
|
57
|
+
...[...text.matchAll(HEX)].map((match) => match[0]),
|
|
58
|
+
...[...text.matchAll(FUNCTION)].filter((match) => !isTokenRgb(text, match)).map((match) => match[0]),
|
|
59
|
+
];
|
|
8
60
|
exports.coloursIn = coloursIn;
|
|
9
61
|
//# sourceMappingURL=colour.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colour.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/colour.ts"],"names":[],"mappings":";;;AAAA,MAAM,GAAG,GAAG,kEAAkE,CAAC;AAC/E,MAAM,QAAQ,GAAG,6DAA6D,CAAC;
|
|
1
|
+
{"version":3,"file":"colour.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/colour.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { chromiumOf } from '../browser';
|
|
2
|
-
export declare const COMPLETE_USAGE = "complete <layer>/<name> [--product <name>]";
|
|
2
|
+
export declare const COMPLETE_USAGE = "complete <layer>/<name> [--variant <key> | --handoff] [--product <name>] | complete --handoff [--product <name>] | complete --request <layer>/<name>.<control>.<requirement> --reason <text> [--product <name>]";
|
|
3
3
|
/** `et design complete <layer>/<name>` exits 1 while a control the part declares lacks a drawn, reviewed state or surface. */
|
|
4
4
|
export declare const designComplete: (options: {
|
|
5
5
|
target: string;
|
|
@@ -11,16 +11,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.designComplete = exports.COMPLETE_USAGE = void 0;
|
|
13
13
|
const complete_1 = require("./complete");
|
|
14
|
+
const exceptions_1 = require("./exceptions");
|
|
15
|
+
const handoff_1 = require("./handoff");
|
|
14
16
|
const resolve_product_1 = require("./resolve-product");
|
|
15
17
|
const cli_args_1 = require("./sketch/cli-args");
|
|
16
18
|
const sketch_1 = require("./sketch/sketch");
|
|
17
|
-
exports.COMPLETE_USAGE = 'complete <layer>/<name> [--product <name>]';
|
|
19
|
+
exports.COMPLETE_USAGE = 'complete <layer>/<name> [--variant <key> | --handoff] [--product <name>] | complete --handoff [--product <name>] | complete --request <layer>/<name>.<control>.<requirement> --reason <text> [--product <name>]';
|
|
18
20
|
/** `et design complete <layer>/<name>` exits 1 while a control the part declares lacks a drawn, reviewed state or surface. */
|
|
19
21
|
const designComplete = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
var _a, _b, _c, _d, _e;
|
|
20
23
|
const { target, argv, invocation } = options;
|
|
21
|
-
const args = (0, cli_args_1.argsOf)(argv, ['--product']);
|
|
24
|
+
const args = (0, cli_args_1.argsOf)(argv, ['--product', '--request', '--reason', '--variant']);
|
|
22
25
|
const usage = `usage: ${invocation} ${exports.COMPLETE_USAGE}`;
|
|
23
|
-
|
|
26
|
+
const request = typeof args === 'string' ? undefined : args.values['--request'];
|
|
27
|
+
const handoff = typeof args !== 'string' && args.flags.has('--handoff');
|
|
28
|
+
if (typeof args === 'string' ||
|
|
29
|
+
args.positional.length > (request === undefined ? 1 : 0) ||
|
|
30
|
+
(args.positional.length === 0 && request === undefined && !handoff) ||
|
|
31
|
+
(handoff && (request !== undefined || args.values['--variant'] !== undefined)) ||
|
|
32
|
+
(request === undefined) !== (args.values['--reason'] === undefined) ||
|
|
33
|
+
(request !== undefined && args.values['--variant'] !== undefined)) {
|
|
24
34
|
if (typeof args === 'string')
|
|
25
35
|
console.error(args);
|
|
26
36
|
console.error(usage);
|
|
@@ -31,6 +41,58 @@ const designComplete = (options) => __awaiter(void 0, void 0, void 0, function*
|
|
|
31
41
|
console.error(config);
|
|
32
42
|
return 1;
|
|
33
43
|
}
|
|
44
|
+
if (request !== undefined) {
|
|
45
|
+
const product = (0, cli_args_1.oneProductOf)({ target, config, asked: args.values['--product'] });
|
|
46
|
+
const requested = typeof product === 'string'
|
|
47
|
+
? product
|
|
48
|
+
: (0, exceptions_1.requestException)({ product, key: request, reason: (_a = args.values['--reason']) !== null && _a !== void 0 ? _a : '' });
|
|
49
|
+
if (typeof requested === 'string') {
|
|
50
|
+
console.error(requested);
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
console.log(`requested exception ${request} - design complete still fails on it until the user approves it in Studio`);
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
if (args.positional[0] === undefined) {
|
|
57
|
+
const product = (0, cli_args_1.oneProductOf)({ target, config, asked: args.values['--product'] });
|
|
58
|
+
if (typeof product === 'string') {
|
|
59
|
+
console.error(product);
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
const parts = Object.keys((0, handoff_1.readHandoff)(product.dir));
|
|
63
|
+
let failed = 0;
|
|
64
|
+
for (const part of parts) {
|
|
65
|
+
const result = yield (0, complete_1.completenessOf)({ target, config, product, part, chromiumOf: options.chromiumOf });
|
|
66
|
+
if ('unavailable' in result) {
|
|
67
|
+
console.error(`design complete needs a browser: ${result.unavailable}`);
|
|
68
|
+
return 1;
|
|
69
|
+
}
|
|
70
|
+
if ('problem' in result) {
|
|
71
|
+
failed++;
|
|
72
|
+
console.error(`HANDOFF ${part} regressed - ${result.problem}`);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
for (const exception of (_b = result.exceptions) !== null && _b !== void 0 ? _b : [])
|
|
76
|
+
console.log((0, exceptions_1.exceptionLineOf)(exception));
|
|
77
|
+
for (const gap of result.gaps)
|
|
78
|
+
console.error((0, complete_1.completenessGapLineOf)(gap));
|
|
79
|
+
for (const hint of (_c = result.hints) !== null && _c !== void 0 ? _c : [])
|
|
80
|
+
console.log(hint);
|
|
81
|
+
if (result.gaps.length > 0) {
|
|
82
|
+
failed++;
|
|
83
|
+
console.error(`HANDOFF ${part} regressed - ${result.gaps.length} gap(s)`);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(`HANDOFF ${part} complete`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (failed > 0) {
|
|
90
|
+
console.error(`${failed} of ${parts.length} handoff part(s) in ${product.name} are no longer design complete`);
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
console.log(`${parts.length} handoff part(s) in ${product.name} are design complete`);
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
34
96
|
const parsed = (0, sketch_1.parseTarget)(args.positional[0]);
|
|
35
97
|
if (typeof parsed === 'string') {
|
|
36
98
|
console.error(parsed);
|
|
@@ -42,7 +104,10 @@ const designComplete = (options) => __awaiter(void 0, void 0, void 0, function*
|
|
|
42
104
|
return 1;
|
|
43
105
|
}
|
|
44
106
|
const part = (0, resolve_product_1.partKeyOf)(parsed);
|
|
45
|
-
const
|
|
107
|
+
const variant = args.values['--variant'];
|
|
108
|
+
const sketch = variant === undefined ? null : { target: part, variant };
|
|
109
|
+
const result = yield (0, complete_1.completenessOf)({ target, config, product, part, sketch, chromiumOf: options.chromiumOf });
|
|
110
|
+
const what = sketch ? `variant ${variant} of ${part}` : part;
|
|
46
111
|
if ('problem' in result) {
|
|
47
112
|
console.error(result.problem);
|
|
48
113
|
return 1;
|
|
@@ -51,13 +116,22 @@ const designComplete = (options) => __awaiter(void 0, void 0, void 0, function*
|
|
|
51
116
|
console.error(`design complete needs a browser: ${result.unavailable}`);
|
|
52
117
|
return 1;
|
|
53
118
|
}
|
|
119
|
+
for (const exception of (_d = result.exceptions) !== null && _d !== void 0 ? _d : [])
|
|
120
|
+
console.log((0, exceptions_1.exceptionLineOf)(exception));
|
|
54
121
|
for (const gap of result.gaps)
|
|
55
122
|
console.error((0, complete_1.completenessGapLineOf)(gap));
|
|
123
|
+
for (const hint of (_e = result.hints) !== null && _e !== void 0 ? _e : [])
|
|
124
|
+
console.log(hint);
|
|
56
125
|
if (result.gaps.length > 0) {
|
|
57
|
-
console.error(`${
|
|
126
|
+
console.error(`${what} in ${product.name} is not design complete: ${result.gaps.length} gap(s)`);
|
|
58
127
|
return 1;
|
|
59
128
|
}
|
|
60
|
-
|
|
129
|
+
if (handoff) {
|
|
130
|
+
(0, handoff_1.recordHandoff)({ productDir: product.dir, part });
|
|
131
|
+
console.log(`${what} in ${product.name} is design complete and has the handoff status`);
|
|
132
|
+
return 0;
|
|
133
|
+
}
|
|
134
|
+
console.log(`${what} in ${product.name} is design complete`);
|
|
61
135
|
return 0;
|
|
62
136
|
});
|
|
63
137
|
exports.designComplete = designComplete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/complete-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,yCAAmE;AACnE,uDAA8C;AAC9C,gDAAmE;AACnE,4CAA8C;AAEjC,QAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"complete-command.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system/complete-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
import { chromiumOf } from '../browser';
|
|
2
2
|
import { DesignConfig } from '../paths';
|
|
3
|
-
import {
|
|
3
|
+
import { Browser } from '../thumb';
|
|
4
|
+
import { ResolvedPart, ResolvedProduct } from './resolve-product';
|
|
5
|
+
import { SketchVariant, SystemModules } from './system-modules';
|
|
6
|
+
import { ListedException } from './exceptions';
|
|
7
|
+
import { InventoryState } from './inventory-approval';
|
|
4
8
|
/** One requirement of a part that `design complete` finds without evidence. `target` is `<part>[.<control>[.<requirement>]]`. */
|
|
5
9
|
export type CompletenessGap = {
|
|
6
10
|
code: string;
|
|
7
11
|
target: string;
|
|
8
12
|
detail: string;
|
|
9
13
|
};
|
|
14
|
+
/** A box in the pixels of a drawn frame, as its `/__design/shot` picture shows it. */
|
|
15
|
+
export type FrameBox = {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
};
|
|
10
21
|
/**
|
|
11
22
|
* An element of a drawn frame that looks interactive. `control` is a native control, an interactive role or a known
|
|
12
23
|
* SDK control; `unclassified` has a pointer cursor or a matched `:hover` rule and sits in no control. `marked` is the
|
|
13
|
-
* `data-et-control` that declares it, `within` every `data-et-control` around it, nearest first.
|
|
24
|
+
* `data-et-control` that declares it, `within` every `data-et-control` around it, nearest first. `owner` is the
|
|
25
|
+
* embedded part whose `data-et-part` root draws it, or `null` for the frame's own part.
|
|
14
26
|
*/
|
|
15
27
|
export type FoundControl = {
|
|
16
28
|
kind: 'control' | 'unclassified';
|
|
@@ -18,6 +30,37 @@ export type FoundControl = {
|
|
|
18
30
|
path: string;
|
|
19
31
|
marked: string | null;
|
|
20
32
|
within: string[];
|
|
33
|
+
owner?: string | null;
|
|
34
|
+
box?: FrameBox | null;
|
|
35
|
+
};
|
|
36
|
+
/** A rule of the part's own stylesheet that sets `properties` on `path`, an element the embedded part `owner` draws. */
|
|
37
|
+
export type FoundOverride = {
|
|
38
|
+
owner: string;
|
|
39
|
+
selector: string;
|
|
40
|
+
path: string;
|
|
41
|
+
properties: string[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A forced interaction on a drawn element: whether its box differs from rest, which colours change in one frame, and
|
|
45
|
+
* the classes of that interaction's variant no stylesheet defines when it does not differ.
|
|
46
|
+
*/
|
|
47
|
+
export type SeenForce = {
|
|
48
|
+
interaction: string;
|
|
49
|
+
differs: boolean;
|
|
50
|
+
still?: string[];
|
|
51
|
+
undefinedClasses?: string[];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* An option or menu item inside a drawn surface. `selected` is its ARIA selected, checked, pressed or current
|
|
55
|
+
* state, `look` its computed colours, so two options can be told apart without their text. `named` is set when an
|
|
56
|
+
* `aria-activedescendant` in the frame names its id, `keyboard` when it carries `data-active-source="keyboard"`.
|
|
57
|
+
*/
|
|
58
|
+
export type SeenOption = {
|
|
59
|
+
selected: boolean;
|
|
60
|
+
look: string;
|
|
61
|
+
forced: SeenForce[];
|
|
62
|
+
named?: boolean;
|
|
63
|
+
keyboard?: boolean;
|
|
21
64
|
};
|
|
22
65
|
/** What one drawn frame of a state shows of the controls and surfaces its markup marks. */
|
|
23
66
|
export type SeenFrame = {
|
|
@@ -25,20 +68,69 @@ export type SeenFrame = {
|
|
|
25
68
|
interaction: string | null;
|
|
26
69
|
controls: {
|
|
27
70
|
id: string;
|
|
28
|
-
forced:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
71
|
+
forced: SeenForce[];
|
|
72
|
+
selected?: boolean;
|
|
73
|
+
disabled?: boolean;
|
|
74
|
+
look?: string;
|
|
75
|
+
keyboard?: boolean;
|
|
76
|
+
box?: FrameBox | null;
|
|
33
77
|
}[];
|
|
34
78
|
surfaces: {
|
|
35
79
|
id: string;
|
|
36
80
|
shown: boolean;
|
|
81
|
+
options?: SeenOption[];
|
|
37
82
|
}[];
|
|
38
83
|
found?: FoundControl[];
|
|
84
|
+
overrides?: FoundOverride[];
|
|
85
|
+
};
|
|
86
|
+
export type DeclaredControl = {
|
|
87
|
+
kind: string;
|
|
88
|
+
input: string[];
|
|
89
|
+
part: string | null;
|
|
90
|
+
surfaces: Record<string, string>;
|
|
91
|
+
disabled: boolean;
|
|
39
92
|
};
|
|
40
93
|
/** The gaps of each part a control names in `part`, or why it could not be checked. */
|
|
41
94
|
export type ReferencedParts = Record<string, CompletenessGap[] | string>;
|
|
95
|
+
export declare const declaredControlsOf: (value: unknown) => Record<string, DeclaredControl> | null;
|
|
96
|
+
/**
|
|
97
|
+
* Whether a state name shows an interaction: its last word, split at `-`, `_`, spaces and camelCase, or the whole name
|
|
98
|
+
* is hover, hovered, focus, focused, pressed, active or selected. `row-hover`, `collapseFocus` and `focus-visible`
|
|
99
|
+
* are; `active-only` and `inactive` are not.
|
|
100
|
+
*/
|
|
101
|
+
export declare const isInteractionState: (state: string) => boolean;
|
|
102
|
+
/** Whether a part may draw interaction states: it is no page, and its `controls` declare a control of a checked kind. */
|
|
103
|
+
export declare const isControlPart: (options: {
|
|
104
|
+
part: string;
|
|
105
|
+
controls: unknown;
|
|
106
|
+
}) => boolean;
|
|
107
|
+
/**
|
|
108
|
+
* One `CONTROL-STATE` gap per element whose interaction states a part draws that is no control part. The element is
|
|
109
|
+
* the state name without its interaction words (`row-hover` names the row), or `control` when nothing is left.
|
|
110
|
+
*/
|
|
111
|
+
export declare const controlStateGapsOf: (options: {
|
|
112
|
+
part: string;
|
|
113
|
+
controls: unknown;
|
|
114
|
+
states: string[];
|
|
115
|
+
}) => CompletenessGap[];
|
|
116
|
+
/** How much of its frame one rest state changes against `base`, the first state of its part, from 0 to 1. */
|
|
117
|
+
export type StateChange = {
|
|
118
|
+
state: string;
|
|
119
|
+
base: string;
|
|
120
|
+
share: number;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* One hint per state of an element or component that is no control part whose pixels differ from its first state in
|
|
124
|
+
* under a tenth of the frame. Pages compose parts, so they get none; interaction states are left to `CONTROL-STATE`.
|
|
125
|
+
*/
|
|
126
|
+
export declare const smallChangeHintsOf: (options: {
|
|
127
|
+
part: string;
|
|
128
|
+
controls: unknown;
|
|
129
|
+
changes: StateChange[];
|
|
130
|
+
}) => string[];
|
|
131
|
+
/** Whether a discovered element is an undeclared or unclassified finding of the part, not owned or declared. */
|
|
132
|
+
export declare const isFindingOf: (declared: Record<string, DeclaredControl>) => (found: FoundControl) => boolean;
|
|
133
|
+
export declare const findingKeyOf: (found: FoundControl) => string;
|
|
42
134
|
/**
|
|
43
135
|
* The gaps of one part, from its `controls` declaration, its state names and what each drawn frame showed.
|
|
44
136
|
* A part that is not `reviewed` (its files differ from its merged.json hash) has no reviewed evidence at all.
|
|
@@ -51,23 +143,94 @@ export declare const completenessGapsOf: (options: {
|
|
|
51
143
|
reviewed: boolean;
|
|
52
144
|
grid?: unknown;
|
|
53
145
|
referenced?: ReferencedParts;
|
|
146
|
+
inventory?: InventoryState;
|
|
54
147
|
}) => CompletenessGap[];
|
|
55
148
|
export declare const completenessGapLineOf: (gap: CompletenessGap) => string;
|
|
149
|
+
/** Whether a gap is a declared control that no state draws, or that lacks a drawn interaction, look or surface. */
|
|
150
|
+
export declare const isMissingStateGap: (gap: CompletenessGap) => boolean;
|
|
151
|
+
export declare const SDK_CONTROLS: string[];
|
|
152
|
+
export declare const PLAIN_CONTROL_SELECTOR: string;
|
|
153
|
+
/** Where a rest frame of a part is drawn: its state at a preset, or at a width, as `/__design/shot` takes it. */
|
|
154
|
+
export type FrameAddress = {
|
|
155
|
+
state: string;
|
|
156
|
+
preset: string | null;
|
|
157
|
+
width: number | null;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Draws every state of one part of the product, at rest and, unless `restOnly`, in each interaction it declares,
|
|
161
|
+
* once at its first preset or width, and answers what each frame showed, or why its module did not load as a string.
|
|
162
|
+
*/
|
|
163
|
+
export declare const seePart: (options: {
|
|
164
|
+
product: ResolvedProduct;
|
|
165
|
+
part: ResolvedPart;
|
|
166
|
+
system: SystemModules;
|
|
167
|
+
base: string;
|
|
168
|
+
load: (id: string) => Promise<unknown>;
|
|
169
|
+
draw: <T>(job: (browser: Browser) => Promise<T>) => Promise<T>;
|
|
170
|
+
restOnly?: boolean;
|
|
171
|
+
sketch?: SketchVariant | null;
|
|
172
|
+
}) => Promise<string | {
|
|
173
|
+
definition: {
|
|
174
|
+
states?: unknown;
|
|
175
|
+
interactions?: unknown;
|
|
176
|
+
widths?: unknown;
|
|
177
|
+
controls?: unknown;
|
|
178
|
+
grid?: unknown;
|
|
179
|
+
} | undefined;
|
|
180
|
+
states: string[];
|
|
181
|
+
seen: SeenFrame[];
|
|
182
|
+
refused: string[];
|
|
183
|
+
changes: StateChange[];
|
|
184
|
+
addresses: FrameAddress[];
|
|
185
|
+
owner: ResolvedProduct | {
|
|
186
|
+
dir: string;
|
|
187
|
+
base: null;
|
|
188
|
+
};
|
|
189
|
+
hash: string;
|
|
190
|
+
}>;
|
|
191
|
+
/** The control ids a page draws at rest, the set its inventory approval holds. */
|
|
192
|
+
export declare const inventoryIdsOf: (frames: SeenFrame[]) => string[];
|
|
56
193
|
/**
|
|
57
194
|
* Draws every state of one part, at rest and in each interaction it declares, once at its first preset or width,
|
|
58
|
-
* and answers the gaps of its `controls` declaration, or why it could not draw. A part a control names in `part
|
|
59
|
-
* is checked the same way, and its gaps fail
|
|
195
|
+
* and answers the gaps of its `controls` declaration, or why it could not draw. A part a control names in `part`,
|
|
196
|
+
* and an embedded part whose `data-et-part` root draws a control, is checked the same way, and its gaps fail it -
|
|
197
|
+
* unless it is a part of the product's base, whose gaps stay its own.
|
|
198
|
+
* A page fails until the user approves its control inventory in Studio. An exception the user approved in Studio
|
|
199
|
+
* drops the gap it names until the part changes; a pending one still fails. With `sketch`, every part is drawn as
|
|
200
|
+
* that variant draws it, and a part the variant changes is not merged yet, so it never fails as unreviewed.
|
|
201
|
+
* A drawn control that no `controls` entry declares is a hint; the sketch check fails on one a sketch adds.
|
|
60
202
|
*/
|
|
61
203
|
export declare const completenessOf: (options: {
|
|
62
204
|
target: string;
|
|
63
205
|
config: DesignConfig;
|
|
64
206
|
product: ResolvedProduct;
|
|
65
207
|
part: string;
|
|
208
|
+
sketch?: SketchVariant | null;
|
|
66
209
|
chromiumOf?: typeof chromiumOf;
|
|
67
210
|
}) => Promise<{
|
|
68
211
|
gaps: CompletenessGap[];
|
|
212
|
+
exceptions?: ListedException[];
|
|
213
|
+
hints?: string[];
|
|
69
214
|
} | {
|
|
70
215
|
unavailable: string;
|
|
71
216
|
} | {
|
|
72
217
|
problem: string;
|
|
73
218
|
}>;
|
|
219
|
+
/**
|
|
220
|
+
* Checks each named part as `completenessOf` does, sharing one server, browser and cache, and answers the gaps of
|
|
221
|
+
* each part, or why it could not be checked as a string.
|
|
222
|
+
*/
|
|
223
|
+
export declare const partsCompletenessOf: (options: {
|
|
224
|
+
target: string;
|
|
225
|
+
config: DesignConfig;
|
|
226
|
+
product: ResolvedProduct;
|
|
227
|
+
parts: string[];
|
|
228
|
+
sketch?: SketchVariant | null;
|
|
229
|
+
chromiumOf?: typeof chromiumOf;
|
|
230
|
+
}) => Promise<{
|
|
231
|
+
gaps: Map<string, CompletenessGap[] | string>;
|
|
232
|
+
exceptions: ListedException[];
|
|
233
|
+
hints: Map<string, string[]>;
|
|
234
|
+
} | {
|
|
235
|
+
unavailable: string;
|
|
236
|
+
}>;
|