@npm-safe/core-dsh 1.0.5 → 1.0.6

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.
@@ -62,6 +62,8 @@ export interface ScanFinding {
62
62
  readonly codeSnippet?: string;
63
63
  /** Optional 1-based line number where the issue was detected. */
64
64
  readonly lineNumber?: number;
65
+ /** Optional archive-relative path of the file that triggered the finding. */
66
+ readonly filePath?: string;
65
67
  /** Optional remediation guidance. */
66
68
  readonly recommendation?: string;
67
69
  /** Category classifying the nature of this finding. */
@@ -92,6 +94,25 @@ export interface ScanRule {
92
94
  */
93
95
  match(readme: string, packageJson?: Record<string, unknown>): ScanFinding[];
94
96
  }
97
+ /** Summary of an opt-in deep scan over the published package tarball. */
98
+ export interface ContentScanSummary {
99
+ /** Whether the archive was fully inspected or only partially/unsuccessfully scanned. */
100
+ readonly status: 'complete' | 'partial' | 'failed';
101
+ /** Compressed tarball size in bytes, when a download completed. */
102
+ readonly archiveBytes: number;
103
+ /** Sum of declared regular-file sizes encountered in the archive. */
104
+ readonly unpackedBytes: number;
105
+ /** Number of regular files whose contents were examined. */
106
+ readonly filesScanned: number;
107
+ /** Number of files skipped due to type or configured byte limits. */
108
+ readonly filesSkipped: number;
109
+ /** Whether an npm integrity or shasum value was present and matched. */
110
+ readonly integrityVerified: boolean;
111
+ /** Whether configured safety limits prevented a complete scan. */
112
+ readonly truncated: boolean;
113
+ /** Human-readable reason for a partial or failed scan. */
114
+ readonly reason?: string;
115
+ }
95
116
  /**
96
117
  * Report produced by a static (non-LLM) scan of a package.
97
118
  */
@@ -106,6 +127,8 @@ export interface StaticScanReport {
106
127
  readonly score: number;
107
128
  /** Findings produced by the static scan. */
108
129
  readonly findings: readonly ScanFinding[];
130
+ /** Tarball content-scan details when deep scanning was requested. */
131
+ readonly contentScan?: ContentScanSummary;
109
132
  /** ISO 8601 timestamp of when the scan ran. */
110
133
  readonly scannedAt: string;
111
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scanner/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scanner/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/store/cache-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/store/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -120,15 +120,15 @@ export class CacheManager {
120
120
  // interpolating it into the SQL string is safe.
121
121
  const ttlSeconds = this.cacheTtlMs / 1000;
122
122
  this.db
123
- .prepare(`INSERT INTO packages (name, latest_version, description, homepage, repository, registry_data, cached_at, ttl_until)
124
- VALUES (?, ?, ?, ?, ?, ?, datetime('now'), strftime('%Y-%m-%d %H:%M:%f', 'now', '+${ttlSeconds} seconds'))
125
- ON CONFLICT(name) DO UPDATE SET
126
- latest_version = excluded.latest_version,
127
- description = excluded.description,
128
- homepage = excluded.homepage,
129
- repository = excluded.repository,
130
- registry_data = excluded.registry_data,
131
- cached_at = datetime('now'),
123
+ .prepare(`INSERT INTO packages (name, latest_version, description, homepage, repository, registry_data, cached_at, ttl_until)
124
+ VALUES (?, ?, ?, ?, ?, ?, datetime('now'), strftime('%Y-%m-%d %H:%M:%f', 'now', '+${ttlSeconds} seconds'))
125
+ ON CONFLICT(name) DO UPDATE SET
126
+ latest_version = excluded.latest_version,
127
+ description = excluded.description,
128
+ homepage = excluded.homepage,
129
+ repository = excluded.repository,
130
+ registry_data = excluded.registry_data,
131
+ cached_at = datetime('now'),
132
132
  ttl_until = strftime('%Y-%m-%d %H:%M:%f', 'now', '+${ttlSeconds} seconds')`)
133
133
  .run(meta.name, latest, description, homepage, repository, registryData);
134
134
  }
@@ -158,12 +158,32 @@ export class CacheManager {
158
158
  catch {
159
159
  findings = [];
160
160
  }
161
+ let contentScan;
162
+ if (row.summary) {
163
+ try {
164
+ const parsed = JSON.parse(row.summary);
165
+ if (parsed &&
166
+ (parsed.status === "complete" || parsed.status === "partial" || parsed.status === "failed") &&
167
+ typeof parsed.archiveBytes === "number" &&
168
+ typeof parsed.unpackedBytes === "number" &&
169
+ typeof parsed.filesScanned === "number" &&
170
+ typeof parsed.filesSkipped === "number" &&
171
+ typeof parsed.integrityVerified === "boolean" &&
172
+ typeof parsed.truncated === "boolean") {
173
+ contentScan = parsed;
174
+ }
175
+ }
176
+ catch {
177
+ contentScan = undefined;
178
+ }
179
+ }
161
180
  return {
162
181
  packageName: row.package_name,
163
182
  version: row.version,
164
183
  overallLevel: scoreToLevel(row.overall_score),
165
184
  score: row.overall_score,
166
185
  findings,
186
+ contentScan,
167
187
  scannedAt: row.scanned_at,
168
188
  };
169
189
  }
@@ -177,14 +197,16 @@ export class CacheManager {
177
197
  */
178
198
  async setSecurityReport(report) {
179
199
  const findingsJson = JSON.stringify(report.findings);
200
+ const summary = report.contentScan ? JSON.stringify(report.contentScan) : "";
180
201
  this.db
181
- .prepare(`INSERT INTO security_reports (package_name, version, scan_type, overall_score, findings_json, summary, scanned_at)
182
- VALUES (?, ?, 'static', ?, ?, '', ?)
183
- ON CONFLICT(package_name, version, scan_type) DO UPDATE SET
184
- overall_score = excluded.overall_score,
185
- findings_json = excluded.findings_json,
202
+ .prepare(`INSERT INTO security_reports (package_name, version, scan_type, overall_score, findings_json, summary, scanned_at)
203
+ VALUES (?, ?, 'static', ?, ?, ?, ?)
204
+ ON CONFLICT(package_name, version, scan_type) DO UPDATE SET
205
+ overall_score = excluded.overall_score,
206
+ findings_json = excluded.findings_json,
207
+ summary = excluded.summary,
186
208
  scanned_at = excluded.scanned_at`)
187
- .run(report.packageName, report.version, report.score, findingsJson, report.scannedAt);
209
+ .run(report.packageName, report.version, report.score, findingsJson, summary, report.scannedAt);
188
210
  }
189
211
  async getLlmScanReport(pkg, version) {
190
212
  const row = this.db
@@ -230,12 +252,12 @@ export class CacheManager {
230
252
  suspiciousScore: report.suspiciousScore,
231
253
  });
232
254
  this.db
233
- .prepare(`INSERT INTO security_reports (package_name, version, scan_type, overall_score, findings_json, summary, scanned_at)
234
- VALUES (?, ?, 'llm', ?, ?, ?, ?)
235
- ON CONFLICT(package_name, version, scan_type) DO UPDATE SET
236
- overall_score = excluded.overall_score,
237
- findings_json = excluded.findings_json,
238
- summary = excluded.summary,
255
+ .prepare(`INSERT INTO security_reports (package_name, version, scan_type, overall_score, findings_json, summary, scanned_at)
256
+ VALUES (?, ?, 'llm', ?, ?, ?, ?)
257
+ ON CONFLICT(package_name, version, scan_type) DO UPDATE SET
258
+ overall_score = excluded.overall_score,
259
+ findings_json = excluded.findings_json,
260
+ summary = excluded.summary,
239
261
  scanned_at = excluded.scanned_at`)
240
262
  .run(packageName, version, report.suspiciousScore ?? 0, JSON.stringify(report.findings ?? []), summary, report.scannedAt ?? new Date().toISOString());
241
263
  }
@@ -319,12 +341,12 @@ export class CacheManager {
319
341
  */
320
342
  async addHistoryEntry(entry) {
321
343
  this.db
322
- .prepare(`INSERT INTO check_history (package_name, level, score, timestamp)
344
+ .prepare(`INSERT INTO check_history (package_name, level, score, timestamp)
323
345
  VALUES (?, ?, ?, ?)`)
324
346
  .run(entry.packageName, entry.level, entry.score, entry.timestamp);
325
347
  this.db
326
- .prepare(`DELETE FROM check_history WHERE id NOT IN (
327
- SELECT id FROM check_history ORDER BY timestamp DESC, id DESC LIMIT ${MAX_CHECK_HISTORY}
348
+ .prepare(`DELETE FROM check_history WHERE id NOT IN (
349
+ SELECT id FROM check_history ORDER BY timestamp DESC, id DESC LIMIT ${MAX_CHECK_HISTORY}
328
350
  )`)
329
351
  .run();
330
352
  }
@@ -334,7 +356,7 @@ export class CacheManager {
334
356
  async getHistory(limit) {
335
357
  const capped = Math.max(1, Math.min(limit ?? MAX_CHECK_HISTORY, MAX_CHECK_HISTORY));
336
358
  const rows = this.db
337
- .prepare(`SELECT package_name, level, score, timestamp FROM check_history
359
+ .prepare(`SELECT package_name, level, score, timestamp FROM check_history
338
360
  ORDER BY timestamp DESC, id DESC LIMIT ${capped}`)
339
361
  .all();
340
362
  return rows.map((r) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/store/cache-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/store/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -106,12 +106,12 @@ export class DatabaseManager {
106
106
  runMigrations() {
107
107
  const db = this.db;
108
108
  try {
109
- db.exec(`
110
- CREATE TABLE IF NOT EXISTS _migrations (
111
- id INTEGER PRIMARY KEY AUTOINCREMENT,
112
- name TEXT NOT NULL UNIQUE,
113
- applied_at TEXT NOT NULL DEFAULT (datetime('now'))
114
- );
109
+ db.exec(`
110
+ CREATE TABLE IF NOT EXISTS _migrations (
111
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
112
+ name TEXT NOT NULL UNIQUE,
113
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
114
+ );
115
115
  `);
116
116
  }
117
117
  catch (err) {
@@ -18,71 +18,71 @@
18
18
  * 6. translations - cached translation results
19
19
  * 7. _migrations - migration tracking (internal)
20
20
  */
21
- export const SCHEMA_SQL = `
22
- -- 1. packages table - cached npm package metadata
23
- CREATE TABLE IF NOT EXISTS packages (
24
- name TEXT PRIMARY KEY,
25
- latest_version TEXT NOT NULL,
26
- description TEXT DEFAULT '',
27
- homepage TEXT DEFAULT '',
28
- repository TEXT DEFAULT '',
29
- registry_data TEXT DEFAULT '{}', -- JSON blob of raw registry response
30
- cached_at TEXT NOT NULL DEFAULT (datetime('now')),
31
- ttl_until TEXT NOT NULL -- cache expiry timestamp
32
- );
33
-
34
- -- 2. package_versions table - version info
35
- CREATE TABLE IF NOT EXISTS package_versions (
36
- package_name TEXT NOT NULL REFERENCES packages(name) ON DELETE CASCADE,
37
- version TEXT NOT NULL,
38
- publish_time TEXT,
39
- has_readme INTEGER NOT NULL DEFAULT 0,
40
- integrity TEXT,
41
- PRIMARY KEY (package_name, version)
42
- );
43
-
44
- -- 3. security_reports table - scan results
45
- CREATE TABLE IF NOT EXISTS security_reports (
46
- id INTEGER PRIMARY KEY AUTOINCREMENT,
47
- package_name TEXT NOT NULL REFERENCES packages(name) ON DELETE CASCADE,
48
- version TEXT NOT NULL,
49
- scan_type TEXT NOT NULL CHECK(scan_type IN ('static', 'llm')),
50
- overall_score INTEGER NOT NULL CHECK(overall_score >= 0 AND overall_score <= 100),
51
- findings_json TEXT DEFAULT '[]', -- JSON array of ScanFinding objects
52
- summary TEXT DEFAULT '',
53
- scanned_at TEXT NOT NULL DEFAULT (datetime('now')),
54
- UNIQUE(package_name, version, scan_type)
55
- );
56
-
57
- -- 4. watchlist table - user-tracked packages
58
- CREATE TABLE IF NOT EXISTS watchlist (
59
- package_name TEXT PRIMARY KEY REFERENCES packages(name) ON DELETE CASCADE,
60
- added_at TEXT NOT NULL DEFAULT (datetime('now'))
61
- );
62
-
63
- -- 5. settings table - key-value configuration
64
- CREATE TABLE IF NOT EXISTS settings (
65
- key TEXT PRIMARY KEY,
66
- value TEXT NOT NULL
67
- );
68
-
69
- -- 6. translations table - cached translations
70
- CREATE TABLE IF NOT EXISTS translations (
71
- source_hash TEXT PRIMARY KEY,
72
- source_text TEXT NOT NULL,
73
- target_lang TEXT NOT NULL,
74
- translated_text TEXT NOT NULL,
75
- provider TEXT NOT NULL,
76
- created_at TEXT NOT NULL DEFAULT (datetime('now'))
77
- );
78
- CREATE INDEX IF NOT EXISTS idx_translations_lang ON translations(target_lang);
79
-
80
- -- 7. _migrations table - migration tracking
81
- CREATE TABLE IF NOT EXISTS _migrations (
82
- id INTEGER PRIMARY KEY AUTOINCREMENT,
83
- name TEXT NOT NULL UNIQUE,
84
- applied_at TEXT NOT NULL DEFAULT (datetime('now'))
85
- );
21
+ export const SCHEMA_SQL = `
22
+ -- 1. packages table - cached npm package metadata
23
+ CREATE TABLE IF NOT EXISTS packages (
24
+ name TEXT PRIMARY KEY,
25
+ latest_version TEXT NOT NULL,
26
+ description TEXT DEFAULT '',
27
+ homepage TEXT DEFAULT '',
28
+ repository TEXT DEFAULT '',
29
+ registry_data TEXT DEFAULT '{}', -- JSON blob of raw registry response
30
+ cached_at TEXT NOT NULL DEFAULT (datetime('now')),
31
+ ttl_until TEXT NOT NULL -- cache expiry timestamp
32
+ );
33
+
34
+ -- 2. package_versions table - version info
35
+ CREATE TABLE IF NOT EXISTS package_versions (
36
+ package_name TEXT NOT NULL REFERENCES packages(name) ON DELETE CASCADE,
37
+ version TEXT NOT NULL,
38
+ publish_time TEXT,
39
+ has_readme INTEGER NOT NULL DEFAULT 0,
40
+ integrity TEXT,
41
+ PRIMARY KEY (package_name, version)
42
+ );
43
+
44
+ -- 3. security_reports table - scan results
45
+ CREATE TABLE IF NOT EXISTS security_reports (
46
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
47
+ package_name TEXT NOT NULL REFERENCES packages(name) ON DELETE CASCADE,
48
+ version TEXT NOT NULL,
49
+ scan_type TEXT NOT NULL CHECK(scan_type IN ('static', 'llm')),
50
+ overall_score INTEGER NOT NULL CHECK(overall_score >= 0 AND overall_score <= 100),
51
+ findings_json TEXT DEFAULT '[]', -- JSON array of ScanFinding objects
52
+ summary TEXT DEFAULT '',
53
+ scanned_at TEXT NOT NULL DEFAULT (datetime('now')),
54
+ UNIQUE(package_name, version, scan_type)
55
+ );
56
+
57
+ -- 4. watchlist table - user-tracked packages
58
+ CREATE TABLE IF NOT EXISTS watchlist (
59
+ package_name TEXT PRIMARY KEY REFERENCES packages(name) ON DELETE CASCADE,
60
+ added_at TEXT NOT NULL DEFAULT (datetime('now'))
61
+ );
62
+
63
+ -- 5. settings table - key-value configuration
64
+ CREATE TABLE IF NOT EXISTS settings (
65
+ key TEXT PRIMARY KEY,
66
+ value TEXT NOT NULL
67
+ );
68
+
69
+ -- 6. translations table - cached translations
70
+ CREATE TABLE IF NOT EXISTS translations (
71
+ source_hash TEXT PRIMARY KEY,
72
+ source_text TEXT NOT NULL,
73
+ target_lang TEXT NOT NULL,
74
+ translated_text TEXT NOT NULL,
75
+ provider TEXT NOT NULL,
76
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
77
+ );
78
+ CREATE INDEX IF NOT EXISTS idx_translations_lang ON translations(target_lang);
79
+
80
+ -- 7. _migrations table - migration tracking
81
+ CREATE TABLE IF NOT EXISTS _migrations (
82
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
83
+ name TEXT NOT NULL UNIQUE,
84
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
85
+ );
86
86
  `;
87
87
  /**
88
88
  * Returns ordered list of migration file names to apply.
@@ -103,16 +103,16 @@ export function getMigrationList() {
103
103
  * history straight from the shared database.
104
104
  */
105
105
  export function getCheckHistoryMigration() {
106
- return `
107
- -- 8. check_history table - persistent check history
108
- CREATE TABLE IF NOT EXISTS check_history (
109
- id INTEGER PRIMARY KEY AUTOINCREMENT,
110
- package_name TEXT NOT NULL,
111
- level TEXT NOT NULL,
112
- score INTEGER NOT NULL CHECK(score >= 0 AND score <= 100),
113
- timestamp TEXT NOT NULL
114
- );
115
- CREATE INDEX IF NOT EXISTS idx_check_history_timestamp ON check_history(timestamp DESC);
106
+ return `
107
+ -- 8. check_history table - persistent check history
108
+ CREATE TABLE IF NOT EXISTS check_history (
109
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
110
+ package_name TEXT NOT NULL,
111
+ level TEXT NOT NULL,
112
+ score INTEGER NOT NULL CHECK(score >= 0 AND score <= 100),
113
+ timestamp TEXT NOT NULL
114
+ );
115
+ CREATE INDEX IF NOT EXISTS idx_check_history_timestamp ON check_history(timestamp DESC);
116
116
  `;
117
117
  }
118
118
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@npm-safe/core-dsh",
3
- "version": "1.0.5",
4
- "description": "Supply-chain security scanner for npm packages",
3
+ "version": "1.0.6",
4
+ "description": "Local-first npm supply-chain security engine with metadata and deep tarball scanning",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -15,6 +15,21 @@
15
15
  "files": [
16
16
  "dist"
17
17
  ],
18
+ "keywords": [
19
+ "npm-security",
20
+ "supply-chain-security",
21
+ "dependency-security",
22
+ "malware-detection",
23
+ "static-analysis",
24
+ "security-scanner"
25
+ ],
26
+ "engines": {
27
+ "node": ">=22.19"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public",
31
+ "provenance": true
32
+ },
18
33
  "dependencies": {
19
34
  "better-sqlite3": "^12.11.1",
20
35
  "undici": "^8.10.0"