@ploaness/governance 1.5.0 → 1.6.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/dist/a11y-hit-target.d.ts.map +1 -1
- package/dist/a11y-hit-target.js.map +1 -1
- package/dist/a11y-incomplete.d.ts.map +1 -1
- package/dist/a11y-incomplete.js +2 -6
- package/dist/a11y-incomplete.js.map +1 -1
- package/dist/access-boundary.d.ts.map +1 -1
- package/dist/access-boundary.js +2 -4
- package/dist/access-boundary.js.map +1 -1
- package/dist/admin-view-coverage.d.ts.map +1 -1
- package/dist/admin-view-coverage.js +2 -7
- package/dist/admin-view-coverage.js.map +1 -1
- package/dist/agent-references.d.ts.map +1 -1
- package/dist/agent-references.js.map +1 -1
- package/dist/architecture-layers.d.ts.map +1 -1
- package/dist/architecture-layers.js.map +1 -1
- package/dist/asset-policy.d.ts.map +1 -1
- package/dist/asset-policy.js +4 -15
- package/dist/asset-policy.js.map +1 -1
- package/dist/axe-coverage.d.ts +9 -0
- package/dist/axe-coverage.d.ts.map +1 -1
- package/dist/axe-coverage.js +18 -5
- package/dist/axe-coverage.js.map +1 -1
- package/dist/banned-typography.d.ts.map +1 -1
- package/dist/banned-typography.js +1 -4
- package/dist/banned-typography.js.map +1 -1
- package/dist/blocklist-entries.d.ts.map +1 -1
- package/dist/blocklist-entries.js.map +1 -1
- package/dist/blocklist.d.ts.map +1 -1
- package/dist/blocklist.js +3 -7
- package/dist/blocklist.js.map +1 -1
- package/dist/browser-server-policy.d.ts +26 -0
- package/dist/browser-server-policy.d.ts.map +1 -0
- package/dist/browser-server-policy.js +45 -0
- package/dist/browser-server-policy.js.map +1 -0
- package/dist/build-diagnosis.d.ts.map +1 -1
- package/dist/build-diagnosis.js +1 -1
- package/dist/build-diagnosis.js.map +1 -1
- package/dist/bundle-budget.d.ts.map +1 -1
- package/dist/bundle-budget.js.map +1 -1
- package/dist/checkov-checks-aws.d.ts.map +1 -1
- package/dist/checkov-checks-aws.js.map +1 -1
- package/dist/checkov-policy.d.ts.map +1 -1
- package/dist/checkov-policy.js.map +1 -1
- package/dist/commit-message.d.ts.map +1 -1
- package/dist/commit-message.js +4 -18
- package/dist/commit-message.js.map +1 -1
- package/dist/container-failure.d.ts.map +1 -1
- package/dist/container-failure.js +1 -6
- package/dist/container-failure.js.map +1 -1
- package/dist/container-freshness.d.ts.map +1 -1
- package/dist/container-freshness.js +4 -11
- package/dist/container-freshness.js.map +1 -1
- package/dist/container-images.d.ts.map +1 -1
- package/dist/container-images.js +2 -6
- package/dist/container-images.js.map +1 -1
- package/dist/dependency-freshness.d.ts.map +1 -1
- package/dist/dependency-freshness.js.map +1 -1
- package/dist/doc-blocks.d.ts.map +1 -1
- package/dist/doc-blocks.js +3 -15
- package/dist/doc-blocks.js.map +1 -1
- package/dist/document-references.d.ts.map +1 -1
- package/dist/document-references.js +2 -6
- package/dist/document-references.js.map +1 -1
- package/dist/editorconfig-policy.d.ts +4 -1
- package/dist/editorconfig-policy.d.ts.map +1 -1
- package/dist/editorconfig-policy.js +38 -33
- package/dist/editorconfig-policy.js.map +1 -1
- package/dist/environment-coherence.d.ts.map +1 -1
- package/dist/environment-coherence.js +6 -25
- package/dist/environment-coherence.js.map +1 -1
- package/dist/environment-files.d.ts.map +1 -1
- package/dist/environment-files.js.map +1 -1
- package/dist/file-roles.d.ts.map +1 -1
- package/dist/file-roles.js +1 -1
- package/dist/file-roles.js.map +1 -1
- package/dist/freshness-repair.d.ts.map +1 -1
- package/dist/freshness-repair.js +3 -6
- package/dist/freshness-repair.js.map +1 -1
- package/dist/generated-denial.d.ts.map +1 -1
- package/dist/generated-denial.js +3 -8
- package/dist/generated-denial.js.map +1 -1
- package/dist/generated-drift.d.ts.map +1 -1
- package/dist/generated-drift.js +1 -3
- package/dist/generated-drift.js.map +1 -1
- package/dist/history-policy.d.ts.map +1 -1
- package/dist/history-policy.js.map +1 -1
- package/dist/image-assets.d.ts.map +1 -1
- package/dist/image-assets.js +1 -2
- package/dist/image-assets.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/install-policy.d.ts.map +1 -1
- package/dist/install-policy.js +2 -7
- package/dist/install-policy.js.map +1 -1
- package/dist/json-shapes.d.ts.map +1 -1
- package/dist/json-shapes.js +1 -1
- package/dist/json-shapes.js.map +1 -1
- package/dist/jsx-accessibility-scope.d.ts.map +1 -1
- package/dist/jsx-accessibility-scope.js +2 -7
- package/dist/jsx-accessibility-scope.js.map +1 -1
- package/dist/jsx-accessibility.d.ts.map +1 -1
- package/dist/jsx-accessibility.js +2 -14
- package/dist/jsx-accessibility.js.map +1 -1
- package/dist/layout-boxes.d.ts +26 -0
- package/dist/layout-boxes.d.ts.map +1 -0
- package/dist/layout-boxes.js +169 -0
- package/dist/layout-boxes.js.map +1 -0
- package/dist/layout-defects.d.ts +28 -0
- package/dist/layout-defects.d.ts.map +1 -0
- package/dist/layout-defects.js +114 -0
- package/dist/layout-defects.js.map +1 -0
- package/dist/layout-snapshot.d.ts +152 -0
- package/dist/layout-snapshot.d.ts.map +1 -0
- package/dist/layout-snapshot.js +127 -0
- package/dist/layout-snapshot.js.map +1 -0
- package/dist/layout-text.d.ts +42 -0
- package/dist/layout-text.d.ts.map +1 -0
- package/dist/layout-text.js +97 -0
- package/dist/layout-text.js.map +1 -0
- package/dist/license-allowlist.d.ts.map +1 -1
- package/dist/license-allowlist.js +1 -3
- package/dist/license-allowlist.js.map +1 -1
- package/dist/network-policy.d.ts.map +1 -1
- package/dist/network-policy.js +2 -11
- package/dist/network-policy.js.map +1 -1
- package/dist/oxlint-report.d.ts.map +1 -1
- package/dist/oxlint-report.js +1 -3
- package/dist/oxlint-report.js.map +1 -1
- package/dist/oxlint-scope.d.ts.map +1 -1
- package/dist/oxlint-scope.js +2 -16
- package/dist/oxlint-scope.js.map +1 -1
- package/dist/oxlint-suppressions.d.ts.map +1 -1
- package/dist/oxlint-suppressions.js +3 -9
- package/dist/oxlint-suppressions.js.map +1 -1
- package/dist/paired-assets.d.ts.map +1 -1
- package/dist/paired-assets.js +1 -2
- package/dist/paired-assets.js.map +1 -1
- package/dist/payload-access.d.ts.map +1 -1
- package/dist/payload-access.js +22 -13
- package/dist/payload-access.js.map +1 -1
- package/dist/payload-bootstrap.d.ts.map +1 -1
- package/dist/payload-bootstrap.js +1 -4
- package/dist/payload-bootstrap.js.map +1 -1
- package/dist/payload-configs.d.ts.map +1 -1
- package/dist/payload-configs.js +2 -4
- package/dist/payload-configs.js.map +1 -1
- package/dist/payload-database.d.ts.map +1 -1
- package/dist/payload-database.js +4 -13
- package/dist/payload-database.js.map +1 -1
- package/dist/payload-defaults.d.ts.map +1 -1
- package/dist/payload-defaults.js +2 -5
- package/dist/payload-defaults.js.map +1 -1
- package/dist/payload-field-access.d.ts.map +1 -1
- package/dist/payload-field-access.js.map +1 -1
- package/dist/payload-policy.d.ts.map +1 -1
- package/dist/payload-policy.js +2 -3
- package/dist/payload-policy.js.map +1 -1
- package/dist/payload-source.d.ts.map +1 -1
- package/dist/payload-source.js +1 -3
- package/dist/payload-source.js.map +1 -1
- package/dist/relationship-cleanup.d.ts.map +1 -1
- package/dist/relationship-cleanup.js +3 -10
- package/dist/relationship-cleanup.js.map +1 -1
- package/dist/release-age.d.ts.map +1 -1
- package/dist/release-age.js +1 -3
- package/dist/release-age.js.map +1 -1
- package/dist/route-coverage.d.ts.map +1 -1
- package/dist/route-coverage.js +18 -6
- package/dist/route-coverage.js.map +1 -1
- package/dist/route-map.d.ts.map +1 -1
- package/dist/route-map.js +3 -16
- package/dist/route-map.js.map +1 -1
- package/dist/run-plan.d.ts.map +1 -1
- package/dist/run-plan.js +1 -3
- package/dist/run-plan.js.map +1 -1
- package/dist/run-policy.d.ts.map +1 -1
- package/dist/run-policy.js +1 -2
- package/dist/run-policy.js.map +1 -1
- package/dist/secret-policy.d.ts.map +1 -1
- package/dist/secret-policy.js.map +1 -1
- package/dist/settings-layering.d.ts.map +1 -1
- package/dist/settings-layering.js +15 -12
- package/dist/settings-layering.js.map +1 -1
- package/dist/settings.d.ts +11 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +22 -12
- package/dist/settings.js.map +1 -1
- package/dist/shell-files.d.ts.map +1 -1
- package/dist/shell-files.js +2 -6
- package/dist/shell-files.js.map +1 -1
- package/dist/skill-manifest.d.ts.map +1 -1
- package/dist/skill-manifest.js +1 -4
- package/dist/skill-manifest.js.map +1 -1
- package/dist/source-security.d.ts.map +1 -1
- package/dist/source-security.js +2 -4
- package/dist/source-security.js.map +1 -1
- package/dist/source-text.d.ts.map +1 -1
- package/dist/source-text.js.map +1 -1
- package/dist/suppression-ceiling.d.ts.map +1 -1
- package/dist/suppression-ceiling.js +14 -4
- package/dist/suppression-ceiling.js.map +1 -1
- package/dist/terraform-files.d.ts.map +1 -1
- package/dist/terraform-files.js +1 -5
- package/dist/terraform-files.js.map +1 -1
- package/dist/terraform-policy.d.ts.map +1 -1
- package/dist/terraform-policy.js +2 -10
- package/dist/terraform-policy.js.map +1 -1
- package/dist/terraform-providers.d.ts.map +1 -1
- package/dist/terraform-providers.js +1 -3
- package/dist/terraform-providers.js.map +1 -1
- package/dist/text-escapes.d.ts.map +1 -1
- package/dist/text-escapes.js.map +1 -1
- package/dist/toolchain-pins.d.ts.map +1 -1
- package/dist/toolchain-pins.js.map +1 -1
- package/dist/version-policy.d.ts.map +1 -1
- package/dist/version-policy.js +5 -9
- package/dist/version-policy.js.map +1 -1
- package/dist/vulnerability-policy.d.ts.map +1 -1
- package/dist/vulnerability-policy.js.map +1 -1
- package/dist/wiring-policy.d.ts +2 -0
- package/dist/wiring-policy.d.ts.map +1 -1
- package/dist/wiring-policy.js +8 -28
- package/dist/wiring-policy.js.map +1 -1
- package/dist/workspace-policy.d.ts.map +1 -1
- package/dist/workspace-policy.js +2 -6
- package/dist/workspace-policy.js.map +1 -1
- package/dist/yaml-blocks.d.ts.map +1 -1
- package/dist/yaml-blocks.js +4 -12
- package/dist/yaml-blocks.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/** A box in document coordinates, rounded to whole CSS pixels. */
|
|
2
|
+
export interface LayoutRect {
|
|
3
|
+
readonly left: number;
|
|
4
|
+
readonly top: number;
|
|
5
|
+
readonly right: number;
|
|
6
|
+
readonly bottom: number;
|
|
7
|
+
}
|
|
8
|
+
/** One side of an element's computed border. */
|
|
9
|
+
export interface LayoutBorder {
|
|
10
|
+
readonly width: number;
|
|
11
|
+
readonly style: string;
|
|
12
|
+
readonly color: string;
|
|
13
|
+
}
|
|
14
|
+
/** The four computed borders, keyed by the side they draw. */
|
|
15
|
+
export interface LayoutBorders {
|
|
16
|
+
readonly top: LayoutBorder;
|
|
17
|
+
readonly right: LayoutBorder;
|
|
18
|
+
readonly bottom: LayoutBorder;
|
|
19
|
+
readonly left: LayoutBorder;
|
|
20
|
+
}
|
|
21
|
+
/** The side of a box that faces a neighbour. */
|
|
22
|
+
export type LayoutSide = keyof LayoutBorders;
|
|
23
|
+
/** What the page reports about one element. */
|
|
24
|
+
export interface LayoutNode {
|
|
25
|
+
/** Document order, starting at `<body>`. */
|
|
26
|
+
readonly index: number;
|
|
27
|
+
/** The index of the parent element, or -1 for `<body>`. */
|
|
28
|
+
readonly parent: number;
|
|
29
|
+
/** A short selector with the element's own text, enough to find it. */
|
|
30
|
+
readonly label: string;
|
|
31
|
+
/** The element lowercase tag name. */
|
|
32
|
+
readonly tag: string;
|
|
33
|
+
/** One rect per box fragment: an inline element wrapped over two lines reports two. */
|
|
34
|
+
readonly rects: readonly LayoutRect[];
|
|
35
|
+
/** The rects of the element's own non-blank text nodes, not of its descendants'. */
|
|
36
|
+
readonly textRects: readonly LayoutRect[];
|
|
37
|
+
/** The computed `line-height` in CSS pixels, or 0 for `normal`. */
|
|
38
|
+
readonly lineHeight: number;
|
|
39
|
+
/** The element's whole text, trimmed. Reported only where a clip could hide part of it. */
|
|
40
|
+
readonly text: string;
|
|
41
|
+
readonly display: string;
|
|
42
|
+
readonly visibility: string;
|
|
43
|
+
readonly position: string;
|
|
44
|
+
readonly backgroundColor: string;
|
|
45
|
+
readonly backgroundImage: string;
|
|
46
|
+
readonly boxShadow: string;
|
|
47
|
+
readonly borders: LayoutBorders;
|
|
48
|
+
/** Whether the element itself carries `aria-hidden="true"`. */
|
|
49
|
+
readonly isAriaHidden: boolean;
|
|
50
|
+
/** Whether a `clip` or `clip-path` is set, which is how a visually hidden element is drawn. */
|
|
51
|
+
readonly isClipped: boolean;
|
|
52
|
+
readonly overflowX: string;
|
|
53
|
+
readonly overflowY: string;
|
|
54
|
+
readonly textOverflow: string;
|
|
55
|
+
readonly lineClamp: string;
|
|
56
|
+
readonly scrollWidth: number;
|
|
57
|
+
readonly clientWidth: number;
|
|
58
|
+
readonly scrollHeight: number;
|
|
59
|
+
readonly clientHeight: number;
|
|
60
|
+
readonly title: string;
|
|
61
|
+
readonly ariaLabel: string;
|
|
62
|
+
/** The value of `data-ploaness-layout`, or undefined when the attribute is absent. */
|
|
63
|
+
readonly exemption: string | undefined;
|
|
64
|
+
/** The value of `data-ploaness-layout-reason`, trimmed. */
|
|
65
|
+
readonly exemptionReason: string;
|
|
66
|
+
}
|
|
67
|
+
/** One page measured at one viewport. */
|
|
68
|
+
export interface LayoutSnapshot {
|
|
69
|
+
readonly route: string;
|
|
70
|
+
readonly viewportWidth: number;
|
|
71
|
+
readonly viewportHeight: number;
|
|
72
|
+
/** The document's scroll width. */
|
|
73
|
+
readonly scrollWidth: number;
|
|
74
|
+
/** The computed background of `<html>`, which is what `<body>` sits on. */
|
|
75
|
+
readonly rootBackground: string;
|
|
76
|
+
readonly nodes: readonly LayoutNode[];
|
|
77
|
+
}
|
|
78
|
+
/** The only exemption value: an edge shared on purpose, such as a tab joined to its panel. */
|
|
79
|
+
export declare const ATTACHED_EXEMPTION: string;
|
|
80
|
+
/**
|
|
81
|
+
* Whether a computed colour draws anything.
|
|
82
|
+
* @param color a computed colour string.
|
|
83
|
+
* @returns false for `transparent` and any colour whose alpha is zero.
|
|
84
|
+
*/
|
|
85
|
+
export declare const isVisibleColor: (color: string) => boolean;
|
|
86
|
+
/**
|
|
87
|
+
* The background an element sits on: the nearest ancestor that paints one, or the page canvas.
|
|
88
|
+
* @param snapshot the measured page.
|
|
89
|
+
* @param node the element whose surroundings are wanted.
|
|
90
|
+
* @returns a computed colour string.
|
|
91
|
+
*/
|
|
92
|
+
export declare const surroundingBackground: (snapshot: LayoutSnapshot, node: LayoutNode) => string;
|
|
93
|
+
/**
|
|
94
|
+
* Whether an element paints a background that stands out from what it sits on.
|
|
95
|
+
* @param snapshot the measured page.
|
|
96
|
+
* @param node the element.
|
|
97
|
+
* @returns true for an image or gradient, and for a visible colour unlike the surrounding one.
|
|
98
|
+
*/
|
|
99
|
+
export declare const hasPaintedBackground: (snapshot: LayoutSnapshot, node: LayoutNode) => boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Whether one side of an element draws a border.
|
|
102
|
+
* @param node the element.
|
|
103
|
+
* @param side the side asked about.
|
|
104
|
+
* @returns true when the side has width, a drawn style, and a visible colour.
|
|
105
|
+
*/
|
|
106
|
+
export declare const hasBorderOn: (node: LayoutNode, side: LayoutSide) => boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Whether an element paints anything of its own: a background, a border, or a shadow.
|
|
109
|
+
* @param snapshot the measured page.
|
|
110
|
+
* @param node the element.
|
|
111
|
+
* @returns false for a wrapper a reader cannot see.
|
|
112
|
+
*/
|
|
113
|
+
export declare const hasPaintedBox: (snapshot: LayoutSnapshot, node: LayoutNode) => boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Whether an element or one of its ancestors is hidden from assistive technology.
|
|
116
|
+
* @param snapshot the measured page.
|
|
117
|
+
* @param node the element.
|
|
118
|
+
* @returns true inside an `aria-hidden` subtree.
|
|
119
|
+
*/
|
|
120
|
+
export declare const isInAriaHidden: (snapshot: LayoutSnapshot, node: LayoutNode) => boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Whether an element or one of its ancestors is clipped away, as a visually hidden element is.
|
|
123
|
+
* @param snapshot the measured page.
|
|
124
|
+
* @param node the element.
|
|
125
|
+
* @returns true inside a clipped subtree.
|
|
126
|
+
*/
|
|
127
|
+
export declare const isInClip: (snapshot: LayoutSnapshot, node: LayoutNode) => boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Whether `ancestor` contains `node`.
|
|
130
|
+
* @param snapshot the measured page.
|
|
131
|
+
* @param ancestor the possible ancestor.
|
|
132
|
+
* @param node the possible descendant.
|
|
133
|
+
* @returns true when `ancestor` is a strict ancestor of `node`.
|
|
134
|
+
*/
|
|
135
|
+
export declare const isAncestorOf: (snapshot: LayoutSnapshot, ancestor: LayoutNode, node: LayoutNode) => boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Whether a rect has area once rounded.
|
|
138
|
+
* @param rect the rect.
|
|
139
|
+
* @returns false for a rect with no width or no height.
|
|
140
|
+
*/
|
|
141
|
+
export declare const hasArea: (rect: LayoutRect) => boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Where an element sits in its document: each ancestor's tag and position among its siblings.
|
|
144
|
+
*
|
|
145
|
+
* The same element measured at two viewports of one page has the same key, which is how an exemption
|
|
146
|
+
* is judged across both rather than at each alone.
|
|
147
|
+
* @param snapshot the measured page.
|
|
148
|
+
* @param node the element.
|
|
149
|
+
* @returns a path such as `body/main:0/div:2`.
|
|
150
|
+
*/
|
|
151
|
+
export declare const keyOf: (snapshot: LayoutSnapshot, node: LayoutNode) => string;
|
|
152
|
+
//# sourceMappingURL=layout-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-snapshot.d.ts","sourceRoot":"","sources":["../src/layout-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// The plain shape a browser reports about one rendered page, and the painting facts derived from it.
|
|
2
|
+
//
|
|
3
|
+
// The layout sweep measures inside the page and judges here. Everything a rule needs crosses the
|
|
4
|
+
// boundary as data - whole CSS pixels and computed style strings - so the rules run without a browser
|
|
5
|
+
// and a spec can state a defect as the numbers that make it one.
|
|
6
|
+
/** The only exemption value: an edge shared on purpose, such as a tab joined to its panel. */
|
|
7
|
+
export const ATTACHED_EXEMPTION = 'attached';
|
|
8
|
+
// The canvas a page is drawn on when neither `<html>` nor any ancestor paints a background.
|
|
9
|
+
const CANVAS_BACKGROUND = 'rgb(255, 255, 255)';
|
|
10
|
+
const NO_BORDER_STYLES = new Set(['none', 'hidden']);
|
|
11
|
+
// Computed colours arrive as `rgb(r, g, b)`, `rgba(r, g, b, a)`, or a slash form such as
|
|
12
|
+
// `color(srgb r g b / a)`. Only the alpha matters here: whether the colour draws anything at all.
|
|
13
|
+
const COMMA_ALPHA = /^rgba\([^,]+,[^,]+,[^,]+,\s*([\d.]+)\)$/u;
|
|
14
|
+
const SLASH_ALPHA = /\/\s*([\d.]+%?)\s*\)$/u;
|
|
15
|
+
const PERCENT = '%';
|
|
16
|
+
const alphaText = (color) => COMMA_ALPHA.exec(color)?.[1] ?? SLASH_ALPHA.exec(color)?.[1];
|
|
17
|
+
/**
|
|
18
|
+
* Whether a computed colour draws anything.
|
|
19
|
+
* @param color a computed colour string.
|
|
20
|
+
* @returns false for `transparent` and any colour whose alpha is zero.
|
|
21
|
+
*/
|
|
22
|
+
export const isVisibleColor = (color) => {
|
|
23
|
+
const trimmed = color.trim();
|
|
24
|
+
if (trimmed === 'transparent' || trimmed === '') {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const alpha = alphaText(trimmed);
|
|
28
|
+
return alpha === undefined || Number(alpha.replace(PERCENT, '')) > 0;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The background an element sits on: the nearest ancestor that paints one, or the page canvas.
|
|
32
|
+
* @param snapshot the measured page.
|
|
33
|
+
* @param node the element whose surroundings are wanted.
|
|
34
|
+
* @returns a computed colour string.
|
|
35
|
+
*/
|
|
36
|
+
export const surroundingBackground = (snapshot, node) => {
|
|
37
|
+
const parent = snapshot.nodes[node.parent];
|
|
38
|
+
if (parent === undefined) {
|
|
39
|
+
return isVisibleColor(snapshot.rootBackground) ? snapshot.rootBackground : CANVAS_BACKGROUND;
|
|
40
|
+
}
|
|
41
|
+
return isVisibleColor(parent.backgroundColor) ? parent.backgroundColor : surroundingBackground(snapshot, parent);
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Whether an element paints a background that stands out from what it sits on.
|
|
45
|
+
* @param snapshot the measured page.
|
|
46
|
+
* @param node the element.
|
|
47
|
+
* @returns true for an image or gradient, and for a visible colour unlike the surrounding one.
|
|
48
|
+
*/
|
|
49
|
+
export const hasPaintedBackground = (snapshot, node) => node.backgroundImage !== 'none' ||
|
|
50
|
+
(isVisibleColor(node.backgroundColor) && node.backgroundColor !== surroundingBackground(snapshot, node));
|
|
51
|
+
/**
|
|
52
|
+
* Whether one side of an element draws a border.
|
|
53
|
+
* @param node the element.
|
|
54
|
+
* @param side the side asked about.
|
|
55
|
+
* @returns true when the side has width, a drawn style, and a visible colour.
|
|
56
|
+
*/
|
|
57
|
+
export const hasBorderOn = (node, side) => {
|
|
58
|
+
const border = node.borders[side];
|
|
59
|
+
return border.width > 0 && !NO_BORDER_STYLES.has(border.style) && isVisibleColor(border.color);
|
|
60
|
+
};
|
|
61
|
+
const SIDES = ['top', 'right', 'bottom', 'left'];
|
|
62
|
+
/**
|
|
63
|
+
* Whether an element paints anything of its own: a background, a border, or a shadow.
|
|
64
|
+
* @param snapshot the measured page.
|
|
65
|
+
* @param node the element.
|
|
66
|
+
* @returns false for a wrapper a reader cannot see.
|
|
67
|
+
*/
|
|
68
|
+
export const hasPaintedBox = (snapshot, node) => hasPaintedBackground(snapshot, node) ||
|
|
69
|
+
node.boxShadow !== 'none' ||
|
|
70
|
+
SIDES.some((side) => hasBorderOn(node, side));
|
|
71
|
+
/**
|
|
72
|
+
* Whether an element or one of its ancestors is hidden from assistive technology.
|
|
73
|
+
* @param snapshot the measured page.
|
|
74
|
+
* @param node the element.
|
|
75
|
+
* @returns true inside an `aria-hidden` subtree.
|
|
76
|
+
*/
|
|
77
|
+
export const isInAriaHidden = (snapshot, node) => {
|
|
78
|
+
const parent = snapshot.nodes[node.parent];
|
|
79
|
+
return node.isAriaHidden || (parent !== undefined && isInAriaHidden(snapshot, parent));
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Whether an element or one of its ancestors is clipped away, as a visually hidden element is.
|
|
83
|
+
* @param snapshot the measured page.
|
|
84
|
+
* @param node the element.
|
|
85
|
+
* @returns true inside a clipped subtree.
|
|
86
|
+
*/
|
|
87
|
+
export const isInClip = (snapshot, node) => {
|
|
88
|
+
const parent = snapshot.nodes[node.parent];
|
|
89
|
+
return node.isClipped || (parent !== undefined && isInClip(snapshot, parent));
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Whether `ancestor` contains `node`.
|
|
93
|
+
* @param snapshot the measured page.
|
|
94
|
+
* @param ancestor the possible ancestor.
|
|
95
|
+
* @param node the possible descendant.
|
|
96
|
+
* @returns true when `ancestor` is a strict ancestor of `node`.
|
|
97
|
+
*/
|
|
98
|
+
export const isAncestorOf = (snapshot, ancestor, node) => {
|
|
99
|
+
const parent = snapshot.nodes[node.parent];
|
|
100
|
+
return parent !== undefined && (parent === ancestor || isAncestorOf(snapshot, ancestor, parent));
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Whether a rect has area once rounded.
|
|
104
|
+
* @param rect the rect.
|
|
105
|
+
* @returns false for a rect with no width or no height.
|
|
106
|
+
*/
|
|
107
|
+
export const hasArea = (rect) => rect.right > rect.left && rect.bottom > rect.top;
|
|
108
|
+
/**
|
|
109
|
+
* Where an element sits in its document: each ancestor's tag and position among its siblings.
|
|
110
|
+
*
|
|
111
|
+
* The same element measured at two viewports of one page has the same key, which is how an exemption
|
|
112
|
+
* is judged across both rather than at each alone.
|
|
113
|
+
* @param snapshot the measured page.
|
|
114
|
+
* @param node the element.
|
|
115
|
+
* @returns a path such as `body/main:0/div:2`.
|
|
116
|
+
*/
|
|
117
|
+
export const keyOf = (snapshot, node) => {
|
|
118
|
+
const parent = snapshot.nodes[node.parent];
|
|
119
|
+
if (parent === undefined) {
|
|
120
|
+
return node.tag;
|
|
121
|
+
}
|
|
122
|
+
const position = snapshot.nodes
|
|
123
|
+
.filter((sibling) => sibling.parent === parent.index)
|
|
124
|
+
.indexOf(node);
|
|
125
|
+
return `${keyOf(snapshot, parent)}/${node.tag}:${String(position)}`;
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=layout-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-snapshot.js","sourceRoot":"","sources":["../src/layout-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type LayoutNode, type LayoutSnapshot } from './layout-snapshot.js';
|
|
2
|
+
/**
|
|
3
|
+
* How far two text rects may intersect, in CSS pixels, before they overlap. Glyph boxes of adjacent
|
|
4
|
+
* lines share a pixel row after rounding, which is a rounding artefact rather than a collision.
|
|
5
|
+
*/
|
|
6
|
+
export declare const TEXT_OVERLAP_TOLERANCE: number;
|
|
7
|
+
/** Two elements whose own text overlaps. */
|
|
8
|
+
export interface TextFinding {
|
|
9
|
+
readonly first: LayoutNode;
|
|
10
|
+
readonly second: LayoutNode;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Every pair of unrelated elements whose own text overlaps.
|
|
14
|
+
* @param snapshot the measured page.
|
|
15
|
+
* @returns one finding per pair, in document order.
|
|
16
|
+
*/
|
|
17
|
+
export declare const findOverlappingText: (snapshot: LayoutSnapshot) => readonly TextFinding[];
|
|
18
|
+
/** An element whose own box cuts off part of its text. */
|
|
19
|
+
export interface ClipFinding {
|
|
20
|
+
readonly node: LayoutNode;
|
|
21
|
+
/** True when the element declares truncation but names its full text nowhere a reader can reach. */
|
|
22
|
+
readonly isUnnamedTruncation: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Every element whose own text its box cuts off.
|
|
26
|
+
*
|
|
27
|
+
* Truncation declared with an ellipsis or a line clamp is intentional when the full text is in the
|
|
28
|
+
* element's `title` or `aria-label`; declared without either, it is reported as unnamed.
|
|
29
|
+
* @param snapshot the measured page.
|
|
30
|
+
* @returns one finding per clipping element.
|
|
31
|
+
*/
|
|
32
|
+
export declare const findClippedText: (snapshot: LayoutSnapshot) => readonly ClipFinding[];
|
|
33
|
+
/**
|
|
34
|
+
* The outermost elements that make the page wider than its viewport.
|
|
35
|
+
*
|
|
36
|
+
* An element is reported when it reaches past the viewport and its parent does not, so a wide table is
|
|
37
|
+
* named once rather than with every cell inside it. A fixed element is ignored: it never widens a page.
|
|
38
|
+
* @param snapshot the measured page.
|
|
39
|
+
* @returns the culprits, or an empty list when the page fits or no element can be blamed.
|
|
40
|
+
*/
|
|
41
|
+
export declare const findOverflowingElements: (snapshot: LayoutSnapshot) => readonly LayoutNode[];
|
|
42
|
+
//# sourceMappingURL=layout-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-text.d.ts","sourceRoot":"","sources":["../src/layout-text.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAEf,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAA;AAE7B;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAU,CAAA;AAiD/C,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,cAAc,KAAG,SAAS,WAAW,EAclF,CAAA;AAED,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,oGAAoG;IACpG,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;CACtC;AAiBD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,cAAc,KAAG,SAAS,WAAW,EAazE,CAAA;AAgBN;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,cAAc,KAAG,SAAS,UAAU,EASlF,CAAA"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Text that overlaps other text, text cut off by its own box, and a page wider than its viewport.
|
|
2
|
+
import { hasArea, isAncestorOf, isInAriaHidden, isInClip, } from './layout-snapshot.js';
|
|
3
|
+
/**
|
|
4
|
+
* How far two text rects may intersect, in CSS pixels, before they overlap. Glyph boxes of adjacent
|
|
5
|
+
* lines share a pixel row after rounding, which is a rounding artefact rather than a collision.
|
|
6
|
+
*/
|
|
7
|
+
export const TEXT_OVERLAP_TOLERANCE = 1;
|
|
8
|
+
const HIDDEN_VISIBILITY = new Set(['hidden', 'collapse']);
|
|
9
|
+
// Form controls keep their value in a text node or render it themselves; neither is page text a
|
|
10
|
+
// reader sees laid out by the page.
|
|
11
|
+
const CONTROL_TAGS = new Set(['textarea', 'select', 'option']);
|
|
12
|
+
const CLIPPING_OVERFLOW = new Set(['hidden', 'clip']);
|
|
13
|
+
// A visually hidden element draws a 1px box and clips its text away on purpose.
|
|
14
|
+
const HIDDEN_BOX_LIMIT = 1;
|
|
15
|
+
const isReadableText = (snapshot, node) => node.textRects.some((rect) => hasArea(rect)) &&
|
|
16
|
+
!CONTROL_TAGS.has(node.tag) &&
|
|
17
|
+
!HIDDEN_VISIBILITY.has(node.visibility) &&
|
|
18
|
+
!isInAriaHidden(snapshot, node) &&
|
|
19
|
+
!isInClip(snapshot, node);
|
|
20
|
+
// A text rect spans the font's whole content area, its ascent and descent. A line box is `line-height`
|
|
21
|
+
// tall and centred on that area, so under a tight line height the content area overhangs it: two lines
|
|
22
|
+
// stacked with `line-height: 1` intersect as content areas while their glyphs never meet. The line box
|
|
23
|
+
// is what layout places, so it is what is compared. A line height of 0 is `normal`, which never
|
|
24
|
+
// shrinks the area.
|
|
25
|
+
// The leading is split evenly between the space above the content area and the space below it.
|
|
26
|
+
const LEADING_SIDES = 2;
|
|
27
|
+
const lineBoxOf = (rect, lineHeight) => {
|
|
28
|
+
const height = rect.bottom - rect.top;
|
|
29
|
+
if (lineHeight <= 0 || lineHeight >= height) {
|
|
30
|
+
return rect;
|
|
31
|
+
}
|
|
32
|
+
const inset = (height - lineHeight) / LEADING_SIDES;
|
|
33
|
+
return { ...rect, top: Math.round(rect.top + inset), bottom: Math.round(rect.bottom - inset) };
|
|
34
|
+
};
|
|
35
|
+
const lineBoxesOf = (node) => node.textRects.map((rect) => lineBoxOf(rect, node.lineHeight));
|
|
36
|
+
const isIntersecting = (first, second) => Math.min(first.right, second.right) - Math.max(first.left, second.left) > TEXT_OVERLAP_TOLERANCE &&
|
|
37
|
+
Math.min(first.bottom, second.bottom) - Math.max(first.top, second.top) > TEXT_OVERLAP_TOLERANCE;
|
|
38
|
+
const hasCollidingText = (first, second) => lineBoxesOf(first).some((left) => lineBoxesOf(second).some((right) => isIntersecting(left, right)));
|
|
39
|
+
/**
|
|
40
|
+
* Every pair of unrelated elements whose own text overlaps.
|
|
41
|
+
* @param snapshot the measured page.
|
|
42
|
+
* @returns one finding per pair, in document order.
|
|
43
|
+
*/
|
|
44
|
+
export const findOverlappingText = (snapshot) => {
|
|
45
|
+
const readable = snapshot.nodes.filter((node) => isReadableText(snapshot, node));
|
|
46
|
+
return readable.flatMap((first, index) => readable
|
|
47
|
+
.slice(index + 1)
|
|
48
|
+
.filter((second) => !(isAncestorOf(snapshot, first, second) || isAncestorOf(snapshot, second, first)) &&
|
|
49
|
+
hasCollidingText(first, second))
|
|
50
|
+
.map((second) => ({ first, second })));
|
|
51
|
+
};
|
|
52
|
+
const hasHiddenOverflowX = (node) => CLIPPING_OVERFLOW.has(node.overflowX) && node.scrollWidth > node.clientWidth;
|
|
53
|
+
const hasHiddenOverflowY = (node) => CLIPPING_OVERFLOW.has(node.overflowY) && node.scrollHeight > node.clientHeight;
|
|
54
|
+
const isVisuallyHiddenBox = (node) => node.clientWidth <= HIDDEN_BOX_LIMIT || node.clientHeight <= HIDDEN_BOX_LIMIT;
|
|
55
|
+
const declaresTruncation = (node) => node.textOverflow === 'ellipsis' || (node.lineClamp !== 'none' && node.lineClamp !== '');
|
|
56
|
+
const hasFullTextName = (node) => node.text.length > 0 && [node.title, node.ariaLabel].some((name) => name.includes(node.text));
|
|
57
|
+
/**
|
|
58
|
+
* Every element whose own text its box cuts off.
|
|
59
|
+
*
|
|
60
|
+
* Truncation declared with an ellipsis or a line clamp is intentional when the full text is in the
|
|
61
|
+
* element's `title` or `aria-label`; declared without either, it is reported as unnamed.
|
|
62
|
+
* @param snapshot the measured page.
|
|
63
|
+
* @returns one finding per clipping element.
|
|
64
|
+
*/
|
|
65
|
+
export const findClippedText = (snapshot) => snapshot.nodes
|
|
66
|
+
.filter((node) => isReadableText(snapshot, node) &&
|
|
67
|
+
!isVisuallyHiddenBox(node) &&
|
|
68
|
+
(hasHiddenOverflowX(node) || hasHiddenOverflowY(node)))
|
|
69
|
+
.flatMap((node) => {
|
|
70
|
+
if (!declaresTruncation(node)) {
|
|
71
|
+
return [{ node, isUnnamedTruncation: false }];
|
|
72
|
+
}
|
|
73
|
+
return hasFullTextName(node) ? [] : [{ node, isUnnamedTruncation: true }];
|
|
74
|
+
});
|
|
75
|
+
const rightEdge = (node) => Math.max(...node.rects.filter((rect) => hasArea(rect)).map((rect) => rect.right));
|
|
76
|
+
const isWiderThan = (node, width) => node.rects.some((rect) => hasArea(rect)) && rightEdge(node) > width;
|
|
77
|
+
// A scroll container keeps what overflows it inside itself, so nothing beneath it widens the page.
|
|
78
|
+
const isContained = (snapshot, node) => {
|
|
79
|
+
const parent = snapshot.nodes[node.parent];
|
|
80
|
+
return parent !== undefined && (parent.overflowX !== 'visible' || isContained(snapshot, parent));
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* The outermost elements that make the page wider than its viewport.
|
|
84
|
+
*
|
|
85
|
+
* An element is reported when it reaches past the viewport and its parent does not, so a wide table is
|
|
86
|
+
* named once rather than with every cell inside it. A fixed element is ignored: it never widens a page.
|
|
87
|
+
* @param snapshot the measured page.
|
|
88
|
+
* @returns the culprits, or an empty list when the page fits or no element can be blamed.
|
|
89
|
+
*/
|
|
90
|
+
export const findOverflowingElements = (snapshot) => snapshot.nodes.filter((node) => {
|
|
91
|
+
const parent = snapshot.nodes[node.parent];
|
|
92
|
+
return (node.position !== 'fixed' &&
|
|
93
|
+
isWiderThan(node, snapshot.viewportWidth) &&
|
|
94
|
+
!isContained(snapshot, node) &&
|
|
95
|
+
(parent === undefined || !isWiderThan(parent, snapshot.viewportWidth)));
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=layout-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-text.js","sourceRoot":"","sources":["../src/layout-text.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-allowlist.d.ts","sourceRoot":"","sources":["../src/license-allowlist.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"license-allowlist.d.ts","sourceRoot":"","sources":["../src/license-allowlist.ts"],"names":[],"mappings":"AAmKA;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,KAAG,OAQrD,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAGD,eAAO,MAAM,qBAAqB,GAAI,UAAU,SAAS,eAAe,EAAE,KAAG,SAAS,eAAe,EACP,CAAA"}
|
|
@@ -147,9 +147,7 @@ export const isLicenseAllowed = (expression) => {
|
|
|
147
147
|
return alternatives.some((part) => isLicenseAllowed(part));
|
|
148
148
|
}
|
|
149
149
|
const conjuncts = splitOutside(clean, AND);
|
|
150
|
-
return conjuncts.length > 1
|
|
151
|
-
? conjuncts.every((part) => isLicenseAllowed(part))
|
|
152
|
-
: isAllowedId(clean);
|
|
150
|
+
return conjuncts.length > 1 ? conjuncts.every((part) => isLicenseAllowed(part)) : isAllowedId(clean);
|
|
153
151
|
};
|
|
154
152
|
// Return the packages whose license is not permitted by policy; an empty array means a clean tree.
|
|
155
153
|
export const findLicenseViolations = (packages) => packages.filter((package_) => !isLicenseAllowed(package_.license));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-allowlist.js","sourceRoot":"","sources":["../src/license-allowlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,oGAAoG;AACpG,sEAAsE;AACtE,0EAA0E;AAE1E,6FAA6F;AAC7F,wGAAwG;AACxG,qFAAqF;AAErF,mFAAmF;AACnF,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,iGAAiG;AACjG,iGAAiG;AACjG,4FAA4F;AAC5F,MAAM,UAAU,GAAsB;IACpC,MAAM;IACN,SAAS;IACT,SAAS;IACT,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,SAAS;IACT,eAAe;IACf,WAAW;IACX,WAAW;IACX,SAAS;IACT,SAAS;IACT,KAAK;IACL,KAAK;IACL,OAAO;IACP,cAAc;IACd,MAAM;IACN,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,KAAK;IACL,OAAO;IACP,KAAK;IACL,MAAM;CACP,CAAA;AAED,gGAAgG;AAChG,8FAA8F;AAC9F,sGAAsG;AACtG,uGAAuG;AACvG,mGAAmG;AACnG,EAAE;AACF,iGAAiG;AACjG,qGAAqG;AACrG,kGAAkG;AAClG,oFAAoF;AACpF,MAAM,aAAa,GAAsB;IACvC,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,eAAe;IACf,mBAAmB;IACnB,SAAS;IACT,SAAS;CACV,CAAA;AAED,MAAM,OAAO,GAAwB,IAAI,GAAG,CAAS,CAAC,GAAG,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC,CAAA;AAEvF,sGAAsG;AACtG,oGAAoG;AACpG,sGAAsG;AACtG,oGAAoG;AACpG,MAAM,cAAc,GAAwB,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"license-allowlist.js","sourceRoot":"","sources":["../src/license-allowlist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-policy.d.ts","sourceRoot":"","sources":["../src/network-policy.ts"],"names":[],"mappings":"AAGA,gGAAgG;AAChG,eAAO,MAAM,YAAY,EAAE,MAAmE,CAAA;AAE9F,wGAAwG;AACxG,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;AAEnE,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,6FAA6F;AAC7F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,2GAA2G;AAC3G,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAe7C,CAAA;
|
|
1
|
+
{"version":3,"file":"network-policy.d.ts","sourceRoot":"","sources":["../src/network-policy.ts"],"names":[],"mappings":"AAGA,gGAAgG;AAChG,eAAO,MAAM,YAAY,EAAE,MAAmE,CAAA;AAE9F,wGAAwG;AACxG,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;AAEnE,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;IACxB,sGAAsG;IACtG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,6FAA6F;AAC7F,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,2GAA2G;AAC3G,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAe7C,CAAA;AAmCD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,YAAY,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAAE,GAAG,SAAS,CAAC,CAAC,KACnF,WAAW,CAAC,MAAM,CAOlB,CAAA;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,GAAG,SAAS,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,OAMzF,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,SAMnD,CAAA;AAuBD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,eAAe,SAAS,OAAO,EAAE,KAAG,cAcxE,CAAA;AASD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,cAAc,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,MAAM,GAAG,SAKhG,CAAA"}
|
package/dist/network-policy.js
CHANGED
|
@@ -31,13 +31,7 @@ const DOT = '.';
|
|
|
31
31
|
const LOCALHOST = 'localhost';
|
|
32
32
|
const isLocalhostName = (host) => host === LOCALHOST || host.endsWith(`.${LOCALHOST}`);
|
|
33
33
|
// The unspecified address and the two spellings of the IPv6 loopback. Both name this machine.
|
|
34
|
-
const LOOPBACK_LITERALS = new Set([
|
|
35
|
-
'::1',
|
|
36
|
-
'0:0:0:0:0:0:0:1',
|
|
37
|
-
'0.0.0.0',
|
|
38
|
-
'::',
|
|
39
|
-
'0:0:0:0:0:0:0:0',
|
|
40
|
-
]);
|
|
34
|
+
const LOOPBACK_LITERALS = new Set(['::1', '0:0:0:0:0:0:0:1', '0.0.0.0', '::', '0:0:0:0:0:0:0:0']);
|
|
41
35
|
// One canonical spelling for a host, so an address read off this machine's interfaces and a host a test
|
|
42
36
|
// wrote compare as equals: lower case, no brackets around an IPv6 literal, no zone identifier, no
|
|
43
37
|
// trailing dot, and an IPv4-mapped IPv6 address reduced to the IPv4 address it carries.
|
|
@@ -45,10 +39,7 @@ const LOOPBACK_LITERALS = new Set([
|
|
|
45
39
|
// trims backtracks super-linearly on a long host, and a host is attacker-shaped input in a suite that
|
|
46
40
|
// reads a URL out of a fixture.
|
|
47
41
|
const canonicalHost = (host) => {
|
|
48
|
-
const lowered = host
|
|
49
|
-
.toLowerCase()
|
|
50
|
-
.replaceAll(OPENING_BRACKET, '')
|
|
51
|
-
.replaceAll(CLOSING_BRACKET, '');
|
|
42
|
+
const lowered = host.toLowerCase().replaceAll(OPENING_BRACKET, '').replaceAll(CLOSING_BRACKET, '');
|
|
52
43
|
const withoutZone = lowered.split(ZONE_SEPARATOR)[0] ?? '';
|
|
53
44
|
const rooted = withoutZone.endsWith(DOT) ? withoutZone.slice(0, -1) : withoutZone;
|
|
54
45
|
return rooted.startsWith(IPV4_MAPPED_PREFIX) ? rooted.slice(IPV4_MAPPED_PREFIX.length) : rooted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-policy.js","sourceRoot":"","sources":["../src/network-policy.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,gGAAgG;AAChG,MAAM,CAAC,MAAM,YAAY,GAAW,0DAA0D,CAAA;AAmB9F,2GAA2G;AAC3G,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,SAAS;IACT,UAAU;IACV,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,WAAW;IACX,cAAc;IACd,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,SAAS;CACV,CAAA;AAED,0EAA0E;AAC1E,MAAM,kBAAkB,GAAW,SAAS,CAAA;AAE5C,MAAM,aAAa,GAAW,kCAAkC,CAAA;AAChE,MAAM,cAAc,GAAW,GAAG,CAAA;AAClC,MAAM,eAAe,GAAW,GAAG,CAAA;AACnC,MAAM,eAAe,GAAW,GAAG,CAAA;AACnC,MAAM,GAAG,GAAW,GAAG,CAAA;AACvB,uGAAuG;AACvG,+FAA+F;AAC/F,MAAM,SAAS,GAAW,WAAW,CAAA;AAErC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"network-policy.js","sourceRoot":"","sources":["../src/network-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxlint-report.d.ts","sourceRoot":"","sources":["../src/oxlint-report.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC7C;
|
|
1
|
+
{"version":3,"file":"oxlint-report.d.ts","sourceRoot":"","sources":["../src/oxlint-report.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC7C;AA2CD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,OAAO,MAAM,EACb,YAAW,eAAsC,KAChD,SAAS,MAAM,EAkBjB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,OAAO,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAYzF,CAAA"}
|
package/dist/oxlint-report.js
CHANGED
|
@@ -54,9 +54,7 @@ export const oxlintReportProblems = (output, files, rules, execution = SUCCESSFU
|
|
|
54
54
|
...(report['number_of_files'] === files
|
|
55
55
|
? []
|
|
56
56
|
: [`Oxlint did not analyze the expected ${String(files)} source file(s)`]),
|
|
57
|
-
...(report['number_of_rules'] === rules
|
|
58
|
-
? []
|
|
59
|
-
: [`Oxlint did not enable the expected ${String(rules)} rule(s)`]),
|
|
57
|
+
...(report['number_of_rules'] === rules ? [] : [`Oxlint did not enable the expected ${String(rules)} rule(s)`]),
|
|
60
58
|
...report['diagnostics']
|
|
61
59
|
.filter((value) => !isEslintOwnedDiagnostic(value, execution.legacy))
|
|
62
60
|
.map((value) => diagnostic(value)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxlint-report.js","sourceRoot":"","sources":["../src/oxlint-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAgBtE,MAAM,oBAAoB,GAAoB,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AAEzE,MAAM,uBAAuB,GAAG,CAAC,KAAc,EAAE,KAAkC,EAAW,EAAE;IAC9F,MAAM,MAAM,GAA4B,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,MAAM,GAAY,MAAM,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,KAAK,GAA4B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACxF,MAAM,IAAI,GAA4B,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7D,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,KAAK,8DAA8D;QACpF,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS;QAC5B,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO;QAC9B,KAAK,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"oxlint-report.js","sourceRoot":"","sources":["../src/oxlint-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxlint-scope.d.ts","sourceRoot":"","sources":["../src/oxlint-scope.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAGjE,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"oxlint-scope.d.ts","sourceRoot":"","sources":["../src/oxlint-scope.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAGjE,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAmE,CAAA;AAYlH,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,MAAM,EAAE,EACxB,WAAW,SAAS,MAAM,EAAE,EAC5B,UAAU,SAAS,MAAM,EAAE,KAC1B,SAAS,MAAM,EAQjB,CAAA;AAED,0FAA0F;AAC1F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;CACtC;AAED,4FAA4F;AAC5F,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,MAAM,EAAE,EAAE,eAAe,OAAO,KAAG,SAAS,WAAW,EAMnG,CAAA"}
|
package/dist/oxlint-scope.js
CHANGED
|
@@ -4,16 +4,7 @@ import { jsxAccessibilityFiles } from './jsx-accessibility-scope.js';
|
|
|
4
4
|
import { oxlintRules } from './oxlint-policy.js';
|
|
5
5
|
import { analysisBoundaries } from './workspace-policy.js';
|
|
6
6
|
/** Authored JavaScript and TypeScript, including configuration and hidden tooling. */
|
|
7
|
-
export const OXLINT_EXTENSIONS = [
|
|
8
|
-
'.ts',
|
|
9
|
-
'.tsx',
|
|
10
|
-
'.mts',
|
|
11
|
-
'.cts',
|
|
12
|
-
'.js',
|
|
13
|
-
'.jsx',
|
|
14
|
-
'.mjs',
|
|
15
|
-
'.cjs',
|
|
16
|
-
];
|
|
7
|
+
export const OXLINT_EXTENSIONS = ['.ts', '.tsx', '.mts', '.cts', '.js', '.jsx', '.mjs', '.cjs'];
|
|
17
8
|
const OUTPUTS = [
|
|
18
9
|
'**/node_modules/**',
|
|
19
10
|
'.next/**',
|
|
@@ -25,12 +16,7 @@ const OUTPUTS = [
|
|
|
25
16
|
];
|
|
26
17
|
/** Select committable source without giving generated output or siblings a second owner. */
|
|
27
18
|
export const oxlintSourceFiles = (files, generated, siblings) => {
|
|
28
|
-
const ignored = [
|
|
29
|
-
...OUTPUTS,
|
|
30
|
-
...GENERATED_ARTEFACTS,
|
|
31
|
-
...generated,
|
|
32
|
-
...analysisBoundaries(siblings),
|
|
33
|
-
];
|
|
19
|
+
const ignored = [...OUTPUTS, ...GENERATED_ARTEFACTS, ...generated, ...analysisBoundaries(siblings)];
|
|
34
20
|
return [...new Set(files)].filter((file) => hasExtension(file, OXLINT_EXTENSIONS) &&
|
|
35
21
|
!/\.d\.(?:ts|mts|cts)$/u.test(file) &&
|
|
36
22
|
!ignored.some((pattern) => matchesGlob(pattern, file)));
|