@design.estate/wcctools 6.0.0 → 6.2.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/changelog.md +33 -0
- package/dist_shell/bundle.js +405 -368
- package/dist_shell/bundle.js.map +1 -1
- package/dist_shell/bundle.js.third-party-notices.json +52 -0
- package/dist_shell/bundle.js.third-party-notices.txt +107 -1
- package/dist_shell/index.html +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.bundlestatus.d.ts +36 -0
- package/dist_ts/classes.bundlestatus.js +110 -0
- package/dist_ts/classes.devapi.d.ts +3 -0
- package/dist_ts/classes.devapi.js +8 -1
- package/dist_ts/classes.devserver.d.ts +45 -10
- package/dist_ts/classes.devserver.js +123 -49
- package/dist_ts/cli.js +12 -3
- package/dist_ts/index.d.ts +0 -2
- package/dist_ts/index.js +1 -3
- package/dist_ts/plugins.d.ts +7 -2
- package/dist_ts/plugins.js +9 -3
- package/dist_ts/standards/baselines.d.ts +27 -0
- package/dist_ts/standards/baselines.js +83 -0
- package/dist_ts/standards/checker.d.ts +21 -0
- package/dist_ts/standards/checker.js +88 -0
- package/dist_ts/standards/classes.gitrepo.d.ts +13 -0
- package/dist_ts/standards/classes.gitrepo.js +43 -0
- package/dist_ts/standards/classes.sourceedits.d.ts +15 -0
- package/dist_ts/standards/classes.sourceedits.js +54 -0
- package/dist_ts/standards/classes.standardfixer.d.ts +40 -0
- package/dist_ts/standards/classes.standardfixer.js +210 -0
- package/dist_ts/standards/classes.standardproject.d.ts +80 -0
- package/dist_ts/standards/classes.standardproject.js +195 -0
- package/dist_ts/standards/classes.standardtree.d.ts +56 -0
- package/dist_ts/standards/classes.standardtree.js +207 -0
- package/dist_ts/standards/cli.d.ts +7 -0
- package/dist_ts/standards/cli.js +89 -0
- package/dist_ts/standards/config.d.ts +33 -0
- package/dist_ts/standards/config.js +139 -0
- package/dist_ts/standards/errors.d.ts +9 -0
- package/dist_ts/standards/errors.js +17 -0
- package/dist_ts/standards/helpers.ast.d.ts +56 -0
- package/dist_ts/standards/helpers.ast.js +172 -0
- package/dist_ts/standards/helpers.paths.d.ts +36 -0
- package/dist_ts/standards/helpers.paths.js +86 -0
- package/dist_ts/standards/index.d.ts +14 -0
- package/dist_ts/standards/index.js +15 -0
- package/dist_ts/standards/output.d.ts +7 -0
- package/dist_ts/standards/output.js +57 -0
- package/dist_ts/standards/ratchet.d.ts +15 -0
- package/dist_ts/standards/ratchet.js +45 -0
- package/dist_ts/standards/rule.d.ts +50 -0
- package/dist_ts/standards/rule.js +9 -0
- package/dist_ts/standards/rules/barrel.element-index.d.ts +7 -0
- package/dist_ts/standards/rules/barrel.element-index.js +108 -0
- package/dist_ts/standards/rules/barrel.no-demo-export.d.ts +3 -0
- package/dist_ts/standards/rules/barrel.no-demo-export.js +29 -0
- package/dist_ts/standards/rules/demo.fixture-not-exported.d.ts +3 -0
- package/dist_ts/standards/rules/demo.fixture-not-exported.js +29 -0
- package/dist_ts/standards/rules/demo.groups.d.ts +6 -0
- package/dist_ts/standards/rules/demo.groups.js +72 -0
- package/dist_ts/standards/rules/demo.required.d.ts +3 -0
- package/dist_ts/standards/rules/demo.required.js +48 -0
- package/dist_ts/standards/rules/demo.separate-file.d.ts +3 -0
- package/dist_ts/standards/rules/demo.separate-file.js +38 -0
- package/dist_ts/standards/rules/demo.shape.d.ts +3 -0
- package/dist_ts/standards/rules/demo.shape.js +38 -0
- package/dist_ts/standards/rules/docs.component-index.d.ts +8 -0
- package/dist_ts/standards/rules/docs.component-index.js +84 -0
- package/dist_ts/standards/rules/element.exported.d.ts +3 -0
- package/dist_ts/standards/rules/element.exported.js +33 -0
- package/dist_ts/standards/rules/element.literal-tag.d.ts +3 -0
- package/dist_ts/standards/rules/element.literal-tag.js +30 -0
- package/dist_ts/standards/rules/element.reachable.d.ts +3 -0
- package/dist_ts/standards/rules/element.reachable.js +48 -0
- package/dist_ts/standards/rules/element.tag-map.d.ts +3 -0
- package/dist_ts/standards/rules/element.tag-map.js +83 -0
- package/dist_ts/standards/rules/i18n.literals.d.ts +3 -0
- package/dist_ts/standards/rules/i18n.literals.js +52 -0
- package/dist_ts/standards/rules/index.d.ts +12 -0
- package/dist_ts/standards/rules/index.js +83 -0
- package/dist_ts/standards/rules/layout.element-folder.d.ts +3 -0
- package/dist_ts/standards/rules/layout.element-folder.js +47 -0
- package/dist_ts/standards/rules/layout.entry-file-name.d.ts +3 -0
- package/dist_ts/standards/rules/layout.entry-file-name.js +71 -0
- package/dist_ts/standards/rules/layout.entry.d.ts +3 -0
- package/dist_ts/standards/rules/layout.entry.js +38 -0
- package/dist_ts/standards/rules/layout.group-folder.d.ts +3 -0
- package/dist_ts/standards/rules/layout.group-folder.js +22 -0
- package/dist_ts/standards/rules/layout.shared-00.d.ts +3 -0
- package/dist_ts/standards/rules/layout.shared-00.js +36 -0
- package/dist_ts/standards/rules/naming.class-matches-tag.d.ts +3 -0
- package/dist_ts/standards/rules/naming.class-matches-tag.js +26 -0
- package/dist_ts/standards/rules/naming.lowercase-files.d.ts +3 -0
- package/dist_ts/standards/rules/naming.lowercase-files.js +26 -0
- package/dist_ts/standards/rules/naming.tag-prefix.d.ts +3 -0
- package/dist_ts/standards/rules/naming.tag-prefix.js +23 -0
- package/dist_ts/standards/rules/props.accessor.d.ts +3 -0
- package/dist_ts/standards/rules/props.accessor.js +35 -0
- package/dist_ts/standards/rules/props.object-no-attribute.d.ts +3 -0
- package/dist_ts/standards/rules/props.object-no-attribute.js +42 -0
- package/dist_ts/standards/rules/props.reflect-primitive.d.ts +5 -0
- package/dist_ts/standards/rules/props.reflect-primitive.js +41 -0
- package/dist_ts/standards/rules/props.typed.d.ts +6 -0
- package/dist_ts/standards/rules/props.typed.js +64 -0
- package/dist_ts/standards/rules/shared.d.ts +38 -0
- package/dist_ts/standards/rules/shared.js +103 -0
- package/dist_ts/standards/rules/style.bdtheme.d.ts +5 -0
- package/dist_ts/standards/rules/style.bdtheme.js +28 -0
- package/dist_ts_interfaces/index.d.ts +1 -0
- package/dist_ts_interfaces/index.js +2 -1
- package/dist_ts_interfaces/requests.d.ts +35 -0
- package/dist_ts_interfaces/standard.d.ts +93 -0
- package/dist_ts_interfaces/standard.js +6 -0
- package/dist_ts_shell/bundlestatus.d.ts +15 -0
- package/dist_ts_shell/bundlestatus.js +64 -0
- package/dist_ts_shell/elements/wcc-contextmenu.d.ts +3 -0
- package/dist_ts_shell/elements/wcc-contextmenu.js +18 -3
- package/dist_ts_shell/elements/wcc-preview-frame.d.ts +6 -0
- package/dist_ts_shell/elements/wcc-preview-frame.js +50 -2
- package/dist_ts_shell/elements/wcc-shell.d.ts +15 -0
- package/dist_ts_shell/elements/wcc-shell.js +45 -3
- package/dist_ts_shell/plugins.d.ts +2 -1
- package/dist_ts_shell/plugins.js +3 -2
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/package.json +8 -3
- package/readme.md +40 -3
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.bundlestatus.ts +123 -0
- package/ts/classes.devapi.ts +9 -0
- package/ts/classes.devserver.ts +127 -47
- package/ts/cli.ts +12 -2
- package/ts/index.ts +0 -2
- package/ts/plugins.ts +10 -2
- package/ts/standards/baselines.ts +100 -0
- package/ts/standards/checker.ts +114 -0
- package/ts/standards/classes.gitrepo.ts +48 -0
- package/ts/standards/classes.sourceedits.ts +58 -0
- package/ts/standards/classes.standardfixer.ts +234 -0
- package/ts/standards/classes.standardproject.ts +250 -0
- package/ts/standards/classes.standardtree.ts +220 -0
- package/ts/standards/cli.ts +86 -0
- package/ts/standards/config.ts +160 -0
- package/ts/standards/errors.ts +18 -0
- package/ts/standards/helpers.ast.ts +208 -0
- package/ts/standards/helpers.paths.ts +119 -0
- package/ts/standards/index.ts +22 -0
- package/ts/standards/output.ts +65 -0
- package/ts/standards/ratchet.ts +63 -0
- package/ts/standards/rule.ts +58 -0
- package/ts/standards/rules/barrel.element-index.ts +112 -0
- package/ts/standards/rules/barrel.no-demo-export.ts +30 -0
- package/ts/standards/rules/demo.fixture-not-exported.ts +30 -0
- package/ts/standards/rules/demo.groups.ts +74 -0
- package/ts/standards/rules/demo.required.ts +49 -0
- package/ts/standards/rules/demo.separate-file.ts +40 -0
- package/ts/standards/rules/demo.shape.ts +42 -0
- package/ts/standards/rules/docs.component-index.ts +88 -0
- package/ts/standards/rules/element.exported.ts +35 -0
- package/ts/standards/rules/element.literal-tag.ts +30 -0
- package/ts/standards/rules/element.reachable.ts +49 -0
- package/ts/standards/rules/element.tag-map.ts +87 -0
- package/ts/standards/rules/i18n.literals.ts +58 -0
- package/ts/standards/rules/index.ts +87 -0
- package/ts/standards/rules/layout.element-folder.ts +49 -0
- package/ts/standards/rules/layout.entry-file-name.ts +73 -0
- package/ts/standards/rules/layout.entry.ts +40 -0
- package/ts/standards/rules/layout.group-folder.ts +23 -0
- package/ts/standards/rules/layout.shared-00.ts +37 -0
- package/ts/standards/rules/naming.class-matches-tag.ts +27 -0
- package/ts/standards/rules/naming.lowercase-files.ts +27 -0
- package/ts/standards/rules/naming.tag-prefix.ts +24 -0
- package/ts/standards/rules/props.accessor.ts +37 -0
- package/ts/standards/rules/props.object-no-attribute.ts +45 -0
- package/ts/standards/rules/props.reflect-primitive.ts +44 -0
- package/ts/standards/rules/props.typed.ts +70 -0
- package/ts/standards/rules/shared.ts +127 -0
- package/ts/standards/rules/style.bdtheme.ts +31 -0
- package/ts_interfaces/bridge.ts +95 -0
- package/ts_interfaces/catalog.ts +37 -0
- package/ts_interfaces/index.ts +4 -0
- package/ts_interfaces/plugins.ts +3 -0
- package/ts_interfaces/requests.ts +65 -0
- package/ts_interfaces/standard.ts +103 -0
- package/ts_shared/index.ts +1 -0
- package/ts_shared/plugins.ts +3 -0
- package/ts_shared/previewroute.ts +58 -0
- package/ts_shell/bundlestatus.ts +68 -0
- package/ts_shell/elements/wcc-contextmenu.ts +306 -0
- package/ts_shell/elements/wcc-preview-frame.ts +167 -0
- package/ts_shell/elements/wcc-properties.ts +998 -0
- package/ts_shell/elements/wcc-record-button.ts +108 -0
- package/ts_shell/elements/wcc-recording-panel.ts +1005 -0
- package/ts_shell/elements/wcc-shell.ts +485 -0
- package/ts_shell/elements/wcc-sidebar.ts +1419 -0
- package/ts_shell/index.html +21 -0
- package/ts_shell/index.ts +4 -0
- package/ts_shell/plugins.ts +12 -0
- package/ts_shell/previewconnection.ts +103 -0
- package/ts_shell/services/recorder.service.ts +451 -0
- package/ts_shell/types/dom-mediacapture-stub/index.d.ts +12 -0
- package/ts_shell/types/dom-mediacapture-stub/package.json +6 -0
- package/ts_shell/types/dom-webcodecs-stub/index.d.ts +2 -0
- package/ts_shell/types/dom-webcodecs-stub/package.json +6 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import * as ast from '../helpers.ast.js';
|
|
3
|
+
import { baseOf, dirOf, specifierFor } from '../helpers.paths.js';
|
|
4
|
+
const ts = plugins.typescript;
|
|
5
|
+
export const elementsDir = 'ts_web/elements';
|
|
6
|
+
/** `ts_web/elements/00group-<area>` or `ts_web/elements` itself. */
|
|
7
|
+
export const isElementParentDir = (dirArg) => dirArg === elementsDir || /^ts_web\/elements\/00group-[^/]+$/.test(dirArg);
|
|
8
|
+
/** Names the HTML specification reserves; `customElements.define` rejects them. */
|
|
9
|
+
const reservedElementNames = ['annotation-xml', 'color-profile', 'font-face', 'font-face-src', 'font-face-uri', 'font-face-format', 'font-face-name', 'missing-glyph'];
|
|
10
|
+
/**
|
|
11
|
+
* A valid custom element name in the ASCII subset the standard allows: a lowercase letter first,
|
|
12
|
+
* then lowercase letters, digits, `-`, `.` and `_`, at least one `-`, and not a reserved name. Such
|
|
13
|
+
* a tag is also a safe file and folder name, so only these tags feed fixes that derive paths or code.
|
|
14
|
+
*/
|
|
15
|
+
export const isCustomElementName = (tagArg) => /^[a-z][a-z0-9._-]*$/.test(tagArg) && tagArg.includes('-') && !reservedElementNames.includes(tagArg);
|
|
16
|
+
/** True when an element's entry file sits in its own element folder `…/<tag>/`. */
|
|
17
|
+
export const isInElementFolder = (elementArg) => {
|
|
18
|
+
const folder = dirOf(elementArg.file);
|
|
19
|
+
return !!elementArg.tag && baseOf(folder) === elementArg.tag && isElementParentDir(dirOf(folder));
|
|
20
|
+
};
|
|
21
|
+
/** The `<area>` of `ts_web/elements/00group-<area>/…`, or null. */
|
|
22
|
+
export const groupAreaOf = (fileArg) => /^ts_web\/elements\/00group-([^/]+)\//.exec(fileArg)?.[1] ?? null;
|
|
23
|
+
/** Elements outside demo files: the catalog's own elements. */
|
|
24
|
+
export const catalogElements = (projectArg) => projectArg.elements.filter((elementArg) => !elementArg.inDemoFile);
|
|
25
|
+
/** Public `@property` members outside demo files. */
|
|
26
|
+
export const publicProperties = (projectArg) => projectArg.properties.filter((propertyArg) => propertyArg.decorator === 'property' && propertyArg.isPublic && !propertyArg.inDemoFile);
|
|
27
|
+
export const elementKey = (elementArg) => `${elementArg.file}#${elementArg.className ?? elementArg.tag ?? '?'}`;
|
|
28
|
+
export const propertyKey = (propertyArg) => `${propertyArg.file}#${propertyArg.name}`;
|
|
29
|
+
/** The type annotation of a property member without `undefined` and `null` union members. */
|
|
30
|
+
export const coreTypeOf = (propertyArg) => {
|
|
31
|
+
const member = propertyArg.member;
|
|
32
|
+
const typeNode = ts.isPropertyDeclaration(member) ? member.type : undefined;
|
|
33
|
+
if (!typeNode) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
if (ts.isUnionTypeNode(typeNode)) {
|
|
37
|
+
const members = typeNode.types.filter((typeArg) => typeArg.kind !== ts.SyntaxKind.UndefinedKeyword
|
|
38
|
+
&& !(ts.isLiteralTypeNode(typeArg) && typeArg.literal.kind === ts.SyntaxKind.NullKeyword));
|
|
39
|
+
if (members.length === 1) {
|
|
40
|
+
return members[0];
|
|
41
|
+
}
|
|
42
|
+
return typeNode;
|
|
43
|
+
}
|
|
44
|
+
return typeNode;
|
|
45
|
+
};
|
|
46
|
+
export const isArrayTypeNode = (typeArg) => {
|
|
47
|
+
if (ts.isArrayTypeNode(typeArg)) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (ts.isTypeOperatorNode(typeArg) && typeArg.operator === ts.SyntaxKind.ReadonlyKeyword) {
|
|
51
|
+
return ts.isArrayTypeNode(typeArg.type);
|
|
52
|
+
}
|
|
53
|
+
return ts.isTypeReferenceNode(typeArg) && ts.isIdentifier(typeArg.typeName) && ['Array', 'ReadonlyArray'].includes(typeArg.typeName.text);
|
|
54
|
+
};
|
|
55
|
+
/** The position at the start of the line after the last `export … from` statement, or at the end of the file. */
|
|
56
|
+
export const exportInsertionPoint = (sourceFileArg) => {
|
|
57
|
+
let lastEnd = -1;
|
|
58
|
+
for (const statement of sourceFileArg.statements) {
|
|
59
|
+
if (ts.isExportDeclaration(statement)) {
|
|
60
|
+
lastEnd = statement.end;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const text = sourceFileArg.text;
|
|
64
|
+
if (lastEnd === -1) {
|
|
65
|
+
return { position: text.length, prefix: text.length > 0 && !text.endsWith('\n') ? '\n' : '' };
|
|
66
|
+
}
|
|
67
|
+
const newline = text.indexOf('\n', lastEnd);
|
|
68
|
+
return newline === -1 ? { position: text.length, prefix: '\n' } : { position: newline + 1, prefix: '' };
|
|
69
|
+
};
|
|
70
|
+
/** Adds `export * from '<target>';` to a barrel. */
|
|
71
|
+
export const addReexport = (builderArg, projectArg, barrelArg, targetArg) => {
|
|
72
|
+
const point = exportInsertionPoint(projectArg.sourceFile(barrelArg));
|
|
73
|
+
builderArg.edit(barrelArg, point.position, point.position, `${point.prefix}export * from '${specifierFor(barrelArg, targetArg, 'js')}';\n`);
|
|
74
|
+
};
|
|
75
|
+
/** Removes a whole statement including its line break; from the line start when only indentation precedes it. */
|
|
76
|
+
export const removeStatement = (builderArg, fileArg, statementArg) => {
|
|
77
|
+
const text = statementArg.getSourceFile().text;
|
|
78
|
+
let start = statementArg.getStart();
|
|
79
|
+
const lineStart = text.lastIndexOf('\n', start - 1) + 1;
|
|
80
|
+
if (/^[ \t]*$/.test(text.slice(lineStart, start))) {
|
|
81
|
+
start = lineStart;
|
|
82
|
+
}
|
|
83
|
+
let end = statementArg.end;
|
|
84
|
+
const rest = /^[ \t]*\r?\n/.exec(text.slice(end));
|
|
85
|
+
if (rest) {
|
|
86
|
+
end += rest[0].length;
|
|
87
|
+
}
|
|
88
|
+
builderArg.edit(fileArg, start, end, '');
|
|
89
|
+
};
|
|
90
|
+
/** The identifier a `static demo` value refers to at its root, e.g. `demoFunc` or `demos` in `demos.main`. */
|
|
91
|
+
export const rootIdentifier = (expressionArg) => {
|
|
92
|
+
let current = expressionArg;
|
|
93
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
94
|
+
current = current.expression;
|
|
95
|
+
}
|
|
96
|
+
return ts.isIdentifier(current) ? current.text : null;
|
|
97
|
+
};
|
|
98
|
+
/** The start of the line following the line a position is on. */
|
|
99
|
+
export const nextLineStart = (textArg, positionArg) => {
|
|
100
|
+
const newline = textArg.indexOf('\n', positionArg);
|
|
101
|
+
return newline === -1 ? textArg.length : newline + 1;
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvc3RhbmRhcmRzL3J1bGVzL3NoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxHQUFHLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJbEUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUM7QUFFN0Msb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsTUFBYyxFQUFXLEVBQUUsQ0FDNUQsTUFBTSxLQUFLLFdBQVcsSUFBSSxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFN0UsbUZBQW1GO0FBQ25GLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFdks7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBYyxFQUFXLEVBQUUsQ0FDN0QscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkcsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBNEIsRUFBVyxFQUFFO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IStandardRule } from '../rule.js';
|
|
2
|
+
/** The one module that may call `bdTheme()`: the token bridge. */
|
|
3
|
+
export declare const bdThemeBridge = "ts_web/elements/00theme.ts";
|
|
4
|
+
/** dees: no new `cssManager.bdTheme()` call outside `ts_web/elements/00theme.ts`. A ratchet: baselines only. */
|
|
5
|
+
export declare const styleBdThemeRule: IStandardRule;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import * as ast from '../helpers.ast.js';
|
|
3
|
+
const ts = plugins.typescript;
|
|
4
|
+
/** The one module that may call `bdTheme()`: the token bridge. */
|
|
5
|
+
export const bdThemeBridge = 'ts_web/elements/00theme.ts';
|
|
6
|
+
/** dees: no new `cssManager.bdTheme()` call outside `ts_web/elements/00theme.ts`. A ratchet: baselines only. */
|
|
7
|
+
export const styleBdThemeRule = {
|
|
8
|
+
id: 'style/bdtheme',
|
|
9
|
+
severity: { dees: 'error' },
|
|
10
|
+
fixMode: 'none',
|
|
11
|
+
detect: ({ project }) => {
|
|
12
|
+
const findings = [];
|
|
13
|
+
for (const file of project.webFiles) {
|
|
14
|
+
if (file === bdThemeBridge) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const visit = (nodeArg) => {
|
|
18
|
+
if (ts.isCallExpression(nodeArg) && ast.calleeName(nodeArg.expression) === 'bdTheme') {
|
|
19
|
+
findings.push({ file, position: nodeArg.getStart(), key: file, message: 'bdTheme() call; use --dees-* tokens' });
|
|
20
|
+
}
|
|
21
|
+
ts.forEachChild(nodeArg, visit);
|
|
22
|
+
};
|
|
23
|
+
visit(project.sourceFile(file));
|
|
24
|
+
}
|
|
25
|
+
return findings;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuYmR0aGVtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL3N0YW5kYXJkcy9ydWxlcy9zdHlsZS5iZHRoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQztBQUd6QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBRTlCLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsNEJBQTRCLENBQUM7QUFFMUQsZ0hBQWdIO0FBQ2hILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFrQjtJQUM3QyxFQUFFLEVBQUUsZUFBZTtJQUNuQixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzNCLE9BQU8sRUFBRSxNQUFNO0lBQ2YsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQ3RCLE1BQU0sUUFBUSxHQUFtQixFQUFFLENBQUM7UUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEMsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQzNCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFrQixFQUFRLEVBQUU7Z0JBQ3pDLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNyRixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuSCxDQUFDO2dCQUNELEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQztZQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRixDQUFDIn0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './catalog.js';
|
|
2
2
|
export * from './bridge.js';
|
|
3
3
|
export * from './requests.js';
|
|
4
|
-
|
|
4
|
+
export * from './standard.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDIn0=
|
|
@@ -13,3 +13,38 @@ export interface IReq_GetDevServerInfo extends plugins.typedrequestInterfaces.im
|
|
|
13
13
|
request: {};
|
|
14
14
|
response: IWccDevServerInfo;
|
|
15
15
|
}
|
|
16
|
+
/** The state of a catalog bundle: its latest run started, finished or failed. */
|
|
17
|
+
export type TWccBundleState = 'started' | 'finished' | 'failed';
|
|
18
|
+
/** The status of one catalog bundle the dev server builds with tswatch. */
|
|
19
|
+
export interface IWccBundleStatus {
|
|
20
|
+
/** The bundle's name in the tswatch configuration. */
|
|
21
|
+
name: string;
|
|
22
|
+
/** The latest run: `started` while it runs, then `finished` or `failed`. */
|
|
23
|
+
state: TWccBundleState;
|
|
24
|
+
/** Milliseconds the latest completed run took; absent before a run completed. */
|
|
25
|
+
durationMs?: number;
|
|
26
|
+
/**
|
|
27
|
+
* The bundler's error message when the latest completed run failed. It stays while the next
|
|
28
|
+
* run is in progress, so a failure is reported until a run finishes.
|
|
29
|
+
*/
|
|
30
|
+
errorMessage?: string;
|
|
31
|
+
}
|
|
32
|
+
/** The status of every catalog bundle, at a revision that changes with every bundle event. */
|
|
33
|
+
export interface IWccBundleStatusSnapshot {
|
|
34
|
+
revision: number;
|
|
35
|
+
bundles: IWccBundleStatus[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Reads the bundle status. With `afterRevision`, the server answers once the status differs from
|
|
39
|
+
* that revision, or with the unchanged status after its wait limit, so a client follows the
|
|
40
|
+
* status with one request at a time. While the server is not serving (it is stopping), the request
|
|
41
|
+
* is refused with a typed error.
|
|
42
|
+
*/
|
|
43
|
+
export interface IReq_GetBundleStatus extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetBundleStatus> {
|
|
44
|
+
method: 'getBundleStatus';
|
|
45
|
+
request: {
|
|
46
|
+
/** The revision the client knows; omitted: answer at once. */
|
|
47
|
+
afterRevision?: number;
|
|
48
|
+
};
|
|
49
|
+
response: IWccBundleStatusSnapshot;
|
|
50
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wcctools component standard (docs/standard.md): its configuration in `.smartconfig.json`
|
|
3
|
+
* and the reports `wcctools check` and `wcctools fix` produce.
|
|
4
|
+
*/
|
|
5
|
+
/** Rule set a repository adopts. */
|
|
6
|
+
export type TStandardProfile = 'base' | 'dees';
|
|
7
|
+
/** A rule id of the form `<area>/<name>`, e.g. `props/reflect-primitive`. */
|
|
8
|
+
export type TStandardRuleId = string;
|
|
9
|
+
export type TStandardSeverity = 'error' | 'warn' | 'info';
|
|
10
|
+
/**
|
|
11
|
+
* What `wcctools fix` does for a rule:
|
|
12
|
+
* - `auto`: fixes it on every run;
|
|
13
|
+
* - `opt-in`: fixes it only when the rule is named with `--rule`;
|
|
14
|
+
* - `none`: reports only.
|
|
15
|
+
*/
|
|
16
|
+
export type TStandardFixMode = 'auto' | 'opt-in' | 'none';
|
|
17
|
+
/** `.smartconfig.json` → `@design.estate/wcctools` → `standard`. */
|
|
18
|
+
export interface IStandardConfig {
|
|
19
|
+
/** Rule set; 'base' when absent. */
|
|
20
|
+
profile?: TStandardProfile;
|
|
21
|
+
/** Tag prefix without the trailing hyphen, e.g. 'dees'. */
|
|
22
|
+
tagPrefix: string;
|
|
23
|
+
/** dees profile: display name per group area, e.g. { harness: 'Agent Chat' }. */
|
|
24
|
+
groupNames?: Record<string, string>;
|
|
25
|
+
/** Exact exceptions: rule id → '<file>#<member>' → '<category>: <reason>'. */
|
|
26
|
+
allowlist?: Record<TStandardRuleId, Record<string, string>>;
|
|
27
|
+
/** Accepted counts of error findings: rule id → file → count. Only shrinks. */
|
|
28
|
+
baselines?: Record<TStandardRuleId, Record<string, number>>;
|
|
29
|
+
}
|
|
30
|
+
/** `.smartconfig.json` → `@design.estate/wcctools`. */
|
|
31
|
+
export interface IWccToolsConfig {
|
|
32
|
+
standard?: IStandardConfig;
|
|
33
|
+
}
|
|
34
|
+
export interface IStandardFinding {
|
|
35
|
+
ruleId: TStandardRuleId;
|
|
36
|
+
severity: TStandardSeverity;
|
|
37
|
+
/** Path relative to the repository root, '/' separators. */
|
|
38
|
+
file: string;
|
|
39
|
+
/** 1-based. */
|
|
40
|
+
line: number;
|
|
41
|
+
/** 1-based. */
|
|
42
|
+
column: number;
|
|
43
|
+
message: string;
|
|
44
|
+
/** True when `wcctools fix` resolves this finding (for opt-in rules: with --rule). */
|
|
45
|
+
fixable: boolean;
|
|
46
|
+
/** Set when the finding is covered by the allowlist or a baseline and does not fail check. */
|
|
47
|
+
covered?: 'allowlist' | 'baseline';
|
|
48
|
+
}
|
|
49
|
+
/** A file whose finding count is below its baseline: a candidate for lowering the baseline. */
|
|
50
|
+
export interface IStandardBaselineSlack {
|
|
51
|
+
ruleId: TStandardRuleId;
|
|
52
|
+
file: string;
|
|
53
|
+
baseline: number;
|
|
54
|
+
current: number;
|
|
55
|
+
}
|
|
56
|
+
export interface IStandardReport {
|
|
57
|
+
profile: TStandardProfile;
|
|
58
|
+
findings: IStandardFinding[];
|
|
59
|
+
/** Files whose count is below their baseline: candidates for --update-baseline. */
|
|
60
|
+
baselineSlack: IStandardBaselineSlack[];
|
|
61
|
+
/** True when no error finding remains outside the allowlist and baselines. */
|
|
62
|
+
ok: boolean;
|
|
63
|
+
}
|
|
64
|
+
/** A rule as it applies in one profile. */
|
|
65
|
+
export interface IStandardRuleInfo {
|
|
66
|
+
id: TStandardRuleId;
|
|
67
|
+
severity: TStandardSeverity;
|
|
68
|
+
fixMode: TStandardFixMode;
|
|
69
|
+
/** Categories an allowlist entry for this rule may use; empty when the rule takes no allowlist. */
|
|
70
|
+
allowlistCategories: string[];
|
|
71
|
+
}
|
|
72
|
+
export interface IStandardFileMove {
|
|
73
|
+
from: string;
|
|
74
|
+
to: string;
|
|
75
|
+
}
|
|
76
|
+
/** The changes a `wcctools fix` run makes (or, with --dry-run, would make). */
|
|
77
|
+
export interface IStandardFixPlan {
|
|
78
|
+
/** `git mv` operations, from the original path to the final path. */
|
|
79
|
+
moves: IStandardFileMove[];
|
|
80
|
+
/** New files, by final path. */
|
|
81
|
+
created: string[];
|
|
82
|
+
/** Changed existing files, by final path, with the rules that changed them. */
|
|
83
|
+
edited: Array<{
|
|
84
|
+
file: string;
|
|
85
|
+
ruleIds: TStandardRuleId[];
|
|
86
|
+
}>;
|
|
87
|
+
}
|
|
88
|
+
export interface IStandardFixResult {
|
|
89
|
+
dryRun: boolean;
|
|
90
|
+
plan: IStandardFixPlan;
|
|
91
|
+
/** The check after the fix (with --dry-run: as the fix would leave the repository). */
|
|
92
|
+
remaining: IStandardReport;
|
|
93
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wcctools component standard (docs/standard.md): its configuration in `.smartconfig.json`
|
|
3
|
+
* and the reports `wcctools check` and `wcctools fix` produce.
|
|
4
|
+
*/
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19pbnRlcmZhY2VzL3N0YW5kYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRyJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Follows the dev server's bundle status: one `getBundleStatus` request at a time, each answered
|
|
4
|
+
* when the status changes. A failed request (the server restarting, for example) is sent again
|
|
5
|
+
* after a growing pause. `dispose()` aborts the request in flight and ends the loop.
|
|
6
|
+
*/
|
|
7
|
+
export declare class WccBundleStatusClient {
|
|
8
|
+
private readonly apiPath;
|
|
9
|
+
private readonly onStatus;
|
|
10
|
+
private abortController;
|
|
11
|
+
constructor(apiPath: string, onStatus: (snapshotArg: plugins.interfaces.IWccBundleStatusSnapshot) => void);
|
|
12
|
+
start(): void;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
private follow;
|
|
15
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/** The first and the longest pause before a failed status request is sent again. */
|
|
3
|
+
const retryDelayMinMs = 1_000;
|
|
4
|
+
const retryDelayMaxMs = 10_000;
|
|
5
|
+
/** Resolves after `msArg`, or at once when the signal aborts. */
|
|
6
|
+
const pause = (msArg, signalArg) => new Promise((resolve) => {
|
|
7
|
+
const done = () => {
|
|
8
|
+
clearTimeout(timer);
|
|
9
|
+
signalArg.removeEventListener('abort', done);
|
|
10
|
+
resolve();
|
|
11
|
+
};
|
|
12
|
+
const timer = setTimeout(done, msArg);
|
|
13
|
+
signalArg.addEventListener('abort', done, { once: true });
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Follows the dev server's bundle status: one `getBundleStatus` request at a time, each answered
|
|
17
|
+
* when the status changes. A failed request (the server restarting, for example) is sent again
|
|
18
|
+
* after a growing pause. `dispose()` aborts the request in flight and ends the loop.
|
|
19
|
+
*/
|
|
20
|
+
export class WccBundleStatusClient {
|
|
21
|
+
apiPath;
|
|
22
|
+
onStatus;
|
|
23
|
+
abortController = null;
|
|
24
|
+
constructor(apiPath, onStatus) {
|
|
25
|
+
this.apiPath = apiPath;
|
|
26
|
+
this.onStatus = onStatus;
|
|
27
|
+
}
|
|
28
|
+
start() {
|
|
29
|
+
if (this.abortController) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const abortController = new AbortController();
|
|
33
|
+
this.abortController = abortController;
|
|
34
|
+
void this.follow(abortController.signal);
|
|
35
|
+
}
|
|
36
|
+
dispose() {
|
|
37
|
+
this.abortController?.abort();
|
|
38
|
+
this.abortController = null;
|
|
39
|
+
}
|
|
40
|
+
async follow(signalArg) {
|
|
41
|
+
const request = new plugins.typedrequest.TypedRequest(this.apiPath, 'getBundleStatus');
|
|
42
|
+
let revision;
|
|
43
|
+
let retryDelay = retryDelayMinMs;
|
|
44
|
+
while (!signalArg.aborted) {
|
|
45
|
+
try {
|
|
46
|
+
const snapshot = await request.fire({ afterRevision: revision }, { abortSignal: signalArg });
|
|
47
|
+
retryDelay = retryDelayMinMs;
|
|
48
|
+
if (!signalArg.aborted && snapshot.revision !== revision) {
|
|
49
|
+
revision = snapshot.revision;
|
|
50
|
+
this.onStatus(snapshot);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (signalArg.aborted) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
console.warn('wcctools: reading the bundle status failed; retrying', error);
|
|
58
|
+
await pause(retryDelay, signalArg);
|
|
59
|
+
retryDelay = Math.min(retryDelay * 2, retryDelayMaxMs);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfc2hlbGwvYnVuZGxlc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLG9GQUFvRjtBQUNwRixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDOUIsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDO0FBRS9CLGlFQUFpRTtBQUNqRSxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxTQUFzQixFQUFpQixFQUFFLENBQ3JFLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7SUFDdEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixTQUFTLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDO0FBRUw7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFJYjtJQUNBO0lBSlgsZUFBZSxHQUEyQixJQUFJLENBQUM7SUFFdkQsWUFDbUIsT0FBZSxFQUNmLFFBQTRFO1FBRDVFLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFvRTtJQUM1RixDQUFDO0lBRUcsS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFzQjtRQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUEwQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDaEksSUFBSSxRQUE0QixDQUFDO1FBQ2pDLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQztRQUNqQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDN0YsVUFBVSxHQUFHLGVBQWUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDekQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsc0RBQXNELEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzVFLE1BQU0sS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -25,10 +25,13 @@ export declare class WccContextmenu extends DeesElement {
|
|
|
25
25
|
accessor visible: boolean;
|
|
26
26
|
private boundHandleOutsideClick;
|
|
27
27
|
private boundHandleKeydown;
|
|
28
|
+
/** The pending frame that adds the document listeners; cancelled on removal */
|
|
29
|
+
private listenerFrame;
|
|
28
30
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
29
31
|
render(): TemplateResult;
|
|
30
32
|
connectedCallback(): Promise<void>;
|
|
31
33
|
disconnectedCallback(): Promise<void>;
|
|
34
|
+
private cancelListenerFrame;
|
|
32
35
|
private adjustPosition;
|
|
33
36
|
private handleOutsideClick;
|
|
34
37
|
private handleKeydown;
|
|
@@ -108,6 +108,8 @@ let WccContextmenu = (() => {
|
|
|
108
108
|
set visible(value) { this.#visible_accessor_storage = value; }
|
|
109
109
|
boundHandleOutsideClick = (__runInitializers(this, _visible_extraInitializers), this.handleOutsideClick.bind(this));
|
|
110
110
|
boundHandleKeydown = this.handleKeydown.bind(this);
|
|
111
|
+
/** The pending frame that adds the document listeners; cancelled on removal */
|
|
112
|
+
listenerFrame = null;
|
|
111
113
|
static styles = [
|
|
112
114
|
css `
|
|
113
115
|
:host {
|
|
@@ -212,8 +214,13 @@ let WccContextmenu = (() => {
|
|
|
212
214
|
}
|
|
213
215
|
async connectedCallback() {
|
|
214
216
|
await super.connectedCallback();
|
|
217
|
+
// Removed again while connecting: there is nothing to listen for
|
|
218
|
+
if (!this.isConnected)
|
|
219
|
+
return;
|
|
215
220
|
// Delay adding listeners to avoid immediate close
|
|
216
|
-
|
|
221
|
+
this.cancelListenerFrame();
|
|
222
|
+
this.listenerFrame = requestAnimationFrame(() => {
|
|
223
|
+
this.listenerFrame = null;
|
|
217
224
|
document.addEventListener('click', this.boundHandleOutsideClick);
|
|
218
225
|
document.addEventListener('contextmenu', this.boundHandleOutsideClick);
|
|
219
226
|
document.addEventListener('keydown', this.boundHandleKeydown);
|
|
@@ -221,10 +228,18 @@ let WccContextmenu = (() => {
|
|
|
221
228
|
});
|
|
222
229
|
}
|
|
223
230
|
async disconnectedCallback() {
|
|
224
|
-
|
|
231
|
+
// A frame still pending would add the listeners after removal
|
|
232
|
+
this.cancelListenerFrame();
|
|
225
233
|
document.removeEventListener('click', this.boundHandleOutsideClick);
|
|
226
234
|
document.removeEventListener('contextmenu', this.boundHandleOutsideClick);
|
|
227
235
|
document.removeEventListener('keydown', this.boundHandleKeydown);
|
|
236
|
+
await super.disconnectedCallback();
|
|
237
|
+
}
|
|
238
|
+
cancelListenerFrame() {
|
|
239
|
+
if (this.listenerFrame !== null) {
|
|
240
|
+
cancelAnimationFrame(this.listenerFrame);
|
|
241
|
+
this.listenerFrame = null;
|
|
242
|
+
}
|
|
228
243
|
}
|
|
229
244
|
adjustPosition() {
|
|
230
245
|
const rect = this.getBoundingClientRect();
|
|
@@ -326,4 +341,4 @@ let WccContextmenu = (() => {
|
|
|
326
341
|
return WccContextmenu = _classThis;
|
|
327
342
|
})();
|
|
328
343
|
export { WccContextmenu };
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLWNvbnRleHRtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfc2hlbGwvZWxlbWVudHMvd2NjLWNvbnRleHRtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0lBZXpILGNBQWM7NEJBRDFCLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7OzhCQUFuQixTQUFRLFdBQVc7Ozs7cUNBc0M1QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7NkJBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs2QkFHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQUcxQixLQUFLLEVBQUU7WUFSUixnTEFBUyxTQUFTLDZCQUFULFNBQVMsNkZBQTBCO1lBRzVDLHdKQUFTLENBQUMsNkJBQUQsQ0FBQyw2RUFBYTtZQUd2Qix3SkFBUyxDQUFDLDZCQUFELENBQUMsNkVBQWE7WUFHdkIsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQWhEcEMsNktBa1NDOzs7O1FBalNDOzs7O1dBSUc7UUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDdEIsS0FBaUIsRUFDakIsU0FBNkIsRUFDN0IsVUFBK0IsRUFBRTtZQUVqQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXhCLG1DQUFtQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0Qs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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import * as plugins from '../plugins.js';
|
|
2
3
|
export type TWccViewport = 'native' | 'desktop' | 'tablet' | 'phablet' | 'phone';
|
|
3
4
|
declare global {
|
|
4
5
|
interface HTMLElementTagNameMap {
|
|
@@ -17,6 +18,11 @@ export declare class WccPreviewFrame extends DeesElement {
|
|
|
17
18
|
accessor isNative: boolean;
|
|
18
19
|
accessor sidebarWidth: number;
|
|
19
20
|
accessor isResizing: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Catalog bundles whose latest run failed: shown over the preview, which shows an outdated
|
|
23
|
+
* bundle or none, until a run finishes and the preview reloads.
|
|
24
|
+
*/
|
|
25
|
+
accessor bundleFailures: plugins.interfaces.IWccBundleStatus[];
|
|
20
26
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
21
27
|
get iframe(): HTMLIFrameElement | null;
|
|
22
28
|
render(): TemplateResult;
|
|
@@ -75,6 +75,9 @@ let WccPreviewFrame = (() => {
|
|
|
75
75
|
let _isResizing_decorators;
|
|
76
76
|
let _isResizing_initializers = [];
|
|
77
77
|
let _isResizing_extraInitializers = [];
|
|
78
|
+
let _bundleFailures_decorators;
|
|
79
|
+
let _bundleFailures_initializers = [];
|
|
80
|
+
let _bundleFailures_extraInitializers = [];
|
|
78
81
|
var WccPreviewFrame = class extends _classSuper {
|
|
79
82
|
static { _classThis = this; }
|
|
80
83
|
static {
|
|
@@ -85,12 +88,14 @@ let WccPreviewFrame = (() => {
|
|
|
85
88
|
_isNative_decorators = [property({ type: Boolean })];
|
|
86
89
|
_sidebarWidth_decorators = [property({ type: Number })];
|
|
87
90
|
_isResizing_decorators = [property({ type: Boolean })];
|
|
91
|
+
_bundleFailures_decorators = [property({ attribute: false })];
|
|
88
92
|
__esDecorate(this, null, _viewport_decorators, { kind: "accessor", name: "viewport", static: false, private: false, access: { has: obj => "viewport" in obj, get: obj => obj.viewport, set: (obj, value) => { obj.viewport = value; } }, metadata: _metadata }, _viewport_initializers, _viewport_extraInitializers);
|
|
89
93
|
__esDecorate(this, null, _previewSrc_decorators, { kind: "accessor", name: "previewSrc", static: false, private: false, access: { has: obj => "previewSrc" in obj, get: obj => obj.previewSrc, set: (obj, value) => { obj.previewSrc = value; } }, metadata: _metadata }, _previewSrc_initializers, _previewSrc_extraInitializers);
|
|
90
94
|
__esDecorate(this, null, _advancedEditorOpen_decorators, { kind: "accessor", name: "advancedEditorOpen", static: false, private: false, access: { has: obj => "advancedEditorOpen" in obj, get: obj => obj.advancedEditorOpen, set: (obj, value) => { obj.advancedEditorOpen = value; } }, metadata: _metadata }, _advancedEditorOpen_initializers, _advancedEditorOpen_extraInitializers);
|
|
91
95
|
__esDecorate(this, null, _isNative_decorators, { kind: "accessor", name: "isNative", static: false, private: false, access: { has: obj => "isNative" in obj, get: obj => obj.isNative, set: (obj, value) => { obj.isNative = value; } }, metadata: _metadata }, _isNative_initializers, _isNative_extraInitializers);
|
|
92
96
|
__esDecorate(this, null, _sidebarWidth_decorators, { kind: "accessor", name: "sidebarWidth", static: false, private: false, access: { has: obj => "sidebarWidth" in obj, get: obj => obj.sidebarWidth, set: (obj, value) => { obj.sidebarWidth = value; } }, metadata: _metadata }, _sidebarWidth_initializers, _sidebarWidth_extraInitializers);
|
|
93
97
|
__esDecorate(this, null, _isResizing_decorators, { kind: "accessor", name: "isResizing", static: false, private: false, access: { has: obj => "isResizing" in obj, get: obj => obj.isResizing, set: (obj, value) => { obj.isResizing = value; } }, metadata: _metadata }, _isResizing_initializers, _isResizing_extraInitializers);
|
|
98
|
+
__esDecorate(this, null, _bundleFailures_decorators, { kind: "accessor", name: "bundleFailures", static: false, private: false, access: { has: obj => "bundleFailures" in obj, get: obj => obj.bundleFailures, set: (obj, value) => { obj.bundleFailures = value; } }, metadata: _metadata }, _bundleFailures_initializers, _bundleFailures_extraInitializers);
|
|
94
99
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
95
100
|
WccPreviewFrame = _classThis = _classDescriptor.value;
|
|
96
101
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -114,6 +119,13 @@ let WccPreviewFrame = (() => {
|
|
|
114
119
|
#isResizing_accessor_storage = (__runInitializers(this, _sidebarWidth_extraInitializers), __runInitializers(this, _isResizing_initializers, false));
|
|
115
120
|
get isResizing() { return this.#isResizing_accessor_storage; }
|
|
116
121
|
set isResizing(value) { this.#isResizing_accessor_storage = value; }
|
|
122
|
+
#bundleFailures_accessor_storage = (__runInitializers(this, _isResizing_extraInitializers), __runInitializers(this, _bundleFailures_initializers, []));
|
|
123
|
+
/**
|
|
124
|
+
* Catalog bundles whose latest run failed: shown over the preview, which shows an outdated
|
|
125
|
+
* bundle or none, until a run finishes and the preview reloads.
|
|
126
|
+
*/
|
|
127
|
+
get bundleFailures() { return this.#bundleFailures_accessor_storage; }
|
|
128
|
+
set bundleFailures(value) { this.#bundleFailures_accessor_storage = value; }
|
|
117
129
|
static styles = [
|
|
118
130
|
css `
|
|
119
131
|
:host {
|
|
@@ -135,6 +147,34 @@ let WccPreviewFrame = (() => {
|
|
|
135
147
|
border: 0;
|
|
136
148
|
background: transparent;
|
|
137
149
|
}
|
|
150
|
+
|
|
151
|
+
.bundle-failure {
|
|
152
|
+
position: absolute;
|
|
153
|
+
inset: 0;
|
|
154
|
+
box-sizing: border-box;
|
|
155
|
+
overflow: auto;
|
|
156
|
+
padding: 24px;
|
|
157
|
+
background: rgba(20, 0, 0, 0.92);
|
|
158
|
+
color: #ffd7d7;
|
|
159
|
+
font-family: 'Geist Sans', 'Inter', sans-serif;
|
|
160
|
+
font-size: 14px;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.bundle-failure h2 {
|
|
164
|
+
margin: 0 0 8px;
|
|
165
|
+
font-size: 16px;
|
|
166
|
+
font-weight: 600;
|
|
167
|
+
color: #ff8a8a;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.bundle-failure pre {
|
|
171
|
+
margin: 0 0 24px;
|
|
172
|
+
white-space: pre-wrap;
|
|
173
|
+
overflow-wrap: anywhere;
|
|
174
|
+
font-family: 'Geist Mono', 'Intel One Mono', monospace;
|
|
175
|
+
font-size: 13px;
|
|
176
|
+
line-height: 1.5;
|
|
177
|
+
}
|
|
138
178
|
`,
|
|
139
179
|
];
|
|
140
180
|
get iframe() {
|
|
@@ -181,11 +221,19 @@ let WccPreviewFrame = (() => {
|
|
|
181
221
|
${this.previewSrc ? html `
|
|
182
222
|
<iframe class="preview" title="Preview" src=${this.previewSrc}></iframe>
|
|
183
223
|
` : null}
|
|
224
|
+
${this.bundleFailures.length > 0 ? html `
|
|
225
|
+
<div class="bundle-failure" role="alert">
|
|
226
|
+
${this.bundleFailures.map((bundleArg) => html `
|
|
227
|
+
<h2>bundle failed: ${bundleArg.name}</h2>
|
|
228
|
+
<pre>${bundleArg.errorMessage}</pre>
|
|
229
|
+
`)}
|
|
230
|
+
</div>
|
|
231
|
+
` : null}
|
|
184
232
|
`;
|
|
185
233
|
}
|
|
186
234
|
constructor() {
|
|
187
235
|
super(...arguments);
|
|
188
|
-
__runInitializers(this,
|
|
236
|
+
__runInitializers(this, _bundleFailures_extraInitializers);
|
|
189
237
|
}
|
|
190
238
|
static {
|
|
191
239
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -194,4 +242,4 @@ let WccPreviewFrame = (() => {
|
|
|
194
242
|
return WccPreviewFrame = _classThis;
|
|
195
243
|
})();
|
|
196
244
|
export { WccPreviewFrame };
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLXByZXZpZXctZnJhbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c19zaGVsbC9lbGVtZW50cy93Y2MtcHJldmlldy1mcmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBdUIsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ILE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBVXpDLHlGQUF5RjtBQUN6RixNQUFNLGdCQUFnQixHQUFHLENBQUMsV0FBeUIsRUFBVSxFQUFFO0lBQzdELFFBQVEsV0FBVyxFQUFFLENBQUM7UUFDcEIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQ3hELEtBQUssU0FBUztZQUNaLE9BQU8sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUN6RCxLQUFLLE9BQU87WUFDVixPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUM7UUFDdkQ7WUFDRSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0lBRVUsZUFBZTs0QkFEM0IsYUFBYSxDQUFDLG1CQUFtQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBQW5CLFNBQVEsV0FBVzs7OztvQ0FDN0MsUUFBUSxFQUFFO3NDQUlWLFFBQVEsRUFBRTs4Q0FHVixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7b0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FB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
|