synp
Advanced tools
Comparing version 1.9.0 to 1.9.1
@@ -0,1 +1,8 @@ | ||
## [1.9.1](https://github.com/imsnif/synp/compare/v1.9.0...v1.9.1) (2020-09-26) | ||
### Bug Fixes | ||
* attach deps meta to pkg-lock resolved entries ([51db17f](https://github.com/imsnif/synp/commit/51db17f4ed03b4eadc21337617572d6a648a3b22)), closes [#55](https://github.com/imsnif/synp/issues/55) | ||
# [1.9.0](https://github.com/imsnif/synp/compare/v1.8.3...v1.9.0) (2020-09-26) | ||
@@ -2,0 +9,0 @@ |
@@ -6,3 +6,2 @@ 'use strict' | ||
const { formatNpmIntegrity, formatYarnIntegrity, parseIntegrity, sha1ToHexChecksum, hexChecksumToSha1 } = require('./integrity') | ||
const { npmRequires } = require('./dependencies') | ||
@@ -69,44 +68,71 @@ const parse = (input) => url.parse ? url.parse(input) : new url.URL(input) // eslint-disable-line | ||
module.exports = { | ||
npmEntry (nodeModulesTree, yarnObject, mPath) { | ||
const { name, version, dependencies } = nodeModulesTree[mPath] | ||
const { request, entry: entryInYarnFile } = findPackageInYarnLock(name, version, yarnObject) | ||
if (!entryInYarnFile) return null // likely a bundled dependency | ||
const yarnResolved = entryInYarnFile.resolved | ||
const entry = yarnToNpmResolved(version, yarnResolved, request, entryInYarnFile.integrity) | ||
if (dependencies && Object.keys(dependencies).length > 0) { | ||
entry.requires = npmRequires(dependencies, yarnObject) | ||
} | ||
const npmEntry = (nodeModulesTree, yarnObject, mPath) => { | ||
const { name, version, dependencies } = nodeModulesTree[mPath] | ||
const { request, entry: entryInYarnFile } = findPackageInYarnLock(name, version, yarnObject) | ||
if (!entryInYarnFile) return null // likely a bundled dependency | ||
const yarnResolved = entryInYarnFile.resolved | ||
const entry = yarnToNpmResolved(version, yarnResolved, request, entryInYarnFile.integrity) | ||
return entry | ||
}, | ||
yarnEntry (entry, allDeps, flattenedPackageLock, tree) { | ||
const { name, version } = entry | ||
const entryInNpmFile = findEntryInPackageLock(entry, flattenedPackageLock) | ||
if (!entryInNpmFile) return null // likely a bundled dependency | ||
const { | ||
resolved, | ||
integrity | ||
} = entryInNpmFile | ||
const integrityChunks = parseIntegrity(integrity) | ||
const yarnStyleResolved = npmToYarnResolved(resolved || version, integrityChunks.sha1) | ||
const existingPackage = tree[name] || {} | ||
const existingPackageVersion = tree[name] && tree[name][version] | ||
? tree[name][version] | ||
: {} | ||
const { dependencies, optionalDependencies } = allDeps | ||
const hasDeps = dependencies && Object.keys(dependencies).length > 0 | ||
const hasOptionalDeps = optionalDependencies && | ||
Object.keys(optionalDependencies).length > 0 | ||
if (dependencies && Object.keys(dependencies).length > 0) { | ||
const resolvedDeps = Object.keys(dependencies).reduce((m, name) => { | ||
const childPath = `${mPath}/node_modules/${name}` | ||
return Object.assign({}, existingPackage, { | ||
[version]: Object.assign({}, existingPackageVersion, { | ||
resolved: yarnStyleResolved, | ||
integrity: formatYarnIntegrity(integrityChunks.sha512 || integrityChunks.sha1) | ||
}, | ||
hasDeps ? { dependencies } : {}, | ||
hasOptionalDeps ? { optionalDependencies } : {} | ||
) | ||
}) | ||
if (nodeModulesTree[childPath]) { | ||
const childEntry = npmEntry(nodeModulesTree, yarnObject, childPath) | ||
if (childEntry) { | ||
m[name] = { | ||
version: childEntry.version, | ||
resolved: childEntry.resolved, | ||
integrity: childEntry.integrity, | ||
requires: childEntry.requires | ||
} | ||
} | ||
} | ||
return m | ||
}, {}) | ||
entry.requires = dependencies | ||
if (Object.keys(resolvedDeps).length) { | ||
entry.dependencies = resolvedDeps | ||
} | ||
} | ||
return entry | ||
} | ||
const yarnEntry = (entry, allDeps, flattenedPackageLock, tree) => { | ||
const { name, version } = entry | ||
const entryInNpmFile = findEntryInPackageLock(entry, flattenedPackageLock) | ||
if (!entryInNpmFile) return null // likely a bundled dependency | ||
const { | ||
resolved, | ||
integrity | ||
} = entryInNpmFile | ||
const integrityChunks = parseIntegrity(integrity) | ||
const yarnStyleResolved = npmToYarnResolved(resolved || version, integrityChunks.sha1) | ||
const existingPackage = tree[name] || {} | ||
const existingPackageVersion = tree[name] && tree[name][version] | ||
? tree[name][version] | ||
: {} | ||
const { dependencies, optionalDependencies } = allDeps | ||
const hasDeps = dependencies && Object.keys(dependencies).length > 0 | ||
const hasOptionalDeps = optionalDependencies && | ||
Object.keys(optionalDependencies).length > 0 | ||
return Object.assign({}, existingPackage, { | ||
[version]: Object.assign({}, existingPackageVersion, { | ||
resolved: yarnStyleResolved, | ||
integrity: formatYarnIntegrity(integrityChunks.sha512 || integrityChunks.sha1) | ||
}, | ||
hasDeps ? { dependencies } : {}, | ||
hasOptionalDeps ? { optionalDependencies } : {} | ||
) | ||
}) | ||
} | ||
module.exports = { | ||
npmEntry, | ||
yarnEntry | ||
} |
{ | ||
"name": "synp", | ||
"version": "1.9.0", | ||
"version": "1.9.1", | ||
"description": "Convert yarn.lock to package-lock.json and vice versa", | ||
@@ -49,3 +49,3 @@ "keywords": [ | ||
"nyc": "15.1.0", | ||
"semantic-release": "^17.1.1", | ||
"semantic-release": "^17.1.2", | ||
"sinon": "^9.0.3", | ||
@@ -52,0 +52,0 @@ "standard": "^14.3.4", |
@@ -74,3 +74,3 @@ 'use strict' | ||
const res = yarnToNpm(path).replace( | ||
/registry.yarnpkg.com/g, | ||
/registry\.yarnpkg\.com/g, | ||
'registry.npmjs.org' | ||
@@ -77,0 +77,0 @@ ) |
62784
1612