@design.estate/wcctools 5.1.0 → 6.1.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/.smartconfig.json +7 -3
- package/changelog.md +28 -0
- package/cli.js +3 -0
- package/dist_shell/bundle.js +2970 -0
- package/dist_shell/bundle.js.map +1 -0
- package/dist_shell/bundle.js.third-party-notices.json +1722 -0
- package/dist_shell/bundle.js.third-party-notices.txt +4195 -0
- package/dist_shell/index.html +21 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.devapi.d.ts +11 -0
- package/dist_ts/classes.devapi.js +21 -0
- package/dist_ts/classes.devserver.d.ts +49 -0
- package/dist_ts/classes.devserver.js +142 -0
- package/dist_ts/cli.d.ts +6 -0
- package/dist_ts/cli.js +51 -0
- package/dist_ts/index.d.ts +3 -0
- package/dist_ts/index.js +4 -0
- package/dist_ts/paths.d.ts +4 -0
- package/dist_ts/paths.js +6 -0
- package/dist_ts/plugins.d.ts +20 -0
- package/dist_ts/plugins.js +27 -0
- package/dist_ts/shellcontent.d.ts +9 -0
- package/dist_ts/shellcontent.js +42 -0
- 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/bridge.d.ts +88 -0
- package/dist_ts_interfaces/bridge.js +2 -0
- package/dist_ts_interfaces/catalog.d.ts +32 -0
- package/dist_ts_interfaces/catalog.js +6 -0
- package/dist_ts_interfaces/index.d.ts +4 -0
- package/dist_ts_interfaces/index.js +5 -0
- package/dist_ts_interfaces/plugins.d.ts +2 -0
- package/dist_ts_interfaces/plugins.js +3 -0
- package/dist_ts_interfaces/requests.d.ts +15 -0
- package/dist_ts_interfaces/requests.js +2 -0
- package/dist_ts_interfaces/standard.d.ts +93 -0
- package/dist_ts_interfaces/standard.js +6 -0
- package/dist_ts_shared/index.d.ts +1 -0
- package/dist_ts_shared/index.js +2 -0
- package/dist_ts_shared/plugins.d.ts +2 -0
- package/dist_ts_shared/plugins.js +3 -0
- package/dist_ts_shared/previewroute.d.ts +18 -0
- package/dist_ts_shared/previewroute.js +47 -0
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-contextmenu.js +1 -1
- package/dist_ts_shell/elements/wcc-preview-frame.d.ts +23 -0
- package/dist_ts_shell/elements/wcc-preview-frame.js +197 -0
- package/dist_ts_shell/elements/wcc-properties.d.ts +49 -0
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-properties.js +149 -216
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-record-button.js +1 -1
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-recording-panel.d.ts +2 -2
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-recording-panel.js +12 -16
- package/dist_ts_shell/elements/wcc-shell.d.ts +87 -0
- package/dist_ts_shell/elements/wcc-shell.js +524 -0
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-sidebar.d.ts +12 -10
- package/{dist_ts_web → dist_ts_shell}/elements/wcc-sidebar.js +137 -183
- package/dist_ts_shell/index.d.ts +4 -0
- package/dist_ts_shell/index.js +5 -0
- package/dist_ts_shell/plugins.d.ts +4 -0
- package/dist_ts_shell/plugins.js +5 -0
- package/dist_ts_shell/previewconnection.d.ts +30 -0
- package/dist_ts_shell/previewconnection.js +86 -0
- package/dist_ts_shell/services/recorder.service.js +353 -0
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/catalog.d.ts +45 -0
- package/dist_ts_web/catalog.js +153 -0
- package/dist_ts_web/elementproperties.d.ts +15 -0
- package/dist_ts_web/elementproperties.js +89 -0
- package/dist_ts_web/elements/wcc-preview.d.ts +19 -0
- package/dist_ts_web/elements/wcc-preview.js +164 -0
- package/dist_ts_web/elements/wcc-standalone-notice.d.ts +14 -0
- package/dist_ts_web/elements/wcc-standalone-notice.js +110 -0
- package/dist_ts_web/elements/wcctools.helpers.d.ts +2 -6
- package/dist_ts_web/elements/wcctools.helpers.js +1 -7
- package/dist_ts_web/index.d.ts +2 -5
- package/dist_ts_web/index.js +38 -17
- package/dist_ts_web/previewbridge.d.ts +39 -0
- package/dist_ts_web/previewbridge.js +153 -0
- package/dist_ts_web/renderedtree.d.ts +5 -0
- package/dist_ts_web/renderedtree.js +37 -0
- package/dist_ts_web/wcctools.interfaces.d.ts +3 -6
- package/dist_ts_web/wcctools.interfaces.js +1 -1
- package/dist_ts_web/wcctools.plugins.d.ts +3 -1
- package/dist_ts_web/wcctools.plugins.js +4 -2
- package/package.json +17 -7
- package/readme.md +93 -28
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/classes.devapi.ts +25 -0
- package/ts/classes.devserver.ts +161 -0
- package/ts/cli.ts +53 -0
- package/ts/index.ts +3 -0
- package/ts/paths.ts +7 -0
- package/ts/plugins.ts +37 -0
- package/ts/shellcontent.ts +42 -0
- 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_web/00_commitinfo_data.ts +1 -1
- package/ts_web/catalog.ts +194 -0
- package/ts_web/elementproperties.ts +96 -0
- package/ts_web/elements/wcc-preview.ts +111 -0
- package/ts_web/elements/wcc-standalone-notice.ts +65 -0
- package/ts_web/elements/wcctools.helpers.ts +2 -10
- package/ts_web/index.ts +38 -19
- package/ts_web/previewbridge.ts +189 -0
- package/ts_web/readme.md +26 -85
- package/ts_web/renderedtree.ts +43 -0
- package/ts_web/wcctools.interfaces.ts +4 -7
- package/ts_web/wcctools.plugins.ts +6 -1
- package/dist_bundle/bundle.js +0 -92419
- package/dist_bundle/bundle.js.map +0 -1
- package/dist_ts_web/elements/wcc-dashboard.d.ts +0 -119
- package/dist_ts_web/elements/wcc-dashboard.js +0 -700
- package/dist_ts_web/elements/wcc-frame.d.ts +0 -22
- package/dist_ts_web/elements/wcc-frame.js +0 -256
- package/dist_ts_web/elements/wcc-properties.d.ts +0 -43
- package/dist_ts_web/pages/index.d.ts +0 -1
- package/dist_ts_web/pages/index.js +0 -2
- package/dist_ts_web/services/recorder.service.js +0 -353
- package/ts_web/elements/wcc-contextmenu.ts +0 -291
- package/ts_web/elements/wcc-dashboard.ts +0 -672
- package/ts_web/elements/wcc-frame.ts +0 -189
- package/ts_web/elements/wcc-properties.ts +0 -1089
- package/ts_web/elements/wcc-record-button.ts +0 -108
- package/ts_web/elements/wcc-recording-panel.ts +0 -1010
- package/ts_web/elements/wcc-sidebar.ts +0 -1470
- package/ts_web/pages/index.ts +0 -1
- package/ts_web/services/recorder.service.ts +0 -451
- package/ts_web/types/dom-mediacapture-stub/index.d.ts +0 -12
- package/ts_web/types/dom-mediacapture-stub/package.json +0 -6
- package/ts_web/types/dom-webcodecs-stub/index.d.ts +0 -2
- package/ts_web/types/dom-webcodecs-stub/package.json +0 -6
- /package/{dist_ts_web → dist_ts_shell}/elements/wcc-contextmenu.d.ts +0 -0
- /package/{dist_ts_web → dist_ts_shell}/elements/wcc-record-button.d.ts +0 -0
- /package/{dist_ts_web → dist_ts_shell}/services/recorder.service.d.ts +0 -0
|
@@ -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=
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { IWccCatalogManifest } from './catalog.js';
|
|
2
|
+
/**
|
|
3
|
+
* The bridge between the shell and the preview document. The preview runtime installs it as
|
|
4
|
+
* `window.wccPreview` in the preview document; the shell reaches it through the same-origin
|
|
5
|
+
* iframe. Every argument and result is plain, structured-cloneable data: values never carry
|
|
6
|
+
* objects of the other document's realm.
|
|
7
|
+
*/
|
|
8
|
+
export type TWccTheme = 'dark' | 'bright';
|
|
9
|
+
/** One demo (or page) of the catalog. */
|
|
10
|
+
export interface IWccSelection {
|
|
11
|
+
sectionName: string;
|
|
12
|
+
itemName: string;
|
|
13
|
+
/** 0-based; always 0 for a page. */
|
|
14
|
+
demoIndex: number;
|
|
15
|
+
}
|
|
16
|
+
/** What the preview shows instead of a demo. */
|
|
17
|
+
export interface IWccEmptyState {
|
|
18
|
+
title: string;
|
|
19
|
+
detail: string;
|
|
20
|
+
}
|
|
21
|
+
export type TWccEmptyReason = 'nothing-selected' | 'no-demo' | 'ignored' | 'missing' | 'no-such-demo' | 'failed';
|
|
22
|
+
export type TWccRenderOutcome = {
|
|
23
|
+
kind: 'rendered';
|
|
24
|
+
type: 'element' | 'page';
|
|
25
|
+
} | {
|
|
26
|
+
kind: 'empty';
|
|
27
|
+
reason: TWccEmptyReason;
|
|
28
|
+
emptyState: IWccEmptyState;
|
|
29
|
+
};
|
|
30
|
+
export type TWccPropertyKind = 'String' | 'Number' | 'Boolean' | 'Enum' | 'Object' | 'Array';
|
|
31
|
+
/** A scalar property value the properties panel can show and set directly. */
|
|
32
|
+
export type TWccPropertyScalar = string | number | boolean | null;
|
|
33
|
+
export interface IWccPropertyDescriptor {
|
|
34
|
+
name: string;
|
|
35
|
+
kind: TWccPropertyKind;
|
|
36
|
+
/** The values of an `Enum` property. */
|
|
37
|
+
enumValues?: string[];
|
|
38
|
+
/** The current value of a String, Number, Boolean or Enum property. */
|
|
39
|
+
value?: TWccPropertyScalar;
|
|
40
|
+
/** The current value of an Object or Array property, as formatted JSON. */
|
|
41
|
+
json?: string;
|
|
42
|
+
}
|
|
43
|
+
export type TWccPropertyListing = {
|
|
44
|
+
kind: 'properties';
|
|
45
|
+
elementName: string;
|
|
46
|
+
properties: IWccPropertyDescriptor[];
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'unavailable';
|
|
49
|
+
reason: string;
|
|
50
|
+
};
|
|
51
|
+
export type TWccPropertyEditResult = {
|
|
52
|
+
ok: true;
|
|
53
|
+
} | {
|
|
54
|
+
ok: false;
|
|
55
|
+
error: string;
|
|
56
|
+
};
|
|
57
|
+
export interface IWccRenderedEvent {
|
|
58
|
+
type: 'rendered';
|
|
59
|
+
selection: IWccSelection | null;
|
|
60
|
+
outcome: TWccRenderOutcome;
|
|
61
|
+
}
|
|
62
|
+
export type TWccPreviewEvent = IWccRenderedEvent;
|
|
63
|
+
export interface IWccPreviewBridge {
|
|
64
|
+
getManifest(): IWccCatalogManifest;
|
|
65
|
+
/** The selection rendered last, or null before the first render. */
|
|
66
|
+
getSelection(): IWccSelection | null;
|
|
67
|
+
getTheme(): TWccTheme;
|
|
68
|
+
/** Render a demo or page into the preview document, without reloading it. */
|
|
69
|
+
render(selectionArg: IWccSelection): Promise<TWccRenderOutcome>;
|
|
70
|
+
setTheme(themeArg: TWccTheme): Promise<void>;
|
|
71
|
+
/** The editable properties of the selected element's rendered instance, once it has rendered. */
|
|
72
|
+
getProperties(): Promise<TWccPropertyListing>;
|
|
73
|
+
setProperty(nameArg: string, valueArg: TWccPropertyScalar): TWccPropertyEditResult;
|
|
74
|
+
/** Parse JSON in the preview document and assign it to an Object or Array property. */
|
|
75
|
+
setPropertyJson(nameArg: string, jsonArg: string): TWccPropertyEditResult;
|
|
76
|
+
/** The rendered instance of the selected element, for same-origin tooling. */
|
|
77
|
+
findRenderedInstance(): HTMLElement | null;
|
|
78
|
+
subscribe(listenerArg: (eventArg: TWccPreviewEvent) => void): () => void;
|
|
79
|
+
}
|
|
80
|
+
/** The message a preview document posts to its parent once its bridge is installed. */
|
|
81
|
+
export interface IWccPreviewReadyMessage {
|
|
82
|
+
type: 'wcctools-preview-ready';
|
|
83
|
+
}
|
|
84
|
+
declare global {
|
|
85
|
+
interface Window {
|
|
86
|
+
wccPreview?: IWccPreviewBridge;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data-only description of a catalog that the preview runtime hands to the shell.
|
|
3
|
+
* Element classes and template factories stay in the preview document.
|
|
4
|
+
*/
|
|
5
|
+
/** How the entries of a section are rendered: element demos or page factories. */
|
|
6
|
+
export type TWccSectionType = 'elements' | 'pages';
|
|
7
|
+
/** A navigable catalog entry. */
|
|
8
|
+
export interface IWccManifestEntry {
|
|
9
|
+
name: string;
|
|
10
|
+
/** The registered tag of an element; null for pages and unregistered element classes. */
|
|
11
|
+
tagName: string | null;
|
|
12
|
+
/** Number of demos (always 1 for a page). */
|
|
13
|
+
demoCount: number;
|
|
14
|
+
demoGroups: string[];
|
|
15
|
+
}
|
|
16
|
+
/** A registered element without a usable demo; listed, never navigable. */
|
|
17
|
+
export interface IWccManifestEntryWithoutDemo {
|
|
18
|
+
name: string;
|
|
19
|
+
tagName: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface IWccManifestSection {
|
|
22
|
+
name: string;
|
|
23
|
+
type: TWccSectionType;
|
|
24
|
+
icon?: string;
|
|
25
|
+
collapsed?: boolean;
|
|
26
|
+
/** Classified, filtered and sorted as the section configures it. */
|
|
27
|
+
entries: IWccManifestEntry[];
|
|
28
|
+
entriesWithoutDemo: IWccManifestEntryWithoutDemo[];
|
|
29
|
+
}
|
|
30
|
+
export interface IWccCatalogManifest {
|
|
31
|
+
sections: IWccManifestSection[];
|
|
32
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The data-only description of a catalog that the preview runtime hands to the shell.
|
|
3
|
+
* Element classes and template factories stay in the preview document.
|
|
4
|
+
*/
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2ludGVyZmFjZXMvY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0cifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './catalog.js';
|
|
2
|
+
export * from './bridge.js';
|
|
3
|
+
export * from './requests.js';
|
|
4
|
+
export * from './standard.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZUFBZSxDQUFDIn0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
|
|
2
|
+
export { typedrequestInterfaces };
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2ludGVyZmFjZXMvcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssc0JBQXNCLE1BQU0scUNBQXFDLENBQUM7QUFFOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUMifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Typed requests the shell sends to the `wcctools dev` server on `/wcctools/typedrequest`.
|
|
4
|
+
*/
|
|
5
|
+
export interface IWccDevServerInfo {
|
|
6
|
+
/** Version of the wcctools package that serves the shell. */
|
|
7
|
+
wcctoolsVersion: string;
|
|
8
|
+
/** Name of the served project's package. */
|
|
9
|
+
projectName: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IReq_GetDevServerInfo extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDevServerInfo> {
|
|
12
|
+
method: 'getDevServerInfo';
|
|
13
|
+
request: {};
|
|
14
|
+
response: IWccDevServerInfo;
|
|
15
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19pbnRlcmZhY2VzL3JlcXVlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDIn0=
|
|
@@ -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 @@
|
|
|
1
|
+
export * from './previewroute.js';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as interfaces from '../dist_ts_interfaces/index.js';
|
|
2
|
+
export { interfaces };
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3NoYXJlZC9wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* The address of a preview document: the path the `wcctools dev` server serves it on, and
|
|
4
|
+
* the query that names what it renders. The shell loads it into its iframe; headless tools
|
|
5
|
+
* load it directly to render one demo alone.
|
|
6
|
+
*/
|
|
7
|
+
/** The path `wcctools dev` serves the preview document on. */
|
|
8
|
+
export declare const previewRoutePath = "/wcctools-preview";
|
|
9
|
+
export interface IWccPreviewRoute {
|
|
10
|
+
selection: plugins.interfaces.IWccSelection | null;
|
|
11
|
+
theme: plugins.interfaces.TWccTheme;
|
|
12
|
+
}
|
|
13
|
+
/** The query string (with leading `?`) of a preview route. */
|
|
14
|
+
export declare const formatPreviewQuery: (routeArg: IWccPreviewRoute) => string;
|
|
15
|
+
/** Read a preview route from a query string. Missing or invalid parts read as no selection and the dark theme. */
|
|
16
|
+
export declare const parsePreviewQuery: (searchArg: string) => IWccPreviewRoute;
|
|
17
|
+
export declare const previewReadyMessage: plugins.interfaces.IWccPreviewReadyMessage;
|
|
18
|
+
export declare const isPreviewReadyMessage: (dataArg: unknown) => dataArg is plugins.interfaces.IWccPreviewReadyMessage;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* The address of a preview document: the path the `wcctools dev` server serves it on, and
|
|
4
|
+
* the query that names what it renders. The shell loads it into its iframe; headless tools
|
|
5
|
+
* load it directly to render one demo alone.
|
|
6
|
+
*/
|
|
7
|
+
/** The path `wcctools dev` serves the preview document on. */
|
|
8
|
+
export const previewRoutePath = '/wcctools-preview';
|
|
9
|
+
const queryKeys = {
|
|
10
|
+
section: 'section',
|
|
11
|
+
item: 'item',
|
|
12
|
+
demo: 'demo',
|
|
13
|
+
theme: 'theme',
|
|
14
|
+
};
|
|
15
|
+
/** The query string (with leading `?`) of a preview route. */
|
|
16
|
+
export const formatPreviewQuery = (routeArg) => {
|
|
17
|
+
const params = new URLSearchParams();
|
|
18
|
+
if (routeArg.selection) {
|
|
19
|
+
params.set(queryKeys.section, routeArg.selection.sectionName);
|
|
20
|
+
params.set(queryKeys.item, routeArg.selection.itemName);
|
|
21
|
+
params.set(queryKeys.demo, String(routeArg.selection.demoIndex));
|
|
22
|
+
}
|
|
23
|
+
params.set(queryKeys.theme, routeArg.theme);
|
|
24
|
+
return `?${params.toString()}`;
|
|
25
|
+
};
|
|
26
|
+
/** Read a preview route from a query string. Missing or invalid parts read as no selection and the dark theme. */
|
|
27
|
+
export const parsePreviewQuery = (searchArg) => {
|
|
28
|
+
const params = new URLSearchParams(searchArg);
|
|
29
|
+
const theme = params.get(queryKeys.theme) === 'bright' ? 'bright' : 'dark';
|
|
30
|
+
const sectionName = params.get(queryKeys.section);
|
|
31
|
+
const itemName = params.get(queryKeys.item);
|
|
32
|
+
if (!sectionName || !itemName) {
|
|
33
|
+
return { selection: null, theme };
|
|
34
|
+
}
|
|
35
|
+
const demoIndex = Number.parseInt(params.get(queryKeys.demo) ?? '0', 10);
|
|
36
|
+
return {
|
|
37
|
+
selection: { sectionName, itemName, demoIndex: Number.isInteger(demoIndex) && demoIndex >= 0 ? demoIndex : 0 },
|
|
38
|
+
theme,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export const previewReadyMessage = { type: 'wcctools-preview-ready' };
|
|
42
|
+
export const isPreviewReadyMessage = (dataArg) => {
|
|
43
|
+
return typeof dataArg === 'object'
|
|
44
|
+
&& dataArg !== null
|
|
45
|
+
&& dataArg.type === previewReadyMessage.type;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlld3JvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfc2hhcmVkL3ByZXZpZXdyb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4Qzs7OztHQUlHO0FBRUgsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0FBT3BELE1BQU0sU0FBUyxHQUFHO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztDQUNOLENBQUM7QUFFWCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUEwQixFQUFVLEVBQUU7SUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNyQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsa0hBQWtIO0FBQ2xILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsU0FBaUIsRUFBb0IsRUFBRTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxNQUFNLEtBQUssR0FBaUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLE9BQU87UUFDTCxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlHLEtBQUs7S0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQStDLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUM7QUFFbEgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFnQixFQUF5RCxFQUFFO0lBQy9HLE9BQU8sT0FBTyxPQUFPLEtBQUssUUFBUTtXQUM3QixPQUFPLEtBQUssSUFBSTtXQUNmLE9BQThCLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLElBQUksQ0FBQztBQUN6RSxDQUFDLENBQUMifQ==
|
|
@@ -326,4 +326,4 @@ let WccContextmenu = (() => {
|
|
|
326
326
|
return WccContextmenu = _classThis;
|
|
327
327
|
})();
|
|
328
328
|
export { WccContextmenu };
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
329
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLWNvbnRleHRtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfc2hlbGwvZWxlbWVudHMvd2NjLWNvbnRleHRtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0lBZXpILGNBQWM7NEJBRDFCLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7OzhCQUFuQixTQUFRLFdBQVc7Ozs7cUNBc0M1QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7NkJBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs2QkFHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQUcxQixLQUFLLEVBQUU7WUFSUixnTEFBUyxTQUFTLDZCQUFULFNBQVMsNkZBQTBCO1lBRzVDLHdKQUFTLENBQUMsNkJBQUQsQ0FBQyw2RUFBYTtZQUd2Qix3SkFBUyxDQUFDLDZCQUFELENBQUMsNkVBQWE7WUFHdkIsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQWhEcEMsNktBbVJDOzs7O1FBbFJDOzs7O1dBSUc7UUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDdEIsS0FBaUIsRUFDakIsU0FBNkIsRUFDN0IsVUFBK0IsRUFBRTtZQUVqQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXhCLG1DQUFtQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0Qs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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
export type TWccViewport = 'native' | 'desktop' | 'tablet' | 'phablet' | 'phone';
|
|
3
|
+
declare global {
|
|
4
|
+
interface HTMLElementTagNameMap {
|
|
5
|
+
'wcc-preview-frame': WccPreviewFrame;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Hosts the preview document in an iframe as wide as the selected viewport, so the preview's
|
|
10
|
+
* width media queries respond to it.
|
|
11
|
+
*/
|
|
12
|
+
export declare class WccPreviewFrame extends DeesElement {
|
|
13
|
+
accessor viewport: TWccViewport;
|
|
14
|
+
/** The preview document's address. Set once: changing it navigates the preview. */
|
|
15
|
+
accessor previewSrc: string;
|
|
16
|
+
accessor advancedEditorOpen: boolean;
|
|
17
|
+
accessor isNative: boolean;
|
|
18
|
+
accessor sidebarWidth: number;
|
|
19
|
+
accessor isResizing: boolean;
|
|
20
|
+
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
21
|
+
get iframe(): HTMLIFrameElement | null;
|
|
22
|
+
render(): TemplateResult;
|
|
23
|
+
}
|