@packtory/cli 0.0.8 → 0.0.10

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.
Files changed (51) hide show
  1. package/command-line-interface/config-loader.js +7 -5
  2. package/command-line-interface/config-loader.js.map +1 -1
  3. package/command-line-interface/one-time-password-prompt.js +29 -0
  4. package/command-line-interface/one-time-password-prompt.js.map +1 -0
  5. package/command-line-interface/preview-io-shared.js +75 -0
  6. package/command-line-interface/preview-io-shared.js.map +1 -0
  7. package/command-line-interface/preview-io.js +15 -0
  8. package/command-line-interface/preview-io.js.map +1 -0
  9. package/command-line-interface/runner.js +211 -76
  10. package/command-line-interface/runner.js.map +1 -1
  11. package/command-line-interface/spinner-boot.js +9 -0
  12. package/command-line-interface/spinner-boot.js.map +1 -0
  13. package/command-line-interface/spinner-shared-state.js +167 -0
  14. package/command-line-interface/spinner-shared-state.js.map +1 -0
  15. package/command-line-interface/spinner-worker-backend.js +62 -0
  16. package/command-line-interface/spinner-worker-backend.js.map +1 -0
  17. package/command-line-interface/spinner-worker-loop.js +94 -0
  18. package/command-line-interface/spinner-worker-loop.js.map +1 -0
  19. package/command-line-interface/terminal-spinner-renderer.js +21 -15
  20. package/command-line-interface/terminal-spinner-renderer.js.map +1 -1
  21. package/common/typed-diff.js +5 -0
  22. package/common/typed-diff.js.map +1 -0
  23. package/package.json +14 -9
  24. package/packages/command-line-interface/command-line-interface.entry-point.d.ts +1 -1
  25. package/packages/command-line-interface/command-line-interface.entry-point.d.ts.map +1 -1
  26. package/packages/command-line-interface/command-line-interface.entry-point.js +61 -7
  27. package/packages/command-line-interface/command-line-interface.entry-point.js.map +1 -1
  28. package/packages/command-line-interface/spinner-boot.entry-point.js +25 -0
  29. package/packages/command-line-interface/spinner-boot.entry-point.js.map +1 -0
  30. package/packages/command-line-interface/spinner-worker.entry-point.js +16 -0
  31. package/packages/command-line-interface/spinner-worker.entry-point.js.map +1 -0
  32. package/readme.md +33 -1
  33. package/report/changed-artifacts.js +10 -0
  34. package/report/changed-artifacts.js.map +1 -0
  35. package/report/html-escaping.js +9 -0
  36. package/report/html-escaping.js.map +1 -0
  37. package/report/html-renderer.js +337 -0
  38. package/report/html-renderer.js.map +1 -0
  39. package/report/preview-document-diff.js +17 -0
  40. package/report/preview-document-diff.js.map +1 -0
  41. package/report/preview-document-helpers.js +173 -0
  42. package/report/preview-document-helpers.js.map +1 -0
  43. package/report/preview-document-tree.js +13 -0
  44. package/report/preview-document-tree.js.map +1 -0
  45. package/report/preview-document.js +97 -0
  46. package/report/preview-document.js.map +1 -0
  47. package/report/terminal-preview-renderer-shared.js +41 -0
  48. package/report/terminal-preview-renderer-shared.js.map +1 -0
  49. package/report/terminal-preview-renderer.js +94 -0
  50. package/report/terminal-preview-renderer.js.map +1 -0
  51. package/sbom.cdx.json +118 -0
@@ -0,0 +1,13 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,97 @@
1
+ /* eslint-disable max-statements, complexity -- preview document construction intentionally combines reporting, diffing, and tree shaping */
2
+ import { readFile } from 'node:fs/promises';
3
+ import { buildArtifactTree, buildBundleArtifactIndex, buildDiffForArtifact, buildVersionTransition, getIssues, getResultType, getSucceededResults, hasMeaningfulChanges, isPreviewableResult } from "./preview-document-helpers.js";
4
+ export async function buildPreviewDocument(params) {
5
+ const readWorkspaceFile = params.readWorkspaceFile ??
6
+ (async (filePath) => {
7
+ return readFile(filePath, 'utf8');
8
+ });
9
+ const bundleArtifactIndex = buildBundleArtifactIndex(getSucceededResults(params.result));
10
+ const packageEntries = Object.entries(params.report.packages);
11
+ const packages = [];
12
+ for (const [packageName, packageReport] of packageEntries) {
13
+ const emittedArtifacts = packageReport.outputs?.tarball.entries ?? [];
14
+ const artifacts = await Promise.all(emittedArtifacts.map(async (artifact) => {
15
+ const diff = await buildDiffForArtifact(packageName, artifact, bundleArtifactIndex, readWorkspaceFile);
16
+ return {
17
+ ...artifact,
18
+ ...(diff === undefined ? {} : { diff })
19
+ };
20
+ }));
21
+ const eliminatedSourceFiles = packageReport.eliminatedSourceFiles ?? [];
22
+ const hasChanges = hasMeaningfulChanges(artifacts, eliminatedSourceFiles);
23
+ packages.push({
24
+ name: packageName,
25
+ versionTransition: buildVersionTransition(packageReport),
26
+ hasChanges,
27
+ openByDefault: hasChanges || packageReport.failure !== undefined,
28
+ tree: buildArtifactTree(artifacts),
29
+ eliminatedSourceFiles,
30
+ failure: packageReport.failure,
31
+ diagnostics: packageReport
32
+ });
33
+ }
34
+ let totalPackages = 0;
35
+ let changedPackages = 0;
36
+ let unchangedPackages = 0;
37
+ let failedPackages = 0;
38
+ let emittedArtifacts = 0;
39
+ let changedArtifacts = 0;
40
+ let eliminatedSourceFiles = 0;
41
+ for (const pkg of packages) {
42
+ totalPackages += 1;
43
+ if (pkg.hasChanges) {
44
+ changedPackages += 1;
45
+ }
46
+ else if (pkg.failure === undefined) {
47
+ unchangedPackages += 1;
48
+ }
49
+ if (pkg.failure !== undefined) {
50
+ failedPackages += 1;
51
+ }
52
+ eliminatedSourceFiles += pkg.eliminatedSourceFiles.length;
53
+ for (const entry of pkg.tree) {
54
+ if (entry.type === 'file') {
55
+ emittedArtifacts += 1;
56
+ if (entry.artifact.status === 'changed') {
57
+ changedArtifacts += 1;
58
+ }
59
+ }
60
+ }
61
+ }
62
+ const summary = {
63
+ totalPackages,
64
+ changedPackages,
65
+ unchangedPackages,
66
+ failedPackages,
67
+ emittedArtifacts,
68
+ changedArtifacts,
69
+ eliminatedSourceFiles
70
+ };
71
+ return {
72
+ title: 'Packtory preview',
73
+ modeLabel: params.dryRun ? 'Dry run' : 'Publish',
74
+ previewable: isPreviewableResult(params.result),
75
+ resultType: getResultType(params.result),
76
+ summary,
77
+ packages,
78
+ issues: getIssues(params.result),
79
+ report: params.report
80
+ };
81
+ }
82
+ export function artifactStatusLabel(status) {
83
+ if (status === 'generated') {
84
+ return 'generated';
85
+ }
86
+ if (status === 'changed') {
87
+ return 'changed';
88
+ }
89
+ return 'unchanged';
90
+ }
91
+ export function artifactBadgeLabel(badge) {
92
+ if (badge === 'dead-code-elimination') {
93
+ return 'DCE';
94
+ }
95
+ return 'rewrite';
96
+ }
97
+ //# sourceMappingURL=preview-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-document.js","sourceRoot":"","sources":["../../../../source/report/preview-document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { bold, dim, green, red, yellow } from 'yoctocolors';
2
+ const ansi = {
3
+ bold: { open: 1, close: 22 },
4
+ dim: { open: 2, close: 22 },
5
+ green: { open: 32, close: 39 },
6
+ red: { open: 31, close: 39 },
7
+ yellow: { open: 33, close: 39 }
8
+ };
9
+ function identity(value) {
10
+ return value;
11
+ }
12
+ function withAnsi(openCode, closeCode) {
13
+ return (value) => {
14
+ return `\u001B[${openCode}m${value}\u001B[${closeCode}m`;
15
+ };
16
+ }
17
+ export function createColors(enabled) {
18
+ if (enabled === false) {
19
+ return { bold: identity, dim: identity, green: identity, red: identity, yellow: identity };
20
+ }
21
+ if (enabled === true) {
22
+ return {
23
+ bold: withAnsi(ansi.bold.open, ansi.bold.close),
24
+ dim: withAnsi(ansi.dim.open, ansi.dim.close),
25
+ green: withAnsi(ansi.green.open, ansi.green.close),
26
+ red: withAnsi(ansi.red.open, ansi.red.close),
27
+ yellow: withAnsi(ansi.yellow.open, ansi.yellow.close)
28
+ };
29
+ }
30
+ return { bold, dim, green, red, yellow };
31
+ }
32
+ export function renderDiffLine(line, colors) {
33
+ if (line.type === 'add') {
34
+ return colors.green(line.text);
35
+ }
36
+ if (line.type === 'remove') {
37
+ return colors.red(line.text);
38
+ }
39
+ return line.text;
40
+ }
41
+ //# sourceMappingURL=terminal-preview-renderer-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-preview-renderer-shared.js","sourceRoot":"","sources":["../../../../source/report/terminal-preview-renderer-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAW5D,MAAM,IAAI,GAAG;IACT,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC5B,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC9B,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CACzB,CAAC;AAEX,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAC,QAAgB,EAAE,SAAiB;IACjD,OAAO,CAAC,KAAK,EAAE,EAAE;QACb,OAAO,UAAU,QAAQ,IAAI,KAAK,UAAU,SAAS,GAAG,CAAC;IAC7D,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA4B;IACrD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO;YACH,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/C,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5C,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAClD,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SACxD,CAAC;IACN,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAqB,EAAE,MAAc;IAChE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,94 @@
1
+ /* eslint-disable max-statements, complexity, sonarjs/no-nested-template-literals, unicorn/prefer-single-call, functional/prefer-tacit, @stylistic/max-len, no-continue -- terminal rendering is intentionally linear and string-heavy */
2
+ import { artifactBadgeLabel, artifactStatusLabel } from "./preview-document.js";
3
+ import { collectChangedArtifacts } from "./changed-artifacts.js";
4
+ import { createColors, renderDiffLine } from "./terminal-preview-renderer-shared.js";
5
+ function formatBytes(bytes) {
6
+ return `${bytes} B`;
7
+ }
8
+ function renderArtifactNode(node, colors) {
9
+ const indent = ` ${' '.repeat(node.depth)}`;
10
+ if (node.type === 'directory') {
11
+ return `${indent}${colors.bold(`▸ ${node.name}/`)}`;
12
+ }
13
+ const { artifact } = node;
14
+ const badgeParts = [
15
+ artifactStatusLabel(artifact.status),
16
+ ...artifact.badges.map((badge) => {
17
+ return artifactBadgeLabel(badge);
18
+ })
19
+ ];
20
+ return `${indent}• ${artifact.path} ${colors.dim(`(${artifact.kind}, ${formatBytes(artifact.sizeBytes)})`)} ${colors.yellow(`[${badgeParts.join(', ')}]`)}`.trimEnd();
21
+ }
22
+ function renderPackage(pkg, colors) {
23
+ const lines = [
24
+ `${colors.bold(pkg.name)}${pkg.versionTransition === undefined ? '' : ` ${colors.dim(pkg.versionTransition)}`}`
25
+ ];
26
+ if (pkg.failure !== undefined) {
27
+ lines.push(`${colors.red(' failure')} ${pkg.failure.stage}: ${pkg.failure.message}`);
28
+ }
29
+ lines.push(...pkg.tree.map((node) => {
30
+ return renderArtifactNode(node, colors);
31
+ }));
32
+ if (pkg.eliminatedSourceFiles.length > 0) {
33
+ lines.push(` ${colors.bold('Eliminated source files')}`);
34
+ lines.push(...pkg.eliminatedSourceFiles.map((file) => {
35
+ return ` - ${file.path} ${colors.dim(`(${formatBytes(file.sourceBytes)})`)}`;
36
+ }));
37
+ }
38
+ const changedFiles = collectChangedArtifacts(pkg.tree);
39
+ if (changedFiles.length > 0) {
40
+ lines.push(` ${colors.bold('Diffs')}`);
41
+ for (const artifact of changedFiles) {
42
+ lines.push(` ${artifact.path}`);
43
+ for (const hunk of artifact.diff) {
44
+ lines.push(` ${colors.dim(hunk.header)}`);
45
+ lines.push(...hunk.lines.map((line) => {
46
+ return ` ${renderDiffLine(line, colors)}`;
47
+ }));
48
+ }
49
+ }
50
+ }
51
+ return lines.join('\n');
52
+ }
53
+ export function renderTerminalPreview(document, options = {}) {
54
+ const colors = createColors(options.color);
55
+ const summary = `${document.summary.totalPackages} package(s) · ${document.summary.changedPackages} changed · ${document.summary.failedPackages} failed`;
56
+ const sections = [
57
+ `${colors.bold(document.title)} ${colors.yellow(`[${document.modeLabel}]`)}`,
58
+ colors.dim(summary)
59
+ ];
60
+ if (document.issues.length > 0) {
61
+ sections.push(`${colors.red('Issues')}\n${document.issues
62
+ .map((issue) => {
63
+ return `- ${issue}`;
64
+ })
65
+ .join('\n')}`);
66
+ }
67
+ sections.push(...document.packages.map((pkg) => {
68
+ return renderPackage(pkg, colors);
69
+ }));
70
+ return `${sections.join('\n\n')}\n`;
71
+ }
72
+ export function renderFailureOnlyTerminalPreview(document, options = {}) {
73
+ const colors = createColors(options.color);
74
+ const lines = [`${colors.bold(document.title)} ${colors.yellow(`[${document.modeLabel}]`)}`];
75
+ const headings = {
76
+ config: 'Configuration issues',
77
+ checks: 'Check failures',
78
+ partial: 'Package failures'
79
+ };
80
+ if (document.resultType !== 'success') {
81
+ lines.push(colors.red(headings[document.resultType]));
82
+ }
83
+ lines.push(...document.issues.map((issue) => {
84
+ return `- ${issue}`;
85
+ }));
86
+ for (const pkg of document.packages) {
87
+ if (pkg.failure === undefined) {
88
+ continue;
89
+ }
90
+ lines.push(`${colors.bold(pkg.name)} ${pkg.failure.stage}: ${pkg.failure.message}`);
91
+ }
92
+ return `${lines.join('\n')}\n`;
93
+ }
94
+ //# sourceMappingURL=terminal-preview-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-preview-renderer.js","sourceRoot":"","sources":["../../../../source/report/terminal-preview-renderer.ts"],"names":[],"mappings":"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"}
package/sbom.cdx.json ADDED
@@ -0,0 +1,118 @@
1
+ {
2
+ "$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
3
+ "bomFormat": "CycloneDX",
4
+ "specVersion": "1.6",
5
+ "version": 1,
6
+ "metadata": {
7
+ "tools": {
8
+ "components": [
9
+ {
10
+ "type": "application",
11
+ "name": "packtory",
12
+ "version": "0.0.9"
13
+ }
14
+ ]
15
+ },
16
+ "component": {
17
+ "type": "library",
18
+ "name": "@packtory/cli",
19
+ "version": "0.0.10",
20
+ "bom-ref": "pkg:npm/@packtory/cli@0.0.10",
21
+ "purl": "pkg:npm/@packtory/cli@0.0.10"
22
+ }
23
+ },
24
+ "components": [
25
+ {
26
+ "type": "library",
27
+ "name": "cmd-ts",
28
+ "version": "0.15.0",
29
+ "bom-ref": "pkg:npm/cmd-ts@0.15.0",
30
+ "scope": "required",
31
+ "licenses": [
32
+ {
33
+ "expression": "MIT"
34
+ }
35
+ ],
36
+ "purl": "pkg:npm/cmd-ts@0.15.0"
37
+ },
38
+ {
39
+ "type": "library",
40
+ "name": "diff",
41
+ "version": "9.0.0",
42
+ "bom-ref": "pkg:npm/diff@9.0.0",
43
+ "scope": "required",
44
+ "licenses": [
45
+ {
46
+ "expression": "BSD-3-Clause"
47
+ }
48
+ ],
49
+ "purl": "pkg:npm/diff@9.0.0"
50
+ },
51
+ {
52
+ "type": "library",
53
+ "name": "packtory",
54
+ "version": "0.0.10",
55
+ "bom-ref": "pkg:npm/packtory@0.0.10",
56
+ "scope": "required",
57
+ "licenses": [
58
+ {
59
+ "expression": "MIT"
60
+ }
61
+ ],
62
+ "purl": "pkg:npm/packtory@0.0.10"
63
+ },
64
+ {
65
+ "type": "library",
66
+ "name": "remeda",
67
+ "version": "2.34.1",
68
+ "bom-ref": "pkg:npm/remeda@2.34.1",
69
+ "scope": "required",
70
+ "licenses": [
71
+ {
72
+ "expression": "MIT"
73
+ }
74
+ ],
75
+ "purl": "pkg:npm/remeda@2.34.1"
76
+ },
77
+ {
78
+ "type": "library",
79
+ "name": "yoctocolors",
80
+ "version": "2.1.2",
81
+ "bom-ref": "pkg:npm/yoctocolors@2.1.2",
82
+ "scope": "required",
83
+ "licenses": [
84
+ {
85
+ "expression": "MIT"
86
+ }
87
+ ],
88
+ "purl": "pkg:npm/yoctocolors@2.1.2"
89
+ }
90
+ ],
91
+ "dependencies": [
92
+ {
93
+ "ref": "pkg:npm/@packtory/cli@0.0.10",
94
+ "dependsOn": [
95
+ "pkg:npm/cmd-ts@0.15.0",
96
+ "pkg:npm/diff@9.0.0",
97
+ "pkg:npm/packtory@0.0.10",
98
+ "pkg:npm/remeda@2.34.1",
99
+ "pkg:npm/yoctocolors@2.1.2"
100
+ ]
101
+ },
102
+ {
103
+ "ref": "pkg:npm/cmd-ts@0.15.0"
104
+ },
105
+ {
106
+ "ref": "pkg:npm/diff@9.0.0"
107
+ },
108
+ {
109
+ "ref": "pkg:npm/packtory@0.0.10"
110
+ },
111
+ {
112
+ "ref": "pkg:npm/remeda@2.34.1"
113
+ },
114
+ {
115
+ "ref": "pkg:npm/yoctocolors@2.1.2"
116
+ }
117
+ ]
118
+ }