Socket
Socket
Sign inDemoInstall

synp

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

synp - npm Package Compare versions

Comparing version 1.7.1 to 1.8.0

lib/lockfileV1/dependencies.js

33

lib/index.js
'use strict'
const lockfile = require('@yarnpkg/lockfile')
const eol = require('eol')
const nmtree = require('nmtree')
const { buildYarnTree, buildNpmTree } = require('./tree')
const { join } = require('path')
const { readJson } = require('../util/read')
const { convertYarnToNpmV1, convertNpmV1ToYarn } = require('./lockfileV1')
const { convertYarnToNpmV2, convertNpmV2ToYarn } = require('./lockfileV2')
module.exports = {
convertYarnToNpm (yarnLock, name, version, packageDir) {
const yarnLockNormalized = eol.lf(yarnLock)
const yarnObject = lockfile.parse(yarnLockNormalized).object
const nodeModulesTree = nmtree(packageDir)
const dependencies = buildNpmTree(nodeModulesTree, yarnObject)
return JSON.stringify({
name,
version,
lockfileVersion: 1,
requires: true,
dependencies
})
const packageJson = readJson(join(packageDir, 'package.json'))
// NOTE workspaces require lockfile v2
return packageJson.workspaces
? convertYarnToNpmV2(yarnLock, name, version, packageDir, packageJson)
: convertYarnToNpmV1(yarnLock, name, version, packageDir, packageJson)
},
convertNpmToYarn (packageLockFileString, packageDir) {
const packageLock = JSON.parse(packageLockFileString)
const nodeModulesTree = nmtree(packageDir)
const yarnTree = buildYarnTree(nodeModulesTree, packageLock)
return lockfile.stringify(yarnTree)
const { lockfileVersion } = packageLock
return lockfileVersion === 2
? convertNpmV2ToYarn(packageLockFileString, packageDir)
: convertNpmV1ToYarn(packageLockFileString, packageDir)
}
}
{
"name": "synp",
"version": "1.7.1",
"version": "1.8.0",
"description": "Convert yarn.lock to package-lock.json and vice versa",

@@ -19,3 +19,4 @@ "keywords": [

"scripts": {
"test": "standard && tape ./test/*.spec.js",
"test": "standard && npm run test:unit",
"test:unit": "tape ./test/*.spec.js",
"coverage": "nyc --reporter=lcov npm test",

@@ -31,17 +32,19 @@ "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls"

"dependencies": {
"@yarnpkg/lockfile": "^1.0.0",
"colors": "^1.1.2",
"commander": "^2.11.0",
"@yarnpkg/lockfile": "^1.1.0",
"bash-glob": "^2.0.0",
"colors": "^1.4.0",
"commander": "^6.0.0",
"eol": "^0.9.1",
"lodash": "4.17.13",
"nmtree": "^1.0.3",
"request": "^2.79.0"
"lodash": "4.17.20",
"nmtree": "^1.0.6",
"request": "^2.88.2",
"sort-object-keys": "^1.1.3"
},
"devDependencies": {
"coveralls": "^3.0.0",
"nyc": "13.3.0",
"sinon": "^4.1.2",
"standard": "^12.0.0",
"tape": "^4.8.0"
"coveralls": "^3.1.0",
"nyc": "15.1.0",
"sinon": "^4.5.0",
"standard": "^14.3.4",
"tape": "^5.0.1"
}
}

@@ -313,3 +313,3 @@ 'use strict'

test('translate package-lock to yarn.lock when integrity is absent', async t => {
test('translate package-lock to yarn.lock when integrity url hash is absent, but integrity field is present', async t => {
try {

@@ -320,2 +320,3 @@ t.plan(1)

const res = npmToYarn(path)
t.deepEquals(

@@ -399,1 +400,29 @@ lockfile.parse(res),

})
test('translate yarn.lock with workspaces to package-lock and vice versa', async t => {
try {
t.plan(2)
const path = `${__dirname}/fixtures/yarn-workspace`
const packageLockSnap = fs.readFileSync(`${path}/.package-lock-snapshot.json`, 'utf-8')
const yarnLockSnap = fs.readFileSync(`${path}/.yarn-lock-snapshot`, 'utf-8')
fs.writeFileSync(`${path}/yarn.lock`, yarnLockSnap)
const packageLock = yarnToNpm(path)
t.deepEquals(
JSON.parse(packageLock),
JSON.parse(packageLockSnap),
'result is equal to package-lock.json snapshot'
)
fs.writeFileSync(`${path}/package-lock.json`, packageLockSnap)
const yarnLock = npmToYarn(path)
t.deepEquals(
lockfile.parse(yarnLock),
lockfile.parse(yarnLockSnap),
'result is equal to yarn.lock snapshot'
)
} catch (e) {
t.fail(e.stack)
t.end()
}
})

@@ -16,3 +16,4 @@ 'use strict'

function replaceNonSha1 (yarnObj, resolvedWithNonSha1Hashes) {
return Object.assign({}, yarnObj, { object:
return Object.assign({}, yarnObj, {
object:
Object.keys(yarnObj.object).reduce((memo, packageName) => {

@@ -32,7 +33,8 @@ const entry = yarnObj.object[packageName]

function normalizePackageLock (npmObj, resolvedWithNonSha1Hashes) {
return Object.assign({}, npmObj, { dependencies:
return Object.assign({}, npmObj, {
dependencies:
Object.keys(npmObj.dependencies).reduce((memo, packageName) => {
const entry = npmObj.dependencies[packageName]
if (resolvedWithNonSha1Hashes.indexOf(entry.resolved) !== -1) {
memo[packageName] = Object.assign({}, entry, { integrity: `N/A` })
memo[packageName] = Object.assign({}, entry, { integrity: 'N/A' })
} else {

@@ -39,0 +41,0 @@ memo[packageName] = entry

@@ -62,3 +62,3 @@ 'use strict'

Object.keys(entry).forEach(version => {
const { semvers } = entry[version]
const { semvers, integrity } = entry[version]
const nonUrlVersion = extractVersion(version, packageName)

@@ -80,6 +80,8 @@ semvers && semvers.forEach(sver => {

}
formatted[`${packageName}@${sver}`] = Object.assign({}, versionEntry, {
semvers: undefined,
version: nonUrlVersion,
resolved
resolved,
integrity
})

@@ -86,0 +88,0 @@ })

@@ -6,11 +6,9 @@ 'use strict'

function parentPackagePath (parentPath) {
const dirs = parentPath.split(path.sep)
const pathDirs = dirs.slice(0, dirs.length - 1)
if (pathDirs[pathDirs.length - 1] === 'node_modules') {
return parentPackagePath(pathDirs.join(path.sep))
} else if (pathDirs.join(path.sep) === parentPath) {
const nmPos = parentPath.lastIndexOf('/node_modules/')
if (nmPos === -1) {
throw new Error('Could not find parent dir!')
} else {
return pathDirs.join(path.sep)
}
return parentPath.slice(0, nmPos)
}

@@ -78,3 +76,4 @@

}, [])
}
},
parentPackagePath
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc