pnpmcheker 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyzer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface NodeLine {
2
+ major: number;
3
+ status: "current" | "active-lts" | "maintenance" | "eol";
4
+ eol: string;
5
+ }
6
+ export declare const NODE_RELEASE_LINES: NodeLine[];
7
+ export declare function findMinimumNodeMajor(range: string): number | undefined;
8
+ export declare function getNodeLine(major: number): NodeLine | undefined;
9
+ export declare function daysUntil(date: string, now: Date): number;
@@ -0,0 +1,28 @@
1
+ // Sourced from the Node.js Release Working Group schedule.
2
+ // Dates should be refreshed periodically because the upstream schedule may change.
3
+ export const NODE_RELEASE_LINES = [
4
+ { major: 18, status: "eol", eol: "2025-04-30" },
5
+ { major: 20, status: "eol", eol: "2026-04-30" },
6
+ { major: 22, status: "maintenance", eol: "2027-04-30" },
7
+ { major: 24, status: "active-lts", eol: "2028-04-30" },
8
+ { major: 25, status: "maintenance", eol: "2026-06-01" },
9
+ { major: 26, status: "current", eol: "2029-04-30" }
10
+ ];
11
+ export function findMinimumNodeMajor(range) {
12
+ const matches = [...range.matchAll(/(?:node\s*)?(?:>=|\^|~|=|>|v)?\s*(\d{1,2})(?:\.\d+)?/gi)]
13
+ .map((match) => Number(match[1]))
14
+ .filter((major) => Number.isInteger(major));
15
+ if (matches.length === 0) {
16
+ return undefined;
17
+ }
18
+ return Math.min(...matches);
19
+ }
20
+ export function getNodeLine(major) {
21
+ return NODE_RELEASE_LINES.find((line) => line.major === major);
22
+ }
23
+ export function daysUntil(date, now) {
24
+ const end = new Date(`${date}T00:00:00.000Z`).getTime();
25
+ const current = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
26
+ return Math.ceil((end - current) / 86_400_000);
27
+ }
28
+ //# sourceMappingURL=node-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-support.js","sourceRoot":"","sources":["../../src/analyzer/node-support.ts"],"names":[],"mappings":"AAMA,2DAA2D;AAC3D,mFAAmF;AACnF,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE;IAC/C,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE;IAC/C,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE;IACvD,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE;IACtD,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE;IACvD,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE;CACpD,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,wDAAwD,CAAC,CAAC;SAC1F,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAChC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAS;IAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { PackageMetadata } from "./types.js";
2
+ export declare function fetchPackageMetadata(name: string): Promise<PackageMetadata>;
@@ -0,0 +1,27 @@
1
+ export async function fetchPackageMetadata(name) {
2
+ const url = `https://registry.npmjs.org/${encodeURIComponent(name).replace("%40", "@")}`;
3
+ try {
4
+ const response = await fetch(url, {
5
+ headers: { accept: "application/json" }
6
+ });
7
+ if (!response.ok) {
8
+ return { name, error: `Registry returned ${response.status}` };
9
+ }
10
+ const document = (await response.json());
11
+ const latest = document["dist-tags"]?.latest;
12
+ const latestVersion = latest ? document.versions?.[latest] : undefined;
13
+ return {
14
+ name,
15
+ latest,
16
+ modified: document.time?.modified,
17
+ deprecated: latestVersion?.deprecated
18
+ };
19
+ }
20
+ catch (error) {
21
+ return {
22
+ name,
23
+ error: error instanceof Error ? error.message : "Registry lookup failed"
24
+ };
25
+ }
26
+ }
27
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/analyzer/registry.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,GAAG,GAAG,8BAA8B,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IAEzF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,qBAAqB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqB,CAAC;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,OAAO;YACL,IAAI;YACJ,MAAM;YACN,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ;YACjC,UAAU,EAAE,aAAa,EAAE,UAAU;SACtC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;SACzE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,46 @@
1
+ export type CheckStatus = "pass" | "warn" | "fail" | "info";
2
+ export type CheckCategory = "identity" | "lockfiles" | "runtime" | "security" | "quality" | "automation" | "maintenance";
3
+ export interface PracticeCheck {
4
+ id: string;
5
+ category: CheckCategory;
6
+ status: CheckStatus;
7
+ title: string;
8
+ summary: string;
9
+ recommendation?: string;
10
+ evidence?: string[];
11
+ }
12
+ export interface ToolSuggestion {
13
+ name: string;
14
+ purpose: string;
15
+ install?: string;
16
+ configHint?: string;
17
+ priority: "high" | "medium" | "low";
18
+ present: boolean;
19
+ }
20
+ export interface PackageMetadata {
21
+ name: string;
22
+ latest?: string;
23
+ modified?: string;
24
+ deprecated?: string;
25
+ error?: string;
26
+ }
27
+ export interface BestPracticeReport {
28
+ targetPath: string;
29
+ generatedAt: string;
30
+ packageName?: string;
31
+ packageManager?: string;
32
+ score: {
33
+ value: number;
34
+ pass: number;
35
+ warn: number;
36
+ fail: number;
37
+ info: number;
38
+ };
39
+ checks: PracticeCheck[];
40
+ tools: ToolSuggestion[];
41
+ packages: PackageMetadata[];
42
+ }
43
+ export interface AnalyzeOptions {
44
+ includeRegistryMetadata?: boolean;
45
+ now?: Date;
46
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analyzer/types.ts"],"names":[],"mappings":""}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ import { mkdir, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { Command, Option } from "commander";
5
+ import { analyzeProject } from "./analyzer/index.js";
6
+ const CLI_VERSION = "0.1.0";
7
+ const program = new Command();
8
+ program
9
+ .name("bestprac")
10
+ .version(CLI_VERSION)
11
+ .description("Check NPM-based projects for deterministic best-practice signals.")
12
+ .argument("[path]", "project path to analyze", process.cwd())
13
+ .option("--no-registry", "skip npm registry metadata checks")
14
+ .option("--json", "print the full report as JSON")
15
+ .option("-o, --output <file>", "write the report to a file")
16
+ .option("--quiet", "suppress normal stdout; errors still print to stderr")
17
+ .addOption(new Option("--fail-on <level>", "exit non-zero on fail, warn, or never")
18
+ .choices(["fail", "warn", "never"])
19
+ .default("fail"))
20
+ .action(async (projectPath, options) => {
21
+ const report = await analyzeProject(projectPath, {
22
+ includeRegistryMetadata: options.registry
23
+ });
24
+ const rendered = options.json ? `${JSON.stringify(report, null, 2)}\n` : renderTextReport(report);
25
+ if (options.output) {
26
+ const outputPath = path.resolve(options.output);
27
+ await mkdir(path.dirname(outputPath), { recursive: true });
28
+ await writeFile(outputPath, rendered, "utf8");
29
+ if (!options.quiet) {
30
+ console.log(`Wrote Bestprac report to ${outputPath}`);
31
+ }
32
+ }
33
+ else if (!options.quiet) {
34
+ process.stdout.write(rendered);
35
+ }
36
+ process.exitCode = getExitCode(report.score.fail, report.score.warn, options.failOn);
37
+ });
38
+ program.parseAsync().catch((error) => {
39
+ console.error(error instanceof Error ? error.message : error);
40
+ process.exit(2);
41
+ });
42
+ function renderTextReport(report) {
43
+ const lines = [];
44
+ const label = `${report.packageName ?? "unnamed package"} (${report.targetPath})`;
45
+ lines.push(`Bestprac report for ${label}`);
46
+ lines.push(`Score: ${report.score.value}/100 | pass ${report.score.pass}, warn ${report.score.warn}, fail ${report.score.fail}, info ${report.score.info}`);
47
+ lines.push("");
48
+ for (const check of report.checks) {
49
+ const icon = check.status.toUpperCase().padEnd(4);
50
+ lines.push(`${icon} ${check.title}`);
51
+ lines.push(` ${check.summary}`);
52
+ if (check.recommendation) {
53
+ lines.push(` Fix: ${check.recommendation}`);
54
+ }
55
+ }
56
+ lines.push("");
57
+ return lines.join("\n");
58
+ }
59
+ function getExitCode(failures, warnings, failOn) {
60
+ if (failOn === "never") {
61
+ return 0;
62
+ }
63
+ if (failOn === "warn") {
64
+ return failures > 0 || warnings > 0 ? 1 : 0;
65
+ }
66
+ return failures > 0 ? 1 : 0;
67
+ }
68
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=document.querySelector(`#scan-form`),t=document.querySelector(`#project-path`),n=document.querySelector(`#registry-toggle`),r=document.querySelector(`#checks`),i=document.querySelector(`#tools`),a=document.querySelector(`#category-filter`),o=document.querySelector(`#score`),s={pass:document.querySelector(`#pass-count`),warn:document.querySelector(`#warn-count`),fail:document.querySelector(`#fail-count`),info:document.querySelector(`#info-count`)},c=null;e.addEventListener(`submit`,async e=>{e.preventDefault(),await l()}),a.addEventListener(`change`,()=>f());async function l(){m(!0);try{let e=await fetch(`/api/analyze`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({path:t.value,includeRegistryMetadata:n.checked})}),r=await e.json();if(!e.ok)throw Error(r.error??`Analysis failed.`);c=r,u()}catch(e){r.innerHTML=`<div class="empty-state">${g(e.message)}</div>`}finally{m(!1)}}function u(){o.textContent=`${c.score.value}`,s.pass.textContent=c.score.pass,s.warn.textContent=c.score.warn,s.fail.textContent=c.score.fail,s.info.textContent=c.score.info,d(),f(),p()}function d(){let e=[...new Set(c.checks.map(e=>e.category))].sort(),t=a.value;a.innerHTML=`<option value="all">All categories</option>${e.map(e=>`<option value="${e}">${h(e)}</option>`).join(``)}`,a.value=e.includes(t)?t:`all`}function f(){if(!c)return;let e=a.value;r.innerHTML=(e===`all`?c.checks:c.checks.filter(t=>t.category===e)).map(e=>`
2
+ <article class="check-item ${e.status}">
3
+ <div class="check-status">${e.status}</div>
4
+ <div>
5
+ <div class="check-title-row">
6
+ <h3>${g(e.title)}</h3>
7
+ <span>${h(e.category)}</span>
8
+ </div>
9
+ <p>${g(e.summary)}</p>
10
+ ${e.recommendation?`<p class="recommendation">${g(e.recommendation)}</p>`:``}
11
+ ${e.evidence?.length?`<ul>${e.evidence.map(e=>`<li>${g(e)}</li>`).join(``)}</ul>`:``}
12
+ </div>
13
+ </article>
14
+ `).join(``)}function p(){i.innerHTML=c.tools.map(e=>`
15
+ <article class="tool-item ${e.present?`present`:`missing`}">
16
+ <div>
17
+ <h3>${g(e.name)}</h3>
18
+ <p>${g(e.purpose)}</p>
19
+ </div>
20
+ <span>${e.present?`present`:e.priority}</span>
21
+ </article>
22
+ `).join(``)}function m(t){e.querySelector(`button`).disabled=t,e.querySelector(`button`).textContent=t?`Analyzing`:`Analyze`}function h(e){return e.replace(/-/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function g(e){return String(e).replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`).replaceAll(`'`,`&#039;`)}l();
@@ -0,0 +1 @@
1
+ :root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#17202a;background:#f4f6f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}.app-shell{width:min(1180px,100vw - 32px);margin:0 auto;padding:28px 0 40px}.topbar{justify-content:space-between;align-items:end;gap:24px;padding:18px 0 22px;display:flex}h1,h2,h3,p{margin:0}h1{letter-spacing:0;font-size:clamp(2rem,5vw,4.25rem);line-height:.95}h2{font-size:1.1rem}.topbar p{color:#516070;max-width:720px;margin-top:12px;line-height:1.5}.score-panel{background:#fff;border:1px solid #ccd6df;border-radius:8px;place-items:center;width:116px;height:116px;display:grid}.score-label{color:#5f6f7e;text-transform:uppercase;font-size:.8rem}.score-panel strong{font-size:2.4rem}.scan-panel{border-top:1px solid #d8e0e7;border-bottom:1px solid #d8e0e7;padding:18px 0}label{color:#344456;margin-bottom:8px;font-weight:700;display:block}.scan-row{grid-template-columns:minmax(0,1fr) 140px;gap:10px;display:grid}input[type=text],select{color:#17202a;background:#fff;border:1px solid #b8c5d0;border-radius:6px;width:100%;height:44px;padding:0 12px}button{color:#fff;cursor:pointer;background:#176b87;border:0;border-radius:6px;height:44px;font-weight:800}button:disabled{cursor:wait;opacity:.7}.toggle{align-items:center;gap:8px;margin-top:12px;font-weight:600;display:inline-flex}.toggle input{width:18px;height:18px}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0;display:grid}.metric{background:#fff;border-left:5px solid #9aa7b3;min-height:86px;padding:16px}.metric span{color:#637282;text-transform:uppercase;font-size:.85rem;font-weight:800;display:block}.metric strong{margin-top:6px;font-size:2rem;display:block}.metric.pass{border-color:#24845b}.metric.warn{border-color:#b7791f}.metric.fail{border-color:#c2413f}.metric.info{border-color:#4176a3}.content-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:22px;display:grid}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.section-heading select{max-width:220px}.check-list,.tool-list{gap:10px;display:grid}.check-item,.tool-item,.empty-state{background:#fff;border:1px solid #d8e0e7;border-radius:8px;padding:14px}.check-item{grid-template-columns:78px minmax(0,1fr);gap:14px;display:grid}.check-item.pass{border-left:5px solid #24845b}.check-item.warn{border-left:5px solid #b7791f}.check-item.fail{border-left:5px solid #c2413f}.check-item.info{border-left:5px solid #4176a3}.check-status{text-align:center;text-transform:uppercase;background:#eef3f6;border-radius:999px;align-self:start;padding:5px 8px;font-size:.75rem;font-weight:900}.check-title-row,.tool-item{justify-content:space-between;align-items:start;gap:12px;display:flex}.check-title-row span,.tool-item span{white-space:nowrap;color:#405266;text-transform:uppercase;background:#edf2f5;border-radius:999px;padding:4px 8px;font-size:.75rem;font-weight:800}.check-item p,.tool-item p{color:#4b5d6f;margin-top:7px;line-height:1.45}.recommendation{color:#26384b;font-weight:700}ul{color:#516070;margin:10px 0 0;padding-left:18px}.tools-column h2{margin-bottom:12px}@media (width<=860px){.topbar,.content-grid{grid-template-columns:1fr;display:grid}.score-panel{width:100%;height:auto;min-height:84px}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.app-shell{width:min(100vw - 20px,1180px);padding-top:14px}.scan-row,.summary-grid,.check-item{grid-template-columns:1fr}.section-heading{flex-direction:column;align-items:stretch}.section-heading select{max-width:none}}
@@ -0,0 +1,68 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Bestprac</title>
7
+ <script type="module" crossorigin src="/assets/index-DPxJsM8b.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-DfTqf-d1.css">
9
+ </head>
10
+ <body>
11
+ <main class="app-shell">
12
+ <section class="topbar">
13
+ <div>
14
+ <h1>Bestprac</h1>
15
+ <p>NPM project practice checks for lockfiles, runtime support, maintenance, and developer tooling.</p>
16
+ </div>
17
+ <div class="score-panel" aria-live="polite">
18
+ <span class="score-label">Score</span>
19
+ <strong id="score">--</strong>
20
+ </div>
21
+ </section>
22
+
23
+ <section class="scan-panel" aria-label="Project scan">
24
+ <form id="scan-form">
25
+ <label for="project-path">Project path</label>
26
+ <div class="scan-row">
27
+ <input
28
+ id="project-path"
29
+ name="path"
30
+ type="text"
31
+ value="/Users/omardelrio/Documents/bestprac"
32
+ autocomplete="off"
33
+ />
34
+ <button type="submit">Analyze</button>
35
+ </div>
36
+ <label class="toggle">
37
+ <input id="registry-toggle" type="checkbox" checked />
38
+ <span>Check npm registry metadata</span>
39
+ </label>
40
+ </form>
41
+ </section>
42
+
43
+ <section class="summary-grid" aria-label="Summary">
44
+ <div class="metric pass"><span>Pass</span><strong id="pass-count">0</strong></div>
45
+ <div class="metric warn"><span>Warn</span><strong id="warn-count">0</strong></div>
46
+ <div class="metric fail"><span>Fail</span><strong id="fail-count">0</strong></div>
47
+ <div class="metric info"><span>Info</span><strong id="info-count">0</strong></div>
48
+ </section>
49
+
50
+ <section class="content-grid">
51
+ <div class="results-column">
52
+ <div class="section-heading">
53
+ <h2>Checks</h2>
54
+ <select id="category-filter" aria-label="Filter checks by category">
55
+ <option value="all">All categories</option>
56
+ </select>
57
+ </div>
58
+ <div id="checks" class="check-list"></div>
59
+ </div>
60
+
61
+ <aside class="tools-column">
62
+ <h2>Tooling</h2>
63
+ <div id="tools" class="tool-list"></div>
64
+ </aside>
65
+ </section>
66
+ </main>
67
+ </body>
68
+ </html>
@@ -0,0 +1 @@
1
+ export {};
package/dist/server.js ADDED
@@ -0,0 +1,42 @@
1
+ import express from "express";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { analyzeProject, isDirectory } from "./analyzer/index.js";
5
+ const app = express();
6
+ const port = Number(process.env.PORT ?? 4174);
7
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
+ const publicDir = path.resolve(__dirname, "public");
9
+ app.use(express.json({ limit: "1mb" }));
10
+ app.get("/api/health", (_request, response) => {
11
+ response.json({ ok: true });
12
+ });
13
+ app.post("/api/analyze", async (request, response) => {
14
+ const targetPath = typeof request.body?.path === "string" ? request.body.path : "";
15
+ const includeRegistryMetadata = request.body?.includeRegistryMetadata !== false;
16
+ if (!targetPath.trim()) {
17
+ response.status(400).json({ error: "Path is required." });
18
+ return;
19
+ }
20
+ const resolvedPath = path.resolve(targetPath);
21
+ if (!(await isDirectory(resolvedPath))) {
22
+ response.status(400).json({ error: "Path must point to an existing directory." });
23
+ return;
24
+ }
25
+ try {
26
+ const report = await analyzeProject(resolvedPath, { includeRegistryMetadata });
27
+ response.json(report);
28
+ }
29
+ catch (error) {
30
+ response.status(500).json({
31
+ error: error instanceof Error ? error.message : "Analysis failed."
32
+ });
33
+ }
34
+ });
35
+ app.use(express.static(publicDir));
36
+ app.use((_request, response) => {
37
+ response.sendFile(path.join(publicDir, "index.html"));
38
+ });
39
+ app.listen(port, () => {
40
+ console.log(`Bestprac running at http://localhost:${port}`);
41
+ });
42
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEpD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAExC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IACnD,MAAM,UAAU,GAAG,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,MAAM,uBAAuB,GAAG,OAAO,CAAC,IAAI,EAAE,uBAAuB,KAAK,KAAK,CAAC;IAEhF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACvC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACxB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB;SACnE,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAC7B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "pnpmcheker",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "Deterministic best-practice checker for NPM-based projects.",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/omardelrio/npmrepocheck"
9
+ },
10
+ "license": "MIT",
11
+ "type": "module",
12
+ "packageManager": "pnpm@11.1.3+sha512.c85357fe17ca12dd23dd7071822666dfd7e3cb76fe214e3370b5ea2fb34f2a231185509b63e717f3cd0acb38dd3f8d82bcd5e8172400ae678b70ea4fbed0896d",
13
+ "engines": {
14
+ "node": ">=22 <27"
15
+ },
16
+ "bin": {
17
+ "bestprac": "./dist/cli.js"
18
+ },
19
+ "files": [
20
+ "dist/analyzer/**",
21
+ "dist/public/**",
22
+ "dist/cli.d.ts",
23
+ "dist/cli.js",
24
+ "dist/cli.js.map",
25
+ "dist/server.d.ts",
26
+ "dist/server.js",
27
+ "dist/server.js.map",
28
+ "!dist/**/*.test.*",
29
+ "README.md"
30
+ ],
31
+ "publishConfig": {
32
+ "access": "public",
33
+ "registry": "https://registry.npmjs.org/"
34
+ },
35
+ "scripts": {
36
+ "dev": "tsx watch src/server.ts",
37
+ "build": "tsc && vite build",
38
+ "build:cli": "esbuild src/cli.ts --bundle --platform=node --target=node22 --format=cjs --banner:js='#!/usr/bin/env node' --outfile=dist/cli/bestprac.cjs",
39
+ "build:exe": "node scripts/build-executable.mjs",
40
+ "start": "node dist/server.js",
41
+ "cli": "tsx src/cli.ts",
42
+ "format": "prettier --write .",
43
+ "format:check": "prettier --check .",
44
+ "lint": "eslint .",
45
+ "lockfile:lint": "node scripts/lint-pnpm-lockfile.mjs",
46
+ "pack:dry-run": "npm pack --dry-run",
47
+ "prepare": "husky",
48
+ "test": "vitest run --config vitest.config.ts",
49
+ "typecheck": "tsc --noEmit"
50
+ },
51
+ "lint-staged": {
52
+ "*.{js,mjs,ts,json,md,yaml,yml,css,html}": [
53
+ "prettier --write"
54
+ ],
55
+ "*.{js,mjs,ts}": [
56
+ "eslint --fix"
57
+ ]
58
+ },
59
+ "dependencies": {
60
+ "@vitejs/plugin-react": "latest",
61
+ "commander": "latest",
62
+ "express": "latest",
63
+ "yaml": "latest"
64
+ },
65
+ "devDependencies": {
66
+ "@eslint/js": "^10.0.1",
67
+ "@types/express": "latest",
68
+ "@types/node": "latest",
69
+ "esbuild": "^0.28.0",
70
+ "eslint": "^10.4.0",
71
+ "husky": "^9.1.7",
72
+ "lint-staged": "^17.0.5",
73
+ "lockfile-lint": "^5.0.0",
74
+ "prettier": "^3.8.3",
75
+ "tsx": "latest",
76
+ "typescript": "latest",
77
+ "typescript-eslint": "^8.59.4",
78
+ "vite": "latest",
79
+ "vitest": "latest"
80
+ }
81
+ }