@packtory/cli 0.0.15 → 0.0.16
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/command-line-interface/config-loader.js +3 -6
- package/command-line-interface/config-loader.js.map +1 -1
- package/command-line-interface/preview-io/preview-io-shared.js +32 -0
- package/command-line-interface/preview-io/preview-io-shared.js.map +1 -0
- package/command-line-interface/preview-io/preview-io.js +16 -0
- package/command-line-interface/preview-io/preview-io.js.map +1 -0
- package/command-line-interface/preview-io/preview-spawn.js +27 -0
- package/command-line-interface/preview-io/preview-spawn.js.map +1 -0
- package/command-line-interface/runner/command-parsing.js +11 -0
- package/command-line-interface/runner/command-parsing.js.map +1 -0
- package/command-line-interface/runner/failure-printing.js +42 -0
- package/command-line-interface/runner/failure-printing.js.map +1 -0
- package/command-line-interface/runner/pack-handler.js +107 -0
- package/command-line-interface/runner/pack-handler.js.map +1 -0
- package/command-line-interface/runner/preview-handler.js +47 -0
- package/command-line-interface/runner/preview-handler.js.map +1 -0
- package/command-line-interface/runner/progress-wiring.js +27 -0
- package/command-line-interface/runner/progress-wiring.js.map +1 -0
- package/command-line-interface/runner/publish-handler.js +34 -0
- package/command-line-interface/runner/publish-handler.js.map +1 -0
- package/command-line-interface/runner/release-diff-handler.js +37 -0
- package/command-line-interface/runner/release-diff-handler.js.map +1 -0
- package/command-line-interface/runner/report-persistence.js +25 -0
- package/command-line-interface/runner/report-persistence.js.map +1 -0
- package/command-line-interface/runner/runner-symbols.js +11 -0
- package/command-line-interface/runner/runner-symbols.js.map +1 -0
- package/command-line-interface/runner/runner.js +108 -0
- package/command-line-interface/runner/runner.js.map +1 -0
- package/command-line-interface/spinner/line-spinner-renderer.js +44 -0
- package/command-line-interface/spinner/line-spinner-renderer.js.map +1 -0
- package/command-line-interface/{spinner-boot.js → spinner/spinner-boot.js} +2 -1
- package/command-line-interface/spinner/spinner-boot.js.map +1 -0
- package/command-line-interface/spinner/spinner-glyphs.js +31 -0
- package/command-line-interface/spinner/spinner-glyphs.js.map +1 -0
- package/command-line-interface/spinner/spinner-render-sequence.js +31 -0
- package/command-line-interface/spinner/spinner-render-sequence.js.map +1 -0
- package/command-line-interface/spinner/spinner-runtime.js +31 -0
- package/command-line-interface/spinner/spinner-runtime.js.map +1 -0
- package/command-line-interface/{spinner-shared-state.js → spinner/spinner-shared-state.js} +73 -10
- package/command-line-interface/spinner/spinner-shared-state.js.map +1 -0
- package/command-line-interface/spinner/spinner-snapshots.js +12 -0
- package/command-line-interface/spinner/spinner-snapshots.js.map +1 -0
- package/command-line-interface/spinner/spinner-worker-backend.js +38 -0
- package/command-line-interface/spinner/spinner-worker-backend.js.map +1 -0
- package/command-line-interface/spinner/spinner-worker-loop.js +38 -0
- package/command-line-interface/spinner/spinner-worker-loop.js.map +1 -0
- package/command-line-interface/spinner/terminal-spinner-renderer.js.map +1 -0
- package/common/path-tree.js +79 -0
- package/common/path-tree.js.map +1 -0
- package/package.json +3 -4
- package/packages/command-line-interface/command-line-interface.entry-point.d.ts +2 -2
- package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
- package/packages/command-line-interface/command-line-interface.entry-point.js +34 -14
- package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
- package/packages/command-line-interface/spinner-boot.entry-point.js +12 -6
- package/packages/command-line-interface/spinner-boot.entry-point.js.map +1 -1
- package/packages/command-line-interface/spinner-worker.entry-point.js +1 -1
- package/packages/command-line-interface/spinner-worker.entry-point.js.map +1 -1
- package/readme.md +34 -0
- package/report/html-renderer/artifact-tree-renderer.js +25 -0
- package/report/html-renderer/artifact-tree-renderer.js.map +1 -0
- package/report/html-renderer/diagnostics-renderer.js +26 -0
- package/report/html-renderer/diagnostics-renderer.js.map +1 -0
- package/report/html-renderer/diff-renderer.js +31 -0
- package/report/html-renderer/diff-renderer.js.map +1 -0
- package/report/html-renderer/eliminated-files-renderer.js +16 -0
- package/report/html-renderer/eliminated-files-renderer.js.map +1 -0
- package/report/html-renderer/html-escaping.js.map +1 -0
- package/report/html-renderer/html-primitives.js +25 -0
- package/report/html-renderer/html-primitives.js.map +1 -0
- package/report/html-renderer/html-renderer.js +57 -0
- package/report/html-renderer/html-renderer.js.map +1 -0
- package/report/html-renderer/html-styles.js +177 -0
- package/report/html-renderer/html-styles.js.map +1 -0
- package/report/html-renderer/package-renderer.js +26 -0
- package/report/html-renderer/package-renderer.js.map +1 -0
- package/report/preview/artifact-diff-builder.js +20 -0
- package/report/preview/artifact-diff-builder.js.map +1 -0
- package/report/preview/artifact-tree-builder.js +19 -0
- package/report/preview/artifact-tree-builder.js.map +1 -0
- package/report/preview/bundle-artifact-index.js +15 -0
- package/report/preview/bundle-artifact-index.js.map +1 -0
- package/report/preview/changed-artifacts.js.map +1 -0
- package/report/preview/preview-document-helpers.js +19 -0
- package/report/preview/preview-document-helpers.js.map +1 -0
- package/report/preview/preview-document.js +62 -0
- package/report/preview/preview-document.js.map +1 -0
- package/report/preview/preview-result-inspectors.js +30 -0
- package/report/preview/preview-result-inspectors.js.map +1 -0
- package/report/preview/preview-summary.js +52 -0
- package/report/preview/preview-summary.js.map +1 -0
- package/report/release-diff/release-diff-document.js +22 -0
- package/report/release-diff/release-diff-document.js.map +1 -0
- package/report/release-diff/release-diff-summary.js +39 -0
- package/report/release-diff/release-diff-summary.js.map +1 -0
- package/report/terminal-renderer/terminal-artifact-renderer.js +20 -0
- package/report/terminal-renderer/terminal-artifact-renderer.js.map +1 -0
- package/report/terminal-renderer/terminal-package-renderer.js +36 -0
- package/report/terminal-renderer/terminal-package-renderer.js.map +1 -0
- package/report/{terminal-preview-renderer-shared.js → terminal-renderer/terminal-preview-renderer-shared.js} +16 -0
- package/report/terminal-renderer/terminal-preview-renderer-shared.js.map +1 -0
- package/report/terminal-renderer/terminal-preview-renderer.js +33 -0
- package/report/terminal-renderer/terminal-preview-renderer.js.map +1 -0
- package/report/terminal-renderer/terminal-release-diff-package-renderer.js +125 -0
- package/report/terminal-renderer/terminal-release-diff-package-renderer.js.map +1 -0
- package/report/terminal-renderer/terminal-release-diff-renderer.js +53 -0
- package/report/terminal-renderer/terminal-release-diff-renderer.js.map +1 -0
- package/command-line-interface/preview-io-shared.js +0 -75
- package/command-line-interface/preview-io-shared.js.map +0 -1
- package/command-line-interface/preview-io.js +0 -15
- package/command-line-interface/preview-io.js.map +0 -1
- package/command-line-interface/runner.js +0 -244
- package/command-line-interface/runner.js.map +0 -1
- package/command-line-interface/spinner-boot.js.map +0 -1
- package/command-line-interface/spinner-shared-state.js.map +0 -1
- package/command-line-interface/spinner-worker-backend.js +0 -62
- package/command-line-interface/spinner-worker-backend.js.map +0 -1
- package/command-line-interface/spinner-worker-loop.js +0 -94
- package/command-line-interface/spinner-worker-loop.js.map +0 -1
- package/command-line-interface/terminal-spinner-renderer.js.map +0 -1
- package/common/typed-diff.js +0 -5
- package/common/typed-diff.js.map +0 -1
- package/report/changed-artifacts.js.map +0 -1
- package/report/html-escaping.js.map +0 -1
- package/report/html-renderer.js +0 -337
- package/report/html-renderer.js.map +0 -1
- package/report/preview-document-diff.js +0 -17
- package/report/preview-document-diff.js.map +0 -1
- package/report/preview-document-helpers.js +0 -173
- package/report/preview-document-helpers.js.map +0 -1
- package/report/preview-document-tree.js +0 -13
- package/report/preview-document-tree.js.map +0 -1
- package/report/preview-document.js +0 -97
- package/report/preview-document.js.map +0 -1
- package/report/terminal-preview-renderer-shared.js.map +0 -1
- package/report/terminal-preview-renderer.js +0 -94
- package/report/terminal-preview-renderer.js.map +0 -1
- /package/command-line-interface/{terminal-spinner-renderer.js → spinner/terminal-spinner-renderer.js} +0 -0
- /package/report/{html-escaping.js → html-renderer/html-escaping.js} +0 -0
- /package/report/{changed-artifacts.js → preview/changed-artifacts.js} +0 -0
package/common/typed-diff.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typed-diff.js","sourceRoot":"","sources":["../../../../source/common/typed-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiE,MAAM,MAAM,CAAC;AAYtG,MAAM,UAAU,qBAAqB,CAAC,GAAG,IAAyB;IAC9D,OAAO,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"changed-artifacts.js","sourceRoot":"","sources":["../../../../source/report/changed-artifacts.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,uBAAuB,CAAC,IAAoC;IACxE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-escaping.js","sourceRoot":"","sources":["../../../../source/report/html-escaping.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,KAAa;IACpC,OAAO,KAAK;SACP,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
package/report/html-renderer.js
DELETED
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @stylistic/max-len, complexity -- the HTML report renderer is intentionally template-heavy */
|
|
2
|
-
/* cspell:words Palatino Menlo */
|
|
3
|
-
import { artifactBadgeLabel, artifactStatusLabel } from "./preview-document.js";
|
|
4
|
-
import { collectChangedArtifacts } from "./changed-artifacts.js";
|
|
5
|
-
import { escapeHtml } from "./html-escaping.js";
|
|
6
|
-
const jsonIndentSpaces = 2;
|
|
7
|
-
function renderJsonBlock(value) {
|
|
8
|
-
return `<pre>${escapeHtml(JSON.stringify(value, undefined, jsonIndentSpaces))}</pre>`;
|
|
9
|
-
}
|
|
10
|
-
function renderSection(title, value) {
|
|
11
|
-
return `<details class="diagnostic secondary"><summary>${escapeHtml(title)}</summary>${renderJsonBlock(value)}</details>`;
|
|
12
|
-
}
|
|
13
|
-
function formatBytes(bytes) {
|
|
14
|
-
return `${bytes} B`;
|
|
15
|
-
}
|
|
16
|
-
function renderBadge(text, className) {
|
|
17
|
-
return `<span class="badge ${className}">${escapeHtml(text)}</span>`;
|
|
18
|
-
}
|
|
19
|
-
function renderSummaryCard(label, value) {
|
|
20
|
-
return `<div class="summary-card"><span class="summary-label">${escapeHtml(label)}</span><strong>${escapeHtml(String(value))}</strong></div>`;
|
|
21
|
-
}
|
|
22
|
-
function renderIssues(issueItems) {
|
|
23
|
-
return `<section class="issues"><h2>Issues</h2><ul>${issueItems}</ul></section>`;
|
|
24
|
-
}
|
|
25
|
-
function renderArtifactNode(node) {
|
|
26
|
-
if (node.type === 'directory') {
|
|
27
|
-
return `<li class="tree-row directory" style="--depth:${node.depth}"><span class="tree-name">${escapeHtml(node.name)}/</span></li>`;
|
|
28
|
-
}
|
|
29
|
-
const { artifact } = node;
|
|
30
|
-
const badges = [
|
|
31
|
-
renderBadge(artifactStatusLabel(artifact.status), `status-${artifact.status}`),
|
|
32
|
-
...artifact.badges.map((badge) => {
|
|
33
|
-
return renderBadge(artifactBadgeLabel(badge), 'secondary');
|
|
34
|
-
})
|
|
35
|
-
].join('');
|
|
36
|
-
return `<li class="tree-row file" style="--depth:${node.depth}">
|
|
37
|
-
<span class="tree-name">${escapeHtml(node.name)}</span>
|
|
38
|
-
<span class="tree-meta">${escapeHtml(artifact.kind)} · ${escapeHtml(formatBytes(artifact.sizeBytes))}</span>
|
|
39
|
-
<span class="tree-badges">${badges}</span>
|
|
40
|
-
</li>`;
|
|
41
|
-
}
|
|
42
|
-
function renderDiffLine(line) {
|
|
43
|
-
return `<div class="diff-line ${line.type}">${escapeHtml(line.text)}</div>`;
|
|
44
|
-
}
|
|
45
|
-
function renderDiffHunk(header, lines) {
|
|
46
|
-
let renderedLines = '';
|
|
47
|
-
for (const line of lines) {
|
|
48
|
-
renderedLines += renderDiffLine(line);
|
|
49
|
-
}
|
|
50
|
-
return `<div class="diff-hunk"><div class="diff-header">${escapeHtml(header)}</div>${renderedLines}</div>`;
|
|
51
|
-
}
|
|
52
|
-
function renderArtifactDiff(artifact) {
|
|
53
|
-
let hunks = '';
|
|
54
|
-
for (const hunk of artifact.diff) {
|
|
55
|
-
hunks += renderDiffHunk(hunk.header, hunk.lines);
|
|
56
|
-
}
|
|
57
|
-
return `<details class="diff" open><summary>${escapeHtml(artifact.path)}</summary>${hunks}</details>`;
|
|
58
|
-
}
|
|
59
|
-
function renderDiffs(pkg) {
|
|
60
|
-
const changedFiles = collectChangedArtifacts(pkg.tree);
|
|
61
|
-
if (changedFiles.length === 0) {
|
|
62
|
-
return '';
|
|
63
|
-
}
|
|
64
|
-
let sections = '';
|
|
65
|
-
for (const artifact of changedFiles) {
|
|
66
|
-
sections += renderArtifactDiff(artifact);
|
|
67
|
-
}
|
|
68
|
-
return `<section class="package-block"><h3>Changed files</h3>${sections}</section>`;
|
|
69
|
-
}
|
|
70
|
-
function renderEliminatedFiles(pkg) {
|
|
71
|
-
if (pkg.eliminatedSourceFiles.length === 0) {
|
|
72
|
-
return '';
|
|
73
|
-
}
|
|
74
|
-
let items = '';
|
|
75
|
-
for (const file of pkg.eliminatedSourceFiles) {
|
|
76
|
-
items += `<li><code>${escapeHtml(file.path)}</code> <span class="tree-meta">${escapeHtml(formatBytes(file.sourceBytes))}</span></li>`;
|
|
77
|
-
}
|
|
78
|
-
return `<section class="package-block">
|
|
79
|
-
<h3>Eliminated source files</h3>
|
|
80
|
-
<ul class="eliminated-list">${items}</ul>
|
|
81
|
-
</section>`;
|
|
82
|
-
}
|
|
83
|
-
function renderDiagnostics(pkg) {
|
|
84
|
-
const sections = [
|
|
85
|
-
pkg.diagnostics.inputs === undefined ? '' : renderSection('Inputs', pkg.diagnostics.inputs),
|
|
86
|
-
Object.keys(pkg.diagnostics.decisions).length === 0
|
|
87
|
-
? ''
|
|
88
|
-
: renderSection('Decisions', pkg.diagnostics.decisions),
|
|
89
|
-
pkg.diagnostics.outputs === undefined ? '' : renderSection('Outputs', pkg.diagnostics.outputs),
|
|
90
|
-
Object.keys(pkg.diagnostics.timings).length === 0 ? '' : renderSection('Timings (ms)', pkg.diagnostics.timings),
|
|
91
|
-
pkg.diagnostics.failure === undefined ? '' : renderSection('Failure', pkg.diagnostics.failure)
|
|
92
|
-
].join('');
|
|
93
|
-
if (sections === '') {
|
|
94
|
-
return '';
|
|
95
|
-
}
|
|
96
|
-
return `<section class="package-block diagnostics"><h3>Diagnostics</h3>${sections}</section>`;
|
|
97
|
-
}
|
|
98
|
-
function renderFailure(pkg) {
|
|
99
|
-
if (pkg.failure === undefined) {
|
|
100
|
-
return '';
|
|
101
|
-
}
|
|
102
|
-
return `<p class="failure">Failed in stage <strong>${escapeHtml(pkg.failure.stage)}</strong>: ${escapeHtml(pkg.failure.message)}</p>`;
|
|
103
|
-
}
|
|
104
|
-
function renderPackage(pkg) {
|
|
105
|
-
const badges = [
|
|
106
|
-
renderBadge(pkg.hasChanges ? 'changed' : 'unchanged', pkg.hasChanges ? 'status-changed' : 'status-unchanged'),
|
|
107
|
-
...(pkg.versionTransition === undefined ? [] : [renderBadge(pkg.versionTransition, 'secondary')])
|
|
108
|
-
].join('');
|
|
109
|
-
return `<details class="package"${pkg.openByDefault ? ' open' : ''}>
|
|
110
|
-
<summary><span class="package-title">${escapeHtml(pkg.name)}</span><span class="package-summary">${badges}</span></summary>
|
|
111
|
-
${renderFailure(pkg)}
|
|
112
|
-
<section class="package-block">
|
|
113
|
-
<h3>Artifacts</h3>
|
|
114
|
-
<ul class="tree">${pkg.tree.map(renderArtifactNode).join('')}</ul>
|
|
115
|
-
</section>
|
|
116
|
-
${renderEliminatedFiles(pkg)}
|
|
117
|
-
${renderDiffs(pkg)}
|
|
118
|
-
${renderDiagnostics(pkg)}
|
|
119
|
-
</details>`;
|
|
120
|
-
}
|
|
121
|
-
const styles = `
|
|
122
|
-
:root {
|
|
123
|
-
color-scheme: light;
|
|
124
|
-
--bg: #f4f0e8;
|
|
125
|
-
--panel: #fffdf8;
|
|
126
|
-
--line: #d8cfc2;
|
|
127
|
-
--text: #2c2924;
|
|
128
|
-
--muted: #6b645a;
|
|
129
|
-
--changed: #b6540d;
|
|
130
|
-
--generated: #0b6e4f;
|
|
131
|
-
--unchanged: #4f6d7a;
|
|
132
|
-
--danger: #b42318;
|
|
133
|
-
--danger-bg: #fff1ef;
|
|
134
|
-
--diff-add: #e7f6ec;
|
|
135
|
-
--diff-remove: #fdecec;
|
|
136
|
-
--diff-header: #efe7da;
|
|
137
|
-
--shadow: 0 18px 50px rgba(63, 48, 29, 0.08);
|
|
138
|
-
}
|
|
139
|
-
* { box-sizing: border-box; }
|
|
140
|
-
body {
|
|
141
|
-
margin: 0;
|
|
142
|
-
background:
|
|
143
|
-
radial-gradient(circle at top left, rgba(193, 143, 71, 0.15), transparent 28rem),
|
|
144
|
-
linear-gradient(180deg, #f6f2e8 0%, var(--bg) 100%);
|
|
145
|
-
color: var(--text);
|
|
146
|
-
font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;
|
|
147
|
-
}
|
|
148
|
-
main { max-width: 72rem; margin: 0 auto; padding: 2.5rem 1.25rem 4rem; }
|
|
149
|
-
h1 { margin: 0 0 0.25rem; font-size: 2rem; }
|
|
150
|
-
h2, h3 { margin: 0 0 0.75rem; }
|
|
151
|
-
.meta { color: var(--muted); margin: 0; }
|
|
152
|
-
.header {
|
|
153
|
-
background: rgba(255, 253, 248, 0.82);
|
|
154
|
-
backdrop-filter: blur(14px);
|
|
155
|
-
border: 1px solid rgba(216, 207, 194, 0.85);
|
|
156
|
-
border-radius: 1.25rem;
|
|
157
|
-
padding: 1.5rem;
|
|
158
|
-
box-shadow: var(--shadow);
|
|
159
|
-
}
|
|
160
|
-
.mode-label {
|
|
161
|
-
display: inline-block;
|
|
162
|
-
font-size: 0.78rem;
|
|
163
|
-
letter-spacing: 0.08em;
|
|
164
|
-
text-transform: uppercase;
|
|
165
|
-
color: var(--muted);
|
|
166
|
-
margin-bottom: 0.65rem;
|
|
167
|
-
}
|
|
168
|
-
.summary {
|
|
169
|
-
display: grid;
|
|
170
|
-
grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
|
|
171
|
-
gap: 0.75rem;
|
|
172
|
-
margin: 1.5rem 0;
|
|
173
|
-
}
|
|
174
|
-
.summary-card {
|
|
175
|
-
background: var(--panel);
|
|
176
|
-
border: 1px solid var(--line);
|
|
177
|
-
border-radius: 0.9rem;
|
|
178
|
-
padding: 0.95rem 1rem;
|
|
179
|
-
box-shadow: var(--shadow);
|
|
180
|
-
}
|
|
181
|
-
.summary-label {
|
|
182
|
-
display: block;
|
|
183
|
-
color: var(--muted);
|
|
184
|
-
font-size: 0.82rem;
|
|
185
|
-
margin-bottom: 0.35rem;
|
|
186
|
-
}
|
|
187
|
-
.issues {
|
|
188
|
-
background: var(--danger-bg);
|
|
189
|
-
border: 1px solid rgba(180, 35, 24, 0.22);
|
|
190
|
-
border-radius: 0.9rem;
|
|
191
|
-
padding: 1rem 1.1rem;
|
|
192
|
-
margin: 1rem 0 0;
|
|
193
|
-
}
|
|
194
|
-
.packages { display: grid; gap: 1rem; }
|
|
195
|
-
details.package {
|
|
196
|
-
background: var(--panel);
|
|
197
|
-
border: 1px solid var(--line);
|
|
198
|
-
border-radius: 1rem;
|
|
199
|
-
box-shadow: var(--shadow);
|
|
200
|
-
overflow: hidden;
|
|
201
|
-
}
|
|
202
|
-
details.package > summary {
|
|
203
|
-
cursor: pointer;
|
|
204
|
-
list-style: none;
|
|
205
|
-
display: flex;
|
|
206
|
-
align-items: center;
|
|
207
|
-
justify-content: space-between;
|
|
208
|
-
gap: 1rem;
|
|
209
|
-
padding: 1rem 1.25rem;
|
|
210
|
-
font-weight: 700;
|
|
211
|
-
background: rgba(255, 250, 241, 0.85);
|
|
212
|
-
}
|
|
213
|
-
details.package > summary::-webkit-details-marker { display: none; }
|
|
214
|
-
.package-title { font-size: 1.05rem; }
|
|
215
|
-
.package-summary { display: flex; gap: 0.4rem; flex-wrap: wrap; justify-content: flex-end; }
|
|
216
|
-
.package-block { padding: 0 1.25rem 1.25rem; }
|
|
217
|
-
.tree { list-style: none; padding: 0; margin: 0; }
|
|
218
|
-
.tree-row {
|
|
219
|
-
display: grid;
|
|
220
|
-
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
221
|
-
gap: 0.65rem;
|
|
222
|
-
padding: 0.32rem 0;
|
|
223
|
-
padding-left: calc(var(--depth) * 1rem);
|
|
224
|
-
border-bottom: 1px solid rgba(216, 207, 194, 0.35);
|
|
225
|
-
align-items: baseline;
|
|
226
|
-
}
|
|
227
|
-
.tree-row:last-child { border-bottom: 0; }
|
|
228
|
-
.tree-row.directory { grid-template-columns: minmax(0, 1fr); color: var(--muted); font-weight: 700; }
|
|
229
|
-
.tree-name { word-break: break-all; }
|
|
230
|
-
.tree-meta { color: var(--muted); font-size: 0.84rem; }
|
|
231
|
-
.tree-badges { display: flex; gap: 0.35rem; flex-wrap: wrap; justify-content: flex-end; }
|
|
232
|
-
.badge {
|
|
233
|
-
display: inline-flex;
|
|
234
|
-
align-items: center;
|
|
235
|
-
border-radius: 999px;
|
|
236
|
-
padding: 0.15rem 0.5rem;
|
|
237
|
-
font-size: 0.76rem;
|
|
238
|
-
font-family: ui-sans-serif, system-ui, sans-serif;
|
|
239
|
-
border: 1px solid currentColor;
|
|
240
|
-
}
|
|
241
|
-
.badge.secondary { color: var(--muted); }
|
|
242
|
-
.badge.status-changed { color: var(--changed); }
|
|
243
|
-
.badge.status-generated { color: var(--generated); }
|
|
244
|
-
.badge.status-unchanged { color: var(--unchanged); }
|
|
245
|
-
.failure {
|
|
246
|
-
margin: 0 1.25rem 1rem;
|
|
247
|
-
padding: 0.9rem 1rem;
|
|
248
|
-
background: var(--danger-bg);
|
|
249
|
-
border-radius: 0.8rem;
|
|
250
|
-
color: var(--danger);
|
|
251
|
-
}
|
|
252
|
-
.eliminated-list { margin: 0; padding-left: 1.25rem; }
|
|
253
|
-
details.diff, details.diagnostic {
|
|
254
|
-
border: 1px solid rgba(216, 207, 194, 0.7);
|
|
255
|
-
border-radius: 0.8rem;
|
|
256
|
-
margin-top: 0.75rem;
|
|
257
|
-
overflow: hidden;
|
|
258
|
-
background: #fffdfa;
|
|
259
|
-
}
|
|
260
|
-
details.diff > summary, details.diagnostic > summary {
|
|
261
|
-
cursor: pointer;
|
|
262
|
-
list-style: none;
|
|
263
|
-
padding: 0.75rem 0.9rem;
|
|
264
|
-
font-weight: 600;
|
|
265
|
-
}
|
|
266
|
-
details.diff > summary::-webkit-details-marker, details.diagnostic > summary::-webkit-details-marker { display: none; }
|
|
267
|
-
.diff-hunk { border-top: 1px solid rgba(216, 207, 194, 0.5); }
|
|
268
|
-
.diff-header {
|
|
269
|
-
padding: 0.45rem 0.75rem;
|
|
270
|
-
background: var(--diff-header);
|
|
271
|
-
color: var(--muted);
|
|
272
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
273
|
-
font-size: 0.8rem;
|
|
274
|
-
}
|
|
275
|
-
.diff-line {
|
|
276
|
-
white-space: pre-wrap;
|
|
277
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
278
|
-
font-size: 0.83rem;
|
|
279
|
-
padding: 0.08rem 0.75rem;
|
|
280
|
-
}
|
|
281
|
-
.diff-line.add { background: var(--diff-add); }
|
|
282
|
-
.diff-line.remove { background: var(--diff-remove); }
|
|
283
|
-
pre {
|
|
284
|
-
margin: 0;
|
|
285
|
-
padding: 0.95rem 1rem 1rem;
|
|
286
|
-
overflow-x: auto;
|
|
287
|
-
background: #faf6ef;
|
|
288
|
-
font-size: 0.82rem;
|
|
289
|
-
}
|
|
290
|
-
@media (max-width: 720px) {
|
|
291
|
-
.tree-row { grid-template-columns: minmax(0, 1fr); }
|
|
292
|
-
.tree-badges, .package-summary { justify-content: flex-start; }
|
|
293
|
-
}
|
|
294
|
-
`;
|
|
295
|
-
export function renderHtmlReport(document) {
|
|
296
|
-
const rawJson = JSON.stringify(document.report, undefined, jsonIndentSpaces);
|
|
297
|
-
let issueItems = '';
|
|
298
|
-
for (const issue of document.issues) {
|
|
299
|
-
issueItems += `<li>${escapeHtml(issue)}</li>`;
|
|
300
|
-
}
|
|
301
|
-
const issueSection = document.issues.length === 0 ? '' : renderIssues(issueItems);
|
|
302
|
-
let packageSections = '';
|
|
303
|
-
for (const pkg of document.packages) {
|
|
304
|
-
packageSections += renderPackage(pkg);
|
|
305
|
-
}
|
|
306
|
-
return `<!doctype html>
|
|
307
|
-
<html lang="en">
|
|
308
|
-
<head>
|
|
309
|
-
<meta charset="utf-8">
|
|
310
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
311
|
-
<title>Packtory build report</title>
|
|
312
|
-
<style>${styles}</style>
|
|
313
|
-
</head>
|
|
314
|
-
<body>
|
|
315
|
-
<main>
|
|
316
|
-
<section class="header">
|
|
317
|
-
<div class="mode-label">${escapeHtml(document.modeLabel)}</div>
|
|
318
|
-
<h1>${escapeHtml(document.title)}</h1>
|
|
319
|
-
<p class="meta">Schema version: ${escapeHtml(String(document.report.schemaVersion))} · Generated at: ${escapeHtml(document.report.generatedAt)}</p>
|
|
320
|
-
</section>
|
|
321
|
-
<section class="summary">
|
|
322
|
-
${renderSummaryCard('Packages', document.summary.totalPackages)}
|
|
323
|
-
${renderSummaryCard('Changed', document.summary.changedPackages)}
|
|
324
|
-
${renderSummaryCard('Unchanged', document.summary.unchangedPackages)}
|
|
325
|
-
${renderSummaryCard('Failed', document.summary.failedPackages)}
|
|
326
|
-
${renderSummaryCard('Artifacts', document.summary.emittedArtifacts)}
|
|
327
|
-
${renderSummaryCard('Changed files', document.summary.changedArtifacts)}
|
|
328
|
-
${renderSummaryCard('Eliminated', document.summary.eliminatedSourceFiles)}
|
|
329
|
-
</section>
|
|
330
|
-
${issueSection}
|
|
331
|
-
<section class="packages">${packageSections}</section>
|
|
332
|
-
<script type="application/json" id="packtory-report-data">${escapeHtml(rawJson)}</script>
|
|
333
|
-
</main>
|
|
334
|
-
</body>
|
|
335
|
-
</html>`;
|
|
336
|
-
}
|
|
337
|
-
//# sourceMappingURL=html-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-renderer.js","sourceRoot":"","sources":["../../../../source/report/html-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { isCodeFile } from "packtory/common/code-files.js";
|
|
2
|
-
export function isDiffableArtifact(entry) {
|
|
3
|
-
return (entry.sourcePath !== undefined &&
|
|
4
|
-
entry.status === 'changed' &&
|
|
5
|
-
entry.kind === 'source' &&
|
|
6
|
-
isCodeFile(entry.path));
|
|
7
|
-
}
|
|
8
|
-
export function toDiffLineType(line) {
|
|
9
|
-
if (line.startsWith('+')) {
|
|
10
|
-
return 'add';
|
|
11
|
-
}
|
|
12
|
-
if (line.startsWith('-')) {
|
|
13
|
-
return 'remove';
|
|
14
|
-
}
|
|
15
|
-
return 'context';
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=preview-document-diff.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview-document-diff.js","sourceRoot":"","sources":["../../../../source/report/preview-document-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKrD,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACnD,OAAO,CACH,KAAK,CAAC,UAAU,KAAK,SAAS;QAC9B,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,KAAK,CAAC,IAAI,KAAK,QAAQ;QACvB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CACzB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACvC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { createStructuredPatch } from "../common/typed-diff.js";
|
|
3
|
-
import { isDiffableArtifact, toDiffLineType } from "./preview-document-diff.js";
|
|
4
|
-
import { compareTreeNodes, treeNodeSortKey } from "./preview-document-tree.js";
|
|
5
|
-
const diffContextLines = 3;
|
|
6
|
-
const diffHunkLimit = 2;
|
|
7
|
-
export function isPreviewableResult(result) {
|
|
8
|
-
return result.isOk || (result.error.type === 'partial' && result.error.succeeded.length > 0);
|
|
9
|
-
}
|
|
10
|
-
export function getSucceededResults(result) {
|
|
11
|
-
if (result.isOk) {
|
|
12
|
-
return result.value;
|
|
13
|
-
}
|
|
14
|
-
if (result.error.type === 'partial') {
|
|
15
|
-
return result.error.succeeded;
|
|
16
|
-
}
|
|
17
|
-
return [];
|
|
18
|
-
}
|
|
19
|
-
export function getIssues(result) {
|
|
20
|
-
if (result.isOk) {
|
|
21
|
-
return [];
|
|
22
|
-
}
|
|
23
|
-
if (result.error.type === 'partial') {
|
|
24
|
-
return result.error.failures.map((failure) => {
|
|
25
|
-
return failure.message;
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
return result.error.issues;
|
|
29
|
-
}
|
|
30
|
-
export function getResultType(result) {
|
|
31
|
-
if (result.isOk) {
|
|
32
|
-
return 'success';
|
|
33
|
-
}
|
|
34
|
-
return result.error.type;
|
|
35
|
-
}
|
|
36
|
-
export function buildBundleArtifactIndex(results) {
|
|
37
|
-
return new Map(results.map((result) => {
|
|
38
|
-
const entries = new Map([
|
|
39
|
-
['package.json', { content: result.bundle.manifestFile.content }]
|
|
40
|
-
]);
|
|
41
|
-
for (const entry of result.bundle.contents) {
|
|
42
|
-
entries.set(entry.fileDescription.targetFilePath, {
|
|
43
|
-
content: entry.fileDescription.content,
|
|
44
|
-
sourcePath: entry.fileDescription.sourceFilePath
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
return [result.bundle.name, entries];
|
|
48
|
-
}));
|
|
49
|
-
}
|
|
50
|
-
// eslint-disable-next-line max-statements -- diff construction intentionally validates, loads, and shapes hunks in one place
|
|
51
|
-
export async function buildDiffForArtifact(packageName, artifact, bundleArtifactIndex, readWorkspaceFile) {
|
|
52
|
-
if (!isDiffableArtifact(artifact)) {
|
|
53
|
-
return undefined;
|
|
54
|
-
}
|
|
55
|
-
const packageArtifacts = bundleArtifactIndex.get(packageName);
|
|
56
|
-
const finalArtifact = packageArtifacts?.get(artifact.path);
|
|
57
|
-
if (finalArtifact?.sourcePath !== artifact.sourcePath) {
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
const originalContent = await readWorkspaceFile(artifact.sourcePath);
|
|
61
|
-
if (originalContent === finalArtifact.content) {
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
const patchFile = createStructuredPatch(artifact.path, artifact.path, originalContent, finalArtifact.content, undefined, undefined, {
|
|
65
|
-
context: diffContextLines
|
|
66
|
-
});
|
|
67
|
-
return patchFile.hunks.slice(0, diffHunkLimit).map((hunk) => {
|
|
68
|
-
return {
|
|
69
|
-
header: `@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`,
|
|
70
|
-
lines: hunk.lines
|
|
71
|
-
.filter((line) => {
|
|
72
|
-
return !line.startsWith('\\');
|
|
73
|
-
})
|
|
74
|
-
.map((line) => {
|
|
75
|
-
return {
|
|
76
|
-
type: toDiffLineType(line),
|
|
77
|
-
text: line
|
|
78
|
-
};
|
|
79
|
-
})
|
|
80
|
-
};
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
function createDirectory(pathname, name, depth) {
|
|
84
|
-
return {
|
|
85
|
-
name,
|
|
86
|
-
path: pathname,
|
|
87
|
-
depth,
|
|
88
|
-
directories: new Map(),
|
|
89
|
-
files: []
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
function insertArtifact(root, artifact) {
|
|
93
|
-
const parts = artifact.path.split('/');
|
|
94
|
-
let current = root;
|
|
95
|
-
for (const part of parts.slice(0, -1)) {
|
|
96
|
-
const nextPath = path.posix.join(current.path, part);
|
|
97
|
-
const next = current.directories.get(part) ?? createDirectory(nextPath, part, current.depth + 1);
|
|
98
|
-
current.directories.set(part, next);
|
|
99
|
-
current = next;
|
|
100
|
-
}
|
|
101
|
-
current.files.push(artifact);
|
|
102
|
-
}
|
|
103
|
-
function flattenTree(directory) {
|
|
104
|
-
const nodes = [];
|
|
105
|
-
const directoryEntries = Array.from(directory.directories.values());
|
|
106
|
-
const directoryChildren = directoryEntries.map((entry) => {
|
|
107
|
-
const node = {
|
|
108
|
-
path: entry.path,
|
|
109
|
-
name: entry.name,
|
|
110
|
-
depth: entry.depth,
|
|
111
|
-
type: 'directory'
|
|
112
|
-
};
|
|
113
|
-
return {
|
|
114
|
-
node,
|
|
115
|
-
directory: entry,
|
|
116
|
-
sortKey: treeNodeSortKey(node)
|
|
117
|
-
};
|
|
118
|
-
});
|
|
119
|
-
const fileChildren = directory.files.map((artifact) => {
|
|
120
|
-
const node = {
|
|
121
|
-
path: artifact.path,
|
|
122
|
-
name: path.posix.basename(artifact.path),
|
|
123
|
-
depth: directory.depth,
|
|
124
|
-
type: 'file',
|
|
125
|
-
artifact
|
|
126
|
-
};
|
|
127
|
-
return {
|
|
128
|
-
node,
|
|
129
|
-
sortKey: treeNodeSortKey(node)
|
|
130
|
-
};
|
|
131
|
-
});
|
|
132
|
-
const children = [...directoryChildren, ...fileChildren].toSorted((left, right) => {
|
|
133
|
-
return compareTreeNodes(left.node, right.node);
|
|
134
|
-
});
|
|
135
|
-
for (const child of children) {
|
|
136
|
-
nodes.push(child.node);
|
|
137
|
-
if (child.directory !== undefined) {
|
|
138
|
-
nodes.push(...flattenTree(child.directory));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return nodes;
|
|
142
|
-
}
|
|
143
|
-
export function buildArtifactTree(artifacts) {
|
|
144
|
-
const root = {
|
|
145
|
-
path: '',
|
|
146
|
-
depth: 0,
|
|
147
|
-
directories: new Map(),
|
|
148
|
-
files: []
|
|
149
|
-
};
|
|
150
|
-
for (const artifact of artifacts) {
|
|
151
|
-
insertArtifact(root, artifact);
|
|
152
|
-
}
|
|
153
|
-
return flattenTree(root);
|
|
154
|
-
}
|
|
155
|
-
export function buildVersionTransition(packageReport) {
|
|
156
|
-
const { version } = packageReport.decisions;
|
|
157
|
-
if (version === undefined) {
|
|
158
|
-
return undefined;
|
|
159
|
-
}
|
|
160
|
-
if (version.previousVersion === undefined) {
|
|
161
|
-
return version.chosenVersion;
|
|
162
|
-
}
|
|
163
|
-
return `${version.previousVersion} -> ${version.chosenVersion}`;
|
|
164
|
-
}
|
|
165
|
-
export function hasMeaningfulChanges(artifacts, eliminatedSourceFiles) {
|
|
166
|
-
if (eliminatedSourceFiles.length > 0) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
return artifacts.some((artifact) => {
|
|
170
|
-
return artifact.status === 'changed';
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=preview-document-helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview-document-helpers.js","sourceRoot":"","sources":["../../../../source/report/preview-document-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE/E,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,aAAa,GAAG,CAAC,CAAC;AA+DxB,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IACxD,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAwB;IACxD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAwB;IAC9C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAwB;IAClD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAyC;IAC9E,OAAO,IAAI,GAAG,CACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAA+B;YAClD,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SACpE,CAAC,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,EAAE;gBAC9C,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,OAAO;gBACtC,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,cAAc;aACnD,CAAC,CAAC;QACP,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC;IAClD,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED,6HAA6H;AAC7H,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,WAAmB,EACnB,QAAuB,EACvB,mBAAwC,EACxC,iBAAwD;IAExD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,aAAa,EAAE,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrE,IAAI,eAAe,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,SAAS,GAAG,qBAAqB,CACnC,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,IAAI,EACb,eAAe,EACf,aAAa,CAAC,OAAO,EACrB,SAAS,EACT,SAAS,EACT;QACI,OAAO,EAAE,gBAAgB;KAC5B,CACJ,CAAC;IACF,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxD,OAAO;YACH,MAAM,EAAE,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK;YACrF,KAAK,EAAE,IAAI,CAAC,KAAK;iBACZ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACV,OAAO;oBACH,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;oBAC1B,IAAI,EAAE,IAAI;iBACb,CAAC;YACN,CAAC,CAAC;SACT,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB,EAAE,IAAY,EAAE,KAAa;IAClE,OAAO;QACH,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,KAAK;QACL,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,KAAK,EAAE,EAAE;KACZ,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,IAAmB,EAAE,QAAyB;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,SAAwB;IACzC,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAyB,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG;YACT,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,WAAW;SACW,CAAC;QACjC,OAAO;YACH,IAAI;YACJ,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC;SACjC,CAAC;IACN,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAyB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACxE,MAAM,IAAI,GAAG;YACT,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,MAAM;YACZ,QAAQ;SACe,CAAC;QAC5B,OAAO;YACH,IAAI;YACJ,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC;SACjC,CAAC;IACN,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9E,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAqC;IACnE,MAAM,IAAI,GAAkB;QACxB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,KAAK,EAAE,EAAE;KACZ,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAA4B;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC;IAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,aAAa,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,eAAe,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAChC,SAAqC,EACrC,qBAAsD;IAEtD,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC/B,OAAO,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function treeNodeSortKey(node) {
|
|
2
|
-
if (node.type === 'file' && node.name === 'package.json') {
|
|
3
|
-
return `0:${node.name}`;
|
|
4
|
-
}
|
|
5
|
-
if (node.type === 'directory') {
|
|
6
|
-
return `1:${node.name}`;
|
|
7
|
-
}
|
|
8
|
-
return `2:${node.name}`;
|
|
9
|
-
}
|
|
10
|
-
export function compareTreeNodes(left, right) {
|
|
11
|
-
return treeNodeSortKey(left).localeCompare(treeNodeSortKey(right));
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=preview-document-tree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview-document-tree.js","sourceRoot":"","sources":["../../../../source/report/preview-document-tree.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,eAAe,CAAC,IAA6B;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACvD,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA6B,EAAE,KAA8B;IAC1F,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC"}
|