@dxworks/depinder 0.1.6 → 0.2.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.
@@ -76,8 +76,36 @@ async function extract(rootPath) {
76
76
  notes: 'Extracted from build.gradle',
77
77
  });
78
78
  }
79
+ const pipfiles = await findFiles(rootPath, /^Pipfile$/);
80
+ for (const pipfile of pipfiles) {
81
+ const pythonVersion = await extractPythonVersionFromPipfile(pipfile);
82
+ const relativePath = path_1.default.relative(rootPath, pipfile);
83
+ const component = getComponent(relativePath);
84
+ results.push({
85
+ programmingLanguage: 'PYTHON',
86
+ projectFile: relativePath,
87
+ frameworkVersion: pythonVersion,
88
+ component,
89
+ group: component,
90
+ notes: 'Extracted from Pipfile',
91
+ });
92
+ }
79
93
  return results;
80
94
  }
95
+ async function extractPythonVersionFromPipfile(pipfilePath) {
96
+ try {
97
+ const content = await promises_1.default.readFile(pipfilePath, 'utf-8');
98
+ // Look for a line like: python_version = "3.11"
99
+ const match = content.match(/python_version\s*=\s*["']([\d.]+)["']/);
100
+ if (match) {
101
+ return match[1];
102
+ }
103
+ return '';
104
+ }
105
+ catch (_a) {
106
+ return '';
107
+ }
108
+ }
81
109
  async function extractJavaVersionFromGradle(gradleFilePath) {
82
110
  const gradleContent = await promises_1.default.readFile(gradleFilePath, 'utf-8');
83
111
  const matchToolchain = gradleContent.match(/java\s*\{[^}]*?languageVersion\.set\(JavaLanguageVersion\.of\((\d+(?:\.\d+)?)\)\)/s);
@@ -95,7 +123,7 @@ async function extractJavaVersionFromMaven(pomFilePath) {
95
123
  var _a, _b, _c, _d;
96
124
  try {
97
125
  const xmlData = await promises_1.default.readFile(pomFilePath, 'utf-8');
98
- const result = await (0, xml2js_1.parseStringPromise)(xmlData);
126
+ const result = await parseXml(xmlData);
99
127
  if (!result || !result.project) {
100
128
  console.error('Invalid POM structure');
101
129
  return "";
@@ -129,20 +157,31 @@ async function extractJavaVersionFromMaven(pomFilePath) {
129
157
  return "";
130
158
  }
131
159
  }
160
+ async function parseXml(xmlData) {
161
+ // Remove multi-line comments from the entire file
162
+ const withoutComments = xmlData.replace(/\/\*[\s\S]*?\*\//g, '');
163
+ // Remove empty lines and whitespace from the beginning of the file only
164
+ const trimmedXml = withoutComments.replace(/^\s*[\r\n]+/, '');
165
+ return await (0, xml2js_1.parseStringPromise)(trimmedXml);
166
+ }
132
167
  async function extractTargetFramework(projectFile) {
133
- var _a, _b, _c, _d;
168
+ var _a;
134
169
  try {
135
170
  const content = await promises_1.default.readFile(projectFile, 'utf-8');
136
- const xml = await (0, xml2js_1.parseStringPromise)(content);
171
+ const xml = await parseXml(content);
137
172
  const frameworkTags = ['TargetFramework', 'TargetFrameworks', 'TargetFrameworkVersion'];
138
- for (const tag of frameworkTags) {
139
- const value = (_d = (_c = (_b = (_a = xml === null || xml === void 0 ? void 0 : xml.Project) === null || _a === void 0 ? void 0 : _a.PropertyGroup) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c[tag]) === null || _d === void 0 ? void 0 : _d[0];
140
- if (value)
141
- return value;
173
+ const propertyGroups = ((_a = xml === null || xml === void 0 ? void 0 : xml.Project) === null || _a === void 0 ? void 0 : _a.PropertyGroup) || [];
174
+ for (const group of propertyGroups) {
175
+ for (const tag of frameworkTags) {
176
+ if (group[tag]) {
177
+ return group[tag][0];
178
+ }
179
+ }
142
180
  }
143
181
  return '';
144
182
  }
145
- catch (_e) {
183
+ catch (error) {
184
+ console.error(`Error extracting target framework from ${projectFile}:`, error);
146
185
  return '';
147
186
  }
148
187
  }
@@ -165,7 +204,7 @@ async function extractParameterValueFromProps(propsFilePath, parameterName) {
165
204
  var _a, _b, _c, _d;
166
205
  try {
167
206
  const content = await promises_1.default.readFile(propsFilePath, 'utf-8');
168
- const xml = await (0, xml2js_1.parseStringPromise)(content);
207
+ const xml = await parseXml(content);
169
208
  const cleanParameterName = parameterName.replace(/[\$()]/g, '');
170
209
  return ((_d = (_c = (_b = (_a = xml === null || xml === void 0 ? void 0 : xml.Project) === null || _a === void 0 ? void 0 : _a.PropertyGroup) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c[cleanParameterName]) === null || _d === void 0 ? void 0 : _d[0]) || '';
171
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractFrameworkVersion.js","sourceRoot":"","sources":["../../src/commands/extractFrameworkVersion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractFrameworkVersion.js","sourceRoot":"","sources":["../../src/commands/extractFrameworkVersion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Transforms raw Black Duck CSV exports into four cleaned and shareable CSV reports
4
+ * @param reportDir Directory containing Black Duck report files
5
+ * @param options Command options including optional basePath and pathMappings
6
+ */
7
+ export declare function transformBlackDuckReports(reportDir: string, options?: {
8
+ basePath?: string;
9
+ pathMappings?: string;
10
+ }): Promise<void>;
11
+ export declare const transformBlackDuckReportsCommand: Command;
@@ -0,0 +1,481 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.transformBlackDuckReportsCommand = exports.transformBlackDuckReports = void 0;
30
+ const promises_1 = __importDefault(require("fs/promises"));
31
+ const fsSync = __importStar(require("fs"));
32
+ const path_1 = __importDefault(require("path"));
33
+ const commander_1 = require("commander");
34
+ const sync_1 = require("csv-parse/sync");
35
+ const sync_2 = require("csv-stringify/sync");
36
+ const projectMapping_1 = require("../utils/projectMapping");
37
+ /**
38
+ * Common options for CSV parsing
39
+ */
40
+ const CSV_PARSE_OPTIONS = { columns: true, skip_empty_lines: true };
41
+ /**
42
+ * Column order for dependencies.csv output
43
+ */
44
+ const DEPENDENCIES_COLUMN_ORDER = [
45
+ 'Component name',
46
+ 'Component version name',
47
+ 'Component Version Origin Id',
48
+ 'License names',
49
+ 'License families',
50
+ 'Match type',
51
+ 'Usage',
52
+ 'Operational Risk',
53
+ 'Origin name',
54
+ 'License Risk',
55
+ 'Total Vulnerability Count',
56
+ 'Critical and High Vulnerability Count',
57
+ 'Critical Vulnerability Count',
58
+ 'High Vulnerability Count',
59
+ 'Medium Vulnerability Count',
60
+ 'Low Vulnerability Count',
61
+ 'Release Date',
62
+ 'Newer Versions',
63
+ 'Commit Activity',
64
+ 'Commits in Past 12 Months',
65
+ 'Contributors in Past 12 Months',
66
+ 'Has License Conflicts',
67
+ 'Component Link',
68
+ 'Open Hub URL'
69
+ ];
70
+ /**
71
+ * Column order for dependencies_sources.csv output
72
+ */
73
+ const DEPENDENCIES_SOURCES_COLUMN_ORDER = [
74
+ 'Component name',
75
+ 'Component version name',
76
+ 'Component Version Origin Id',
77
+ 'Match type',
78
+ 'Path',
79
+ 'ProjectPath',
80
+ 'ProjectPathExists',
81
+ 'VerifiedPath',
82
+ 'Origin name',
83
+ 'License names',
84
+ 'License families',
85
+ 'License Risk',
86
+ 'Critical Vulnerability Count',
87
+ 'High Vulnerability Count',
88
+ 'Medium Vulnerability Count',
89
+ 'Low Vulnerability Count',
90
+ 'Total Vulnerability Count',
91
+ 'Critical and High Vulnerability Count',
92
+ 'Operational Risk',
93
+ 'Release Date',
94
+ 'Newer Versions',
95
+ 'OpenHubURL'
96
+ ];
97
+ /**
98
+ * Headers to keep for vulnerability_details.csv output
99
+ */
100
+ const VULNERABILITY_DETAILS_HEADERS = [
101
+ 'Component name',
102
+ 'Component version name',
103
+ 'Component Version Origin Id',
104
+ 'Vulnerability id',
105
+ 'Description',
106
+ 'Published on',
107
+ 'Updated on',
108
+ 'Base score',
109
+ 'Exploitability',
110
+ 'Impact',
111
+ 'Vulnerability source',
112
+ 'Remediation status',
113
+ 'URL',
114
+ 'Security Risk',
115
+ 'Project path',
116
+ 'Overall score',
117
+ 'CWE Ids',
118
+ 'Solution available',
119
+ 'Workaround available',
120
+ 'Exploit available',
121
+ 'CVSS Version',
122
+ 'Match type',
123
+ 'Vulnerability tags'
124
+ ];
125
+ /**
126
+ * Columns to remove from upgrade guidance CSV
127
+ */
128
+ const UPGRADE_GUIDANCE_COLUMNS_TO_REMOVE = new Set([
129
+ 'Used by',
130
+ 'Component Id',
131
+ 'Component Version Id',
132
+ 'Component Origin Id',
133
+ 'Component Origin Version Name',
134
+ 'Short Term Recommended Version Id',
135
+ 'Long Term Recommended Version Id',
136
+ 'Short Term Recommended Component Origin Id',
137
+ 'Long Term Recommended Component Origin Id',
138
+ 'Knowledgebase Timed Out'
139
+ ]);
140
+ /**
141
+ * Safely parses a string to an integer, returning 0 for invalid inputs
142
+ * @param s String to parse
143
+ * @returns Parsed integer or 0 if invalid
144
+ */
145
+ function safeInt(s) {
146
+ const v = parseInt(s !== null && s !== void 0 ? s : '', 10);
147
+ return isNaN(v) ? 0 : v;
148
+ }
149
+ /**
150
+ * Formats a date string from MM/DD/YY to \tYYYY-MM-DD format for Excel compatibility
151
+ * @param raw Raw date string in MM/DD/YY format
152
+ * @returns Formatted date string or empty string if invalid
153
+ */
154
+ function formatDateField(raw) {
155
+ if (!raw)
156
+ return '';
157
+ const parts = raw.trim().split('/');
158
+ if (parts.length !== 3)
159
+ return '';
160
+ const [month, day, year] = parts.map(s => parseInt(s, 10));
161
+ if (isNaN(month) || isNaN(day) || isNaN(year))
162
+ return '';
163
+ const fullYear = year < 50 ? 2000 + year : 1900 + year;
164
+ return `\t${fullYear}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
165
+ }
166
+ /**
167
+ * Normalizes values to string format according to Black Duck report requirements
168
+ * @param val Value to normalize
169
+ * @returns Normalized string value
170
+ */
171
+ function normalizeValue(val) {
172
+ if (val === true)
173
+ return 'TRUE';
174
+ if (val === false)
175
+ return 'FALSE';
176
+ if (val === null || val === undefined)
177
+ return '';
178
+ if (typeof val === 'number')
179
+ return `${val}`;
180
+ return `${val}`.trim();
181
+ }
182
+ /**
183
+ * Normalizes match type by removing " Dependency" suffix
184
+ * @param matchType Match type string
185
+ * @returns Normalized match type
186
+ */
187
+ function normalizeMatchType(matchType) {
188
+ return (matchType || '').replace(/ Dependency/g, '');
189
+ }
190
+ /**
191
+ * Calculates vulnerability counts from a component record
192
+ * @param component Component record
193
+ * @returns Object with vulnerability counts
194
+ */
195
+ function calculateVulnerabilityCounts(component) {
196
+ const critical = safeInt(component['Critical Vulnerability Count']);
197
+ const high = safeInt(component['High Vulnerability Count']);
198
+ const medium = safeInt(component['Medium Vulnerability Count']);
199
+ const low = safeInt(component['Low Vulnerability Count']);
200
+ return {
201
+ critical,
202
+ high,
203
+ medium,
204
+ low,
205
+ total: critical + high + medium + low,
206
+ criticalAndHigh: critical + high
207
+ };
208
+ }
209
+ /**
210
+ * Extracts a single origin name from a potentially comma-separated list
211
+ * @param originName Origin name string that might contain multiple comma-separated values
212
+ * @returns A single origin name if all values are the same, otherwise throws an exception
213
+ */
214
+ function getSingleOriginName(originName) {
215
+ if (!originName) {
216
+ return '';
217
+ }
218
+ const origins = originName.split(',').map(origin => origin.trim()).filter(origin => origin.length > 0);
219
+ if (origins.length === 0) {
220
+ return '';
221
+ }
222
+ const firstOrigin = origins[0];
223
+ const allSame = origins.every(origin => origin === firstOrigin);
224
+ if (!allSame) {
225
+ throw new Error(`Multiple different origin names found: ${originName}`);
226
+ }
227
+ return firstOrigin;
228
+ }
229
+ /**
230
+ * Transforms components data into dependencies records
231
+ * @param components Raw component records from Black Duck
232
+ * @returns Transformed dependency records
233
+ */
234
+ function transformDependencies(components) {
235
+ return components.map(component => {
236
+ const counts = calculateVulnerabilityCounts(component);
237
+ const result = {
238
+ 'Component name': component['Component name'],
239
+ 'Component version name': component['Component version name'],
240
+ 'Component Version Origin Id': component['Origin id'] || '',
241
+ 'License names': component['License names'],
242
+ 'License families': component['License families'],
243
+ 'Match type': normalizeMatchType(component['Match type']),
244
+ 'Usage': component['Usage'],
245
+ 'Operational Risk': component['Operational Risk'],
246
+ 'License Risk': component['License Risk'],
247
+ 'Total Vulnerability Count': `${counts.total}`,
248
+ 'Critical and High Vulnerability Count': `${counts.criticalAndHigh}`,
249
+ 'Critical Vulnerability Count': counts.critical > 0 ? `${counts.critical}` : '',
250
+ 'High Vulnerability Count': counts.high > 0 ? `${counts.high}` : '',
251
+ 'Medium Vulnerability Count': counts.medium > 0 ? `${counts.medium}` : '',
252
+ 'Low Vulnerability Count': counts.low > 0 ? `${counts.low}` : '',
253
+ 'Release Date': formatDateField(component['Release Date']),
254
+ 'Newer Versions': component['Newer Versions'],
255
+ 'Open Hub URL': component['Open Hub URL']
256
+ };
257
+ // Handle optional fields
258
+ result['Origin name'] = getSingleOriginName(component['Origin name'] || '');
259
+ result['Commit Activity'] = component['Commit Activity'] || '';
260
+ result['Commits in Past 12 Months'] = component['Commits in Past 12 Months'] || '';
261
+ result['Contributors in Past 12 Months'] = component['Contributors in Past 12 Months'] || '';
262
+ result['Has License Conflicts'] = component['Has License Conflicts'] || '';
263
+ result['Component Link'] = component['Component Link'] || '';
264
+ return result;
265
+ });
266
+ }
267
+ /**
268
+ * Transforms sources and components data into dependencies_sources records
269
+ * @param sources Raw source records from Black Duck
270
+ * @param components Raw component records from Black Duck
271
+ * @param basePath Optional base path for verifying project paths
272
+ * @returns Transformed dependency source records
273
+ */
274
+ function transformDependenciesSources(sources, components, basePath, pathMappings) {
275
+ const validSources = sources.filter(src => components.some(c => c['Version id'] === src['Version id']));
276
+ return validSources.map(src => {
277
+ const comp = components.find(c => c['Version id'] === src['Version id']);
278
+ const counts = calculateVulnerabilityCounts(comp);
279
+ // Extract project information from path
280
+ const projectInfo = basePath
281
+ ? (0, projectMapping_1.extractProjectInfo)(src['Path'], src['Origin name'], basePath, pathMappings)
282
+ : (0, projectMapping_1.extractProjectInfo)(src['Path'], src['Origin name']);
283
+ return {
284
+ 'Component name': src['Component name'],
285
+ 'Component version name': src['Component version name'],
286
+ 'Component Version Origin Id': src['Origin name id'],
287
+ 'Match type': normalizeMatchType(src['Match type']),
288
+ 'Path': src['Path'],
289
+ 'ProjectPath': projectInfo.projectPath,
290
+ 'VerifiedPath': projectInfo.verifiedPath,
291
+ 'ProjectPathExists': projectInfo.projectPathExists !== undefined ? String(projectInfo.projectPathExists) : '',
292
+ 'Origin name': src['Origin name'],
293
+ 'License names': comp['License names'],
294
+ 'License families': comp['License families'],
295
+ 'License Risk': comp['License Risk'],
296
+ 'Critical Vulnerability Count': counts.critical > 0 ? `${counts.critical}` : '',
297
+ 'High Vulnerability Count': counts.high > 0 ? `${counts.high}` : '',
298
+ 'Medium Vulnerability Count': counts.medium > 0 ? `${counts.medium}` : '',
299
+ 'Low Vulnerability Count': counts.low > 0 ? `${counts.low}` : '',
300
+ 'Total Vulnerability Count': `${counts.total}`,
301
+ 'Critical and High Vulnerability Count': `${counts.criticalAndHigh}`,
302
+ 'Operational Risk': comp['Operational Risk'],
303
+ 'Release Date': formatDateField(comp['Release Date']),
304
+ 'Newer Versions': comp['Newer Versions'],
305
+ 'OpenHubURL': comp['Open Hub URL'],
306
+ 'Repository': '',
307
+ 'Group': ''
308
+ };
309
+ });
310
+ }
311
+ /**
312
+ * Transforms security records into vulnerability details records
313
+ * @param securityRecords Raw security records from Black Duck
314
+ * @returns Transformed vulnerability detail records
315
+ */
316
+ function transformVulnerabilityDetails(securityRecords) {
317
+ return securityRecords.map(record => {
318
+ const result = {};
319
+ for (const key of VULNERABILITY_DETAILS_HEADERS) {
320
+ if (key === 'Published on' || key === 'Updated on') {
321
+ result[key] = formatDateField(record[key] || '');
322
+ }
323
+ else if (key === 'Component Version Origin Id') {
324
+ result[key] = normalizeValue(record['Component origin id']);
325
+ }
326
+ else {
327
+ result[key] = normalizeValue(record[key]);
328
+ }
329
+ }
330
+ return result;
331
+ });
332
+ }
333
+ /**
334
+ * Transforms upgrade guidance CSV content
335
+ * @param upgradeRaw Raw upgrade guidance CSV content
336
+ * @returns Transformed upgrade guidance CSV content
337
+ */
338
+ function transformUpgradeGuidance(upgradeRaw) {
339
+ const [headerLine, ...lines] = upgradeRaw.trim().split('\n');
340
+ const headers = headerLine.split(',');
341
+ // Replace 'Component Origin External Id' with 'Component Version Origin Id'
342
+ const modifiedHeaders = headers.map(h => h.trim() === 'Component Origin External Id' ? 'Component Version Origin Id' : h);
343
+ const keepIndexes = modifiedHeaders
344
+ .map((h, i) => UPGRADE_GUIDANCE_COLUMNS_TO_REMOVE.has(h.trim()) ? -1 : i)
345
+ .filter(i => i >= 0);
346
+ return [
347
+ keepIndexes.map(i => modifiedHeaders[i]).join(','),
348
+ ...lines.map(line => {
349
+ const parts = line.split(',');
350
+ return keepIndexes.map(i => { var _a; return (_a = parts[i]) !== null && _a !== void 0 ? _a : ''; }).join(',');
351
+ })
352
+ ].join('\n');
353
+ }
354
+ /**
355
+ * Formats records according to a specific column order
356
+ * @param records Records to format
357
+ * @param columnOrder Column order to use
358
+ * @returns Formatted records
359
+ */
360
+ function formatRecordsWithColumnOrder(records, columnOrder) {
361
+ return records.map(row => {
362
+ const formattedRow = {};
363
+ columnOrder.forEach(col => {
364
+ formattedRow[col] = row[col] || '';
365
+ });
366
+ return formattedRow;
367
+ });
368
+ }
369
+ /**
370
+ * Validates that all required Black Duck report files are present
371
+ * @param entries Directory entries
372
+ * @returns Object with file names or throws error if files are missing
373
+ */
374
+ function validateRequiredFiles(entries) {
375
+ const componentFile = entries.find(f => f.startsWith('components_'));
376
+ const sourceFile = entries.find(f => f.startsWith('source_'));
377
+ const securityFile = entries.find(f => f.startsWith('security_'));
378
+ const upgradeFile = entries.find(f => f.startsWith('project_version_upgrade_guidance_'));
379
+ const missingFiles = [];
380
+ if (!componentFile)
381
+ missingFiles.push('components_*.csv');
382
+ if (!sourceFile)
383
+ missingFiles.push('source_*.csv');
384
+ if (!securityFile)
385
+ missingFiles.push('security_*.csv');
386
+ if (!upgradeFile)
387
+ missingFiles.push('project_version_upgrade_guidance_*.csv');
388
+ if (missingFiles.length > 0) {
389
+ throw new Error(`Missing required Black Duck CSV files: ${missingFiles.join(', ')}`);
390
+ }
391
+ return {
392
+ componentFile: componentFile,
393
+ sourceFile: sourceFile,
394
+ securityFile: securityFile,
395
+ upgradeFile: upgradeFile
396
+ };
397
+ }
398
+ /**
399
+ * Transforms raw Black Duck CSV exports into four cleaned and shareable CSV reports
400
+ * @param reportDir Directory containing Black Duck report files
401
+ * @param options Command options including optional basePath and pathMappings
402
+ */
403
+ async function transformBlackDuckReports(reportDir, options) {
404
+ try {
405
+ // Find and validate required input files
406
+ const entries = await promises_1.default.readdir(reportDir);
407
+ const { componentFile, sourceFile, securityFile, upgradeFile } = validateRequiredFiles(entries);
408
+ let pathMappings = loadPathMappings(options);
409
+ // Read input files
410
+ const componentsRawData = await promises_1.default.readFile(path_1.default.join(reportDir, componentFile), 'utf-8');
411
+ const sourcesRawData = await promises_1.default.readFile(path_1.default.join(reportDir, sourceFile), 'utf-8');
412
+ const securityRawData = await promises_1.default.readFile(path_1.default.join(reportDir, securityFile), 'utf-8');
413
+ const upgradeRawData = await promises_1.default.readFile(path_1.default.join(reportDir, upgradeFile), 'utf-8');
414
+ // Parse input data
415
+ const components = (0, sync_1.parse)(componentsRawData, CSV_PARSE_OPTIONS);
416
+ const sources = (0, sync_1.parse)(sourcesRawData, CSV_PARSE_OPTIONS);
417
+ const securityRecords = (0, sync_1.parse)(securityRawData, CSV_PARSE_OPTIONS);
418
+ // Transform and write _dependencies_sources.csv
419
+ const dependenciesSourcesRecords = transformDependenciesSources(sources, components, options === null || options === void 0 ? void 0 : options.basePath, pathMappings);
420
+ const emptyVerifiedPaths = dependenciesSourcesRecords.filter(record => record['VerifiedPath'] === '');
421
+ if (emptyVerifiedPaths.length > 0) {
422
+ console.warn(`Found ${emptyVerifiedPaths.length} out of ${dependenciesSourcesRecords.length} dependencies with empty verified paths.`);
423
+ }
424
+ const formattedDependenciesSources = formatRecordsWithColumnOrder(dependenciesSourcesRecords, DEPENDENCIES_SOURCES_COLUMN_ORDER);
425
+ const dependenciesSourcesCSV = (0, sync_2.stringify)(formattedDependenciesSources, { header: true });
426
+ await promises_1.default.writeFile(path_1.default.join(reportDir, '_dependencies_sources.csv'), dependenciesSourcesCSV);
427
+ // Transform and write _dependencies.csv
428
+ const dependencyRecords = transformDependencies(components);
429
+ const formattedDependencies = formatRecordsWithColumnOrder(dependencyRecords, DEPENDENCIES_COLUMN_ORDER);
430
+ const dependenciesCSV = (0, sync_2.stringify)(formattedDependencies, { header: true });
431
+ await promises_1.default.writeFile(path_1.default.join(reportDir, '_dependencies.csv'), dependenciesCSV);
432
+ // Transform and write _vulnerability_details.csv
433
+ const vulnerabilityRecords = transformVulnerabilityDetails(securityRecords);
434
+ const vulnerabilityCSV = (0, sync_2.stringify)(vulnerabilityRecords, { header: true });
435
+ await promises_1.default.writeFile(path_1.default.join(reportDir, '_vulnerability_details.csv'), vulnerabilityCSV);
436
+ // Transform and write _upgrade_guidance.csv
437
+ const upgradeGuidanceCSV = transformUpgradeGuidance(upgradeRawData);
438
+ await promises_1.default.writeFile(path_1.default.join(reportDir, '_upgrade_guidance.csv'), upgradeGuidanceCSV);
439
+ }
440
+ catch (error) {
441
+ if (error instanceof Error) {
442
+ throw new Error(`Failed to transform Black Duck reports: ${error.message}`);
443
+ }
444
+ throw error;
445
+ }
446
+ }
447
+ exports.transformBlackDuckReports = transformBlackDuckReports;
448
+ exports.transformBlackDuckReportsCommand = new commander_1.Command()
449
+ .command('transformBlackDuckReports')
450
+ .description('Transforms Black Duck CSV reports to shareable format')
451
+ .argument('<reportPath>', 'Path to the directory with Black Duck CSVs')
452
+ .option('-b, --basePath <path>', 'Base path for verifying project paths')
453
+ .option('-m, --pathMappings <path>', 'Path to JSON file containing path mappings')
454
+ .action(transformBlackDuckReports);
455
+ function loadPathMappings(options) {
456
+ let pathMappings = undefined;
457
+ if (options === null || options === void 0 ? void 0 : options.pathMappings) {
458
+ try {
459
+ console.log(`Loading path mappings from ${options.pathMappings}`);
460
+ if (!fsSync.existsSync(options.pathMappings)) {
461
+ console.warn(`Path mapping file not found: ${options.pathMappings}`);
462
+ }
463
+ else {
464
+ const fileContent = fsSync.readFileSync(options.pathMappings, 'utf8');
465
+ const mappingData = JSON.parse(fileContent);
466
+ if (!mappingData.pathMappings || !Array.isArray(mappingData.pathMappings)) {
467
+ console.warn(`Invalid path mapping file format: ${options.pathMappings}`);
468
+ }
469
+ else {
470
+ pathMappings = (0, projectMapping_1.createPathMappings)(mappingData.pathMappings);
471
+ console.log(`Loaded ${pathMappings.size} path mappings from ${options.pathMappings}`);
472
+ }
473
+ }
474
+ }
475
+ catch (error) {
476
+ console.error(`Error loading path mappings: ${error}`);
477
+ }
478
+ }
479
+ return pathMappings;
480
+ }
481
+ //# sourceMappingURL=transformBlackDuckReports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformBlackDuckReports.js","sourceRoot":"","sources":["../../src/commands/transformBlackDuckReports.ts"],"names":[],"mappings":"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"}
package/dist/depinder.js CHANGED
@@ -7,6 +7,7 @@ const analyse_1 = require("./commands/analyse");
7
7
  const cache_1 = require("./commands/cache");
8
8
  const update_1 = require("./commands/update");
9
9
  const extractFrameworkVersion_1 = require("./commands/extractFrameworkVersion");
10
+ const transformBlackDuckReports_1 = require("./commands/transformBlackDuckReports");
10
11
  exports.mainCommand = new commander_1.Command()
11
12
  .name('depinder')
12
13
  .description(utils_1._package.description)
@@ -14,5 +15,6 @@ exports.mainCommand = new commander_1.Command()
14
15
  .addCommand(analyse_1.analyseCommand)
15
16
  .addCommand(update_1.updateCommand)
16
17
  .addCommand(cache_1.cacheCommand)
17
- .addCommand(extractFrameworkVersion_1.extractFrameworkVersionsCommand);
18
+ .addCommand(extractFrameworkVersion_1.extractFrameworkVersionsCommand)
19
+ .addCommand(transformBlackDuckReports_1.transformBlackDuckReportsCommand);
18
20
  //# sourceMappingURL=depinder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"depinder.js","sourceRoot":"","sources":["../src/depinder.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,yCAAsC;AACtC,gDAAiD;AACjD,4CAA6C;AAC7C,8CAA+C;AAC/C,gFAAkF;AAErE,QAAA,WAAW,GAAG,IAAI,mBAAO,EAAE;KACnC,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,gBAAQ,CAAC,WAAW,CAAC;KACjC,OAAO,CAAC,gBAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC;KACxD,UAAU,CAAC,wBAAc,CAAC;KAC1B,UAAU,CAAC,sBAAa,CAAC;KACzB,UAAU,CAAC,oBAAY,CAAC;KACxB,UAAU,CAAC,yDAA+B,CAAC,CAAA"}
1
+ {"version":3,"file":"depinder.js","sourceRoot":"","sources":["../src/depinder.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,yCAAsC;AACtC,gDAAiD;AACjD,4CAA6C;AAC7C,8CAA+C;AAC/C,gFAAkF;AAClF,oFAAqF;AAExE,QAAA,WAAW,GAAG,IAAI,mBAAO,EAAE;KACnC,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,gBAAQ,CAAC,WAAW,CAAC;KACjC,OAAO,CAAC,gBAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC;KACxD,UAAU,CAAC,wBAAc,CAAC;KAC1B,UAAU,CAAC,sBAAa,CAAC;KACzB,UAAU,CAAC,oBAAY,CAAC;KACxB,UAAU,CAAC,yDAA+B,CAAC;KAC3C,UAAU,CAAC,4DAAgC,CAAC,CAAA"}
@@ -64,7 +64,7 @@ function getParentLockFile(packageFile, maxDepth = 5) {
64
64
  const parser = {
65
65
  parseDependencyTree: parseLockFile,
66
66
  };
67
- function recursivelyTransformDeps(tree, result) {
67
+ function recursivelyTransformTreeDeps(tree, result) {
68
68
  var _a;
69
69
  const rootId = `${tree.name}@${tree.version}`;
70
70
  Object.values((_a = tree.dependencies) !== null && _a !== void 0 ? _a : {}).forEach(dep => {
@@ -89,28 +89,121 @@ function recursivelyTransformDeps(tree, result) {
89
89
  logging_1.log.warn(`Invalid version! ${e}`);
90
90
  }
91
91
  }
92
- recursivelyTransformDeps(dep, result);
92
+ recursivelyTransformTreeDeps(dep, result);
93
93
  });
94
94
  }
95
- function transformDeps(tree, root) {
95
+ function transformGraphDepsFlat(rootId, dependencies, result) {
96
+ dependencies.forEach(dependency => {
97
+ const lastAt = dependency.nodeId.lastIndexOf('@');
98
+ const name = dependency.nodeId.slice(0, lastAt);
99
+ const version = dependency.nodeId.slice(lastAt + 1);
100
+ const id = `${name}@${version}`;
101
+ const cachedVersion = result.get(id);
102
+ if (cachedVersion) {
103
+ cachedVersion.requestedBy = [rootId, ...cachedVersion.requestedBy];
104
+ }
105
+ else {
106
+ try {
107
+ const semver = new semver_1.SemVer(version !== null && version !== void 0 ? version : '', true);
108
+ result.set(id, {
109
+ id,
110
+ version: version,
111
+ name: name,
112
+ semver: semver,
113
+ requestedBy: [rootId],
114
+ });
115
+ }
116
+ catch (e) {
117
+ logging_1.log.warn(`Invalid version! ${e}`);
118
+ }
119
+ }
120
+ dependency.deps.forEach((transitiveDep) => {
121
+ const lastAt = transitiveDep.nodeId.lastIndexOf('@');
122
+ const name = transitiveDep.nodeId.slice(0, lastAt);
123
+ const version = transitiveDep.nodeId.slice(lastAt + 1);
124
+ const id = `${name}@${version}`;
125
+ const cachedVersion = result.get(id);
126
+ if (cachedVersion) {
127
+ cachedVersion.requestedBy = [dependency.nodeId, ...cachedVersion.requestedBy];
128
+ }
129
+ else {
130
+ try {
131
+ const semver = new semver_1.SemVer(version !== null && version !== void 0 ? version : '', true);
132
+ result.set(id, {
133
+ id,
134
+ version: version,
135
+ name: name,
136
+ semver: semver,
137
+ requestedBy: [dependency.nodeId],
138
+ });
139
+ }
140
+ catch (e) {
141
+ logging_1.log.warn(`Invalid version! ${e}`);
142
+ }
143
+ }
144
+ });
145
+ });
146
+ }
147
+ function transformTreeDeps(tree, root) {
96
148
  logging_1.log.info(`Starting recursive transformation for ${root}`);
97
149
  const result = new Map();
98
- recursivelyTransformDeps(tree, result);
150
+ recursivelyTransformTreeDeps(tree, result);
151
+ logging_1.log.info(`End recursive transformation for ${root}.`);
152
+ return result;
153
+ }
154
+ function transformGraphDeps(depGraphNodes, root) {
155
+ logging_1.log.info(`Starting recursive transformation for ${root}`);
156
+ const result = new Map();
157
+ transformGraphDepsFlat(depGraphNodes[0].pkgId, depGraphNodes, result);
99
158
  logging_1.log.info(`End recursive transformation for ${root}.`);
100
159
  return result;
101
160
  }
102
161
  async function parseLockFile({ root, manifestFile, lockFile }) {
103
- var _a, _b;
104
- // const lockFileVersion = getLockfileVersionFromFile(lockFile)
105
- // log.info(`parsing ${path.resolve(root, lockFile)}`)
106
- const result = await (0, snyk_nodejs_lockfile_parser_1.buildDepTreeFromFiles)(root, manifestFile !== null && manifestFile !== void 0 ? manifestFile : 'package.json', lockFile !== null && lockFile !== void 0 ? lockFile : '', true, false);
107
- const manifestJSON = JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(root, manifestFile !== null && manifestFile !== void 0 ? manifestFile : 'package.json'), 'utf8'));
108
- return {
109
- path: path_1.default.resolve(root, manifestFile !== null && manifestFile !== void 0 ? manifestFile : 'package.json'),
110
- name: (_a = result.name) !== null && _a !== void 0 ? _a : manifestJSON.name,
111
- version: (_b = result.version) !== null && _b !== void 0 ? _b : manifestJSON.version,
112
- dependencies: Object.fromEntries(transformDeps(result, root)),
113
- };
162
+ var _a, _b, _c, _d;
163
+ const manifestFilePath = path_1.default.resolve(root, manifestFile !== null && manifestFile !== void 0 ? manifestFile : 'package.json');
164
+ const lockFilePath = path_1.default.resolve(root, lockFile);
165
+ const lockFileVersion = (0, snyk_nodejs_lockfile_parser_1.getLockfileVersionFromFile)(lockFilePath);
166
+ switch (lockFileVersion) {
167
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.YarnLockV1:
168
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.YarnLockV2:
169
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.NpmLockV1: {
170
+ const result = await (0, snyk_nodejs_lockfile_parser_1.buildDepTreeFromFiles)(root, manifestFile !== null && manifestFile !== void 0 ? manifestFile : 'package.json', lockFile !== null && lockFile !== void 0 ? lockFile : '', true, false);
171
+ const manifestJSON = JSON.parse(fs_1.default.readFileSync(manifestFilePath, 'utf8'));
172
+ return {
173
+ path: manifestFilePath,
174
+ name: (_a = result.name) !== null && _a !== void 0 ? _a : manifestJSON.name,
175
+ version: (_b = result.version) !== null && _b !== void 0 ? _b : manifestJSON.version,
176
+ dependencies: Object.fromEntries(transformTreeDeps(result, root)),
177
+ };
178
+ }
179
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.NpmLockV2:
180
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.NpmLockV3: {
181
+ // const oldResult = await buildDepTreeFromFiles(root, manifestFile ?? 'package.json', lockFile ?? '', true, false)
182
+ const manifestFileContent = fs_1.default.readFileSync(manifestFilePath, 'utf8');
183
+ const lockFileContent = fs_1.default.readFileSync(lockFilePath, 'utf8');
184
+ const result = await (0, snyk_nodejs_lockfile_parser_1.parseNpmLockV2Project)(manifestFileContent, lockFileContent, {
185
+ includeDevDeps: true,
186
+ strictOutOfSync: false,
187
+ includeOptionalDeps: false,
188
+ pruneCycles: true,
189
+ includePeerDeps: false,
190
+ pruneNpmStrictOutOfSync: false
191
+ });
192
+ const manifestJSON = JSON.parse(fs_1.default.readFileSync(manifestFilePath, 'utf8'));
193
+ return {
194
+ path: manifestFilePath,
195
+ name: (_c = result.rootPkg.name) !== null && _c !== void 0 ? _c : manifestJSON.name,
196
+ version: (_d = result.rootPkg.version) !== null && _d !== void 0 ? _d : manifestJSON.version,
197
+ dependencies: Object.fromEntries(transformGraphDeps(result.toJSON().graph.nodes, root)),
198
+ };
199
+ }
200
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.PnpmLockV5:
201
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.PnpmLockV6:
202
+ case snyk_nodejs_lockfile_parser_1.NodeLockfileVersion.PnpmLockV9:
203
+ default: {
204
+ throw new Error(`Lockfile version ${lockFileVersion} is not supported by Depinder. Please use npm v1 / v2 / v3 or yarn v1 / v2`);
205
+ }
206
+ }
114
207
  }
115
208
  async function retrieveFromNpm(libraryName) {
116
209
  const response = await (0, npm_registry_fetch_1.json)(libraryName);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/javascript/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/javascript/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  export declare const npm: {
3
4
  install: typeof install;
4
5
  npmCommand: typeof npmCommand;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Interface for path mapping configuration
3
+ */
4
+ export interface PathMapping {
5
+ extractedPath: string;
6
+ actualPath: string;
7
+ }
8
+ /**
9
+ * Map of extracted paths to actual paths
10
+ */
11
+ export type PathMappings = Map<string, string>;
12
+ /**
13
+ * Interface representing a parsed project path
14
+ */
15
+ export interface ProjectPathInfo {
16
+ projectPath: string;
17
+ verifiedPath: string;
18
+ projectPathExists?: boolean;
19
+ }
20
+ /**
21
+ * Create path mappings from mapping data
22
+ * @param mappings Array of path mapping objects
23
+ * @returns Map of extracted paths to actual paths
24
+ */
25
+ export declare function createPathMappings(mappings: PathMapping[]): PathMappings;
26
+ /**
27
+ * Verify if a project path exists on the file system
28
+ * @param projectPath The extracted project path
29
+ * @param basePath Base directory to check against
30
+ * @param pathMappings Optional path mappings to use for verification
31
+ * @returns Verified path information
32
+ */
33
+ export declare function verifyProjectPath(projectPath: string, basePath: string, pathMappings?: PathMappings): ProjectPathInfo;
34
+ /**
35
+ * Extract project information from a dependency path based on origin type
36
+ * @param dependencyPath The path from the Black Duck report
37
+ * @param originName The origin name (e.g., npmjs, maven, nuget, pypi, sbt)
38
+ * @param basePath Optional base path to verify against
39
+ * @returns Object containing project path and verified path information
40
+ */
41
+ export declare function extractProjectInfo(dependencyPath: string, originName: string, basePath?: string, pathMappings?: PathMappings): ProjectPathInfo;
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.extractProjectInfo = exports.verifyProjectPath = exports.createPathMappings = void 0;
27
+ /**
28
+ * Project mapping utilities for extracting project information from dependency paths
29
+ */
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const END_DELIMITERS = [
33
+ '-yarn',
34
+ '-npm',
35
+ 'node_modules',
36
+ '-pip',
37
+ '-maven',
38
+ '-gradle',
39
+ '-nuget',
40
+ '-sbt',
41
+ '-cargo',
42
+ '-rubygems',
43
+ '-packagist',
44
+ '-cocoapods',
45
+ '-swift',
46
+ '-xcode',
47
+ '-go_mod',
48
+ '-setuptools',
49
+ '-pnpm',
50
+ '-uv'
51
+ ];
52
+ // Special case pattern for monorepo
53
+ const MONOREPO_PATTERN = /packages[\\/]([^\\/]+)[\\/]local[\\/]([^\\/]+)[\\/]-yarn/;
54
+ /**
55
+ * Check if a segment contains a version-like pattern
56
+ * @param segment Path segment to check
57
+ * @returns True if the segment looks like a version
58
+ */
59
+ function isVersionSegment(segment) {
60
+ return /^\d+\.\d+\.\d+(?:[-.][A-Za-z0-9]+)*-?$/i.test(segment) ||
61
+ /^REPLACE_BY_CI$/i.test(segment) ||
62
+ segment.toLowerCase() === 'unspecified';
63
+ }
64
+ /**
65
+ * Check if a segment contains a file that should be excluded
66
+ * @param segment Path segment to check
67
+ * @returns True if the segment contains a file to exclude
68
+ */
69
+ function isFileSegment(segment) {
70
+ return segment.toLowerCase().endsWith('.csproj') ||
71
+ segment.toLowerCase().endsWith('.props') ||
72
+ segment.toLowerCase() === 'pom.xml';
73
+ }
74
+ /**
75
+ * Check if a segment is an organization/company prefix that should be skipped
76
+ * @param segment Path segment to check
77
+ * @returns True if the segment looks like an organization prefix
78
+ */
79
+ function isOrganizationPrefix(segment) {
80
+ // Common organization prefixes like com.company, org.apache, etc.
81
+ return /^(com|org|net|edu|gov)\.[a-zA-Z0-9.-]+$/.test(segment);
82
+ }
83
+ /**
84
+ * Resolves a path with relative segments (.., .)
85
+ * @param pathSegments Array of path segments to resolve
86
+ * @returns Array of resolved path segments
87
+ */
88
+ function resolveRelativePath(pathSegments) {
89
+ const result = [];
90
+ let skipCount = 0;
91
+ for (const segment of pathSegments) {
92
+ if (segment === '..') {
93
+ skipCount++;
94
+ }
95
+ else if (segment !== '.' && segment !== '') {
96
+ if (skipCount > 0) {
97
+ // This segment is skipped because of a '..'
98
+ skipCount--;
99
+ }
100
+ else {
101
+ result.push(segment);
102
+ }
103
+ }
104
+ }
105
+ return result;
106
+ }
107
+ /**
108
+ * Standardizes a path by normalizing slashes, colons, and removing leading/trailing slashes
109
+ * @param inputPath Path to standardize
110
+ * @returns Standardized path
111
+ */
112
+ function standardizePath(inputPath) {
113
+ if (!inputPath) {
114
+ return '';
115
+ }
116
+ let normalizedPath = inputPath.replace(/\\/g, '/');
117
+ normalizedPath = normalizedPath.replace(/:/g, '/');
118
+ if (normalizedPath.startsWith('/')) {
119
+ normalizedPath = normalizedPath.substring(1);
120
+ }
121
+ if (normalizedPath.endsWith('/')) {
122
+ normalizedPath = normalizedPath.substring(0, normalizedPath.length - 1);
123
+ }
124
+ return normalizedPath;
125
+ }
126
+ /**
127
+ * Check if a path matches the monorepo pattern and extract the project path
128
+ * @param path Normalized path to check
129
+ * @returns Project path if monorepo pattern matches, null otherwise
130
+ */
131
+ function handleMonorepoPattern(path) {
132
+ const matches = path.match(MONOREPO_PATTERN);
133
+ if (matches) {
134
+ return `${matches[2]}/packages/${matches[1]}`;
135
+ }
136
+ return null;
137
+ }
138
+ /**
139
+ * Parse project path from dependency path
140
+ * @param dependencyPath The path from the Black Duck report
141
+ * @returns Extracted project path
142
+ */
143
+ function parseProjectPath(dependencyPath) {
144
+ if (!dependencyPath) {
145
+ return '';
146
+ }
147
+ try {
148
+ const normalizedPath = standardizePath(dependencyPath);
149
+ const monorepoPath = handleMonorepoPattern(normalizedPath);
150
+ if (monorepoPath) {
151
+ return monorepoPath;
152
+ }
153
+ const segments = normalizedPath.split('/');
154
+ let endDelimiterIndex = getEndDelimiterIndex(segments);
155
+ if (endDelimiterIndex === -1) {
156
+ throw new Error(`No end delimiter found in path: ${normalizedPath}`);
157
+ }
158
+ let projectSegments = segments.slice(0, endDelimiterIndex);
159
+ if (projectSegments.length > 0 && isVersionSegment(projectSegments[projectSegments.length - 1])) {
160
+ projectSegments.pop(); // Remove the version segment
161
+ }
162
+ if (projectSegments.length > 0 && isFileSegment(projectSegments[projectSegments.length - 1])) {
163
+ projectSegments.pop(); // Remove the last segment if it's a file segment
164
+ }
165
+ let startIndex = getStartDelimiterIndex(projectSegments);
166
+ if (startIndex !== -1) {
167
+ projectSegments = projectSegments.slice(startIndex + 1);
168
+ }
169
+ const resolvedSegments = resolveRelativePath(projectSegments);
170
+ return resolvedSegments.join('/');
171
+ }
172
+ catch (error) {
173
+ console.error(`Error parsing path: ${error}`);
174
+ throw error;
175
+ }
176
+ }
177
+ function getStartDelimiterIndex(projectSegments) {
178
+ let startIndex = -1;
179
+ for (let i = 0; i < projectSegments.length; i++) {
180
+ if (isVersionSegment(projectSegments[i])) {
181
+ startIndex = i;
182
+ break; // Stop after finding a version segment
183
+ }
184
+ else if (isOrganizationPrefix(projectSegments[i])) {
185
+ startIndex = i;
186
+ // Continue looking for version segments after organization prefix
187
+ }
188
+ }
189
+ return startIndex;
190
+ }
191
+ function getEndDelimiterIndex(segments) {
192
+ let endDelimiterIndex = -1;
193
+ for (let i = 0; i < segments.length; i++) {
194
+ const lowerSegment = segments[i].toLowerCase();
195
+ if (END_DELIMITERS.some(delimiter => lowerSegment === delimiter)) {
196
+ endDelimiterIndex = i;
197
+ break;
198
+ }
199
+ }
200
+ return endDelimiterIndex;
201
+ }
202
+ /**
203
+ * Create path mappings from mapping data
204
+ * @param mappings Array of path mapping objects
205
+ * @returns Map of extracted paths to actual paths
206
+ */
207
+ function createPathMappings(mappings) {
208
+ const pathMappings = new Map();
209
+ for (const mapping of mappings) {
210
+ if (mapping.extractedPath && mapping.actualPath) {
211
+ pathMappings.set(mapping.extractedPath, mapping.actualPath);
212
+ }
213
+ }
214
+ return pathMappings;
215
+ }
216
+ exports.createPathMappings = createPathMappings;
217
+ /**
218
+ * Verify if a project path exists on the file system
219
+ * @param projectPath The extracted project path
220
+ * @param basePath Base directory to check against
221
+ * @param pathMappings Optional path mappings to use for verification
222
+ * @returns Verified path information
223
+ */
224
+ function verifyProjectPath(projectPath, basePath, pathMappings) {
225
+ if (!projectPath || !basePath) {
226
+ return { projectPath, verifiedPath: '', projectPathExists: false };
227
+ }
228
+ try {
229
+ const fullPath = path.join(basePath, projectPath);
230
+ const originalExists = fs.existsSync(fullPath);
231
+ if (originalExists) {
232
+ return {
233
+ projectPath,
234
+ verifiedPath: projectPath,
235
+ projectPathExists: true
236
+ };
237
+ }
238
+ if (pathMappings && pathMappings.has(projectPath)) {
239
+ const mappedPath = pathMappings.get(projectPath);
240
+ const mappedFullPath = path.join(basePath, mappedPath);
241
+ const mappedExists = fs.existsSync(mappedFullPath);
242
+ return {
243
+ projectPath,
244
+ verifiedPath: mappedExists ? mappedPath : '',
245
+ projectPathExists: originalExists
246
+ };
247
+ }
248
+ // Try without the first path segment
249
+ const segments = projectPath.split('/');
250
+ if (segments.length > 1) {
251
+ const pathWithoutFirstSegment = segments.slice(1).join('/');
252
+ const modifiedFullPath = path.join(basePath, pathWithoutFirstSegment);
253
+ const modifiedExists = fs.existsSync(modifiedFullPath);
254
+ if (modifiedExists) {
255
+ return {
256
+ projectPath,
257
+ verifiedPath: pathWithoutFirstSegment,
258
+ projectPathExists: false
259
+ };
260
+ }
261
+ }
262
+ // No mapping found or modified path doesn't exist
263
+ return {
264
+ projectPath,
265
+ verifiedPath: '',
266
+ projectPathExists: false
267
+ };
268
+ }
269
+ catch (error) {
270
+ console.error(`Error verifying project path: ${error}`);
271
+ return { projectPath, verifiedPath: '', projectPathExists: false };
272
+ }
273
+ }
274
+ exports.verifyProjectPath = verifyProjectPath;
275
+ /**
276
+ * Extract project information from a dependency path based on origin type
277
+ * @param dependencyPath The path from the Black Duck report
278
+ * @param originName The origin name (e.g., npmjs, maven, nuget, pypi, sbt)
279
+ * @param basePath Optional base path to verify against
280
+ * @returns Object containing project path and verified path information
281
+ */
282
+ function extractProjectInfo(dependencyPath, originName, basePath, pathMappings) {
283
+ if (!dependencyPath) {
284
+ return { projectPath: '', verifiedPath: '', projectPathExists: false };
285
+ }
286
+ try {
287
+ const projectPath = parseProjectPath(dependencyPath);
288
+ // Verify the path if basePath is provided
289
+ if (basePath) {
290
+ return verifyProjectPath(projectPath, basePath, pathMappings);
291
+ }
292
+ // Otherwise return unverified path with empty verifiedPath
293
+ return { projectPath, verifiedPath: '', projectPathExists: undefined };
294
+ }
295
+ catch (error) {
296
+ console.error(`Error extracting project info: ${error}`);
297
+ throw error;
298
+ }
299
+ }
300
+ exports.extractProjectInfo = extractProjectInfo;
301
+ //# sourceMappingURL=projectMapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectMapping.js","sourceRoot":"","sources":["../../src/utils/projectMapping.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxworks/depinder",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "dxworks",
@@ -59,7 +59,7 @@
59
59
  "puppeteer": "18.0.1",
60
60
  "semver": "^7.3.5",
61
61
  "snyk-gradle-plugin": "^3.25.2",
62
- "snyk-nodejs-lockfile-parser": "^1.52.1",
62
+ "snyk-nodejs-lockfile-parser": "^1.60.1",
63
63
  "spdx-correct": "^3.1.1",
64
64
  "spdx-license-ids": "^3.0.10",
65
65
  "tmp": "^0.2.1",
@@ -96,9 +96,6 @@
96
96
  "ts-node": "^10.2.1",
97
97
  "typescript": "^4.4.3"
98
98
  },
99
- "publishConfig": {
100
- "registry": "https://npm.pkg.github.com"
101
- },
102
99
  "dxw": {
103
100
  "commands": [
104
101
  {