@mh-alikhani/bunready 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  Nothing yet.
11
11
 
12
+ ## [0.3.0] - 2026-09-18
13
+
14
+ ### Added
15
+
16
+ - A programmatic entry point (`src/index.ts`, wired to `main` and `exports`), so
17
+ the scanner can be driven from a script or a test instead of a child process -
18
+ and so npm can resolve the package instead of reporting that it cannot guess an
19
+ entry point.
20
+ - `docs/brand/logo-card.svg`: a lockup that carries its own surface, used as the
21
+ README fallback where `<picture>` is stripped (npm). An SVG loaded through
22
+ `<img>` resolves `prefers-color-scheme` against the reader's operating system
23
+ rather than against the page, so a transparent lockup can render
24
+ light-on-white.
25
+
26
+ ### Fixed
27
+
28
+ - The README logo is legible on npm in both colour schemes.
29
+ - `tests/args-flags.test.ts` compared an expression with itself, which CodeQL
30
+ reported as a redundant operation (`js/redundant-operation`).
31
+
32
+ ### Docs
33
+
34
+ - Changelog link references for 0.2.0 and 0.3.0 were missing.
35
+
12
36
  ## [0.2.0] - 2026-09-16
13
37
 
14
38
  ### Added
@@ -164,5 +188,7 @@ Nothing yet.
164
188
  and that claim needs a primary source. Until then the rule reports what the
165
189
  repository imports and cites the compatibility table.
166
190
 
167
- [Unreleased]: https://github.com/MHAlikhani/bunready/compare/v0.1.0...HEAD
191
+ [Unreleased]: https://github.com/MHAlikhani/bunready/compare/v0.3.0...HEAD
192
+ [0.3.0]: https://github.com/MHAlikhani/bunready/releases/tag/v0.3.0
193
+ [0.2.0]: https://github.com/MHAlikhani/bunready/releases/tag/v0.2.0
168
194
  [0.1.0]: https://github.com/MHAlikhani/bunready/releases/tag/v0.1.0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <picture>
4
4
  <source media="(prefers-color-scheme: dark)" srcset="docs/brand/logo-dark.svg">
5
5
  <source media="(prefers-color-scheme: light)" srcset="docs/brand/logo.svg">
6
- <img src="docs/brand/logo-auto.svg" alt="bunready" width="360">
6
+ <img src="docs/brand/logo-card.svg" alt="bunready" width="360">
7
7
  </picture>
8
8
 
9
9
  **One command that tells you what will break before you move a Node/TS repo to Bun — and gives you one clear verdict.**
@@ -0,0 +1,20 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 340 120" width="340" height="120" role="img" aria-label="bunready">
2
+ <title>bunready</title>
3
+ <!--
4
+ The lockup for hosts that give us no background guarantee.
5
+ npm renders a README without <picture>, and an SVG loaded through <img>
6
+ resolves prefers-color-scheme against the reader's operating system rather
7
+ than the page - so a transparent lockup can end up light-on-white. This one
8
+ carries its own surface, which is why it is the fallback rather than the
9
+ default.
10
+ -->
11
+ <rect x="0.5" y="0.5" width="339" height="119" rx="18" fill="#171a1f" stroke="#3a3f4a"/>
12
+ <g fill="none" stroke-linecap="round" stroke-linejoin="round">
13
+ <rect x="34" y="34" width="52" height="52" rx="15" stroke="#e0a268" stroke-width="3"/>
14
+ <path d="M53 49 L68 60 L53 71" stroke="#fbfaf7" stroke-width="4.5"/>
15
+ <path d="M54 77 H68" stroke="#fbfaf7" stroke-width="4.5"/>
16
+ </g>
17
+ <text x="108" y="76"
18
+ font-family="ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif"
19
+ font-size="42" font-weight="620" letter-spacing="-1" fill="#f2f1ec">bunready</text>
20
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mh-alikhani/bunready",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Bun-readiness scanner: one command that shows what will break before you move a Node/TS repo to Bun.",
5
5
  "keywords": [
6
6
  "bun",
@@ -27,6 +27,12 @@
27
27
  "author": "Mohammad Hosein Alikhani",
28
28
  "type": "module",
29
29
  "private": false,
30
+ "main": "./src/index.ts",
31
+ "types": "./src/index.ts",
32
+ "exports": {
33
+ ".": "./src/index.ts",
34
+ "./package.json": "./package.json"
35
+ },
30
36
  "bin": {
31
37
  "bunready": "./src/cli/index.ts"
32
38
  },
package/src/index.ts ADDED
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Programmatic entry point.
3
+ *
4
+ * bunready is a CLI first. This module exists so the same checks can be driven
5
+ * from a script or a test without shelling out to a process, and so the package
6
+ * has a real entry point instead of only a `bin` - npm cannot resolve a package
7
+ * that declares neither `main` nor `exports`.
8
+ *
9
+ * Nothing here is re-exported by accident; if a name is in this file, it is part
10
+ * of the package's public surface.
11
+ */
12
+
13
+ export { type CliOptions, parseArgs } from "./cli/args";
14
+ export { run } from "./cli/run";
15
+ export { createTheme, type Theme } from "./cli/theme";
16
+ export {
17
+ applyBaseline,
18
+ type Baseline,
19
+ type BaselineSummary,
20
+ fingerprint,
21
+ parseBaseline,
22
+ serializeBaseline,
23
+ } from "./config/baseline";
24
+ export {
25
+ type BunreadyConfig,
26
+ CONFIG_FILENAME,
27
+ DEFAULT_CONFIG,
28
+ parseConfig,
29
+ type RunConfig,
30
+ } from "./config/config";
31
+ export {
32
+ type BunreadyError,
33
+ defineError,
34
+ type ErrorCode,
35
+ err,
36
+ formatError,
37
+ isErr,
38
+ isOk,
39
+ ok,
40
+ type Result,
41
+ } from "./core/errors";
42
+ export { type DirectoryEntry, type FileSystem, nodeFileSystem, type ReadOutcome } from "./core/fs";
43
+ export { TOOL_NAME, TOOL_VERSION } from "./core/version";
44
+ export { renderHumanReport } from "./report/human";
45
+ export { renderJsonReport } from "./report/json";
46
+ export { renderSarifReport } from "./report/sarif";
47
+ export {
48
+ type Finding,
49
+ type RunSummary,
50
+ SCHEMA_VERSION,
51
+ type ScannedTarget,
52
+ type ScanReport,
53
+ type ScanStats,
54
+ sortFindings,
55
+ type Verdict,
56
+ verdictFor,
57
+ } from "./report/types";
58
+ export { installFindings } from "./rules/install";
59
+ export { runFindings } from "./rules/run";
60
+ export { runtimeFindings } from "./rules/runtime";
61
+ export {
62
+ type BuiltinUsage,
63
+ collectNodeBuiltins,
64
+ readRuntimeDataset,
65
+ } from "./rules/runtime/builtins";
66
+ export {
67
+ countBySeverity,
68
+ exitCodeForFindings,
69
+ exitCodeForSeverities,
70
+ SEVERITIES,
71
+ type Severity,
72
+ } from "./rules/severity";
73
+ export {
74
+ executeProject,
75
+ firstFailure,
76
+ type RunEnvironment,
77
+ type RunOptions,
78
+ type RunOutcome,
79
+ systemRunEnvironment,
80
+ } from "./scanner/execute";
81
+ export { buildGraph, type DependencyGraph, knownPackageNames } from "./scanner/graph";
82
+ export {
83
+ LOCKFILE_FILENAMES,
84
+ type LockedPackage,
85
+ type ParsedLockfile,
86
+ parseLockfile,
87
+ } from "./scanner/lockfile";
88
+ export { type Manifest, parseManifest } from "./scanner/manifest";
89
+ export { detectRuntime, type ScanOptions, scanTarget } from "./scanner/scan";
90
+ export { classifySpecifier, extractImports, type SourceScan, scanSources } from "./scanner/sources";
91
+ export {
92
+ findWorkspacePackages,
93
+ type WorkspacePackage,
94
+ workspacePatterns,
95
+ } from "./scanner/workspaces";