diff --git a/packages/keyring/src/index.ts b/packages/keyring/src/index.ts index b726ab316..0a862e670 100644 --- a/packages/keyring/src/index.ts +++ b/packages/keyring/src/index.ts @@ -7,7 +7,7 @@ import { decodeAddress, encodeAddress, setSS58Format } from '@polkadot/util-cryp import Keyring from './keyring'; -let dirname = 'node_modules'; +let dirname; let pkgJson; try { @@ -22,7 +22,7 @@ try { pkgJson = require('../package.json'); } -detectPackage(dirname, pkgJson); +detectPackage(pkgJson, dirname); export default Keyring; diff --git a/packages/util/src/detectPackage.spec.ts b/packages/util/src/detectPackage.spec.ts index 09c0fcdae..80b5c1479 100644 --- a/packages/util/src/detectPackage.spec.ts +++ b/packages/util/src/detectPackage.spec.ts @@ -13,7 +13,7 @@ describe('assertSingletonPackage', (): void => { it('should not log the first time', (): void => { const spy = jest.spyOn(console, 'warn'); - detectPackage(`${PATH}/01`, { name: PKG, version: VER1 }); + detectPackage({ name: PKG, version: VER1 }, `${PATH}/01`); expect(spy).not.toHaveBeenCalled(); spy.mockRestore(); }); @@ -21,7 +21,7 @@ describe('assertSingletonPackage', (): void => { it('should log the second time', (): void => { const spy = jest.spyOn(console, 'warn'); - detectPackage(`${PATH}/02`, { name: PKG, version: VER2 }); + detectPackage({ name: PKG, version: VER2 }, `${PATH}/02`); expect(spy).toHaveBeenCalledWith(`Multiple instances of @polkadot/util detected, ensure that there is only one package in your dependency tree.\n\t${VER1}\t${PATH}/01\n\t${VER2} \t${PATH}/02`); spy.mockRestore(); }); diff --git a/packages/util/src/detectPackage.ts b/packages/util/src/detectPackage.ts index 218f01b35..4cde7b680 100644 --- a/packages/util/src/detectPackage.ts +++ b/packages/util/src/detectPackage.ts @@ -14,7 +14,7 @@ interface PackageJson { } interface VersionPath { - path: string; + path?: string; version: string; } @@ -25,17 +25,21 @@ interface PjsChecks extends This { type PjsGlobal = NodeJS.Global & PjsChecks; type PjsWindow = Window & PjsChecks; +function expandPath (path?: string): string { + return (!path || path.length < 5) ? '' : path; +} + /** @internal */ function flattenVersions (_all: (VersionPath | string)[]): string { const all: VersionPath[] = _all.map((version: VersionPath | string): VersionPath => isString(version) - ? { path: '', version } + ? { version } : version ); const verLength = all.reduce((max, { version }): number => Math.max(max, version.length), 0); return all - .map(({ path, version }): string => `\t${version.padEnd(verLength)}\t${path}`) + .map(({ path, version }): string => `\t${version.padEnd(verLength)}\t${expandPath(path)}`) .join('\n'); } @@ -43,7 +47,7 @@ function flattenVersions (_all: (VersionPath | string)[]): string { * @name detectPackage * @summary Checks that a specific package is only imported once */ -export default function detectPackage (path: string, { name, version }: PackageJson): void { +export default function detectPackage ({ name, version }: PackageJson, path?: string): void { const _global = typeof window !== 'undefined' ? window as PjsWindow : global as PjsGlobal;