Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c93438754f | ||
|
|
3b542acc47 | ||
|
|
473b455373 | ||
|
|
4ecdd4d803 | ||
|
|
9a67ff2fc1 | ||
|
|
eebe754c92 | ||
|
|
f285f2ff58 | ||
|
|
cf28882540 | ||
|
|
fc08babdaf | ||
|
|
666fc8f702 | ||
|
|
d2a28ca315 | ||
|
|
67e867a72e | ||
|
|
abe4e5b340 | ||
|
|
a5fdaf1f1c | ||
|
|
3b7b85e835 | ||
|
|
6119c57d46 | ||
|
|
6279b3b926 | ||
|
|
50b4e2bd07 | ||
|
|
252a8a8554 | ||
|
|
83fd6ad0c0 | ||
|
|
420f8f095b | ||
|
|
8a3ee3588d | ||
|
|
62e5e5e23e | ||
|
|
a456a4c9df | ||
|
|
9a9c1f50ee | ||
|
|
7ad8333f2e | ||
|
|
ec99102a78 | ||
|
|
36c7da623b | ||
|
|
7bb148eea9 | ||
|
|
ee039545be | ||
|
|
e15651ac9c | ||
|
|
f92e276a0d | ||
|
|
a51ef7bccc | ||
|
|
bf8a295d64 | ||
|
|
d2bbf6bb0e | ||
|
|
60cc5fbd4b | ||
|
|
dae851297b | ||
|
|
fa9eef757a |
@@ -1,19 +0,0 @@
|
||||
// Copyright 2017-2023 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const base = require('@polkadot/dev/config/eslint.cjs');
|
||||
|
||||
module.exports = {
|
||||
...base,
|
||||
ignorePatterns: [
|
||||
...base.ignorePatterns,
|
||||
'jest/**/*',
|
||||
'**/*.d.ts'
|
||||
],
|
||||
parserOptions: {
|
||||
...base.parserOptions,
|
||||
project: [
|
||||
'./tsconfig.eslint.json'
|
||||
]
|
||||
}
|
||||
};
|
||||
@@ -17,5 +17,5 @@ jobs:
|
||||
node-version: 'lts/*'
|
||||
- name: ${{ matrix.step }}
|
||||
run: |
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
yarn install --immutable
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
@@ -27,5 +27,5 @@ jobs:
|
||||
node-version: 'lts/*'
|
||||
- name: ${{ matrix.step }}
|
||||
run: |
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
yarn install --immutable
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2023 @polkadot/ui authors & contributors
|
||||
// Copyright 2017-2023 @polkadot/ui-shared authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
module.exports = require('@polkadot/dev/config/prettier.cjs');
|
||||
|
||||
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"eslint.enable": true,
|
||||
"eslint.experimental.useFlatConfig": true
|
||||
}
|
||||
@@ -2,6 +2,11 @@ enableImmutableInstalls: false
|
||||
|
||||
enableProgressBars: false
|
||||
|
||||
logFilters:
|
||||
# Discard any "cannot be found in cache" messages
|
||||
- code: YN0013
|
||||
level: discard
|
||||
|
||||
nodeLinker: node-modules
|
||||
|
||||
plugins:
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 3.6.2 Aug 23, 2023
|
||||
|
||||
Changes:
|
||||
|
||||
- Bump to `@polkadot/util` 12.4.2
|
||||
|
||||
|
||||
## 3.6.1 Aug 21, 2023
|
||||
|
||||
Changes:
|
||||
|
||||
- Update to latest React `styled-components`
|
||||
- Bump to `@polkadot/util` 12.4.1
|
||||
|
||||
|
||||
## 3.5.1 Jun 11, 2023
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust object index access for stricter tsconfig settings
|
||||
- Bump to `@polkadot/util` 12.3.1
|
||||
|
||||
|
||||
## 3.4.2 Jun 5, 2023
|
||||
|
||||
- Bump to `@polkadot/util` 12.2.2
|
||||
|
||||
|
||||
## 3.4.1 May 13, 2023
|
||||
|
||||
Changes:
|
||||
|
||||
- Add `module` to `package.json` export map (ESM-only)
|
||||
- Bump to `@polkadot/util` 12.2.1
|
||||
|
||||
|
||||
## 3.3.1 May 7, 2023
|
||||
|
||||
Contributed:
|
||||
|
||||
- Adjust `vue-identicon` to be Vue 3 compatible (Thanks to https://github.com/Gavin-Gong)
|
||||
|
||||
Changes:
|
||||
|
||||
- Bump to `@polkadot/util` 12.1.2
|
||||
|
||||
|
||||
## 3.2.2 Apr 29, 2023
|
||||
|
||||
Changes:
|
||||
|
||||
+3
-1
@@ -1,4 +1,4 @@
|
||||
710 Jaco 3.2.2 (#754)
|
||||
727 Jaco 3.6.2 (#773)
|
||||
7 YJ fix #224: decrease frame size to 1024, set multipart bool (#225)
|
||||
4 Antoine Estienne Refactor logic to better use prefix (#491)
|
||||
4 kwingram25 fix ff api url issue (#289)
|
||||
@@ -21,6 +21,7 @@
|
||||
1 Derek Colley Remove redundant `div` wrappers in vue-identicon (#643)
|
||||
1 Harry Liu Update README.md (#166)
|
||||
1 Jake Naviasky Add Edgeware chain prefix to settings. (#317)
|
||||
1 Jeeyong Um Fix outdated links in README.md (#772)
|
||||
1 Logan Saether Propose W3F node (#188)
|
||||
1 Lovesh Harchandani Allow Ledger support for Dock (#425)
|
||||
1 Luke Schoen Fix typo in heading (#114)
|
||||
@@ -33,4 +34,5 @@
|
||||
1 WoeOm add darwinia ss58 (#379)
|
||||
1 yuhui1208 [Stores] make FileStroe read key safely (#338)
|
||||
1 Yuri Add webpack 5 support (#557)
|
||||
1 Zen feat: adapt Vue 3.x (#755)
|
||||
1 菩提 fix some bugs (#260)
|
||||
@@ -13,6 +13,6 @@ The following UI components are currently available -
|
||||
|
||||
Additionally some shared libraries, that are not dependent on any framework -
|
||||
|
||||
- [ui-keyring](packages/ui-keyring/) A browser-specific wrapper around the base [@polkadot/util-keyring](https://github.com/polkadot-js/util/) library
|
||||
- [ui-keyring](packages/ui-keyring/) A browser-specific wrapper around the base [@polkadot/keyring](https://github.com/polkadot-js/common/) library
|
||||
- [ui-settings](packages/ui-settings/) A browser local storage wrapper for app settings & configuration
|
||||
- [ui-shared](packages/ui-shared) Shared logic that is used across UI components, e.g. for icon generation
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright 2017-2023 @polkadot/ui-shared authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import baseConfig from '@polkadot/dev/config/eslint';
|
||||
|
||||
export default [
|
||||
...baseConfig
|
||||
];
|
||||
+8
-8
@@ -14,10 +14,10 @@
|
||||
},
|
||||
"sideEffects": false,
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"versions": {
|
||||
"git": "3.2.2",
|
||||
"npm": "3.2.2"
|
||||
"git": "3.6.2",
|
||||
"npm": "3.6.2"
|
||||
},
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
@@ -33,15 +33,15 @@
|
||||
"test:one": "polkadot-dev-run-test --env browser"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/dev": "^0.73.6",
|
||||
"@polkadot/x-bundle": "^12.1.1",
|
||||
"@types/node": "^18.16.3",
|
||||
"@polkadot/dev": "^0.76.18",
|
||||
"@polkadot/x-bundle": "^12.4.2",
|
||||
"@types/node": "^20.5.3",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-is": "^18.2.0",
|
||||
"react-native": "^0.71.7"
|
||||
"react-native": "^0.72.4"
|
||||
},
|
||||
"resolutions": {
|
||||
"typescript": "^5.0.4"
|
||||
"typescript": "^5.1.6"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,24 +18,23 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@polkadot/keyring": "^12.1.1",
|
||||
"@polkadot/ui-settings": "3.2.2",
|
||||
"@polkadot/ui-shared": "3.2.2",
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"@polkadot/util-crypto": "^12.1.1",
|
||||
"@polkadot/keyring": "^12.4.2",
|
||||
"@polkadot/ui-settings": "3.6.2",
|
||||
"@polkadot/ui-shared": "3.6.2",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"@polkadot/util-crypto": "^12.4.2",
|
||||
"ethereum-blockies-base64": "^1.0.2",
|
||||
"jdenticon": "3.2.0",
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
"styled-components": "^5.3.10",
|
||||
"tslib": "^2.5.0"
|
||||
"styled-components": "^6.0.7",
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-copy-to-clipboard": "^5.0.4",
|
||||
"@types/react-dom": "^18.2.1",
|
||||
"@types/styled-components": "^5.1.26",
|
||||
"@types/react-dom": "^18.2.7",
|
||||
"xmlserializer": "^0.6.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
@@ -10,7 +10,7 @@ import { beachballIcon } from '@polkadot/ui-shared';
|
||||
function Identicon ({ address, className = '', size, style = {} }: Props): React.ReactElement<Props> {
|
||||
const updateElem = useCallback(
|
||||
(node: HTMLDivElement): void => {
|
||||
node && node.appendChild(
|
||||
node?.appendChild(
|
||||
beachballIcon(address, { isAlternative: false, size })
|
||||
);
|
||||
},
|
||||
|
||||
@@ -28,7 +28,7 @@ function Identicon ({ address, className = '', size, style = {} }: Props): React
|
||||
);
|
||||
}
|
||||
|
||||
const StyledImg = styled.img(({ size }: ImgProps) => `
|
||||
const StyledImg = styled.img<ImgProps>(({ size }) => `
|
||||
display: block;
|
||||
height: ${size}px;
|
||||
width: ${size}px;
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
// Copyright 2017-2023 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { StyledInterface } from 'styled-components';
|
||||
|
||||
import styledComponents from 'styled-components';
|
||||
|
||||
// In styled-components v6, there is a named export which can be used
|
||||
// directly, i.e. "import { styled } from ..." with no more magic. Until
|
||||
// such time the cjs vs esm import here is problematic, so we hack around
|
||||
// the various shapes below
|
||||
export const styled = (
|
||||
(styledComponents as unknown as { styled: StyledInterface }).styled ||
|
||||
(styledComponents as unknown as { default: StyledInterface }).default ||
|
||||
styledComponents as unknown as StyledInterface
|
||||
);
|
||||
export { styled } from 'styled-components';
|
||||
|
||||
@@ -18,20 +18,19 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@polkadot/ui-settings": "3.2.2",
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"@polkadot/util-crypto": "^12.1.1",
|
||||
"@polkadot/ui-settings": "3.6.2",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"@polkadot/util-crypto": "^12.4.2",
|
||||
"qrcode-generator": "^1.4.4",
|
||||
"react-qr-reader": "^2.2.1",
|
||||
"styled-components": "^5.3.10",
|
||||
"tslib": "^2.5.0"
|
||||
"styled-components": "^6.0.7",
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-qr-reader": "^2.1.4",
|
||||
"@types/styled-components": "^5.1.26"
|
||||
"@types/react-qr-reader": "^2.1.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// Copyright 2017-2023 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { HexString } from '@polkadot/util/types';
|
||||
|
||||
import React, { useCallback } from 'react';
|
||||
|
||||
import { decodeAddress } from '@polkadot/util-crypto';
|
||||
@@ -11,7 +13,7 @@ import { QrScan } from './Scan.js';
|
||||
interface ScanType {
|
||||
isAddress: boolean;
|
||||
content: string;
|
||||
genesisHash: string;
|
||||
genesisHash: HexString | null;
|
||||
name?: string | undefined;
|
||||
}
|
||||
|
||||
@@ -29,13 +31,16 @@ function ScanAddress ({ className, isEthereum, onError, onScan, size, style }: P
|
||||
(data: string | null): void => {
|
||||
if (data) {
|
||||
try {
|
||||
let prefix: string, content: string, genesisHash: string, name: string[];
|
||||
let prefix: string;
|
||||
let content: string;
|
||||
let genesisHash: string | null;
|
||||
let name: string[];
|
||||
|
||||
if (!isEthereum) {
|
||||
[prefix, content, genesisHash, ...name] = data.split(':');
|
||||
} else {
|
||||
[prefix, content, ...name] = data.split(':');
|
||||
genesisHash = '';
|
||||
genesisHash = null;
|
||||
content = content.substring(0, 42);
|
||||
}
|
||||
|
||||
@@ -52,7 +57,7 @@ function ScanAddress ({ className, isEthereum, onError, onScan, size, style }: P
|
||||
decodeAddress(content);
|
||||
}
|
||||
|
||||
onScan({ content, genesisHash, isAddress, name: name?.length ? name.join(':') : undefined });
|
||||
onScan({ content, genesisHash: genesisHash as HexString, isAddress, name: name?.length ? name.join(':') : undefined });
|
||||
} catch (error) {
|
||||
onError && onError(error as Error);
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
// Copyright 2017-2023 @polkadot/react-qr authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { StyledInterface } from 'styled-components';
|
||||
|
||||
import styledComponents from 'styled-components';
|
||||
|
||||
// In styled-components v6, there is a named export which can be used
|
||||
// directly, i.e. "import { styled } from ..." with no more magic. Until
|
||||
// such time the cjs vs esm import here is problematic, so we hack around
|
||||
// the various shapes below
|
||||
export const styled = (
|
||||
(styledComponents as unknown as { styled: StyledInterface }).styled ||
|
||||
(styledComponents as unknown as { default: StyledInterface }).default ||
|
||||
styledComponents as unknown as StyledInterface
|
||||
);
|
||||
export { styled } from 'styled-components';
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"exclude": [
|
||||
"**/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../ui-settings/tsconfig.build.json" }
|
||||
]
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src",
|
||||
"emitDeclarationOnly": false,
|
||||
"noEmit": true
|
||||
},
|
||||
"include": [
|
||||
"**/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../react-qr/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -18,17 +18,17 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@polkadot/ui-shared": "3.2.2",
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"@polkadot/util-crypto": "^12.1.1",
|
||||
"@polkadot/ui-shared": "3.6.2",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"@polkadot/util-crypto": "^12.4.2",
|
||||
"react-native-svg": "^12.5.1",
|
||||
"tslib": "^2.5.0"
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-native": "^0.71.6"
|
||||
"@types/react-native": "^0.72.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -123,7 +123,7 @@ class MyReactComponent extends React.PureComponent<State> {
|
||||
- What are 'external' accounts, i.e. when to set the `isExternal` meta key to true?
|
||||
- An external account is one where the keys are not managed by keyring, e.g. in Parity Signer or Ledger Nano.
|
||||
- SS58 Encode / Decode?
|
||||
- SS58 is a simple address format designed for Substrate based chains. You can read about its specification in more detail in the [Parity Wiki](https://wiki.parity.io/External-Address-Format-(SS58)).
|
||||
- SS58 is a simple address format designed for Substrate based chains. You can read about its specification in more detail in the [Substrate Documentation](https://docs.substrate.io/reference/address-formats/).
|
||||
|
||||
**If you have any unanswered/undocumented questions, please raise an issue [here](https://github.com/polkadot-js/ui/issues).**
|
||||
|
||||
|
||||
@@ -17,17 +17,17 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@polkadot/keyring": "^12.1.1",
|
||||
"@polkadot/ui-settings": "3.2.2",
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"@polkadot/util-crypto": "^12.1.1",
|
||||
"mkdirp": "^2.1.6",
|
||||
"@polkadot/keyring": "^12.4.2",
|
||||
"@polkadot/ui-settings": "3.6.2",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"@polkadot/util-crypto": "^12.4.2",
|
||||
"mkdirp": "^3.0.1",
|
||||
"rxjs": "^7.8.1",
|
||||
"store": "^2.0.12",
|
||||
"tslib": "^2.5.0"
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/mkdirp": "^2.0.0",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { KeyringInstance, KeyringPair } from '@polkadot/keyring/types';
|
||||
import type { HexString } from '@polkadot/util/types';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
import type { AddressSubject } from './observable/types.js';
|
||||
import type { KeyringOptions, KeyringStore } from './types.js';
|
||||
@@ -28,9 +29,9 @@ export class Base {
|
||||
|
||||
protected _store: KeyringStore;
|
||||
|
||||
protected _genesisHash?: string | undefined;
|
||||
protected _genesisHash?: HexString | undefined;
|
||||
|
||||
protected _genesisHashAdd: string[] = [];
|
||||
protected _genesisHashAdd: HexString[] = [];
|
||||
|
||||
constructor () {
|
||||
this.#accounts = accounts;
|
||||
@@ -64,11 +65,11 @@ export class Base {
|
||||
throw new Error('Keyring should be initialised via \'loadAll\' before use');
|
||||
}
|
||||
|
||||
public get genesisHash (): string | undefined {
|
||||
public get genesisHash (): HexString | undefined {
|
||||
return this._genesisHash;
|
||||
}
|
||||
|
||||
public get genesisHashes (): string[] {
|
||||
public get genesisHashes (): HexString[] {
|
||||
return this._genesisHash
|
||||
? [this._genesisHash, ...this._genesisHashAdd]
|
||||
: [...this._genesisHashAdd];
|
||||
@@ -130,7 +131,7 @@ export class Base {
|
||||
this.#keyring = keyring;
|
||||
this._genesisHash = options.genesisHash && (
|
||||
isString(options.genesisHash)
|
||||
? options.genesisHash.toString()
|
||||
? options.genesisHash.toString() as HexString
|
||||
: options.genesisHash.toHex()
|
||||
);
|
||||
this._genesisHashAdd = options.genesisHashAdd || [];
|
||||
|
||||
@@ -152,8 +152,14 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
|
||||
return Object
|
||||
.keys(available)
|
||||
.map((address): KeyringAddress => this.getAddress(address, 'account') as KeyringAddress)
|
||||
.filter((account) => env.isDevelopment() || account.meta.isTesting !== true);
|
||||
.map((address) => this.getAddress(address, 'account'))
|
||||
.filter((account): account is KeyringAddress =>
|
||||
!!account &&
|
||||
(
|
||||
env.isDevelopment() ||
|
||||
account.meta.isTesting !== true
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public getAddress (_address: string | Uint8Array, type: KeyringItemType | null = null): KeyringAddress | undefined {
|
||||
@@ -180,7 +186,8 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
|
||||
return Object
|
||||
.keys(available)
|
||||
.map((address): KeyringAddress => this.getAddress(address) as KeyringAddress);
|
||||
.map((address) => this.getAddress(address))
|
||||
.filter((account): account is KeyringAddress => !!account);
|
||||
}
|
||||
|
||||
public getContract (address: string | Uint8Array): KeyringAddress | undefined {
|
||||
@@ -195,11 +202,12 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
.filter(([, { json: { meta: { contract } } }]): boolean =>
|
||||
!!contract && contract.genesisHash === this.genesisHash
|
||||
)
|
||||
.map(([address]) => this.getContract(address) as KeyringAddress);
|
||||
.map(([address]) => this.getContract(address))
|
||||
.filter((account): account is KeyringAddress => !!account);
|
||||
}
|
||||
|
||||
private rewriteKey (json: KeyringJson, key: string, hexAddr: string, creator: (addr: string) => string): void {
|
||||
if (hexAddr.substring(0, 2) === '0x') {
|
||||
if (hexAddr.startsWith('0x')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -252,7 +260,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
const [, hexAddr] = key.split(':');
|
||||
|
||||
// move genesisHash to top-level (TODO Remove from contracts section?)
|
||||
json.meta.genesisHash = json.meta.genesisHash || (json.meta.contract && json.meta.contract.genesisHash);
|
||||
json.meta.genesisHash = json.meta.genesisHash || (json.meta.contract?.genesisHash);
|
||||
|
||||
this.contracts.add(this._store, address, json);
|
||||
this.rewriteKey(json, key, hexAddr, contractKey);
|
||||
@@ -269,7 +277,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
}
|
||||
|
||||
private allowGenesis (json?: KeyringJson | { meta: KeyringJson$Meta } | null): boolean {
|
||||
if (json && json.meta && this.genesisHash) {
|
||||
if (json?.meta && this.genesisHash) {
|
||||
const hashes: (string | null | undefined)[] = Object.values(chains).find((hashes): boolean =>
|
||||
hashes.includes(this.genesisHash || '')
|
||||
) || [this.genesisHash];
|
||||
@@ -370,7 +378,7 @@ export class Keyring extends Base implements KeyringStruct {
|
||||
public saveAddress (address: string, meta: KeyringPair$Meta, type: KeyringAddressType = 'address'): KeyringPair$Json {
|
||||
const available = this.addresses.subject.getValue();
|
||||
|
||||
const json = (available[address] && available[address].json) || {
|
||||
const json = available[address]?.json || {
|
||||
address,
|
||||
meta: {
|
||||
isRecent: undefined,
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2023 @polkadot/util authors & contributors
|
||||
// Copyright 2017-2023 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Be able to import json in TS
|
||||
|
||||
@@ -12,9 +12,7 @@ export interface SingleAddress {
|
||||
type?: KeypairType | undefined;
|
||||
}
|
||||
|
||||
export interface SubjectInfo {
|
||||
[index: string]: SingleAddress;
|
||||
}
|
||||
export type SubjectInfo = Record<string, SingleAddress>;
|
||||
|
||||
export interface AddressSubject {
|
||||
add: (store: KeyringStore, address: string, json: KeyringJson, type?: KeypairType) => SingleAddress;
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
// Copyright 2017-2023 @polkadot/ui-keyring authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
/// <reference types="@polkadot/dev-test/globals.d.ts" />
|
||||
|
||||
import type { KeyringStruct } from '../types.js';
|
||||
|
||||
import { KeyringOption } from './index.js';
|
||||
|
||||
describe('KeyringOption', (): void => {
|
||||
// Warning: Test "should not allow initOptions to be called more than once" generated asynchronous activity after the test ended. This activity created the error "TypeError: Cannot read properties of undefined (reading 'subject')" and would have caused the test to fail, but instead triggered an uncaughtException event.
|
||||
it.skip('should not allow initOptions to be called more than once', (): void => {
|
||||
const keyringOption = new KeyringOption();
|
||||
const state = {} as KeyringStruct;
|
||||
|
||||
// first call
|
||||
keyringOption.init(state);
|
||||
|
||||
// second call
|
||||
expect(
|
||||
() => keyringOption.init(state)
|
||||
).toThrow('Unable to initialise options more than once');
|
||||
|
||||
// cleanup?
|
||||
keyringOption.clear();
|
||||
});
|
||||
});
|
||||
@@ -37,7 +37,7 @@ const sortByCreated = (a: SingleAddress, b: SingleAddress): number => {
|
||||
export class KeyringOption implements KeyringOptionInstance {
|
||||
#allSub: Subscription | null = null;
|
||||
|
||||
public readonly optionsSubject: BehaviorSubject<KeyringOptions> = new BehaviorSubject(this.emptyOptions());
|
||||
public readonly optionsSubject = new BehaviorSubject<KeyringOptions>(this.emptyOptions());
|
||||
|
||||
public createOptionHeader (name: string): KeyringSectionOption {
|
||||
return {
|
||||
@@ -77,7 +77,7 @@ export class KeyringOption implements KeyringOptionInstance {
|
||||
}
|
||||
}
|
||||
|
||||
private linkItems (items: { [index: string]: KeyringSectionOptions }): KeyringSectionOptions {
|
||||
private linkItems (items: Record<string, KeyringSectionOptions>): KeyringSectionOptions {
|
||||
return Object.keys(items).reduce((result, header): KeyringSectionOptions => {
|
||||
const options = items[header];
|
||||
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import type { KeyringJson, KeyringStore } from '../types.js';
|
||||
|
||||
import mkdirp from 'mkdirp';
|
||||
import { mkdirpSync } from 'mkdirp';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
|
||||
@@ -13,7 +13,7 @@ export class FileStore implements KeyringStore {
|
||||
|
||||
constructor (path: string) {
|
||||
if (!fs.existsSync(path)) {
|
||||
mkdirp.sync(path);
|
||||
mkdirpSync(path);
|
||||
}
|
||||
|
||||
this.#path = path;
|
||||
|
||||
@@ -2,29 +2,14 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { KeyringInstance as BaseKeyringInstance, KeyringOptions as KeyringOptionsBase, KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '@polkadot/keyring/types';
|
||||
import type { HexString } from '@polkadot/util/types';
|
||||
import type { EncryptedJson } from '@polkadot/util-crypto/json/types';
|
||||
import type { KeypairType } from '@polkadot/util-crypto/types';
|
||||
import type { AddressSubject, SingleAddress } from './observable/types.js';
|
||||
|
||||
export interface ContractMeta {
|
||||
abi: string;
|
||||
genesisHash?: string | null;
|
||||
}
|
||||
export type ContractMeta = NonNullable<KeyringPair$Meta['contract']>;
|
||||
|
||||
export interface KeyringJson$Meta {
|
||||
contract?: ContractMeta;
|
||||
genesisHash?: string | null | undefined;
|
||||
hardwareType?: 'ledger';
|
||||
isHardware?: boolean;
|
||||
isInjected?: boolean;
|
||||
isRecent?: boolean;
|
||||
isTesting?: boolean;
|
||||
name?: string;
|
||||
whenCreated?: number;
|
||||
whenEdited?: number;
|
||||
whenUsed?: number;
|
||||
[index: string]: unknown;
|
||||
}
|
||||
export type KeyringJson$Meta = KeyringPair$Meta;
|
||||
|
||||
export interface KeyringJson {
|
||||
address: string;
|
||||
@@ -44,8 +29,8 @@ export interface KeyringStore {
|
||||
|
||||
export interface KeyringOptions extends KeyringOptionsBase {
|
||||
filter?: (json: KeyringJson) => boolean;
|
||||
genesisHash?: string | { toHex: () => string };
|
||||
genesisHashAdd?: string[];
|
||||
genesisHash?: HexString | { toHex: () => HexString };
|
||||
genesisHashAdd?: HexString[];
|
||||
isDevelopment?: boolean;
|
||||
store?: KeyringStore;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"exclude": [
|
||||
"**/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../ui-settings/tsconfig.build.json" }
|
||||
]
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src",
|
||||
"emitDeclarationOnly": false,
|
||||
"noEmit": true
|
||||
},
|
||||
"include": [
|
||||
"**/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../ui-keyring/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -18,14 +18,14 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@polkadot/networks": "^12.1.1",
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"eventemitter3": "^5.0.0",
|
||||
"@polkadot/networks": "^12.4.2",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"eventemitter3": "^5.0.1",
|
||||
"store": "^2.0.12",
|
||||
"tslib": "^2.5.0"
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/store": "^2.0.2"
|
||||
|
||||
@@ -57,7 +57,7 @@ export class Settings implements SettingsStruct {
|
||||
this.#emitter = new EventEmitter();
|
||||
|
||||
// will become deprecated for supporting substrate connect light clients. apiType structure should be used instead
|
||||
this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || (hasProcess && process.env && process.env.WS_URL) || (ENDPOINT_DEFAULT.value as string);
|
||||
this.#apiUrl = (typeof settings.apiUrl === 'string' && settings.apiUrl) || (hasProcess && process.env?.['WS_URL']) || (ENDPOINT_DEFAULT.value as string);
|
||||
this.#apiType = { param: this.#apiUrl, type: 'json-rpc' as EndpointType };
|
||||
this.#camera = withDefault(CAMERA, settings.camera, CAMERA_DEFAULT);
|
||||
this.#ledgerConn = withDefault(LEDGER_CONN, settings.ledgerConn, LEDGER_CONN_DEFAULT);
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2017-2023 @polkadot/ui-settings authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export type Option = {
|
||||
export interface Option {
|
||||
disabled?: boolean;
|
||||
info: string;
|
||||
text: string;
|
||||
|
||||
@@ -18,15 +18,15 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"colord": "^2.9.3",
|
||||
"tslib": "^2.5.0"
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"@polkadot/util-crypto": "^12.1.1",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"@polkadot/util-crypto": "^12.4.2",
|
||||
"@types/xmlserializer": "^0.6.3",
|
||||
"xmlserializer": "^0.6.1"
|
||||
},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
// Copyright 2016 Dan Finlay
|
||||
|
||||
export function container (diameter: number, background = 'white', className = '', _style: { [index: string]: string } = {}): HTMLElement {
|
||||
export function container (diameter: number, background = 'white', className = '', _style: Record<string, string> = {}): HTMLElement {
|
||||
const element = document.createElement('div');
|
||||
const style = Object.assign({
|
||||
background,
|
||||
|
||||
@@ -12,7 +12,7 @@ import { container as newContainer } from './container.js';
|
||||
import { SHAPE_COUNT } from './defaults.js';
|
||||
import { seeder as newSeeder } from './seeder.js';
|
||||
|
||||
export function beachballIcon (seed: string | Uint8Array, { size = 256 }: Options, className = '', style?: { [index: string]: string }): HTMLElement {
|
||||
export function beachballIcon (seed: string | Uint8Array, { size = 256 }: Options, className = '', style?: Record<string, string>): HTMLElement {
|
||||
const seeder = newSeeder(seed);
|
||||
const colorGen = colors(seeder);
|
||||
const outer = newContainer(size, 'white', className, style);
|
||||
|
||||
@@ -3,6 +3,4 @@
|
||||
|
||||
export type Seeder = () => number;
|
||||
|
||||
export interface ColorGen {
|
||||
(alpha?: number): string;
|
||||
}
|
||||
export type ColorGen = (alpha?: number) => string;
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-shared', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-shared', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -5,5 +5,8 @@
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"exclude": [
|
||||
"**/*.spec.ts"
|
||||
],
|
||||
"references": []
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src",
|
||||
"emitDeclarationOnly": false,
|
||||
"noEmit": true
|
||||
},
|
||||
"include": [
|
||||
"**/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../ui-shared/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -18,14 +18,14 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "3.2.2",
|
||||
"version": "3.6.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@polkadot/ui-shared": "3.2.2",
|
||||
"@polkadot/util": "^12.1.1",
|
||||
"@polkadot/util-crypto": "^12.1.1",
|
||||
"@polkadot/ui-shared": "3.6.2",
|
||||
"@polkadot/util": "^12.4.2",
|
||||
"@polkadot/util-crypto": "^12.4.2",
|
||||
"jdenticon": "3.2.0",
|
||||
"tslib": "^2.5.0"
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vue": "^2.7.14"
|
||||
|
||||
@@ -4,12 +4,13 @@
|
||||
import type { VNode } from 'vue';
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
|
||||
import { defineComponent } from 'vue';
|
||||
import { defineComponent, h } from 'vue';
|
||||
|
||||
import { isHex, isU8a, u8aToHex } from '@polkadot/util';
|
||||
import { decodeAddress, encodeAddress } from '@polkadot/util-crypto';
|
||||
|
||||
import { Beachball, Empty, Jdenticon, Polkadot } from './icons/index.js';
|
||||
import { adaptVNodeAttrs } from './util.js';
|
||||
|
||||
interface Account {
|
||||
address: string;
|
||||
@@ -26,7 +27,7 @@ interface Data {
|
||||
|
||||
const DEFAULT_SIZE = 64;
|
||||
|
||||
function encodeAccount (value: string | Uint8Array, prefix?: Prefix): Account {
|
||||
export function encodeAccount (value: string | Uint8Array, prefix?: Prefix): Account {
|
||||
try {
|
||||
const address = isU8a(value) || isHex(value)
|
||||
? encodeAddress(value as string, prefix)
|
||||
@@ -81,23 +82,25 @@ export const Identicon = defineComponent({
|
||||
}
|
||||
},
|
||||
props: ['prefix', 'isAlternative', 'size', 'theme', 'value'],
|
||||
render (h): VNode {
|
||||
render (): VNode {
|
||||
const { address, iconSize, isAlternativeIcon, publicKey, type } = this.$data;
|
||||
|
||||
if (type === 'empty') {
|
||||
return h('Empty', {
|
||||
attrs: {
|
||||
return h(Empty, {
|
||||
...adaptVNodeAttrs({
|
||||
key: address,
|
||||
size: iconSize
|
||||
}
|
||||
})
|
||||
}, []);
|
||||
} else if (type === 'jdenticon') {
|
||||
return h('Jdenticon', {
|
||||
attrs: {
|
||||
key: address,
|
||||
publicKey,
|
||||
size: iconSize
|
||||
}
|
||||
return h(Jdenticon, {
|
||||
...adaptVNodeAttrs(
|
||||
{
|
||||
key: address,
|
||||
publicKey,
|
||||
size: iconSize
|
||||
}
|
||||
)
|
||||
}, []);
|
||||
} else if (type === 'substrate') {
|
||||
throw new Error('substrate type is not supported');
|
||||
@@ -105,14 +108,22 @@ export const Identicon = defineComponent({
|
||||
|
||||
const cmp = type.charAt(0).toUpperCase() + type.slice(1);
|
||||
|
||||
return h(cmp, {
|
||||
attrs: {
|
||||
address,
|
||||
isAlternative: isAlternativeIcon,
|
||||
key: address,
|
||||
size: iconSize
|
||||
}
|
||||
}, []);
|
||||
if (['Beachball', 'Polkadot'].includes(cmp)) {
|
||||
const component = cmp === 'Beachball'
|
||||
? Beachball
|
||||
: Polkadot;
|
||||
|
||||
return h(component, {
|
||||
...adaptVNodeAttrs({
|
||||
address,
|
||||
isAlternative: isAlternativeIcon,
|
||||
key: address,
|
||||
size: iconSize
|
||||
})
|
||||
}, []);
|
||||
} else {
|
||||
return h(cmp, {}, []);
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: function (): void {
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
import type { VNode } from 'vue';
|
||||
|
||||
import { defineComponent } from 'vue';
|
||||
import { defineComponent, h } from 'vue';
|
||||
|
||||
import { beachballIcon } from '@polkadot/ui-shared';
|
||||
|
||||
type PropsType = {
|
||||
interface PropsType {
|
||||
address: string;
|
||||
size: number;
|
||||
isAlternative: boolean;
|
||||
@@ -19,7 +19,7 @@ type PropsType = {
|
||||
*/
|
||||
export const Beachball = defineComponent({
|
||||
props: ['address', 'size', 'isAlternative'],
|
||||
render (h): VNode {
|
||||
render (): VNode {
|
||||
const { address, isAlternative, size } = this.$props as PropsType;
|
||||
|
||||
return h({
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
import type { VNode } from 'vue';
|
||||
|
||||
import * as jdenticon from 'jdenticon';
|
||||
import { defineComponent } from 'vue';
|
||||
import { defineComponent, h } from 'vue';
|
||||
|
||||
type PropsType = {
|
||||
interface PropsType {
|
||||
publicKey: string,
|
||||
size: number
|
||||
}
|
||||
@@ -17,7 +17,7 @@ type PropsType = {
|
||||
*/
|
||||
export const Jdenticon = defineComponent({
|
||||
props: ['publicKey', 'size'],
|
||||
render (h): VNode {
|
||||
render (): VNode {
|
||||
const { publicKey, size } = this.$props as PropsType;
|
||||
|
||||
return h({
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
|
||||
import type { VNode } from 'vue';
|
||||
|
||||
import { defineComponent } from 'vue';
|
||||
import { defineComponent, h } from 'vue';
|
||||
|
||||
import { polkadotIcon } from '@polkadot/ui-shared';
|
||||
|
||||
type propsType = {
|
||||
import { adaptVNodeAttrs } from '../util.js';
|
||||
|
||||
interface propsType {
|
||||
address: string;
|
||||
isAlternative: boolean;
|
||||
size: number;
|
||||
@@ -19,18 +21,18 @@ type propsType = {
|
||||
*/
|
||||
export const Polkadot = defineComponent({
|
||||
props: ['address', 'isAlternative', 'size'],
|
||||
render (h): VNode {
|
||||
render (): VNode {
|
||||
const { address, isAlternative, size } = this.$props as propsType;
|
||||
const circles = polkadotIcon(address, { isAlternative }).map(({ cx, cy, fill, r }) =>
|
||||
h('circle', { attrs: { cx, cy, fill, r } }, [])
|
||||
h('circle', { ...adaptVNodeAttrs({ cx, cy, fill, r }) }, [])
|
||||
);
|
||||
|
||||
return h('svg', {
|
||||
attrs: {
|
||||
...adaptVNodeAttrs({
|
||||
height: size,
|
||||
viewBox: '0 0 64 64',
|
||||
width: size
|
||||
}
|
||||
})
|
||||
}, circles);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/vue-identicon', path: 'auto', type: 'auto', version: '3.2.2' };
|
||||
export const packageInfo = { name: '@polkadot/vue-identicon', path: 'auto', type: 'auto', version: '3.6.2' };
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// Copyright 2017-2023 @polkadot/vue-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { version } from 'vue';
|
||||
|
||||
const isV3 = version.startsWith('3.');
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* Adjust attributes to be usable in both Vue 2 and Vue 3 components.
|
||||
*/
|
||||
export function adaptVNodeAttrs (data: Record<string, unknown>): Record<string, unknown> {
|
||||
return isV3
|
||||
? data
|
||||
: { attrs: data };
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2023 @polkadot/ui authors & contributors
|
||||
// Copyright 2017-2023 @polkadot/ui-shared authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import path from 'path';
|
||||
@@ -6,10 +6,13 @@
|
||||
"references": [
|
||||
{ "path": "./packages/react-identicon/tsconfig.build.json" },
|
||||
{ "path": "./packages/react-qr/tsconfig.build.json" },
|
||||
{ "path": "./packages/react-qr/tsconfig.spec.json" },
|
||||
{ "path": "./packages/reactnative-identicon/tsconfig.build.json" },
|
||||
{ "path": "./packages/ui-keyring/tsconfig.build.json" },
|
||||
{ "path": "./packages/ui-keyring/tsconfig.spec.json" },
|
||||
{ "path": "./packages/ui-settings/tsconfig.build.json" },
|
||||
{ "path": "./packages/ui-shared/tsconfig.build.json" },
|
||||
{ "path": "./packages/ui-shared/tsconfig.spec.json" },
|
||||
{ "path": "./packages/vue-identicon/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
},
|
||||
"include": [
|
||||
"packages/**/src/**/*",
|
||||
"packages/**/*.cjs",
|
||||
"packages/**/*.js"
|
||||
".prettierrc.cjs",
|
||||
"eslint.config.js",
|
||||
"rollup.config.js"
|
||||
],
|
||||
"exclude": [
|
||||
"**/node_modules/**/*"
|
||||
|
||||
Reference in New Issue
Block a user