Compare commits

..
10 Commits
Author SHA1 Message Date
Github Actions 3112e43715 [CI Skip] 2.2.1
skip-checks: true
2020-02-06 14:46:00 +00:00
Jaco Greeff fc9a5ac25f 2.2 (#520) 2020-02-06 15:44:11 +01:00
Github Actions 242b107752 [CI Skip] 2.2.0-beta.0
skip-checks: true
2020-02-06 13:51:56 +00:00
Jaco Greeff bf5ba0f405 Add resolver for jest (#519) 2020-02-06 14:49:55 +01:00
Github Actions e4de3a1339 [CI Skip] 2.1.1
skip-checks: true
2020-02-04 12:53:47 +00:00
Jaco Greeff 69279f1b81 2.1 (#518) 2020-02-04 13:51:51 +01:00
Github Actions 303c822d48 [CI Skip] 2.1.0-beta.1
skip-checks: true
2020-02-04 10:39:58 +00:00
Jaco Greeff 90ca8a0d78 Backwards compat. on detctPackage (#517) 2020-02-04 11:38:00 +01:00
Github Actions 94bbc6f2ee [CI Skip] 2.1.0-beta.0
skip-checks: true
2020-02-03 12:23:51 +00:00
Jaco Greeff f4be1fe52e Multiple versions with __dirname (#515)
* Multiple versions with __dirname

* Fallback for __dirname

* Update path

* Flatten versions extracted

* Expand display for versions
2020-02-03 13:21:46 +01:00
11 changed files with 78 additions and 28 deletions
+8
View File
@@ -1,3 +1,11 @@
# 2.2.1
- Add resolved for jest requires (tests from src)
# 2.1.1
- Update `detectPackage(<package.json>, __dirname?)` with calling folder
# 2.0.1
- Update w3f/schnorrkel to 0.8.5 (Full Substrate 2.x support, no 1.x support)
+2 -1
View File
@@ -17,5 +17,6 @@ module.exports = Object.assign({}, config, {
'<rootDir>/packages/util/build',
'<rootDir>/packages/util-crypto/build',
'<rootDir>/packages/util-rlp/build'
]
],
resolver: './jest.resolver.js'
});
+15
View File
@@ -0,0 +1,15 @@
// Copyright 2017-2020 @polkadot/util authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('path');
module.exports = function resolver (file, config) {
if (file.includes('package.json')) {
console.error(file, config);
return path.join(config.basedir.replace('/src', '/'), file);
}
return config.defaultResolver(file, config);
};
+1 -1
View File
@@ -9,5 +9,5 @@
"packages": [
"packages/*"
],
"version": "2.0.1"
"version": "2.2.1"
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"version": "2.0.1",
"version": "2.2.1",
"private": true,
"engines": {
"yarn": "^1.10.1"
+3 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/keyring",
"version": "2.0.1",
"version": "2.2.1",
"description": "Keyring management",
"main": "index.js",
"publishConfig": {
@@ -26,12 +26,9 @@
"url": "https://github.com/polkadot-js/common/issues"
},
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/keyring#readme",
"browser": {
"../package.json": "./package.json"
},
"dependencies": {
"@babel/runtime": "^7.8.3",
"@polkadot/util": "^2.0.1",
"@polkadot/util-crypto": "^2.0.1"
"@polkadot/util": "^2.2.1",
"@polkadot/util-crypto": "^2.2.1"
}
}
+4 -6
View File
@@ -7,16 +7,14 @@ import { decodeAddress, encodeAddress, setSS58Format } from '@polkadot/util-cryp
import Keyring from './keyring';
let pkgJson;
// eslint-disable-next-line no-useless-catch
try {
pkgJson = require('./package.json');
// eslint-disable-next-line @typescript-eslint/no-var-requires
detectPackage(require('./package.json'), __dirname);
} catch (error) {
pkgJson = require('../package.json');
throw error;
}
detectPackage(pkgJson);
export default Keyring;
export {
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/util-crypto",
"version": "2.0.1",
"version": "2.2.1",
"description": "A collection of useful crypto utilities for @polkadot",
"main": "index.js",
"keywords": [
@@ -26,7 +26,7 @@
"homepage": "https://github.com/polkadot-js/common/tree/master/packages/util-crypto#readme",
"dependencies": {
"@babel/runtime": "^7.8.3",
"@polkadot/util": "^2.0.1",
"@polkadot/util": "^2.2.1",
"@polkadot/wasm-crypto": "^0.20.1",
"@types/bs58": "^4.0.0",
"@types/elliptic": "^6.4.12",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@polkadot/util",
"version": "2.0.1",
"version": "2.2.1",
"description": "A collection of useful utilities for @polkadot",
"main": "index.js",
"keywords": [
+8 -3
View File
@@ -5,10 +5,15 @@
import { detectPackage } from '.';
describe('assertSingletonPackage', (): void => {
const PKG = '@polkadot/util';
const VER1 = '9.8.0-beta.45';
const VER2 = '9.7.1';
const PATH = '/Users/jaco/Projects/polkadot-js/api/node_modules/@polkadot/util';
it('should not log the first time', (): void => {
const spy = jest.spyOn(console, 'warn');
detectPackage({ name: '@polkadot/util', version: 'a.b.c-1st' });
detectPackage({ name: PKG, version: VER1 }, `${PATH}/01`);
expect(spy).not.toHaveBeenCalled();
spy.mockRestore();
});
@@ -16,8 +21,8 @@ describe('assertSingletonPackage', (): void => {
it('should log the second time', (): void => {
const spy = jest.spyOn(console, 'warn');
detectPackage({ name: '@polkadot/util', version: 'a.b.c-2nd' });
expect(spy).toHaveBeenCalledWith('Multiple versions of @polkadot/util detected: a.b.c-1st, a.b.c-2nd. Ensure that there is only one version in your dependency tree');
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();
});
});
+33 -7
View File
@@ -3,27 +3,51 @@
// of the Apache-2.0 license. See the LICENSE file for details.
import assert from './assert';
import isString from './is/string';
// eslint-disable-next-line no-undef
type This = typeof globalThis;
interface PjsChecks extends This {
__polkadotjs: Record<string, string[]>;
}
interface PackageJson {
name: string;
version: string;
}
interface VersionPath {
path?: string;
version: string;
}
interface PjsChecks extends This {
__polkadotjs: Record<string, VersionPath[]>;
}
type PjsGlobal = NodeJS.Global & PjsChecks;
type PjsWindow = Window & PjsChecks;
function expandPath (path?: string): string {
return (!path || path.length < 5) ? '<unknown path>' : path;
}
/** @internal */
function flattenVersions (_all: (VersionPath | string)[]): string {
const all: VersionPath[] = _all.map((version: VersionPath | string): VersionPath =>
isString(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${expandPath(path)}`)
.join('\n');
}
/**
* @name detectPackage
* @summary Checks that a specific package is only imported once
*/
export default function detectPackage ({ 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;
@@ -34,9 +58,11 @@ export default function detectPackage ({ name, version }: PackageJson): void {
assert(name.startsWith('@polkadot'), `Invalid package descriptor ${name}`);
_global.__polkadotjs[name] = [...(_global.__polkadotjs[name] || []), version];
_global.__polkadotjs[name] = [...(_global.__polkadotjs[name] || []), { path, version }];
if (_global.__polkadotjs[name].length !== 1) {
console.warn(`Multiple versions of ${name} detected: ${_global.__polkadotjs[name].join(', ')}. Ensure that there is only one version in your dependency tree`);
const versions = flattenVersions(_global.__polkadotjs[name]);
console.warn(`Multiple instances of ${name} detected, ensure that there is only one package in your dependency tree.\n${versions}`);
}
}