From db2953aa5325f2aface0ceb4b60e3916ae0e7a2b Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Sat, 17 Mar 2018 23:30:09 +0200 Subject: [PATCH] feat: add nameVerFromPkgSnapshot() --- README.md | 2 ++ src/index.ts | 2 ++ src/nameVerFromPkgSnapshot.ts | 21 +++++++++++++++++++++ test/index.ts | 1 + test/nameVerFromPkgSnapshot.ts | 19 +++++++++++++++++++ 5 files changed, 45 insertions(+) create mode 100644 src/nameVerFromPkgSnapshot.ts create mode 100644 test/nameVerFromPkgSnapshot.ts diff --git a/README.md b/README.md index f021ef27de..94676641c9 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,8 @@ Writes the current shrinkwrap file only. Fails if there is no `node_modules` dir Prunes a shrinkwrap file. Prunning means removing packages that are not referenced. +### `nameVerFromPkgSnapshot(relDepPath, pkgSnapshot): {name: string, version: string}` + ## License [MIT](LICENSE) diff --git a/src/index.ts b/src/index.ts index 93a0635e59..d69bdfdcf3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ export * from './read' export * from './types' import existsWanted from './existsWanted' +import nameVerFromPkgSnapshot from './nameVerFromPkgSnapshot' import prune from './prune' import write, { writeCurrentOnly, @@ -11,6 +12,7 @@ import write, { export { existsWanted, + nameVerFromPkgSnapshot, prune, write, writeWantedOnly, diff --git a/src/nameVerFromPkgSnapshot.ts b/src/nameVerFromPkgSnapshot.ts new file mode 100644 index 0000000000..8425e3c036 --- /dev/null +++ b/src/nameVerFromPkgSnapshot.ts @@ -0,0 +1,21 @@ +import * as dp from 'dependency-path' +import {PackageSnapshot} from './types' + +export default ( + relDepPath: string, + pkgSnapshot: PackageSnapshot, +) => { + if (!pkgSnapshot.name) { + const pkgInfo = dp.parse(relDepPath) + return { + // tslint:disable:no-string-literal + name: pkgInfo['name'], + version: pkgInfo['version'], + // tslint:enable:no-string-literal + } + } + return { + name: pkgSnapshot.name, + version: pkgSnapshot.version, + } +} diff --git a/test/index.ts b/test/index.ts index b7985f4592..094562f406 100644 --- a/test/index.ts +++ b/test/index.ts @@ -1,2 +1,3 @@ import './prune' import './read' +import './nameVerFromPkgSnapshot' diff --git a/test/nameVerFromPkgSnapshot.ts b/test/nameVerFromPkgSnapshot.ts new file mode 100644 index 0000000000..148bf7a9f4 --- /dev/null +++ b/test/nameVerFromPkgSnapshot.ts @@ -0,0 +1,19 @@ +import {nameVerFromPkgSnapshot} from 'pnpm-shrinkwrap' +import test = require('tape') + +test('nameVerFromPkgSnapshot()', (t) => { + t.deepEqual(nameVerFromPkgSnapshot('/some-weird-path', { + name: 'foo', + version: '1.0.0', + }), { + name: 'foo', + version: '1.0.0', + }) + + t.deepEqual(nameVerFromPkgSnapshot('/foo/1.0.0', {}), { + name: 'foo', + version: '1.0.0', + }) + + t.end() +})