Skip to content

Commit

Permalink
feat: parse name out of the long paths that npm provides
Browse files Browse the repository at this point in the history
  • Loading branch information
lirantal committed Jul 28, 2023
1 parent fe138fd commit e3f3f07
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,50 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
"resolved": "http://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/core/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"packages/lockfile-lint/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"packages/lockfile-lint/node_modules/cliui": {
"version": "7.0.4",
"license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@ describe('ParseLockfile v3 Npm', () => {
expect(lockfile.type).toEqual('success')
expect(lockfile.object).toEqual(
expect.objectContaining({
'node_modules/debug@4.3.4-c15d73814bfc58727435c213e23203e48f036cd9': expect.any(Object),
'node_modules/ms@2.1.2-d6934ce87f6e568c4f5d6d9f6e5c5697992e7b91': expect.any(Object)
'@ampproject/remapping@2.2.1-6896846cb1525fe356a0a09c28e387a034d364ab': expect.any(Object),
'argparse@2.0.1-d71b6b43bc0d034f7b86d6d1149d6a43be13f2ed': expect.any(Object),
'cliui@7.0.4-a26e875b912c887d1429fe2e16ed66bcbe362d61': expect.any(Object),
'debug@4.3.4-c15d73814bfc58727435c213e23203e48f036cd9': expect.any(Object),
'ms@2.1.2-d6934ce87f6e568c4f5d6d9f6e5c5697992e7b91': expect.any(Object)
})
)
})
Expand Down
16 changes: 15 additions & 1 deletion packages/lockfile-lint-api/src/ParseLockfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,9 @@ class ParseLockfile {
// if (depName.indexOf('node_modules/') === 0) {
// depNameClean = depName.substring('node_modules/'.length)
// }
const depNameClean = this.extractedPackageName(depName)

npmDepMap[`${depName}@${depMetadata.version}-${hashedDepValues}`] = depMetadataShortend
npmDepMap[`${depNameClean}@${depMetadata.version}-${hashedDepValues}`] = depMetadataShortend

const nestedDepsTree = depMetadata.dependencies

Expand All @@ -242,6 +243,19 @@ class ParseLockfile {

return npmDepMap
}

extractedPackageName (packageName) {
const parts = packageName.split('/')
const lastIndex = parts.lastIndexOf('node_modules')

if (lastIndex === -1) {
// If "node_modules" is not found, return the last part of the input
return parts[parts.length - 1]
} else {
// If "node_modules" is found, return the part after it
return parts.slice(lastIndex + 1).join('/')
}
}
}

module.exports = ParseLockfile

0 comments on commit e3f3f07

Please sign in to comment.