diff --git a/package.json b/package.json
index 61bfd685b..91a7d3528 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
},
"devDependencies": {
"@babel/core": "^7.21.0",
- "@polkadot/dev": "^0.70.4",
+ "@polkadot/dev": "^0.71.1",
"@types/node": "^18.14.6"
},
"resolutions": {
diff --git a/packages/hw-ledger-transports/src/browser.ts b/packages/hw-ledger-transports/src/browser.ts
index cd6ed33e1..043623a6f 100644
--- a/packages/hw-ledger-transports/src/browser.ts
+++ b/packages/hw-ledger-transports/src/browser.ts
@@ -7,7 +7,7 @@ import type { TransportDef } from './types';
import LedgerWebHid from '@ledgerhq/hw-transport-webhid';
import LedgerWebUsb from '@ledgerhq/hw-transport-webusb';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const transports: TransportDef[] = [
{
diff --git a/packages/hw-ledger-transports/src/detectPackage.ts b/packages/hw-ledger-transports/src/detectPackage.ts
index 33f338efc..e0ee7d976 100644
--- a/packages/hw-ledger-transports/src/detectPackage.ts
+++ b/packages/hw-ledger-transports/src/detectPackage.ts
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
-import others from './detectOther';
-import { packageInfo } from './packageInfo';
+import others from './detectOther.js';
+import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
diff --git a/packages/hw-ledger-transports/src/empty.ts b/packages/hw-ledger-transports/src/empty.ts
index e6418b64e..c75d0dd1e 100644
--- a/packages/hw-ledger-transports/src/empty.ts
+++ b/packages/hw-ledger-transports/src/empty.ts
@@ -3,6 +3,6 @@
import type { TransportDef } from './types';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const transports: TransportDef[] = [];
diff --git a/packages/hw-ledger-transports/src/mod.ts b/packages/hw-ledger-transports/src/mod.ts
index 036793162..a88b518a6 100644
--- a/packages/hw-ledger-transports/src/mod.ts
+++ b/packages/hw-ledger-transports/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './empty';
+export * from './empty.js';
diff --git a/packages/hw-ledger-transports/src/node.ts b/packages/hw-ledger-transports/src/node.ts
index f25d0ec93..6da173837 100644
--- a/packages/hw-ledger-transports/src/node.ts
+++ b/packages/hw-ledger-transports/src/node.ts
@@ -6,7 +6,7 @@ import type { TransportDef } from './types';
import LedgerHid from '@ledgerhq/hw-transport-node-hid-singleton';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const transports: TransportDef[] = [
{
diff --git a/packages/hw-ledger-transports/src/react-native.ts b/packages/hw-ledger-transports/src/react-native.ts
index 036793162..a88b518a6 100644
--- a/packages/hw-ledger-transports/src/react-native.ts
+++ b/packages/hw-ledger-transports/src/react-native.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './empty';
+export * from './empty.js';
diff --git a/packages/hw-ledger/src/bundle.ts b/packages/hw-ledger/src/bundle.ts
index db77bdb93..d83ad5270 100644
--- a/packages/hw-ledger/src/bundle.ts
+++ b/packages/hw-ledger/src/bundle.ts
@@ -2,17 +2,17 @@
// SPDX-License-Identifier: Apache-2.0
import type { SubstrateApp } from '@zondax/ledger-substrate';
-import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerTypes, LedgerVersion } from './types';
+import type { AccountOptions, LedgerAddress, LedgerSignature, LedgerTypes, LedgerVersion } from './types.js';
import { newSubstrateApp } from '@zondax/ledger-substrate';
import { transports } from '@polkadot/hw-ledger-transports';
import { hexAddPrefix, u8aToBuffer } from '@polkadot/util';
-import { LEDGER_DEFAULT_ACCOUNT, LEDGER_DEFAULT_CHANGE, LEDGER_DEFAULT_INDEX, LEDGER_SUCCESS_CODE } from './constants';
-import { ledgerApps } from './defaults';
+import { LEDGER_DEFAULT_ACCOUNT, LEDGER_DEFAULT_CHANGE, LEDGER_DEFAULT_INDEX, LEDGER_SUCCESS_CODE } from './constants.js';
+import { ledgerApps } from './defaults.js';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
type Chain = keyof typeof ledgerApps;
diff --git a/packages/hw-ledger/src/defaults.spec.ts b/packages/hw-ledger/src/defaults.spec.ts
index 15c60a816..0b20f86ce 100644
--- a/packages/hw-ledger/src/defaults.spec.ts
+++ b/packages/hw-ledger/src/defaults.spec.ts
@@ -5,7 +5,7 @@
import { supportedApps } from '@zondax/ledger-substrate';
-import { ledgerApps } from './defaults';
+import { ledgerApps } from './defaults.js';
describe('ledgerApps', (): void => {
for (const k of Object.keys(ledgerApps)) {
diff --git a/packages/hw-ledger/src/detectPackage.ts b/packages/hw-ledger/src/detectPackage.ts
index 688d709b9..478f92f9e 100644
--- a/packages/hw-ledger/src/detectPackage.ts
+++ b/packages/hw-ledger/src/detectPackage.ts
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
-import others from './detectOther';
-import { packageInfo } from './packageInfo';
+import others from './detectOther.js';
+import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
diff --git a/packages/hw-ledger/src/index.ts b/packages/hw-ledger/src/index.ts
index 18ea72133..496da2467 100644
--- a/packages/hw-ledger/src/index.ts
+++ b/packages/hw-ledger/src/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import './detectPackage';
+import './detectPackage.js';
-export * from './bundle';
+export * from './bundle.js';
diff --git a/packages/hw-ledger/src/mod.ts b/packages/hw-ledger/src/mod.ts
index c4f667991..08d7b4f52 100644
--- a/packages/hw-ledger/src/mod.ts
+++ b/packages/hw-ledger/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/hw-ledger authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './index';
+export * from './index.js';
diff --git a/packages/keyring/src/bundle.ts b/packages/keyring/src/bundle.ts
index b25e74c9f..57f353434 100644
--- a/packages/keyring/src/bundle.ts
+++ b/packages/keyring/src/bundle.ts
@@ -1,15 +1,16 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { Keyring } from './keyring';
+import { Keyring } from './keyring.js';
// eslint-disable-next-line deprecation/deprecation
export { decodeAddress, encodeAddress, setSS58Format } from '@polkadot/util-crypto';
-export * from './defaults';
-export { createPair } from './pair';
-export { packageInfo } from './packageInfo';
-export { createTestKeyring } from './testing';
-export { createTestPairs } from './testingPairs';
+export * from './defaults.js';
+
+export { createPair } from './pair/index.js';
+export { packageInfo } from './packageInfo.js';
+export { createTestKeyring } from './testing.js';
+export { createTestPairs } from './testingPairs.js';
export { Keyring };
diff --git a/packages/keyring/src/detectPackage.ts b/packages/keyring/src/detectPackage.ts
index c32584c7b..9e2af53e6 100644
--- a/packages/keyring/src/detectPackage.ts
+++ b/packages/keyring/src/detectPackage.ts
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
-import others from './detectOther';
-import { packageInfo } from './packageInfo';
+import others from './detectOther.js';
+import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
diff --git a/packages/keyring/src/index.spec.ts b/packages/keyring/src/index.spec.ts
index 2f6557080..0b48791ae 100644
--- a/packages/keyring/src/index.spec.ts
+++ b/packages/keyring/src/index.spec.ts
@@ -8,8 +8,8 @@ import type { KeyringPair$Json } from './types';
import { hexToU8a, stringToU8a } from '@polkadot/util';
import { base64Decode, cryptoWaitReady, encodeAddress, randomAsU8a, setSS58Format } from '@polkadot/util-crypto';
-import { decodePair } from './pair/decode';
-import Keyring from '.';
+import { decodePair } from './pair/decode.js';
+import Keyring from './index.js';
await cryptoWaitReady();
diff --git a/packages/keyring/src/index.ts b/packages/keyring/src/index.ts
index ff90395cc..c1d097b7d 100644
--- a/packages/keyring/src/index.ts
+++ b/packages/keyring/src/index.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import './detectPackage';
+import './detectPackage.js';
-import { Keyring } from './bundle';
+import { Keyring } from './bundle.js';
-export * from './bundle';
+export * from './bundle.js';
export default Keyring;
diff --git a/packages/keyring/src/keyring.ts b/packages/keyring/src/keyring.ts
index 624a85520..6d54496a3 100644
--- a/packages/keyring/src/keyring.ts
+++ b/packages/keyring/src/keyring.ts
@@ -7,9 +7,9 @@ import type { KeyringInstance, KeyringOptions, KeyringPair, KeyringPair$Json, Ke
import { hexToU8a, isHex, stringToU8a } from '@polkadot/util';
import { base64Decode, decodeAddress, ed25519PairFromSeed as ed25519FromSeed, encodeAddress, ethereumEncode, hdEthereum, keyExtractSuri, keyFromPath, mnemonicToLegacySeed, mnemonicToMiniSecret, secp256k1PairFromSeed as secp256k1FromSeed, sr25519PairFromSeed as sr25519FromSeed } from '@polkadot/util-crypto';
-import { DEV_PHRASE } from './defaults';
-import { createPair } from './pair';
-import { Pairs } from './pairs';
+import { createPair } from './pair/index.js';
+import { DEV_PHRASE } from './defaults.js';
+import { Pairs } from './pairs.js';
const PairFromSeed = {
ecdsa: (seed: Uint8Array): Keypair => secp256k1FromSeed(seed),
diff --git a/packages/keyring/src/mod.ts b/packages/keyring/src/mod.ts
index 2623127a0..725dcfa2d 100644
--- a/packages/keyring/src/mod.ts
+++ b/packages/keyring/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './index';
+export * from './index.js';
diff --git a/packages/keyring/src/pair/decode.spec.ts b/packages/keyring/src/pair/decode.spec.ts
index 3d2a51477..656e2c900 100644
--- a/packages/keyring/src/pair/decode.spec.ts
+++ b/packages/keyring/src/pair/decode.spec.ts
@@ -3,7 +3,7 @@
///
-import { createTestPairs } from '../testingPairs';
+import { createTestPairs } from '../testingPairs.js';
const keyring = createTestPairs({ type: 'ed25519' }, false);
diff --git a/packages/keyring/src/pair/decode.ts b/packages/keyring/src/pair/decode.ts
index c8c0af05d..c9fb5c492 100644
--- a/packages/keyring/src/pair/decode.ts
+++ b/packages/keyring/src/pair/decode.ts
@@ -7,7 +7,7 @@ import type { PairInfo } from './types';
import { u8aEq } from '@polkadot/util';
import { jsonDecryptData } from '@polkadot/util-crypto';
-import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults';
+import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH, SEED_LENGTH } from './defaults.js';
const SEED_OFFSET = PKCS8_HEADER.length;
diff --git a/packages/keyring/src/pair/encode.spec.ts b/packages/keyring/src/pair/encode.spec.ts
index 7d97a5adf..b0be7e301 100644
--- a/packages/keyring/src/pair/encode.spec.ts
+++ b/packages/keyring/src/pair/encode.spec.ts
@@ -5,8 +5,8 @@
import { NONCE_LENGTH, SCRYPT_LENGTH } from '@polkadot/util-crypto/json/constants';
-import { createTestPairs } from '../testingPairs';
-import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH } from './defaults';
+import { createTestPairs } from '../testingPairs.js';
+import { PKCS8_DIVIDER, PKCS8_HEADER, PUB_LENGTH, SEC_LENGTH } from './defaults.js';
const PKCS8_LENGTH = PKCS8_DIVIDER.length + PKCS8_HEADER.length + PUB_LENGTH + SEC_LENGTH;
const ENCODED_LENGTH = 16 + PKCS8_LENGTH + NONCE_LENGTH + SCRYPT_LENGTH;
diff --git a/packages/keyring/src/pair/encode.ts b/packages/keyring/src/pair/encode.ts
index 0bd754b86..936ae872d 100644
--- a/packages/keyring/src/pair/encode.ts
+++ b/packages/keyring/src/pair/encode.ts
@@ -6,7 +6,7 @@ import type { PairInfo } from './types';
import { u8aConcat } from '@polkadot/util';
import { naclEncrypt, scryptEncode, scryptToU8a } from '@polkadot/util-crypto';
-import { PKCS8_DIVIDER, PKCS8_HEADER } from './defaults';
+import { PKCS8_DIVIDER, PKCS8_HEADER } from './defaults.js';
export function encodePair ({ publicKey, secretKey }: PairInfo, passphrase?: string): Uint8Array {
if (!secretKey) {
diff --git a/packages/keyring/src/pair/index.spec.ts b/packages/keyring/src/pair/index.spec.ts
index f821b7ee6..f92268fa2 100644
--- a/packages/keyring/src/pair/index.spec.ts
+++ b/packages/keyring/src/pair/index.spec.ts
@@ -6,9 +6,9 @@
import { hexToU8a, u8aToHex } from '@polkadot/util';
import { cryptoWaitReady, encodeAddress as toSS58, setSS58Format } from '@polkadot/util-crypto';
-import { PAIRSSR25519 } from '../testing';
-import { createTestPairs } from '../testingPairs';
-import { createPair } from '.';
+import { PAIRSSR25519 } from '../testing.js';
+import { createTestPairs } from '../testingPairs.js';
+import { createPair } from './index.js';
const keyring = createTestPairs({ type: 'ed25519' }, false);
diff --git a/packages/keyring/src/pair/index.ts b/packages/keyring/src/pair/index.ts
index 3bdbddbaa..139c094ba 100644
--- a/packages/keyring/src/pair/index.ts
+++ b/packages/keyring/src/pair/index.ts
@@ -3,15 +3,15 @@
import type { HexString } from '@polkadot/util/types';
import type { EncryptedJsonEncoding, Keypair, KeypairType } from '@polkadot/util-crypto/types';
-import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types';
+import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta, SignOptions } from '../types.js';
import type { PairInfo } from './types';
import { objectSpread, u8aConcat, u8aEmpty, u8aEq, u8aToHex, u8aToU8a } from '@polkadot/util';
import { blake2AsU8a, convertPublicKeyToCurve25519, convertSecretKeyToCurve25519, ed25519PairFromSeed as ed25519FromSeed, ed25519Sign, ethereumEncode, keccakAsU8a, keyExtractPath, keyFromPath, naclOpen, naclSeal, secp256k1Compress, secp256k1Expand, secp256k1PairFromSeed as secp256k1FromSeed, secp256k1Sign, signatureVerify, sr25519PairFromSeed as sr25519FromSeed, sr25519Sign, sr25519VrfSign, sr25519VrfVerify } from '@polkadot/util-crypto';
-import { decodePair } from './decode';
-import { encodePair } from './encode';
-import { pairToJson } from './toJson';
+import { decodePair } from './decode.js';
+import { encodePair } from './encode.js';
+import { pairToJson } from './toJson.js';
interface Setup {
toSS58: (publicKey: Uint8Array) => string;
diff --git a/packages/keyring/src/pair/nobody.ts b/packages/keyring/src/pair/nobody.ts
index 4b248b789..803540d96 100644
--- a/packages/keyring/src/pair/nobody.ts
+++ b/packages/keyring/src/pair/nobody.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/keyring authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types';
+import type { KeyringPair, KeyringPair$Json, KeyringPair$Meta } from '../types.js';
// empty publicKey
const publicKey = new Uint8Array(32);
diff --git a/packages/keyring/src/pair/toJson.spec.ts b/packages/keyring/src/pair/toJson.spec.ts
index e4e8f2a12..49f2c4b93 100644
--- a/packages/keyring/src/pair/toJson.spec.ts
+++ b/packages/keyring/src/pair/toJson.spec.ts
@@ -3,7 +3,7 @@
///
-import { createTestPairs } from '../testingPairs';
+import { createTestPairs } from '../testingPairs.js';
const keyring = createTestPairs({ type: 'ed25519' }, false);
diff --git a/packages/keyring/src/pair/toJson.ts b/packages/keyring/src/pair/toJson.ts
index fcad3b209..593337f17 100644
--- a/packages/keyring/src/pair/toJson.ts
+++ b/packages/keyring/src/pair/toJson.ts
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { KeypairType } from '@polkadot/util-crypto/types';
-import type { KeyringPair$Json, KeyringPair$Meta } from '../types';
+import type { KeyringPair$Json, KeyringPair$Meta } from '../types.js';
import { objectSpread } from '@polkadot/util';
import { jsonEncryptFormat } from '@polkadot/util-crypto';
diff --git a/packages/keyring/src/pair/vrf.spec.ts b/packages/keyring/src/pair/vrf.spec.ts
index 9885c6695..8843ca03e 100644
--- a/packages/keyring/src/pair/vrf.spec.ts
+++ b/packages/keyring/src/pair/vrf.spec.ts
@@ -6,7 +6,7 @@
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady, ed25519PairFromSeed, encodeAddress as toSS58, randomAsU8a, secp256k1PairFromSeed, sr25519PairFromSeed } from '@polkadot/util-crypto';
-import { createPair } from '.';
+import { createPair } from './index.js';
const MESSAGE = 'this is a test message';
const CONTEXT = 'some context';
diff --git a/packages/keyring/src/suri.spec.ts b/packages/keyring/src/suri.spec.ts
index ea2e9ba08..cf7859cdc 100644
--- a/packages/keyring/src/suri.spec.ts
+++ b/packages/keyring/src/suri.spec.ts
@@ -10,7 +10,7 @@ import type { KeypairType } from '@polkadot/util-crypto/types';
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady } from '@polkadot/util-crypto';
-import Keyring from '.';
+import Keyring from './index.js';
const PHRASE = 'bottom drive obey lake curtain smoke basket hold race lonely fit walk';
const ETHEREUM_PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
diff --git a/packages/keyring/src/testing.ts b/packages/keyring/src/testing.ts
index 7b1546fc9..1fe0f4e70 100644
--- a/packages/keyring/src/testing.ts
+++ b/packages/keyring/src/testing.ts
@@ -7,8 +7,8 @@ import type { KeyringInstance, KeyringOptions } from './types';
import { hexToU8a } from '@polkadot/util';
-import { Keyring } from './keyring';
-import { createPair } from './pair';
+import { createPair } from './pair/index.js';
+import { Keyring } from './keyring.js';
interface PairDef {
name?: string;
diff --git a/packages/keyring/src/testingPairs.spec.ts b/packages/keyring/src/testingPairs.spec.ts
index b4dcd78dd..bbd101b56 100644
--- a/packages/keyring/src/testingPairs.spec.ts
+++ b/packages/keyring/src/testingPairs.spec.ts
@@ -6,8 +6,8 @@
import { u8aToHex } from '@polkadot/util';
import { cryptoWaitReady } from '@polkadot/util-crypto';
-import { createTestPairs } from './testingPairs';
-import Keyring from '.';
+import Keyring from './index.js';
+import { createTestPairs } from './testingPairs.js';
const TEST_ADD = '0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac';
diff --git a/packages/keyring/src/testingPairs.ts b/packages/keyring/src/testingPairs.ts
index 6be8ebc82..21fbcb92d 100644
--- a/packages/keyring/src/testingPairs.ts
+++ b/packages/keyring/src/testingPairs.ts
@@ -3,8 +3,8 @@
import type { KeyringOptions, KeyringPair } from './types';
-import { nobody } from './pair/nobody';
-import { createTestKeyring } from './testing';
+import { nobody } from './pair/nobody.js';
+import { createTestKeyring } from './testing.js';
export interface TestKeyringMap {
[index: string]: KeyringPair;
diff --git a/packages/networks/src/defaults.spec.ts b/packages/networks/src/defaults.spec.ts
index 6f15df15c..a3765c29b 100644
--- a/packages/networks/src/defaults.spec.ts
+++ b/packages/networks/src/defaults.spec.ts
@@ -6,7 +6,7 @@
import { ledgerApps } from '@polkadot/hw-ledger/defaults';
import { isHex } from '@polkadot/util';
-import { knownGenesis, knownLedger } from './defaults';
+import { knownGenesis, knownLedger } from './defaults/index.js';
describe('defaults', (): void => {
describe('genesis', (): void => {
diff --git a/packages/networks/src/defaults/genesis.ts b/packages/networks/src/defaults/genesis.ts
index 92ac31dd4..c2e550659 100644
--- a/packages/networks/src/defaults/genesis.ts
+++ b/packages/networks/src/defaults/genesis.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { KnownGenesis } from '../types';
+import type { KnownGenesis } from '../types.js';
// NOTE: In the case where the network was hard-spooned and multiple genesisHashes
// are provided, it needs to be in reverse order, i.e. most-recent first, oldest
diff --git a/packages/networks/src/defaults/icons.ts b/packages/networks/src/defaults/icons.ts
index 88ea30ad2..dd8ead384 100644
--- a/packages/networks/src/defaults/icons.ts
+++ b/packages/networks/src/defaults/icons.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { KnownIcon } from '../types';
+import type { KnownIcon } from '../types.js';
// these are icon overrides
export const knownIcon: KnownIcon = {
diff --git a/packages/networks/src/defaults/index.ts b/packages/networks/src/defaults/index.ts
index e99abf10e..b797b2877 100644
--- a/packages/networks/src/defaults/index.ts
+++ b/packages/networks/src/defaults/index.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { knownGenesis } from './genesis';
-export { knownIcon } from './icons';
-export { knownLedger } from './ledger';
-export { knownTestnet } from './testnets';
+export { knownGenesis } from './genesis.js';
+export { knownIcon } from './icons.js';
+export { knownLedger } from './ledger.js';
+export { knownTestnet } from './testnets.js';
diff --git a/packages/networks/src/defaults/ledger.ts b/packages/networks/src/defaults/ledger.ts
index c609f1671..faa656991 100644
--- a/packages/networks/src/defaults/ledger.ts
+++ b/packages/networks/src/defaults/ledger.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { KnownLedger } from '../types';
+import type { KnownLedger } from '../types.js';
// These match up with the keys of the ledgerApps object in the @polkadot/hw-ledger/defaults.ts
// and maps to the known slip44 (minus the `0x8` hard derivation flag)
diff --git a/packages/networks/src/defaults/testnets.ts b/packages/networks/src/defaults/testnets.ts
index ba00ba4af..93ea40c7e 100644
--- a/packages/networks/src/defaults/testnets.ts
+++ b/packages/networks/src/defaults/testnets.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { KnownTestnet } from '../types';
+import type { KnownTestnet } from '../types.js';
// testnets should not allow selection
export const knownTestnet: KnownTestnet = {
diff --git a/packages/networks/src/detectPackage.ts b/packages/networks/src/detectPackage.ts
index 32af604ad..31dbcad1e 100644
--- a/packages/networks/src/detectPackage.ts
+++ b/packages/networks/src/detectPackage.ts
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
-import others from './detectOther';
-import { packageInfo } from './packageInfo';
+import others from './detectOther.js';
+import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
diff --git a/packages/networks/src/index.spec.ts b/packages/networks/src/index.spec.ts
index da77679be..ccfe812cc 100644
--- a/packages/networks/src/index.spec.ts
+++ b/packages/networks/src/index.spec.ts
@@ -3,10 +3,10 @@
///
-import type { SubstrateNetwork } from './types';
+import type { SubstrateNetwork } from './types.js';
-import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults';
-import { allNetworks, availableNetworks, selectableNetworks } from '.';
+import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
+import { allNetworks, availableNetworks, selectableNetworks } from './index.js';
describe('availableNetworks', (): void => {
it('has the correct starting order', (): void => {
diff --git a/packages/networks/src/index.ts b/packages/networks/src/index.ts
index 564835bd0..b29f4c15a 100644
--- a/packages/networks/src/index.ts
+++ b/packages/networks/src/index.ts
@@ -5,5 +5,5 @@
// ... put it back, but keep it removed
// import './detectPackage';
-export * from './interfaces';
-export { packageInfo } from './packageInfo';
+export * from './interfaces.js';
+export { packageInfo } from './packageInfo.js';
diff --git a/packages/networks/src/interfaces.ts b/packages/networks/src/interfaces.ts
index 743dc44d9..f72bd6a00 100644
--- a/packages/networks/src/interfaces.ts
+++ b/packages/networks/src/interfaces.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { KnownSubstrate, Network, SubstrateNetwork } from './types';
+import type { KnownSubstrate, Network, SubstrateNetwork } from './types.js';
import knownSubstrate from '@substrate/ss58-registry';
-import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults';
+import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
// These are known prefixes that are not sorted
const UNSORTED = [0, 2, 42];
diff --git a/packages/networks/src/mod.ts b/packages/networks/src/mod.ts
index aec238350..fb28f9234 100644
--- a/packages/networks/src/mod.ts
+++ b/packages/networks/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/networks authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './index';
+export * from './index.js';
diff --git a/packages/util-crypto/src/address/addressToEvm.spec.ts b/packages/util-crypto/src/address/addressToEvm.spec.ts
index c7ea84104..1a38f4294 100644
--- a/packages/util-crypto/src/address/addressToEvm.spec.ts
+++ b/packages/util-crypto/src/address/addressToEvm.spec.ts
@@ -5,7 +5,7 @@
import { hexToU8a } from '@polkadot/util';
-import { addressToEvm } from './addressToEvm';
+import { addressToEvm } from './addressToEvm.js';
describe('addressToEvm', (): void => {
it('creates a valid known EVM address', (): void => {
diff --git a/packages/util-crypto/src/address/addressToEvm.ts b/packages/util-crypto/src/address/addressToEvm.ts
index 7bdf31194..193a18315 100644
--- a/packages/util-crypto/src/address/addressToEvm.ts
+++ b/packages/util-crypto/src/address/addressToEvm.ts
@@ -3,7 +3,7 @@
import type { HexString } from '@polkadot/util/types';
-import { decodeAddress } from './decode';
+import { decodeAddress } from './decode.js';
/**
* @name addressToEvm
diff --git a/packages/util-crypto/src/address/check.spec.ts b/packages/util-crypto/src/address/check.spec.ts
index bfb30256d..7bc699c33 100644
--- a/packages/util-crypto/src/address/check.spec.ts
+++ b/packages/util-crypto/src/address/check.spec.ts
@@ -3,7 +3,7 @@
///
-import { checkAddress } from '.';
+import { checkAddress } from './index.js';
describe('checkAddress', (): void => {
it('returns [true, null] for Kusama', (): void => {
diff --git a/packages/util-crypto/src/address/check.ts b/packages/util-crypto/src/address/check.ts
index 2bea86509..6ad7e6652 100644
--- a/packages/util-crypto/src/address/check.ts
+++ b/packages/util-crypto/src/address/check.ts
@@ -4,9 +4,9 @@
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
-import { base58Decode } from '../base58';
-import { checkAddressChecksum } from './checksum';
-import { defaults } from './defaults';
+import { base58Decode } from '../base58/index.js';
+import { checkAddressChecksum } from './checksum.js';
+import { defaults } from './defaults.js';
/**
* @name checkAddress
diff --git a/packages/util-crypto/src/address/checksum.spec.ts b/packages/util-crypto/src/address/checksum.spec.ts
index 450a3e229..9c1609aff 100644
--- a/packages/util-crypto/src/address/checksum.spec.ts
+++ b/packages/util-crypto/src/address/checksum.spec.ts
@@ -3,8 +3,8 @@
///
-import { base58Decode } from '../base58';
-import { checkAddressChecksum } from './checksum';
+import { base58Decode } from '../base58/index.js';
+import { checkAddressChecksum } from './checksum.js';
describe('checkAddressChecksum', (): void => {
it('correctly extracts the info from a 1-byte-prefix address', (): void => {
diff --git a/packages/util-crypto/src/address/checksum.ts b/packages/util-crypto/src/address/checksum.ts
index ee126ecd8..8f2f4106b 100644
--- a/packages/util-crypto/src/address/checksum.ts
+++ b/packages/util-crypto/src/address/checksum.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { sshash } from './sshash';
+import { sshash } from './sshash.js';
export function checkAddressChecksum (decoded: Uint8Array): [boolean, number, number, number] {
const ss58Length = (decoded[0] & 0b0100_0000) ? 2 : 1;
diff --git a/packages/util-crypto/src/address/decode.spec.ts b/packages/util-crypto/src/address/decode.spec.ts
index 20343c483..619670317 100644
--- a/packages/util-crypto/src/address/decode.spec.ts
+++ b/packages/util-crypto/src/address/decode.spec.ts
@@ -5,8 +5,8 @@
import { hexToU8a, stringToU8a, u8aToHex } from '@polkadot/util';
-import { ALICE_PUBLIC_SR } from './encode.spec';
-import { decodeAddress } from '.';
+import { ALICE_PUBLIC_SR } from './encode.spec.js';
+import { decodeAddress } from './index.js';
describe('decodeAddress', (): void => {
it('decodes an address', (): void => {
diff --git a/packages/util-crypto/src/address/decode.ts b/packages/util-crypto/src/address/decode.ts
index ac5c90f64..9f9e7038d 100644
--- a/packages/util-crypto/src/address/decode.ts
+++ b/packages/util-crypto/src/address/decode.ts
@@ -7,9 +7,9 @@ import type { Prefix } from './types';
// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L6
import { isHex, isU8a, u8aToU8a } from '@polkadot/util';
-import { base58Decode } from '../base58';
-import { checkAddressChecksum } from './checksum';
-import { defaults } from './defaults';
+import { base58Decode } from '../base58/index.js';
+import { checkAddressChecksum } from './checksum.js';
+import { defaults } from './defaults.js';
export function decodeAddress (encoded?: HexString | string | Uint8Array | null, ignoreChecksum?: boolean, ss58Format: Prefix = -1): Uint8Array {
if (!encoded) {
diff --git a/packages/util-crypto/src/address/defaults.ts b/packages/util-crypto/src/address/defaults.ts
index eec075e60..5169d9075 100644
--- a/packages/util-crypto/src/address/defaults.ts
+++ b/packages/util-crypto/src/address/defaults.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { availableNetworks } from '../networks';
+import { availableNetworks } from '../networks.js';
export const defaults = {
allowedDecodedLengths: [1, 2, 4, 8, 32, 33],
diff --git a/packages/util-crypto/src/address/derive.spec.ts b/packages/util-crypto/src/address/derive.spec.ts
index 0c6848069..4481148d7 100644
--- a/packages/util-crypto/src/address/derive.spec.ts
+++ b/packages/util-crypto/src/address/derive.spec.ts
@@ -5,7 +5,7 @@
import { waitReady } from '@polkadot/wasm-crypto';
-import { deriveAddress } from '.';
+import { deriveAddress } from './index.js';
describe('deriveAddress', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/address/derive.ts b/packages/util-crypto/src/address/derive.ts
index ecb3f3ca9..c4c067d3a 100644
--- a/packages/util-crypto/src/address/derive.ts
+++ b/packages/util-crypto/src/address/derive.ts
@@ -5,10 +5,10 @@ import type { HexString } from '@polkadot/util/types';
import type { DeriveJunction } from '../key/DeriveJunction';
import type { Prefix } from './types';
-import { keyExtractPath } from '../key';
-import { sr25519DerivePublic } from '../sr25519';
-import { decodeAddress } from './decode';
-import { encodeAddress } from './encode';
+import { keyExtractPath } from '../key/index.js';
+import { sr25519DerivePublic } from '../sr25519/index.js';
+import { decodeAddress } from './decode.js';
+import { encodeAddress } from './encode.js';
function filterHard ({ isHard }: DeriveJunction): boolean {
return isHard;
diff --git a/packages/util-crypto/src/address/encode.spec.ts b/packages/util-crypto/src/address/encode.spec.ts
index 7daf1d6ee..66697ca5e 100644
--- a/packages/util-crypto/src/address/encode.spec.ts
+++ b/packages/util-crypto/src/address/encode.spec.ts
@@ -3,7 +3,7 @@
///
-import { encodeAddress } from '.';
+import { encodeAddress } from './index.js';
export const ALICE_PUBLIC_SR = new Uint8Array([212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125]);
diff --git a/packages/util-crypto/src/address/encode.ts b/packages/util-crypto/src/address/encode.ts
index 1ae19c818..a14333eb1 100644
--- a/packages/util-crypto/src/address/encode.ts
+++ b/packages/util-crypto/src/address/encode.ts
@@ -7,10 +7,10 @@ import type { Prefix } from './types';
// Original implementation: https://github.com/paritytech/polka-ui/blob/4858c094684769080f5811f32b081dd7780b0880/src/polkadot.js#L34
import { u8aConcat } from '@polkadot/util';
-import { base58Encode } from '../base58';
-import { decodeAddress } from './decode';
-import { defaults } from './defaults';
-import { sshash } from './sshash';
+import { base58Encode } from '../base58/index.js';
+import { decodeAddress } from './decode.js';
+import { defaults } from './defaults.js';
+import { sshash } from './sshash.js';
export function encodeAddress (key: HexString | Uint8Array | string, ss58Format: Prefix = defaults.prefix): string {
// decode it, this means we can re-encode an address
diff --git a/packages/util-crypto/src/address/encodeDerived.spec.ts b/packages/util-crypto/src/address/encodeDerived.spec.ts
index 4362cc793..9bd723245 100644
--- a/packages/util-crypto/src/address/encodeDerived.spec.ts
+++ b/packages/util-crypto/src/address/encodeDerived.spec.ts
@@ -3,7 +3,7 @@
///
-import { encodeDerivedAddress } from '.';
+import { encodeDerivedAddress } from './index.js';
describe('encodeDerivedAddress', (): void => {
it('creates a valid known derived address', (): void => {
diff --git a/packages/util-crypto/src/address/encodeDerived.ts b/packages/util-crypto/src/address/encodeDerived.ts
index 17385881e..20ddab2f5 100644
--- a/packages/util-crypto/src/address/encodeDerived.ts
+++ b/packages/util-crypto/src/address/encodeDerived.ts
@@ -5,9 +5,9 @@ import type { BN } from '@polkadot/util';
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
-import { decodeAddress } from './decode';
-import { encodeAddress } from './encode';
-import { createKeyDerived } from './keyDerived';
+import { decodeAddress } from './decode.js';
+import { encodeAddress } from './encode.js';
+import { createKeyDerived } from './keyDerived.js';
/**
* @name encodeDerivedAddress
diff --git a/packages/util-crypto/src/address/encodeMulti.spec.ts b/packages/util-crypto/src/address/encodeMulti.spec.ts
index 1479a53eb..f8be1e724 100644
--- a/packages/util-crypto/src/address/encodeMulti.spec.ts
+++ b/packages/util-crypto/src/address/encodeMulti.spec.ts
@@ -3,7 +3,7 @@
///
-import { encodeMultiAddress } from '.';
+import { encodeMultiAddress } from './index.js';
describe('encodeMultiAddress', (): void => {
it('creates a valid known multi address', (): void => {
diff --git a/packages/util-crypto/src/address/encodeMulti.ts b/packages/util-crypto/src/address/encodeMulti.ts
index c53f6784f..941a03a79 100644
--- a/packages/util-crypto/src/address/encodeMulti.ts
+++ b/packages/util-crypto/src/address/encodeMulti.ts
@@ -5,8 +5,8 @@ import type { BN } from '@polkadot/util';
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
-import { encodeAddress } from './encode';
-import { createKeyMulti } from './keyMulti';
+import { encodeAddress } from './encode.js';
+import { createKeyMulti } from './keyMulti.js';
/**
* @name encodeMultiAddress
diff --git a/packages/util-crypto/src/address/eq.spec.ts b/packages/util-crypto/src/address/eq.spec.ts
index d27e4f28c..bb53f9987 100644
--- a/packages/util-crypto/src/address/eq.spec.ts
+++ b/packages/util-crypto/src/address/eq.spec.ts
@@ -3,8 +3,8 @@
///
-import { ALICE_PUBLIC_SR } from './encode.spec';
-import { addressEq } from '.';
+import { ALICE_PUBLIC_SR } from './encode.spec.js';
+import { addressEq } from './index.js';
describe('addressEq', (): void => {
it('returns false with non-equal', (): void => {
diff --git a/packages/util-crypto/src/address/eq.ts b/packages/util-crypto/src/address/eq.ts
index 9bca7b7e7..422cfe6ea 100644
--- a/packages/util-crypto/src/address/eq.ts
+++ b/packages/util-crypto/src/address/eq.ts
@@ -5,7 +5,7 @@ import type { HexString } from '@polkadot/util/types';
import { u8aEq } from '@polkadot/util';
-import { decodeAddress } from './decode';
+import { decodeAddress } from './decode.js';
/**
* @name addressEq
diff --git a/packages/util-crypto/src/address/evmToAddress.spec.ts b/packages/util-crypto/src/address/evmToAddress.spec.ts
index b88622c02..c4d7631ed 100644
--- a/packages/util-crypto/src/address/evmToAddress.spec.ts
+++ b/packages/util-crypto/src/address/evmToAddress.spec.ts
@@ -3,7 +3,7 @@
///
-import { evmToAddress } from '.';
+import { evmToAddress } from './index.js';
describe('evmToAddress', (): void => {
it('creates a valid known SS58 address', (): void => {
diff --git a/packages/util-crypto/src/address/evmToAddress.ts b/packages/util-crypto/src/address/evmToAddress.ts
index e6912936c..53184774b 100644
--- a/packages/util-crypto/src/address/evmToAddress.ts
+++ b/packages/util-crypto/src/address/evmToAddress.ts
@@ -7,8 +7,8 @@ import type { Prefix } from './types';
import { u8aConcat } from '@polkadot/util';
-import { hasher } from '../secp256k1/hasher';
-import { encodeAddress } from './encode';
+import { hasher } from '../secp256k1/hasher.js';
+import { encodeAddress } from './encode.js';
/**
* @name evmToAddress
diff --git a/packages/util-crypto/src/address/index.ts b/packages/util-crypto/src/address/index.ts
index ecfa65041..2bdf238db 100644
--- a/packages/util-crypto/src/address/index.ts
+++ b/packages/util-crypto/src/address/index.ts
@@ -1,21 +1,21 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { addressToEvm } from './addressToEvm';
-export { checkAddress } from './check';
-export { checkAddressChecksum } from './checksum';
-export { createKeyMulti } from './keyMulti';
-export { createKeyDerived } from './keyDerived';
-export { decodeAddress } from './decode';
-export { deriveAddress } from './derive';
-export { encodeAddress } from './encode';
-export { encodeDerivedAddress } from './encodeDerived';
-export { encodeMultiAddress } from './encodeMulti';
-export { evmToAddress } from './evmToAddress';
-export { addressEq } from './eq';
-export { isAddress } from './is';
-export { sortAddresses } from './sort';
-export { validateAddress } from './validate';
+export { addressToEvm } from './addressToEvm.js';
+export { checkAddress } from './check.js';
+export { checkAddressChecksum } from './checksum.js';
+export { createKeyMulti } from './keyMulti.js';
+export { createKeyDerived } from './keyDerived.js';
+export { decodeAddress } from './decode.js';
+export { deriveAddress } from './derive.js';
+export { encodeAddress } from './encode.js';
+export { encodeDerivedAddress } from './encodeDerived.js';
+export { encodeMultiAddress } from './encodeMulti.js';
+export { evmToAddress } from './evmToAddress.js';
+export { addressEq } from './eq.js';
+export { isAddress } from './is.js';
+export { sortAddresses } from './sort.js';
+export { validateAddress } from './validate.js';
// eslint-disable-next-line deprecation/deprecation
-export { setSS58Format } from './setSS58Format';
+export { setSS58Format } from './setSS58Format.js';
diff --git a/packages/util-crypto/src/address/is.spec.ts b/packages/util-crypto/src/address/is.spec.ts
index 06a873609..fb679b05e 100644
--- a/packages/util-crypto/src/address/is.spec.ts
+++ b/packages/util-crypto/src/address/is.spec.ts
@@ -3,7 +3,7 @@
///
-import { isAddress } from '.';
+import { isAddress } from './index.js';
describe('isAddress', (): void => {
it('decodes an address', (): void => {
diff --git a/packages/util-crypto/src/address/is.ts b/packages/util-crypto/src/address/is.ts
index 30d894efb..328ab57ad 100644
--- a/packages/util-crypto/src/address/is.ts
+++ b/packages/util-crypto/src/address/is.ts
@@ -4,7 +4,7 @@
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
-import { validateAddress } from './validate';
+import { validateAddress } from './validate.js';
export function isAddress (address?: HexString | string | null, ignoreChecksum?: boolean, ss58Format?: Prefix): address is string {
try {
diff --git a/packages/util-crypto/src/address/keyDerived.spec.ts b/packages/util-crypto/src/address/keyDerived.spec.ts
index 1f4284988..dd47fea9c 100644
--- a/packages/util-crypto/src/address/keyDerived.spec.ts
+++ b/packages/util-crypto/src/address/keyDerived.spec.ts
@@ -3,7 +3,7 @@
///
-import { createKeyDerived } from '.';
+import { createKeyDerived } from './index.js';
describe('createKeyDerived', (): void => {
it('matches sub accounts with Rust', (): void => {
diff --git a/packages/util-crypto/src/address/keyDerived.ts b/packages/util-crypto/src/address/keyDerived.ts
index d9133811c..54b0dabdd 100644
--- a/packages/util-crypto/src/address/keyDerived.ts
+++ b/packages/util-crypto/src/address/keyDerived.ts
@@ -6,9 +6,9 @@ import type { HexString } from '@polkadot/util/types';
import { bnToU8a, stringToU8a, u8aConcat } from '@polkadot/util';
-import { blake2AsU8a } from '../blake2/asU8a';
-import { BN_LE_16_OPTS } from '../bn';
-import { decodeAddress } from './decode';
+import { blake2AsU8a } from '../blake2/asU8a.js';
+import { BN_LE_16_OPTS } from '../bn.js';
+import { decodeAddress } from './decode.js';
const PREFIX = stringToU8a('modlpy/utilisuba');
diff --git a/packages/util-crypto/src/address/keyMulti.spec.ts b/packages/util-crypto/src/address/keyMulti.spec.ts
index d14740430..c39b4e6c1 100644
--- a/packages/util-crypto/src/address/keyMulti.spec.ts
+++ b/packages/util-crypto/src/address/keyMulti.spec.ts
@@ -3,7 +3,7 @@
///
-import { createKeyMulti } from '.';
+import { createKeyMulti } from './index.js';
describe('createKeyMulti', (): void => {
it('creates a valid multikey (aligning with Rust, needs sorting)', (): void => {
diff --git a/packages/util-crypto/src/address/keyMulti.ts b/packages/util-crypto/src/address/keyMulti.ts
index cc49107ef..37e3f53c8 100644
--- a/packages/util-crypto/src/address/keyMulti.ts
+++ b/packages/util-crypto/src/address/keyMulti.ts
@@ -6,9 +6,9 @@ import type { HexString } from '@polkadot/util/types';
import { bnToU8a, compactToU8a, stringToU8a, u8aConcat, u8aSorted } from '@polkadot/util';
-import { blake2AsU8a } from '../blake2/asU8a';
-import { BN_LE_16_OPTS } from '../bn';
-import { addressToU8a } from './util';
+import { blake2AsU8a } from '../blake2/asU8a.js';
+import { BN_LE_16_OPTS } from '../bn.js';
+import { addressToU8a } from './util.js';
const PREFIX = stringToU8a('modlpy/utilisuba');
diff --git a/packages/util-crypto/src/address/setSS58Format.spec.ts b/packages/util-crypto/src/address/setSS58Format.spec.ts
index b9e0cfb2e..659efa757 100644
--- a/packages/util-crypto/src/address/setSS58Format.spec.ts
+++ b/packages/util-crypto/src/address/setSS58Format.spec.ts
@@ -3,7 +3,7 @@
///
-import { encodeAddress, setSS58Format } from '.';
+import { encodeAddress, setSS58Format } from './index.js';
describe('setSS58Format', (): void => {
beforeEach((): void => {
diff --git a/packages/util-crypto/src/address/setSS58Format.ts b/packages/util-crypto/src/address/setSS58Format.ts
index 13a7edc00..5c44164e9 100644
--- a/packages/util-crypto/src/address/setSS58Format.ts
+++ b/packages/util-crypto/src/address/setSS58Format.ts
@@ -5,7 +5,7 @@ import type { Prefix } from './types';
import { logger } from '@polkadot/util';
-import { defaults } from './defaults';
+import { defaults } from './defaults.js';
const l = logger('setSS58Format');
diff --git a/packages/util-crypto/src/address/sort.spec.ts b/packages/util-crypto/src/address/sort.spec.ts
index c5a83398a..3c07b6aa2 100644
--- a/packages/util-crypto/src/address/sort.spec.ts
+++ b/packages/util-crypto/src/address/sort.spec.ts
@@ -3,7 +3,7 @@
///
-import { sortAddresses } from '.';
+import { sortAddresses } from './index.js';
describe('sortAddresses', (): void => {
it('sorts addresses by the publicKeys', (): void => {
diff --git a/packages/util-crypto/src/address/sort.ts b/packages/util-crypto/src/address/sort.ts
index 105698730..e4c2bedee 100644
--- a/packages/util-crypto/src/address/sort.ts
+++ b/packages/util-crypto/src/address/sort.ts
@@ -6,8 +6,8 @@ import type { Prefix } from './types';
import { u8aSorted } from '@polkadot/util';
-import { encodeAddress } from './encode';
-import { addressToU8a } from './util';
+import { encodeAddress } from './encode.js';
+import { addressToU8a } from './util.js';
export function sortAddresses (addresses: (HexString | Uint8Array | string)[], ss58Format?: Prefix): string[] {
const u8aToAddress = (u8a: Uint8Array) => encodeAddress(u8a, ss58Format);
diff --git a/packages/util-crypto/src/address/sshash.ts b/packages/util-crypto/src/address/sshash.ts
index 3439b8584..0ed0a4a35 100644
--- a/packages/util-crypto/src/address/sshash.ts
+++ b/packages/util-crypto/src/address/sshash.ts
@@ -3,7 +3,7 @@
import { stringToU8a, u8aConcat } from '@polkadot/util';
-import { blake2AsU8a } from '../blake2/asU8a';
+import { blake2AsU8a } from '../blake2/asU8a.js';
const SS58_PREFIX = stringToU8a('SS58PRE');
diff --git a/packages/util-crypto/src/address/util.ts b/packages/util-crypto/src/address/util.ts
index 5ae958bd0..bd13cd754 100644
--- a/packages/util-crypto/src/address/util.ts
+++ b/packages/util-crypto/src/address/util.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { decodeAddress } from './decode';
+import { decodeAddress } from './decode.js';
export function addressToU8a (who: string | Uint8Array): Uint8Array {
return decodeAddress(who);
diff --git a/packages/util-crypto/src/address/validate.spec.ts b/packages/util-crypto/src/address/validate.spec.ts
index 002bf62e5..ba80ed954 100644
--- a/packages/util-crypto/src/address/validate.spec.ts
+++ b/packages/util-crypto/src/address/validate.spec.ts
@@ -3,7 +3,7 @@
///
-import { validateAddress } from '.';
+import { validateAddress } from './index.js';
describe('validateAddress', (): void => {
it('decodes an address', (): void => {
diff --git a/packages/util-crypto/src/address/validate.ts b/packages/util-crypto/src/address/validate.ts
index a52b60b8d..33a7c4d97 100644
--- a/packages/util-crypto/src/address/validate.ts
+++ b/packages/util-crypto/src/address/validate.ts
@@ -4,7 +4,7 @@
import type { HexString } from '@polkadot/util/types';
import type { Prefix } from './types';
-import { decodeAddress } from './decode';
+import { decodeAddress } from './decode.js';
export function validateAddress (encoded?: HexString | string | null, ignoreChecksum?: boolean, ss58Format?: Prefix): encoded is string {
return !!decodeAddress(encoded, ignoreChecksum, ss58Format);
diff --git a/packages/util-crypto/src/base32/bs32.ts b/packages/util-crypto/src/base32/bs32.ts
index d7d44c887..e417682bf 100644
--- a/packages/util-crypto/src/base32/bs32.ts
+++ b/packages/util-crypto/src/base32/bs32.ts
@@ -3,7 +3,7 @@
import { utils } from '@scure/base';
-import { createDecode, createEncode, createIs, createValidate } from './helpers';
+import { createDecode, createEncode, createIs, createValidate } from './helpers.js';
const chars = 'abcdefghijklmnopqrstuvwxyz234567';
diff --git a/packages/util-crypto/src/base32/decode.spec.ts b/packages/util-crypto/src/base32/decode.spec.ts
index 92b01369a..8cc04845e 100644
--- a/packages/util-crypto/src/base32/decode.spec.ts
+++ b/packages/util-crypto/src/base32/decode.spec.ts
@@ -5,7 +5,7 @@
import { u8aToString } from '@polkadot/util';
-import { base32Decode } from '.';
+import { base32Decode } from './index.js';
describe('base32Decode', (): void => {
it('decodes a base32', (): void => {
diff --git a/packages/util-crypto/src/base32/encode.spec.ts b/packages/util-crypto/src/base32/encode.spec.ts
index 68ff4ad8b..a2674126a 100644
--- a/packages/util-crypto/src/base32/encode.spec.ts
+++ b/packages/util-crypto/src/base32/encode.spec.ts
@@ -3,8 +3,8 @@
///
-import { base58Decode } from '../base58';
-import { base32Encode } from '.';
+import { base58Decode } from '../base58/index.js';
+import { base32Encode } from './index.js';
describe('base32Encode', (): void => {
it('encodes to a base32', (): void => {
diff --git a/packages/util-crypto/src/base32/index.ts b/packages/util-crypto/src/base32/index.ts
index 773dcb8a4..1c7ad4a53 100644
--- a/packages/util-crypto/src/base32/index.ts
+++ b/packages/util-crypto/src/base32/index.ts
@@ -5,4 +5,4 @@
* @summary Encode and decode base32 values
*/
-export { base32Decode, base32Encode, base32Validate, isBase32 } from './bs32';
+export { base32Decode, base32Encode, base32Validate, isBase32 } from './bs32.js';
diff --git a/packages/util-crypto/src/base32/is.spec.ts b/packages/util-crypto/src/base32/is.spec.ts
index ad798e9ca..f27ab495e 100644
--- a/packages/util-crypto/src/base32/is.spec.ts
+++ b/packages/util-crypto/src/base32/is.spec.ts
@@ -3,7 +3,7 @@
///
-import { isBase32 } from '.';
+import { isBase32 } from './index.js';
describe('isBase32', (): void => {
it('validates encoded', (): void => {
diff --git a/packages/util-crypto/src/base32/validate.spec.ts b/packages/util-crypto/src/base32/validate.spec.ts
index 8fcbcf964..5685c9e09 100644
--- a/packages/util-crypto/src/base32/validate.spec.ts
+++ b/packages/util-crypto/src/base32/validate.spec.ts
@@ -3,7 +3,7 @@
///
-import { base32Validate } from '.';
+import { base32Validate } from './index.js';
describe('base32Validate', (): void => {
it('validates encoded', (): void => {
diff --git a/packages/util-crypto/src/base58/bs58.ts b/packages/util-crypto/src/base58/bs58.ts
index 18815832b..5db910f1a 100644
--- a/packages/util-crypto/src/base58/bs58.ts
+++ b/packages/util-crypto/src/base58/bs58.ts
@@ -3,7 +3,7 @@
import { base58 } from '@scure/base';
-import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers';
+import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers.js';
const config = {
chars: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz',
diff --git a/packages/util-crypto/src/base58/decode.spec.ts b/packages/util-crypto/src/base58/decode.spec.ts
index 64f28c6bd..7d84f59cf 100644
--- a/packages/util-crypto/src/base58/decode.spec.ts
+++ b/packages/util-crypto/src/base58/decode.spec.ts
@@ -3,8 +3,8 @@
///
-import { base32Decode } from '../base32';
-import { base58Decode } from './';
+import { base32Decode } from '../base32/index.js';
+import { base58Decode } from './index.js';
describe('base58Encode', (): void => {
it('encodes a base58 to a base32', (): void => {
diff --git a/packages/util-crypto/src/base58/encode.spec.ts b/packages/util-crypto/src/base58/encode.spec.ts
index b1222e955..366b8304a 100644
--- a/packages/util-crypto/src/base58/encode.spec.ts
+++ b/packages/util-crypto/src/base58/encode.spec.ts
@@ -3,8 +3,8 @@
///
-import { base32Decode } from '../base32';
-import { base58Encode } from './';
+import { base32Decode } from '../base32/index.js';
+import { base58Encode } from './index.js';
describe('base58Encode', (): void => {
it('encodes a base32 to a base58', (): void => {
diff --git a/packages/util-crypto/src/base58/index.ts b/packages/util-crypto/src/base58/index.ts
index b5c218fb0..d6757a11e 100644
--- a/packages/util-crypto/src/base58/index.ts
+++ b/packages/util-crypto/src/base58/index.ts
@@ -5,4 +5,4 @@
* @summary Encode and decode base58 values
*/
-export { base58Decode, base58Encode, base58Validate, isBase58 } from './bs58';
+export { base58Decode, base58Encode, base58Validate, isBase58 } from './bs58.js';
diff --git a/packages/util-crypto/src/base64/bs64.ts b/packages/util-crypto/src/base64/bs64.ts
index 63fdeeae4..1d0099306 100644
--- a/packages/util-crypto/src/base64/bs64.ts
+++ b/packages/util-crypto/src/base64/bs64.ts
@@ -3,7 +3,7 @@
import { base64 } from '@scure/base';
-import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers';
+import { createDecode, createEncode, createIs, createValidate } from '../base32/helpers.js';
const config = {
chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
diff --git a/packages/util-crypto/src/base64/decode.spec.ts b/packages/util-crypto/src/base64/decode.spec.ts
index 29493d73d..742e90534 100644
--- a/packages/util-crypto/src/base64/decode.spec.ts
+++ b/packages/util-crypto/src/base64/decode.spec.ts
@@ -5,7 +5,7 @@
import { stringToU8a } from '@polkadot/util';
-import { base64Decode } from '.';
+import { base64Decode } from './index.js';
describe('base64Decode', (): void => {
it('decodes a mixed base64 utf8 string (1)', (): void => {
diff --git a/packages/util-crypto/src/base64/encode.spec.ts b/packages/util-crypto/src/base64/encode.spec.ts
index 9190d54fd..800faad24 100644
--- a/packages/util-crypto/src/base64/encode.spec.ts
+++ b/packages/util-crypto/src/base64/encode.spec.ts
@@ -3,7 +3,7 @@
///
-import { base64Encode } from '.';
+import { base64Encode } from './index.js';
describe('base64Encode', (): void => {
it('encodes a mixed base64 utf8 string', (): void => {
diff --git a/packages/util-crypto/src/base64/index.ts b/packages/util-crypto/src/base64/index.ts
index e8e2fe54e..1a6a14346 100644
--- a/packages/util-crypto/src/base64/index.ts
+++ b/packages/util-crypto/src/base64/index.ts
@@ -5,6 +5,6 @@
* @summary Encode and decode base64 values
*/
-export { base64Decode, base64Encode, base64Validate, isBase64 } from './bs64';
-export { base64Pad } from './pad';
-export { base64Trim } from './trim';
+export { base64Decode, base64Encode, base64Validate, isBase64 } from './bs64.js';
+export { base64Pad } from './pad.js';
+export { base64Trim } from './trim.js';
diff --git a/packages/util-crypto/src/base64/pad.spec.ts b/packages/util-crypto/src/base64/pad.spec.ts
index 9ce3cb492..e0dcf97c4 100644
--- a/packages/util-crypto/src/base64/pad.spec.ts
+++ b/packages/util-crypto/src/base64/pad.spec.ts
@@ -3,7 +3,7 @@
///
-import { base64Pad } from '.';
+import { base64Pad } from './index.js';
describe('base64Pad', (): void => {
it('pads a utf-8 string', (): void => {
diff --git a/packages/util-crypto/src/base64/trim.spec.ts b/packages/util-crypto/src/base64/trim.spec.ts
index 05e8ab6ed..e209bbc29 100644
--- a/packages/util-crypto/src/base64/trim.spec.ts
+++ b/packages/util-crypto/src/base64/trim.spec.ts
@@ -3,7 +3,7 @@
///
-import { base64Trim } from '.';
+import { base64Trim } from './index.js';
describe('base64Trim', (): void => {
it('trims a utf-8 string', (): void => {
diff --git a/packages/util-crypto/src/base64/validate.spec.ts b/packages/util-crypto/src/base64/validate.spec.ts
index 5c17066b5..92f58dfa2 100644
--- a/packages/util-crypto/src/base64/validate.spec.ts
+++ b/packages/util-crypto/src/base64/validate.spec.ts
@@ -3,7 +3,7 @@
///
-import { base64Validate } from '.';
+import { base64Validate } from './index.js';
describe('base64Validate', (): void => {
it('validates a mixed base64 utf8 string', (): void => {
diff --git a/packages/util-crypto/src/blake2/asHex.spec.ts b/packages/util-crypto/src/blake2/asHex.spec.ts
index 2a021cf20..60bf995dc 100644
--- a/packages/util-crypto/src/blake2/asHex.spec.ts
+++ b/packages/util-crypto/src/blake2/asHex.spec.ts
@@ -6,7 +6,7 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { blake2AsHex } from '.';
+import { blake2AsHex } from './index.js';
describe('blake2AsHex', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/blake2/asU8a.spec.ts b/packages/util-crypto/src/blake2/asU8a.spec.ts
index e4ca459d7..a70900e8a 100644
--- a/packages/util-crypto/src/blake2/asU8a.spec.ts
+++ b/packages/util-crypto/src/blake2/asU8a.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { blake2AsU8a } from '.';
+import { perfWasm } from '../test/index.js';
+import { blake2AsU8a } from './index.js';
describe('blake2AsU8a', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/blake2/asU8a.ts b/packages/util-crypto/src/blake2/asU8a.ts
index 5a649b3c0..b66b22260 100644
--- a/packages/util-crypto/src/blake2/asU8a.ts
+++ b/packages/util-crypto/src/blake2/asU8a.ts
@@ -8,7 +8,7 @@ import { blake2b as blake2bJs } from '@noble/hashes/blake2b';
import { hasBigInt, u8aToU8a } from '@polkadot/util';
import { blake2b, isReady } from '@polkadot/wasm-crypto';
-import { createAsHex } from '../helpers';
+import { createAsHex } from '../helpers.js';
/**
* @name blake2AsU8a
diff --git a/packages/util-crypto/src/blake2/index.ts b/packages/util-crypto/src/blake2/index.ts
index 152de8de6..e2888588a 100644
--- a/packages/util-crypto/src/blake2/index.ts
+++ b/packages/util-crypto/src/blake2/index.ts
@@ -5,4 +5,4 @@
* @summary Create blake2b values with specified bitlengths
*/
-export { blake2AsHex, blake2AsU8a } from './asU8a';
+export { blake2AsHex, blake2AsU8a } from './asU8a.js';
diff --git a/packages/util-crypto/src/bundle.ts b/packages/util-crypto/src/bundle.ts
index 3d3df2381..bd809918d 100644
--- a/packages/util-crypto/src/bundle.ts
+++ b/packages/util-crypto/src/bundle.ts
@@ -1,32 +1,32 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import './bundleInit';
+import './bundleInit.js';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
// all internal exports
-export * from './address';
-export * from './base32';
-export * from './base58';
-export * from './base64';
-export * from './blake2';
-export * from './crypto';
-export * from './ed25519';
-export * from './ethereum';
-export * from './hd';
-export * from './hmac';
-export * from './json';
-export * from './keccak';
-export * from './key';
-export * from './mnemonic';
-export * from './networks';
-export * from './nacl';
-export * from './pbkdf2';
-export * from './random';
-export * from './scrypt';
-export * from './secp256k1';
-export * from './sha';
-export * from './signature';
-export * from './sr25519';
-export * from './xxhash';
+export * from './address/index.js';
+export * from './base32/index.js';
+export * from './base58/index.js';
+export * from './base64/index.js';
+export * from './blake2/index.js';
+export * from './crypto.js';
+export * from './ed25519/index.js';
+export * from './ethereum/index.js';
+export * from './hd/index.js';
+export * from './hmac/index.js';
+export * from './json/index.js';
+export * from './keccak/index.js';
+export * from './key/index.js';
+export * from './mnemonic/index.js';
+export * from './networks.js';
+export * from './nacl/index.js';
+export * from './pbkdf2/index.js';
+export * from './random/index.js';
+export * from './scrypt/index.js';
+export * from './secp256k1/index.js';
+export * from './sha/index.js';
+export * from './signature/index.js';
+export * from './sr25519/index.js';
+export * from './xxhash/index.js';
diff --git a/packages/util-crypto/src/bundleInit.ts b/packages/util-crypto/src/bundleInit.ts
index 4ce8419dd..09ba16325 100644
--- a/packages/util-crypto/src/bundleInit.ts
+++ b/packages/util-crypto/src/bundleInit.ts
@@ -7,8 +7,8 @@ import { utils as utilsNobleSecp256k1 } from '@noble/secp256k1';
import { u8aConcat } from '@polkadot/util';
-import { cryptoWaitReady } from './crypto';
-import { hmacSha256AsU8a } from './hmac';
+import { hmacSha256AsU8a } from './hmac/index.js';
+import { cryptoWaitReady } from './crypto.js';
// Set overrides on the secp256k1 utils
// - hmacShaSync - This needs to be set, unset by default
diff --git a/packages/util-crypto/src/crypto.spec.ts b/packages/util-crypto/src/crypto.spec.ts
index 59bc86b57..de53c8a9c 100644
--- a/packages/util-crypto/src/crypto.spec.ts
+++ b/packages/util-crypto/src/crypto.spec.ts
@@ -12,7 +12,7 @@ describe('cryptoWaitReady', (): void => {
global.WebAssembly = null as unknown as typeof WebAssembly;
- const { cryptoWaitReady } = await import('./crypto');
+ const { cryptoWaitReady } = await import('./crypto.js');
expect(await cryptoWaitReady()).toBe(false);
diff --git a/packages/util-crypto/src/detectPackage.ts b/packages/util-crypto/src/detectPackage.ts
index 015e9db84..4dc9465f5 100644
--- a/packages/util-crypto/src/detectPackage.ts
+++ b/packages/util-crypto/src/detectPackage.ts
@@ -5,7 +5,7 @@
import { detectPackage } from '@polkadot/util';
-import others from './detectOther';
-import { packageInfo } from './packageInfo';
+import others from './detectOther.js';
+import { packageInfo } from './packageInfo.js';
detectPackage(packageInfo, null, others);
diff --git a/packages/util-crypto/src/ed25519/convertKey.spec.ts b/packages/util-crypto/src/ed25519/convertKey.spec.ts
index 4dc41373f..bdd4bdc5d 100644
--- a/packages/util-crypto/src/ed25519/convertKey.spec.ts
+++ b/packages/util-crypto/src/ed25519/convertKey.spec.ts
@@ -5,7 +5,7 @@
import { u8aToHex } from '@polkadot/util';
-import { convertPublicKeyToCurve25519, convertSecretKeyToCurve25519 } from '.';
+import { convertPublicKeyToCurve25519, convertSecretKeyToCurve25519 } from './index.js';
describe('convertPublicKeyToCurve25519', (): void => {
it('converts a known key correctly', (): void => {
diff --git a/packages/util-crypto/src/ed25519/deriveHard.ts b/packages/util-crypto/src/ed25519/deriveHard.ts
index 5cd84122f..9d50ee957 100644
--- a/packages/util-crypto/src/ed25519/deriveHard.ts
+++ b/packages/util-crypto/src/ed25519/deriveHard.ts
@@ -3,7 +3,7 @@
import { compactAddLength, isU8a, stringToU8a, u8aConcat } from '@polkadot/util';
-import { blake2AsU8a } from '../blake2/asU8a';
+import { blake2AsU8a } from '../blake2/asU8a.js';
const HDKD = compactAddLength(stringToU8a('Ed25519HDKD'));
diff --git a/packages/util-crypto/src/ed25519/index.ts b/packages/util-crypto/src/ed25519/index.ts
index 82b1ccfe0..c7ff859f8 100644
--- a/packages/util-crypto/src/ed25519/index.ts
+++ b/packages/util-crypto/src/ed25519/index.ts
@@ -4,11 +4,11 @@
/**
* @summary Implements ed25519 operations
*/
-export { convertPublicKeyToCurve25519, convertSecretKeyToCurve25519 } from './convertKey';
-export { ed25519DeriveHard } from './deriveHard';
-export { ed25519PairFromRandom } from './pair/fromRandom';
-export { ed25519PairFromSecret } from './pair/fromSecret';
-export { ed25519PairFromSeed } from './pair/fromSeed';
-export { ed25519PairFromString } from './pair/fromString';
-export { ed25519Sign } from './sign';
-export { ed25519Verify } from './verify';
+export { convertPublicKeyToCurve25519, convertSecretKeyToCurve25519 } from './convertKey.js';
+export { ed25519DeriveHard } from './deriveHard.js';
+export { ed25519PairFromRandom } from './pair/fromRandom.js';
+export { ed25519PairFromSecret } from './pair/fromSecret.js';
+export { ed25519PairFromSeed } from './pair/fromSeed.js';
+export { ed25519PairFromString } from './pair/fromString.js';
+export { ed25519Sign } from './sign.js';
+export { ed25519Verify } from './verify.js';
diff --git a/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts b/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts
index 119c9fac5..0061f8f9e 100644
--- a/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromRandom.spec.ts
@@ -3,9 +3,9 @@
///
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
-import { ed25519PairFromRandom } from '..';
+import { ed25519PairFromRandom } from '../index.js';
describe('ed25519PairFromRandom', (): void => {
let keypair: Keypair;
diff --git a/packages/util-crypto/src/ed25519/pair/fromRandom.ts b/packages/util-crypto/src/ed25519/pair/fromRandom.ts
index df6ce7ad4..1a443438e 100644
--- a/packages/util-crypto/src/ed25519/pair/fromRandom.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromRandom.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
-import { randomAsU8a } from '../../random';
-import { ed25519PairFromSeed } from './fromSeed';
+import { randomAsU8a } from '../../random/index.js';
+import { ed25519PairFromSeed } from './fromSeed.js';
/**
* @name ed25519PairFromRandom
diff --git a/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts b/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts
index d0eedc5a3..80829394e 100644
--- a/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromSecret.spec.ts
@@ -3,7 +3,7 @@
///
-import { ed25519PairFromSecret } from '..';
+import { ed25519PairFromSecret } from '../index.js';
describe('ed25519PairFromSecret', (): void => {
const secretKey = new Uint8Array([
diff --git a/packages/util-crypto/src/ed25519/pair/fromSecret.ts b/packages/util-crypto/src/ed25519/pair/fromSecret.ts
index 503236542..709829aaf 100644
--- a/packages/util-crypto/src/ed25519/pair/fromSecret.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromSecret.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import nacl from 'tweetnacl';
diff --git a/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts b/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts
index 65b987961..349ae6268 100644
--- a/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromSeed.spec.ts
@@ -6,7 +6,7 @@
import { stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { ed25519PairFromSeed } from '..';
+import { ed25519PairFromSeed } from '../index.js';
describe('ed25519PairFromSeed', (): void => {
// NOTE: Aligned with Rust test, b"12345678901234567890123456789012"
diff --git a/packages/util-crypto/src/ed25519/pair/fromSeed.ts b/packages/util-crypto/src/ed25519/pair/fromSeed.ts
index 06f243707..98fce86b6 100644
--- a/packages/util-crypto/src/ed25519/pair/fromSeed.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromSeed.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import nacl from 'tweetnacl';
diff --git a/packages/util-crypto/src/ed25519/pair/fromString.spec.ts b/packages/util-crypto/src/ed25519/pair/fromString.spec.ts
index e0f1425cb..030ba13d8 100644
--- a/packages/util-crypto/src/ed25519/pair/fromString.spec.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromString.spec.ts
@@ -3,7 +3,7 @@
///
-import { ed25519PairFromString } from '..';
+import { ed25519PairFromString } from '../index.js';
describe('ed25519PairFromSeed', (): void => {
it('generates a valid publicKey/secretKey pair', (): void => {
diff --git a/packages/util-crypto/src/ed25519/pair/fromString.ts b/packages/util-crypto/src/ed25519/pair/fromString.ts
index d94b7bad3..a8d053171 100644
--- a/packages/util-crypto/src/ed25519/pair/fromString.ts
+++ b/packages/util-crypto/src/ed25519/pair/fromString.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import { stringToU8a } from '@polkadot/util';
-import { blake2AsU8a } from '../../blake2/asU8a';
-import { ed25519PairFromSeed } from './fromSeed';
+import { blake2AsU8a } from '../../blake2/asU8a.js';
+import { ed25519PairFromSeed } from './fromSeed.js';
/**
* @name ed25519PairFromString
diff --git a/packages/util-crypto/src/ed25519/sign.spec.ts b/packages/util-crypto/src/ed25519/sign.spec.ts
index f91abea04..a3d6599e4 100644
--- a/packages/util-crypto/src/ed25519/sign.spec.ts
+++ b/packages/util-crypto/src/ed25519/sign.spec.ts
@@ -6,8 +6,8 @@
import { stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { ed25519PairFromSeed, ed25519Sign } from '.';
+import { perfWasm } from '../test/index.js';
+import { ed25519PairFromSeed, ed25519Sign } from './index.js';
const PAIR = ed25519PairFromSeed(
stringToU8a('12345678901234567890123456789012')
diff --git a/packages/util-crypto/src/ed25519/sign.ts b/packages/util-crypto/src/ed25519/sign.ts
index 11c05380f..e096ce406 100644
--- a/packages/util-crypto/src/ed25519/sign.ts
+++ b/packages/util-crypto/src/ed25519/sign.ts
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
import nacl from 'tweetnacl';
diff --git a/packages/util-crypto/src/ed25519/verify.spec.ts b/packages/util-crypto/src/ed25519/verify.spec.ts
index 1aef6cc36..2bd828e4d 100644
--- a/packages/util-crypto/src/ed25519/verify.spec.ts
+++ b/packages/util-crypto/src/ed25519/verify.spec.ts
@@ -6,7 +6,7 @@
import { stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { ed25519PairFromSeed, ed25519Verify } from '.';
+import { ed25519PairFromSeed, ed25519Verify } from './index.js';
describe('ed25519Verify', (): void => {
let publicKey: Uint8Array;
diff --git a/packages/util-crypto/src/ethereum/encode.spec.ts b/packages/util-crypto/src/ethereum/encode.spec.ts
index 8d76c33c7..791077bf1 100644
--- a/packages/util-crypto/src/ethereum/encode.spec.ts
+++ b/packages/util-crypto/src/ethereum/encode.spec.ts
@@ -3,8 +3,8 @@
///
-import { keccakAsU8a } from '../keccak';
-import { ethereumEncode } from './';
+import { keccakAsU8a } from '../keccak/index.js';
+import { ethereumEncode } from './index.js';
describe('formatAddress', () => {
describe('address to address encoding', (): void => {
diff --git a/packages/util-crypto/src/ethereum/encode.ts b/packages/util-crypto/src/ethereum/encode.ts
index 5318ebfce..a0838b42a 100644
--- a/packages/util-crypto/src/ethereum/encode.ts
+++ b/packages/util-crypto/src/ethereum/encode.ts
@@ -5,8 +5,8 @@ import type { HexString } from '@polkadot/util/types';
import { u8aToHex, u8aToU8a } from '@polkadot/util';
-import { keccakAsU8a } from '../keccak';
-import { secp256k1Expand } from '../secp256k1';
+import { keccakAsU8a } from '../keccak/index.js';
+import { secp256k1Expand } from '../secp256k1/index.js';
function getH160 (u8a: Uint8Array): Uint8Array {
if ([33, 65].includes(u8a.length)) {
diff --git a/packages/util-crypto/src/ethereum/index.ts b/packages/util-crypto/src/ethereum/index.ts
index a33b418ba..ae389ff5b 100644
--- a/packages/util-crypto/src/ethereum/index.ts
+++ b/packages/util-crypto/src/ethereum/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { ethereumEncode } from './encode';
-export { isEthereumAddress } from './isAddress';
-export { isEthereumChecksum } from './isChecksum';
+export { ethereumEncode } from './encode.js';
+export { isEthereumAddress } from './isAddress.js';
+export { isEthereumChecksum } from './isChecksum.js';
diff --git a/packages/util-crypto/src/ethereum/isAddress.spec.ts b/packages/util-crypto/src/ethereum/isAddress.spec.ts
index dd8558c1f..5fd5e3df4 100644
--- a/packages/util-crypto/src/ethereum/isAddress.spec.ts
+++ b/packages/util-crypto/src/ethereum/isAddress.spec.ts
@@ -3,7 +3,7 @@
///
-import { isEthereumAddress } from './';
+import { isEthereumAddress } from './index.js';
const ADDRESS = '0x00a329c0648769A73afAc7F9381E08FB43dBEA72';
diff --git a/packages/util-crypto/src/ethereum/isAddress.ts b/packages/util-crypto/src/ethereum/isAddress.ts
index 5135a2eba..4a87db41a 100644
--- a/packages/util-crypto/src/ethereum/isAddress.ts
+++ b/packages/util-crypto/src/ethereum/isAddress.ts
@@ -5,7 +5,7 @@ import type { HexString } from '@polkadot/util/types';
import { isHex } from '@polkadot/util';
-import { isEthereumChecksum } from './isChecksum';
+import { isEthereumChecksum } from './isChecksum.js';
export function isEthereumAddress (address?: HexString | string): boolean {
if (!address || address.length !== 42 || !isHex(address)) {
diff --git a/packages/util-crypto/src/ethereum/isChecksum.ts b/packages/util-crypto/src/ethereum/isChecksum.ts
index b972e6d14..a11211ee2 100644
--- a/packages/util-crypto/src/ethereum/isChecksum.ts
+++ b/packages/util-crypto/src/ethereum/isChecksum.ts
@@ -3,7 +3,7 @@
import { u8aToHex } from '@polkadot/util';
-import { keccakAsU8a } from '../keccak';
+import { keccakAsU8a } from '../keccak/index.js';
function isInvalidChar (char: string, byte: number): boolean {
return char !== (
diff --git a/packages/util-crypto/src/ethereum/isCheksum.spec.ts b/packages/util-crypto/src/ethereum/isCheksum.spec.ts
index 89477a847..af705cc69 100644
--- a/packages/util-crypto/src/ethereum/isCheksum.spec.ts
+++ b/packages/util-crypto/src/ethereum/isCheksum.spec.ts
@@ -3,7 +3,7 @@
///
-import { isEthereumChecksum } from './';
+import { isEthereumChecksum } from './index.js';
const ADDRESS = '0x00a329c0648769A73afAc7F9381E08FB43dBEA72';
diff --git a/packages/util-crypto/src/hd/ethereum/index.spec.ts b/packages/util-crypto/src/hd/ethereum/index.spec.ts
index 487180cfa..b92a51d7b 100644
--- a/packages/util-crypto/src/hd/ethereum/index.spec.ts
+++ b/packages/util-crypto/src/hd/ethereum/index.spec.ts
@@ -5,7 +5,7 @@
import { mnemonicToLegacySeed } from '@polkadot/util-crypto';
-import { hdEthereum } from '.';
+import { hdEthereum } from './index.js';
describe('hdEthereum', (): void => {
const PHRASE = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
diff --git a/packages/util-crypto/src/hd/ethereum/index.ts b/packages/util-crypto/src/hd/ethereum/index.ts
index a6ab48760..401e770b7 100644
--- a/packages/util-crypto/src/hd/ethereum/index.ts
+++ b/packages/util-crypto/src/hd/ethereum/index.ts
@@ -1,14 +1,14 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import { bnToU8a, stringToU8a, u8aConcat } from '@polkadot/util';
-import { BN_BE_32_OPTS } from '../../bn';
-import { hmacShaAsU8a } from '../../hmac';
-import { secp256k1PairFromSeed, secp256k1PrivateKeyTweakAdd } from '../../secp256k1';
-import { HARDENED, hdValidatePath } from '../validatePath';
+import { BN_BE_32_OPTS } from '../../bn.js';
+import { hmacShaAsU8a } from '../../hmac/index.js';
+import { secp256k1PairFromSeed, secp256k1PrivateKeyTweakAdd } from '../../secp256k1/index.js';
+import { HARDENED, hdValidatePath } from '../validatePath.js';
interface CodedKeypair extends Keypair {
chainCode: Uint8Array;
diff --git a/packages/util-crypto/src/hd/index.ts b/packages/util-crypto/src/hd/index.ts
index 7d5b83106..ffae5a5f6 100644
--- a/packages/util-crypto/src/hd/index.ts
+++ b/packages/util-crypto/src/hd/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { hdEthereum } from './ethereum';
-export { hdLedger } from './ledger';
-export { hdValidatePath } from './validatePath';
+export { hdEthereum } from './ethereum/index.js';
+export { hdLedger } from './ledger/index.js';
+export { hdValidatePath } from './validatePath.js';
diff --git a/packages/util-crypto/src/hd/ledger/derivePrivate.ts b/packages/util-crypto/src/hd/ledger/derivePrivate.ts
index 80f8cdc07..ac30079e5 100644
--- a/packages/util-crypto/src/hd/ledger/derivePrivate.ts
+++ b/packages/util-crypto/src/hd/ledger/derivePrivate.ts
@@ -3,8 +3,8 @@
import { BN_EIGHT, bnToU8a, u8aConcat, u8aToBn } from '@polkadot/util';
-import { BN_LE_32_OPTS, BN_LE_512_OPTS, BN_LE_OPTS } from '../../bn';
-import { hmacShaAsU8a } from '../../hmac';
+import { BN_LE_32_OPTS, BN_LE_512_OPTS, BN_LE_OPTS } from '../../bn.js';
+import { hmacShaAsU8a } from '../../hmac/index.js';
// performs hard-only derivation on the xprv
export function ledgerDerivePrivate (xprv: Uint8Array, index: number): Uint8Array {
diff --git a/packages/util-crypto/src/hd/ledger/index.spec.ts b/packages/util-crypto/src/hd/ledger/index.spec.ts
index 5782a0929..60b60d2ff 100644
--- a/packages/util-crypto/src/hd/ledger/index.spec.ts
+++ b/packages/util-crypto/src/hd/ledger/index.spec.ts
@@ -5,7 +5,7 @@
import { u8aToHex } from '@polkadot/util';
-import { hdLedger } from '..';
+import { hdLedger } from '../index.js';
const MNE_0 = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
const MNE_1 = 'open jelly jeans corn ketchup supreme brief element armed lens vault weather original scissors rug priority vicious lesson raven spot gossip powder person volcano';
diff --git a/packages/util-crypto/src/hd/ledger/index.ts b/packages/util-crypto/src/hd/ledger/index.ts
index 6b60b9a23..83ff8e637 100644
--- a/packages/util-crypto/src/hd/ledger/index.ts
+++ b/packages/util-crypto/src/hd/ledger/index.ts
@@ -1,13 +1,13 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
-import { ed25519PairFromSeed } from '../../ed25519';
-import { mnemonicValidate } from '../../mnemonic';
-import { HARDENED, hdValidatePath } from '../validatePath';
-import { ledgerDerivePrivate } from './derivePrivate';
-import { ledgerMaster } from './master';
+import { ed25519PairFromSeed } from '../../ed25519/index.js';
+import { mnemonicValidate } from '../../mnemonic/index.js';
+import { HARDENED, hdValidatePath } from '../validatePath.js';
+import { ledgerDerivePrivate } from './derivePrivate.js';
+import { ledgerMaster } from './master.js';
export function hdLedger (_mnemonic: string, path: string): Keypair {
const words = _mnemonic
diff --git a/packages/util-crypto/src/hd/ledger/master.spec.ts b/packages/util-crypto/src/hd/ledger/master.spec.ts
index 021d61fb7..3014327c9 100644
--- a/packages/util-crypto/src/hd/ledger/master.spec.ts
+++ b/packages/util-crypto/src/hd/ledger/master.spec.ts
@@ -5,7 +5,7 @@
import { u8aToHex } from '@polkadot/util';
-import { ledgerMaster } from './master';
+import { ledgerMaster } from './master.js';
const MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
const XPRV = '0x402b03cd9c8bed9ba9f9bd6cd9c315ce9fcc59c7c25d37c85a36096617e69d418e35cb4a3b737afd007f0688618f21a8831643c0e6c77fc33c06026d2a0fc93832596435e70647d7d98ef102a32ea40319ca8fb6c851d7346d3bd8f9d1492658';
diff --git a/packages/util-crypto/src/hd/ledger/master.ts b/packages/util-crypto/src/hd/ledger/master.ts
index 82d7a7ce0..a204c6b32 100644
--- a/packages/util-crypto/src/hd/ledger/master.ts
+++ b/packages/util-crypto/src/hd/ledger/master.ts
@@ -3,8 +3,8 @@
import { u8aConcat } from '@polkadot/util';
-import { hmacShaAsU8a } from '../../hmac';
-import { mnemonicToSeedSync } from '../../mnemonic/bip39';
+import { hmacShaAsU8a } from '../../hmac/index.js';
+import { mnemonicToSeedSync } from '../../mnemonic/bip39.js';
const ED25519_CRYPTO = 'ed25519 seed';
diff --git a/packages/util-crypto/src/hd/validatePath.spec.ts b/packages/util-crypto/src/hd/validatePath.spec.ts
index 99d79bc36..3a96401ef 100644
--- a/packages/util-crypto/src/hd/validatePath.spec.ts
+++ b/packages/util-crypto/src/hd/validatePath.spec.ts
@@ -3,7 +3,7 @@
///
-import { hdValidatePath } from '.';
+import { hdValidatePath } from './index.js';
const VECTORS: [string, boolean][] = [
["m/44'/60'/0'/0/0", true],
diff --git a/packages/util-crypto/src/hmac/index.ts b/packages/util-crypto/src/hmac/index.ts
index cd8703b41..58c8548a7 100644
--- a/packages/util-crypto/src/hmac/index.ts
+++ b/packages/util-crypto/src/hmac/index.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { hmacShaAsU8a, hmacSha256AsU8a, hmacSha512AsU8a } from './shaAsU8a';
+export { hmacShaAsU8a, hmacSha256AsU8a, hmacSha512AsU8a } from './shaAsU8a.js';
diff --git a/packages/util-crypto/src/hmac/shaAsU8a.spec.ts b/packages/util-crypto/src/hmac/shaAsU8a.spec.ts
index 190b91bc8..9bab05a05 100644
--- a/packages/util-crypto/src/hmac/shaAsU8a.spec.ts
+++ b/packages/util-crypto/src/hmac/shaAsU8a.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a, stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { hmacShaAsU8a } from '.';
+import { perfWasm } from '../test/index.js';
+import { hmacShaAsU8a } from './index.js';
describe('hmacShaAsU8a', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/index.ts b/packages/util-crypto/src/index.ts
index 9c829e3c8..98894c16e 100644
--- a/packages/util-crypto/src/index.ts
+++ b/packages/util-crypto/src/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import './detectPackage';
+import './detectPackage.js';
-export * from './bundle';
+export * from './bundle.js';
diff --git a/packages/util-crypto/src/json/decrypt.ts b/packages/util-crypto/src/json/decrypt.ts
index 4596ab324..5d9f53387 100644
--- a/packages/util-crypto/src/json/decrypt.ts
+++ b/packages/util-crypto/src/json/decrypt.ts
@@ -5,8 +5,8 @@ import type { EncryptedJson } from './types';
import { hexToU8a, isHex } from '@polkadot/util';
-import { base64Decode } from '../base64';
-import { jsonDecryptData } from './decryptData';
+import { base64Decode } from '../base64/index.js';
+import { jsonDecryptData } from './decryptData.js';
export function jsonDecrypt ({ encoded, encoding }: EncryptedJson, passphrase?: string | null): Uint8Array {
if (!encoded) {
diff --git a/packages/util-crypto/src/json/decryptData.ts b/packages/util-crypto/src/json/decryptData.ts
index 00c7f9c72..9546c8280 100644
--- a/packages/util-crypto/src/json/decryptData.ts
+++ b/packages/util-crypto/src/json/decryptData.ts
@@ -5,9 +5,9 @@ import type { EncryptedJsonEncoding } from './types';
import { stringToU8a, u8aFixLength } from '@polkadot/util';
-import { naclDecrypt } from '../nacl';
-import { scryptEncode, scryptFromU8a } from '../scrypt';
-import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants';
+import { naclDecrypt } from '../nacl/index.js';
+import { scryptEncode, scryptFromU8a } from '../scrypt/index.js';
+import { ENCODING, NONCE_LENGTH, SCRYPT_LENGTH } from './constants.js';
export function jsonDecryptData (encrypted?: Uint8Array | null, passphrase?: string | null, encType: EncryptedJsonEncoding[] = ENCODING): Uint8Array {
if (!encrypted) {
diff --git a/packages/util-crypto/src/json/encrypt.ts b/packages/util-crypto/src/json/encrypt.ts
index 7354720e3..e3423996c 100644
--- a/packages/util-crypto/src/json/encrypt.ts
+++ b/packages/util-crypto/src/json/encrypt.ts
@@ -5,9 +5,9 @@ import type { EncryptedJson } from './types';
import { u8aConcat } from '@polkadot/util';
-import { naclEncrypt } from '../nacl';
-import { scryptEncode, scryptToU8a } from '../scrypt';
-import { jsonEncryptFormat } from './encryptFormat';
+import { naclEncrypt } from '../nacl/index.js';
+import { scryptEncode, scryptToU8a } from '../scrypt/index.js';
+import { jsonEncryptFormat } from './encryptFormat.js';
export function jsonEncrypt (data: Uint8Array, contentType: string[], passphrase?: string | null): EncryptedJson {
let isEncrypted = false;
diff --git a/packages/util-crypto/src/json/encryptFormat.ts b/packages/util-crypto/src/json/encryptFormat.ts
index e51a1b98a..d7cb7c4c3 100644
--- a/packages/util-crypto/src/json/encryptFormat.ts
+++ b/packages/util-crypto/src/json/encryptFormat.ts
@@ -3,8 +3,8 @@
import type { EncryptedJson } from './types';
-import { base64Encode } from '../base64';
-import { ENCODING, ENCODING_NONE, ENCODING_VERSION } from './constants';
+import { base64Encode } from '../base64/index.js';
+import { ENCODING, ENCODING_NONE, ENCODING_VERSION } from './constants.js';
export function jsonEncryptFormat (encoded: Uint8Array, contentType: string[], isEncrypted: boolean): EncryptedJson {
return {
diff --git a/packages/util-crypto/src/json/index.ts b/packages/util-crypto/src/json/index.ts
index 6b5511a6e..c9b815256 100644
--- a/packages/util-crypto/src/json/index.ts
+++ b/packages/util-crypto/src/json/index.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { jsonDecrypt } from './decrypt';
-export { jsonDecryptData } from './decryptData';
-export { jsonEncrypt } from './encrypt';
-export { jsonEncryptFormat } from './encryptFormat';
+export { jsonDecrypt } from './decrypt.js';
+export { jsonDecryptData } from './decryptData.js';
+export { jsonEncrypt } from './encrypt.js';
+export { jsonEncryptFormat } from './encryptFormat.js';
diff --git a/packages/util-crypto/src/keccak/asHex.spec.ts b/packages/util-crypto/src/keccak/asHex.spec.ts
index ee8c8aa58..32ebf2d33 100644
--- a/packages/util-crypto/src/keccak/asHex.spec.ts
+++ b/packages/util-crypto/src/keccak/asHex.spec.ts
@@ -5,7 +5,7 @@
import { waitReady } from '@polkadot/wasm-crypto';
-import { keccakAsHex } from '.';
+import { keccakAsHex } from './index.js';
const BITS: (256 | 512)[] = [256, 512];
diff --git a/packages/util-crypto/src/keccak/asU8a.spec.ts b/packages/util-crypto/src/keccak/asU8a.spec.ts
index 77546b7b8..db059d687 100644
--- a/packages/util-crypto/src/keccak/asU8a.spec.ts
+++ b/packages/util-crypto/src/keccak/asU8a.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a, stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { keccakAsU8a } from '.';
+import { perfWasm } from '../test/index.js';
+import { keccakAsU8a } from './index.js';
describe('keccakAsU8a', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/keccak/asU8a.ts b/packages/util-crypto/src/keccak/asU8a.ts
index ae3ee5fec..4b0c66b8f 100644
--- a/packages/util-crypto/src/keccak/asU8a.ts
+++ b/packages/util-crypto/src/keccak/asU8a.ts
@@ -5,7 +5,7 @@ import { keccak_256 as keccak256Js, keccak_512 as keccak512Js } from '@noble/has
import { keccak256, keccak512 } from '@polkadot/wasm-crypto';
-import { createAsHex, createBitHasher, createDualHasher } from '../helpers';
+import { createAsHex, createBitHasher, createDualHasher } from '../helpers.js';
/**
* @name keccakAsU8a
diff --git a/packages/util-crypto/src/keccak/index.ts b/packages/util-crypto/src/keccak/index.ts
index e89325f9a..70ef59a41 100644
--- a/packages/util-crypto/src/keccak/index.ts
+++ b/packages/util-crypto/src/keccak/index.ts
@@ -5,4 +5,4 @@
* @summary Create Keccak256/512 values as hex & Uint8Array output
*/
-export { keccakAsHex, keccakAsU8a, keccak256AsU8a, keccak512AsU8a } from './asU8a';
+export { keccakAsHex, keccakAsU8a, keccak256AsU8a, keccak512AsU8a } from './asU8a.js';
diff --git a/packages/util-crypto/src/key/DeriveJunction.ts b/packages/util-crypto/src/key/DeriveJunction.ts
index 32e56afc0..2f7350402 100644
--- a/packages/util-crypto/src/key/DeriveJunction.ts
+++ b/packages/util-crypto/src/key/DeriveJunction.ts
@@ -5,8 +5,8 @@ import type { HexString } from '@polkadot/util/types';
import { BN, bnToU8a, compactAddLength, hexToU8a, isBigInt, isBn, isHex, isNumber, isString, stringToU8a } from '@polkadot/util';
-import { blake2AsU8a } from '../blake2/asU8a';
-import { BN_LE_256_OPTS } from '../bn';
+import { blake2AsU8a } from '../blake2/asU8a.js';
+import { BN_LE_256_OPTS } from '../bn.js';
const RE_NUMBER = /^\d+$/;
diff --git a/packages/util-crypto/src/key/extractPath.spec.ts b/packages/util-crypto/src/key/extractPath.spec.ts
index 60d68a9ea..1b1c752be 100644
--- a/packages/util-crypto/src/key/extractPath.spec.ts
+++ b/packages/util-crypto/src/key/extractPath.spec.ts
@@ -3,7 +3,7 @@
///
-import { ExtractResult, keyExtractPath } from './extractPath';
+import { ExtractResult, keyExtractPath } from './extractPath.js';
describe('keyExtractPath', (): void => {
it('extracts properly from soft', (): void => {
diff --git a/packages/util-crypto/src/key/extractPath.ts b/packages/util-crypto/src/key/extractPath.ts
index b153199d0..ddfe2d04a 100644
--- a/packages/util-crypto/src/key/extractPath.ts
+++ b/packages/util-crypto/src/key/extractPath.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { DeriveJunction } from './DeriveJunction';
+import { DeriveJunction } from './DeriveJunction.js';
const RE_JUNCTION = /\/(\/?)([^/]+)/g;
diff --git a/packages/util-crypto/src/key/extractSuri.spec.ts b/packages/util-crypto/src/key/extractSuri.spec.ts
index 5906ccf8c..493e5bab9 100644
--- a/packages/util-crypto/src/key/extractSuri.spec.ts
+++ b/packages/util-crypto/src/key/extractSuri.spec.ts
@@ -3,7 +3,7 @@
///
-import { ExtractResult, keyExtractSuri } from './extractSuri';
+import { ExtractResult, keyExtractSuri } from './extractSuri.js';
describe('keyExtractSuri', (): void => {
it('does not extract from invalid suri', (): void => {
diff --git a/packages/util-crypto/src/key/extractSuri.ts b/packages/util-crypto/src/key/extractSuri.ts
index fc6099cb1..91f71da0f 100644
--- a/packages/util-crypto/src/key/extractSuri.ts
+++ b/packages/util-crypto/src/key/extractSuri.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { DeriveJunction } from './DeriveJunction';
-import { keyExtractPath } from './extractPath';
+import { DeriveJunction } from './DeriveJunction.js';
+import { keyExtractPath } from './extractPath.js';
export interface ExtractResult {
derivePath: string,
diff --git a/packages/util-crypto/src/key/fromPath.ts b/packages/util-crypto/src/key/fromPath.ts
index 13f0a4efa..4c88b0ad7 100644
--- a/packages/util-crypto/src/key/fromPath.ts
+++ b/packages/util-crypto/src/key/fromPath.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair, KeypairType } from '../types';
+import type { Keypair, KeypairType } from '../types.js';
-import { DeriveJunction } from './DeriveJunction';
-import { keyHdkdEcdsa } from './hdkdEcdsa';
-import { keyHdkdEd25519 } from './hdkdEd25519';
-import { keyHdkdSr25519 } from './hdkdSr25519';
+import { DeriveJunction } from './DeriveJunction.js';
+import { keyHdkdEcdsa } from './hdkdEcdsa.js';
+import { keyHdkdEd25519 } from './hdkdEd25519.js';
+import { keyHdkdSr25519 } from './hdkdSr25519.js';
const generators = {
ecdsa: keyHdkdEcdsa,
diff --git a/packages/util-crypto/src/key/hdkdDerive.ts b/packages/util-crypto/src/key/hdkdDerive.ts
index 6c95d4292..2ad315704 100644
--- a/packages/util-crypto/src/key/hdkdDerive.ts
+++ b/packages/util-crypto/src/key/hdkdDerive.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
-import { DeriveJunction } from './DeriveJunction';
+import { DeriveJunction } from './DeriveJunction.js';
export function createSeedDeriveFn (fromSeed: (seed: Uint8Array) => Keypair, derive: (seed: Uint8Array, chainCode: Uint8Array) => Uint8Array): (keypair: Keypair, junction: DeriveJunction) => Keypair {
return (keypair: Keypair, { chainCode, isHard }: DeriveJunction): Keypair => {
diff --git a/packages/util-crypto/src/key/hdkdEcdsa.ts b/packages/util-crypto/src/key/hdkdEcdsa.ts
index 2a731aa86..3ed264505 100644
--- a/packages/util-crypto/src/key/hdkdEcdsa.ts
+++ b/packages/util-crypto/src/key/hdkdEcdsa.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { secp256k1DeriveHard } from '../secp256k1/deriveHard';
-import { secp256k1PairFromSeed } from '../secp256k1/pair/fromSeed';
-import { createSeedDeriveFn } from './hdkdDerive';
+import { secp256k1DeriveHard } from '../secp256k1/deriveHard.js';
+import { secp256k1PairFromSeed } from '../secp256k1/pair/fromSeed.js';
+import { createSeedDeriveFn } from './hdkdDerive.js';
export const keyHdkdEcdsa = createSeedDeriveFn(secp256k1PairFromSeed, secp256k1DeriveHard);
diff --git a/packages/util-crypto/src/key/hdkdEd25519.ts b/packages/util-crypto/src/key/hdkdEd25519.ts
index da99c5eec..236fdc055 100644
--- a/packages/util-crypto/src/key/hdkdEd25519.ts
+++ b/packages/util-crypto/src/key/hdkdEd25519.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { ed25519DeriveHard, ed25519PairFromSeed } from '../ed25519';
-import { createSeedDeriveFn } from './hdkdDerive';
+import { ed25519DeriveHard, ed25519PairFromSeed } from '../ed25519/index.js';
+import { createSeedDeriveFn } from './hdkdDerive.js';
export const keyHdkdEd25519 = createSeedDeriveFn(ed25519PairFromSeed, ed25519DeriveHard);
diff --git a/packages/util-crypto/src/key/hdkdSr25519.ts b/packages/util-crypto/src/key/hdkdSr25519.ts
index f35a0fcdd..0d17a8497 100644
--- a/packages/util-crypto/src/key/hdkdSr25519.ts
+++ b/packages/util-crypto/src/key/hdkdSr25519.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
-import { sr25519DeriveHard } from '../sr25519/deriveHard';
-import { sr25519DeriveSoft } from '../sr25519/deriveSoft';
-import { DeriveJunction } from './DeriveJunction';
+import { sr25519DeriveHard } from '../sr25519/deriveHard.js';
+import { sr25519DeriveSoft } from '../sr25519/deriveSoft.js';
+import { DeriveJunction } from './DeriveJunction.js';
export function keyHdkdSr25519 (keypair: Keypair, { chainCode, isSoft }: DeriveJunction): Keypair {
return isSoft
diff --git a/packages/util-crypto/src/key/index.ts b/packages/util-crypto/src/key/index.ts
index baa327af1..a873e9772 100644
--- a/packages/util-crypto/src/key/index.ts
+++ b/packages/util-crypto/src/key/index.ts
@@ -4,9 +4,9 @@
/**
* @summary Create keys from paths, seeds and password
*/
-export { keyExtractPath } from './extractPath';
-export { keyExtractSuri } from './extractSuri';
-export { keyFromPath } from './fromPath';
-export { keyHdkdEd25519 } from './hdkdEd25519';
-export { keyHdkdSr25519 } from './hdkdSr25519';
-export { keyHdkdEcdsa } from './hdkdEcdsa';
+export { keyExtractPath } from './extractPath.js';
+export { keyExtractSuri } from './extractSuri.js';
+export { keyFromPath } from './fromPath.js';
+export { keyHdkdEd25519 } from './hdkdEd25519.js';
+export { keyHdkdSr25519 } from './hdkdSr25519.js';
+export { keyHdkdEcdsa } from './hdkdEcdsa.js';
diff --git a/packages/util-crypto/src/mnemonic/bip39.spec.ts b/packages/util-crypto/src/mnemonic/bip39.spec.ts
index 918cb8408..828fd746b 100644
--- a/packages/util-crypto/src/mnemonic/bip39.spec.ts
+++ b/packages/util-crypto/src/mnemonic/bip39.spec.ts
@@ -3,8 +3,8 @@
///
-import { entropyToMnemonic, mnemonicToEntropy } from './bip39';
-import DEFAULT_WORDLIST from './bip39-en';
+import { entropyToMnemonic, mnemonicToEntropy } from './bip39.js';
+import DEFAULT_WORDLIST from './bip39-en.js';
describe('wordlist', (): void => {
it('has the correct number of words', (): void => {
diff --git a/packages/util-crypto/src/mnemonic/bip39.ts b/packages/util-crypto/src/mnemonic/bip39.ts
index 8fa275aec..3ec149131 100644
--- a/packages/util-crypto/src/mnemonic/bip39.ts
+++ b/packages/util-crypto/src/mnemonic/bip39.ts
@@ -16,10 +16,10 @@
import { stringToU8a, u8aToU8a } from '@polkadot/util';
-import { pbkdf2Encode } from '../pbkdf2';
-import { randomAsU8a } from '../random';
-import { sha256AsU8a } from '../sha';
-import DEFAULT_WORDLIST from './bip39-en';
+import { pbkdf2Encode } from '../pbkdf2/index.js';
+import { randomAsU8a } from '../random/index.js';
+import { sha256AsU8a } from '../sha/index.js';
+import DEFAULT_WORDLIST from './bip39-en.js';
const INVALID_MNEMONIC = 'Invalid mnemonic';
const INVALID_ENTROPY = 'Invalid entropy';
diff --git a/packages/util-crypto/src/mnemonic/generate.spec.ts b/packages/util-crypto/src/mnemonic/generate.spec.ts
index 226cbadac..e05d80cf8 100644
--- a/packages/util-crypto/src/mnemonic/generate.spec.ts
+++ b/packages/util-crypto/src/mnemonic/generate.spec.ts
@@ -3,9 +3,9 @@
///
-import { cryptoWaitReady } from '..';
-import { mnemonicGenerate } from './generate';
-import { mnemonicValidate } from './validate';
+import { cryptoWaitReady } from '../index.js';
+import { mnemonicGenerate } from './generate.js';
+import { mnemonicValidate } from './validate.js';
await cryptoWaitReady();
diff --git a/packages/util-crypto/src/mnemonic/generate.ts b/packages/util-crypto/src/mnemonic/generate.ts
index fb55f8009..991a9e8ce 100644
--- a/packages/util-crypto/src/mnemonic/generate.ts
+++ b/packages/util-crypto/src/mnemonic/generate.ts
@@ -4,7 +4,7 @@
import { hasBigInt } from '@polkadot/util';
import { bip39Generate, isReady } from '@polkadot/wasm-crypto';
-import { generateMnemonic } from './bip39';
+import { generateMnemonic } from './bip39.js';
/**
* @name mnemonicGenerate
diff --git a/packages/util-crypto/src/mnemonic/index.ts b/packages/util-crypto/src/mnemonic/index.ts
index 79f55d74f..06a3677a8 100644
--- a/packages/util-crypto/src/mnemonic/index.ts
+++ b/packages/util-crypto/src/mnemonic/index.ts
@@ -4,8 +4,8 @@
/**
* @summary Create valid mnemonic strings, validate them using BIP39, and convert them to valid seeds
*/
-export { mnemonicGenerate } from './generate';
-export { mnemonicToEntropy } from './toEntropy';
-export { mnemonicToLegacySeed } from './toLegacySeed';
-export { mnemonicToMiniSecret } from './toMiniSecret';
-export { mnemonicValidate } from './validate';
+export { mnemonicGenerate } from './generate.js';
+export { mnemonicToEntropy } from './toEntropy.js';
+export { mnemonicToLegacySeed } from './toLegacySeed.js';
+export { mnemonicToMiniSecret } from './toMiniSecret.js';
+export { mnemonicValidate } from './validate.js';
diff --git a/packages/util-crypto/src/mnemonic/toEntropy.spec.ts b/packages/util-crypto/src/mnemonic/toEntropy.spec.ts
index 56b2dd056..030ff6656 100644
--- a/packages/util-crypto/src/mnemonic/toEntropy.spec.ts
+++ b/packages/util-crypto/src/mnemonic/toEntropy.spec.ts
@@ -5,9 +5,9 @@
import { u8aToHex } from '@polkadot/util';
-import tests from '../sr25519/pair/testing.spec';
-import { cryptoWaitReady } from '..';
-import { mnemonicToEntropy } from './toEntropy';
+import { cryptoWaitReady } from '../index.js';
+import tests from '../sr25519/pair/testing.spec.js';
+import { mnemonicToEntropy } from './toEntropy.js';
await cryptoWaitReady();
diff --git a/packages/util-crypto/src/mnemonic/toEntropy.ts b/packages/util-crypto/src/mnemonic/toEntropy.ts
index 5c74bbbe2..d07a05f3c 100644
--- a/packages/util-crypto/src/mnemonic/toEntropy.ts
+++ b/packages/util-crypto/src/mnemonic/toEntropy.ts
@@ -4,7 +4,7 @@
import { hasBigInt } from '@polkadot/util';
import { bip39ToEntropy, isReady } from '@polkadot/wasm-crypto';
-import { mnemonicToEntropy as jsToEntropy } from './bip39';
+import { mnemonicToEntropy as jsToEntropy } from './bip39.js';
export function mnemonicToEntropy (mnemonic: string, onlyJs?: boolean): Uint8Array {
return !hasBigInt || (!onlyJs && isReady())
diff --git a/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts b/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts
index 301aa84db..9719e8960 100644
--- a/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts
+++ b/packages/util-crypto/src/mnemonic/toLegacySeed.spec.ts
@@ -6,7 +6,7 @@
import { u8aEq, u8aToHex } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { mnemonicToLegacySeed } from './';
+import { mnemonicToLegacySeed } from './index.js';
const MNEMONIC = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
const SEED_32 = '0x3c121e20de068083b49c2315697fb59a2d9e8643c24e5ea7628132c58969a027';
diff --git a/packages/util-crypto/src/mnemonic/toLegacySeed.ts b/packages/util-crypto/src/mnemonic/toLegacySeed.ts
index 31313a03a..73a2a81a5 100644
--- a/packages/util-crypto/src/mnemonic/toLegacySeed.ts
+++ b/packages/util-crypto/src/mnemonic/toLegacySeed.ts
@@ -4,8 +4,8 @@
import { hasBigInt } from '@polkadot/util';
import { bip39ToSeed, isReady } from '@polkadot/wasm-crypto';
-import { mnemonicToSeedSync } from './bip39';
-import { mnemonicValidate } from './validate';
+import { mnemonicToSeedSync } from './bip39.js';
+import { mnemonicValidate } from './validate.js';
/**
* @name mnemonicToLegacySeed
diff --git a/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts b/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts
index ea81ccc15..66cff886f 100644
--- a/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts
+++ b/packages/util-crypto/src/mnemonic/toMiniSecret.spec.ts
@@ -5,9 +5,9 @@
import { u8aEq, u8aToHex } from '@polkadot/util';
-import tests from '../sr25519/pair/testing.spec';
-import { cryptoWaitReady } from '..';
-import { mnemonicToMiniSecret } from './toMiniSecret';
+import { cryptoWaitReady } from '../index.js';
+import tests from '../sr25519/pair/testing.spec.js';
+import { mnemonicToMiniSecret } from './toMiniSecret.js';
const MNEMONIC = 'seed sock milk update focus rotate barely fade car face mechanic mercy';
const SEED = '0x4d1ab2a57929edfd018aaa974e62ed557e3f54b4104acabedf73c8f5a1dbb029';
diff --git a/packages/util-crypto/src/mnemonic/toMiniSecret.ts b/packages/util-crypto/src/mnemonic/toMiniSecret.ts
index 02e2413f8..a17f65261 100644
--- a/packages/util-crypto/src/mnemonic/toMiniSecret.ts
+++ b/packages/util-crypto/src/mnemonic/toMiniSecret.ts
@@ -4,9 +4,9 @@
import { stringToU8a } from '@polkadot/util';
import { bip39ToMiniSecret, isReady } from '@polkadot/wasm-crypto';
-import { pbkdf2Encode } from '../pbkdf2';
-import { mnemonicToEntropy } from './toEntropy';
-import { mnemonicValidate } from './validate';
+import { pbkdf2Encode } from '../pbkdf2/index.js';
+import { mnemonicToEntropy } from './toEntropy.js';
+import { mnemonicValidate } from './validate.js';
export function mnemonicToMiniSecret (mnemonic: string, password = '', onlyJs?: boolean): Uint8Array {
if (!mnemonicValidate(mnemonic)) {
diff --git a/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts b/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts
index e850d1f51..d2943f8f9 100644
--- a/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts
+++ b/packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts
@@ -5,7 +5,7 @@
import { arrayRange, u8aEq } from '@polkadot/util';
-import { cryptoWaitReady, ed25519PairFromSeed, mnemonicGenerate, mnemonicToMiniSecret, sr25519PairFromSeed } from '..';
+import { cryptoWaitReady, ed25519PairFromSeed, mnemonicGenerate, mnemonicToMiniSecret, sr25519PairFromSeed } from '../index.js';
// NOTE: This basically controls how long stuff runs for, YMMV
//
diff --git a/packages/util-crypto/src/mnemonic/validate.spec.ts b/packages/util-crypto/src/mnemonic/validate.spec.ts
index 32d1841d7..c7432e796 100644
--- a/packages/util-crypto/src/mnemonic/validate.spec.ts
+++ b/packages/util-crypto/src/mnemonic/validate.spec.ts
@@ -3,8 +3,8 @@
///
-import { cryptoWaitReady } from '..';
-import { mnemonicValidate } from './validate';
+import { cryptoWaitReady } from '../index.js';
+import { mnemonicValidate } from './validate.js';
await cryptoWaitReady();
diff --git a/packages/util-crypto/src/mnemonic/validate.ts b/packages/util-crypto/src/mnemonic/validate.ts
index c49198bd8..57a17e754 100644
--- a/packages/util-crypto/src/mnemonic/validate.ts
+++ b/packages/util-crypto/src/mnemonic/validate.ts
@@ -4,7 +4,7 @@
import { hasBigInt } from '@polkadot/util';
import { bip39Validate, isReady } from '@polkadot/wasm-crypto';
-import { validateMnemonic } from './bip39';
+import { validateMnemonic } from './bip39.js';
/**
* @name mnemonicValidate
diff --git a/packages/util-crypto/src/mod.ts b/packages/util-crypto/src/mod.ts
index e4f1c7306..8a54bfe9c 100644
--- a/packages/util-crypto/src/mod.ts
+++ b/packages/util-crypto/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './index';
+export * from './index.js';
diff --git a/packages/util-crypto/src/nacl/box/fromSecret.spec.ts b/packages/util-crypto/src/nacl/box/fromSecret.spec.ts
index 62fbc4c83..7b3ebf576 100644
--- a/packages/util-crypto/src/nacl/box/fromSecret.spec.ts
+++ b/packages/util-crypto/src/nacl/box/fromSecret.spec.ts
@@ -3,7 +3,7 @@
///
-import { naclBoxPairFromSecret } from '..';
+import { naclBoxPairFromSecret } from '../index.js';
describe('naclBoxPairFromSecret', (): void => {
const secretKey = new Uint8Array([
diff --git a/packages/util-crypto/src/nacl/box/fromSecret.ts b/packages/util-crypto/src/nacl/box/fromSecret.ts
index 92714b06d..3be1769a9 100644
--- a/packages/util-crypto/src/nacl/box/fromSecret.ts
+++ b/packages/util-crypto/src/nacl/box/fromSecret.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import nacl from 'tweetnacl';
diff --git a/packages/util-crypto/src/nacl/decrypt.spec.ts b/packages/util-crypto/src/nacl/decrypt.spec.ts
index 6ce3bc1dc..1ff8cbae3 100644
--- a/packages/util-crypto/src/nacl/decrypt.spec.ts
+++ b/packages/util-crypto/src/nacl/decrypt.spec.ts
@@ -3,7 +3,7 @@
///
-import { naclDecrypt, naclEncrypt } from '.';
+import { naclDecrypt, naclEncrypt } from './index.js';
describe('naclDecrypt', (): void => {
it('decrypts a encrypted message', (): void => {
diff --git a/packages/util-crypto/src/nacl/encrypt.spec.ts b/packages/util-crypto/src/nacl/encrypt.spec.ts
index a772c0217..f295112c0 100644
--- a/packages/util-crypto/src/nacl/encrypt.spec.ts
+++ b/packages/util-crypto/src/nacl/encrypt.spec.ts
@@ -3,7 +3,7 @@
///
-import { naclEncrypt } from '.';
+import { naclEncrypt } from './index.js';
describe('naclEncrypt', (): void => {
it('encrypts a message', (): void => {
diff --git a/packages/util-crypto/src/nacl/encrypt.ts b/packages/util-crypto/src/nacl/encrypt.ts
index 4ac5e4b7e..5fdc42f0e 100644
--- a/packages/util-crypto/src/nacl/encrypt.ts
+++ b/packages/util-crypto/src/nacl/encrypt.ts
@@ -3,7 +3,7 @@
import nacl from 'tweetnacl';
-import { randomAsU8a } from '../random/asU8a';
+import { randomAsU8a } from '../random/asU8a.js';
interface Encrypted {
encrypted: Uint8Array;
diff --git a/packages/util-crypto/src/nacl/index.ts b/packages/util-crypto/src/nacl/index.ts
index 88b5ce493..592eef6fa 100644
--- a/packages/util-crypto/src/nacl/index.ts
+++ b/packages/util-crypto/src/nacl/index.ts
@@ -4,8 +4,8 @@
/**
* @summary Implements [NaCl](http://nacl.cr.yp.to/) secret-key authenticated encryption, public-key authenticated encryption
*/
-export { naclDecrypt } from './decrypt';
-export { naclEncrypt } from './encrypt';
-export { naclBoxPairFromSecret } from './box/fromSecret';
-export { naclOpen } from './open';
-export { naclSeal } from './seal';
+export { naclDecrypt } from './decrypt.js';
+export { naclEncrypt } from './encrypt.js';
+export { naclBoxPairFromSecret } from './box/fromSecret.js';
+export { naclOpen } from './open.js';
+export { naclSeal } from './seal.js';
diff --git a/packages/util-crypto/src/nacl/open.spec.ts b/packages/util-crypto/src/nacl/open.spec.ts
index 8b7e6a121..2db38a1ea 100644
--- a/packages/util-crypto/src/nacl/open.spec.ts
+++ b/packages/util-crypto/src/nacl/open.spec.ts
@@ -3,10 +3,9 @@
///
-import { ed25519PairFromString } from '../ed25519';
-import { keyExtractPath } from '../key';
-import { keyFromPath } from '../key/fromPath';
-import { naclBoxPairFromSecret, naclOpen, naclSeal } from '.';
+import { ed25519PairFromString } from '../ed25519/index.js';
+import { keyExtractPath, keyFromPath } from '../key/index.js';
+import { naclBoxPairFromSecret, naclOpen, naclSeal } from './index.js';
describe('naclOpen', (): void => {
it('opens a sealed message by the sender', (): void => {
diff --git a/packages/util-crypto/src/nacl/seal.spec.ts b/packages/util-crypto/src/nacl/seal.spec.ts
index 6db9cb8d1..c9b45e7ea 100644
--- a/packages/util-crypto/src/nacl/seal.spec.ts
+++ b/packages/util-crypto/src/nacl/seal.spec.ts
@@ -3,8 +3,8 @@
///
-import { ed25519PairFromString } from '../ed25519';
-import { naclBoxPairFromSecret, naclSeal } from '.';
+import { ed25519PairFromString } from '../ed25519/index.js';
+import { naclBoxPairFromSecret, naclSeal } from './index.js';
describe('naclSeal', (): void => {
it('seals a message', (): void => {
diff --git a/packages/util-crypto/src/nacl/seal.ts b/packages/util-crypto/src/nacl/seal.ts
index 32da82c09..6c8afc3b6 100644
--- a/packages/util-crypto/src/nacl/seal.ts
+++ b/packages/util-crypto/src/nacl/seal.ts
@@ -3,7 +3,7 @@
import nacl from 'tweetnacl';
-import { randomAsU8a } from '../random/asU8a';
+import { randomAsU8a } from '../random/asU8a.js';
interface Sealed {
sealed: Uint8Array;
diff --git a/packages/util-crypto/src/pbkdf2/encode.spec.ts b/packages/util-crypto/src/pbkdf2/encode.spec.ts
index 990e75126..ab0402ecd 100644
--- a/packages/util-crypto/src/pbkdf2/encode.spec.ts
+++ b/packages/util-crypto/src/pbkdf2/encode.spec.ts
@@ -6,9 +6,9 @@
import { u8aEq, u8aToHex } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { randomAsU8a } from '../random/asU8a';
-import { perfWasm } from '../test';
-import { pbkdf2Encode } from '.';
+import { randomAsU8a } from '../random/asU8a.js';
+import { perfWasm } from '../test/index.js';
+import { pbkdf2Encode } from './index.js';
const KNOWN_SALT = new Uint8Array([
1, 2, 3, 4, 5, 6, 7, 8,
diff --git a/packages/util-crypto/src/pbkdf2/encode.ts b/packages/util-crypto/src/pbkdf2/encode.ts
index 79d98129b..dbcf8f87e 100644
--- a/packages/util-crypto/src/pbkdf2/encode.ts
+++ b/packages/util-crypto/src/pbkdf2/encode.ts
@@ -9,7 +9,7 @@ import { sha512 } from '@noble/hashes/sha512';
import { hasBigInt, u8aToU8a } from '@polkadot/util';
import { isReady, pbkdf2 } from '@polkadot/wasm-crypto';
-import { randomAsU8a } from '../random/asU8a';
+import { randomAsU8a } from '../random/asU8a.js';
interface Result {
password: Uint8Array;
diff --git a/packages/util-crypto/src/pbkdf2/index.ts b/packages/util-crypto/src/pbkdf2/index.ts
index 8a2dd5b8e..20e34e504 100644
--- a/packages/util-crypto/src/pbkdf2/index.ts
+++ b/packages/util-crypto/src/pbkdf2/index.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { pbkdf2Encode } from './encode';
+export { pbkdf2Encode } from './encode.js';
diff --git a/packages/util-crypto/src/random/asHex.spec.ts b/packages/util-crypto/src/random/asHex.spec.ts
index 4904716d0..d6e1d0697 100644
--- a/packages/util-crypto/src/random/asHex.spec.ts
+++ b/packages/util-crypto/src/random/asHex.spec.ts
@@ -5,7 +5,7 @@
import { isHex } from '@polkadot/util';
-import { randomAsHex } from '.';
+import { randomAsHex } from './index.js';
describe('randomAsBuffer', (): void => {
it('generated results does not match', (): void => {
diff --git a/packages/util-crypto/src/random/asNumber.spec.ts b/packages/util-crypto/src/random/asNumber.spec.ts
index 73e3fc5b6..e0fd36527 100644
--- a/packages/util-crypto/src/random/asNumber.spec.ts
+++ b/packages/util-crypto/src/random/asNumber.spec.ts
@@ -3,7 +3,7 @@
///
-import { randomAsNumber } from '.';
+import { randomAsNumber } from './index.js';
describe('randomAsNumber', (): void => {
it('generates subsequent non-matching numbers', (): void => {
diff --git a/packages/util-crypto/src/random/asNumber.ts b/packages/util-crypto/src/random/asNumber.ts
index be07e5db6..de9304380 100644
--- a/packages/util-crypto/src/random/asNumber.ts
+++ b/packages/util-crypto/src/random/asNumber.ts
@@ -3,7 +3,7 @@
import { BN, hexToBn } from '@polkadot/util';
-import { randomAsHex } from './asU8a';
+import { randomAsHex } from './asU8a.js';
const BN_53 = new BN(0b11111111111111111111111111111111111111111111111111111);
diff --git a/packages/util-crypto/src/random/asU8a.spec.ts b/packages/util-crypto/src/random/asU8a.spec.ts
index e193898a1..da5308260 100644
--- a/packages/util-crypto/src/random/asU8a.spec.ts
+++ b/packages/util-crypto/src/random/asU8a.spec.ts
@@ -5,7 +5,7 @@
import { isU8a } from '@polkadot/util';
-import { randomAsU8a } from '.';
+import { randomAsU8a } from './index.js';
describe('randomAsU8a', (): void => {
it('generates a Uint8Array', (): void => {
diff --git a/packages/util-crypto/src/random/asU8a.ts b/packages/util-crypto/src/random/asU8a.ts
index b1334d13a..370328786 100644
--- a/packages/util-crypto/src/random/asU8a.ts
+++ b/packages/util-crypto/src/random/asU8a.ts
@@ -3,7 +3,7 @@
import { getRandomValues } from '@polkadot/x-randomvalues';
-import { createAsHex } from '../helpers';
+import { createAsHex } from '../helpers.js';
/**
* @name randomAsU8a
diff --git a/packages/util-crypto/src/random/index.ts b/packages/util-crypto/src/random/index.ts
index 42623d629..51761d973 100644
--- a/packages/util-crypto/src/random/index.ts
+++ b/packages/util-crypto/src/random/index.ts
@@ -5,5 +5,5 @@
* @summary Returns a sequence of secure random bytes in a variety of formats
*/
-export { randomAsNumber } from './asNumber';
-export { randomAsHex, randomAsU8a } from './asU8a';
+export { randomAsNumber } from './asNumber.js';
+export { randomAsHex, randomAsU8a } from './asU8a.js';
diff --git a/packages/util-crypto/src/scrypt/encode.spec.ts b/packages/util-crypto/src/scrypt/encode.spec.ts
index 9d8176328..c04fd3f28 100644
--- a/packages/util-crypto/src/scrypt/encode.spec.ts
+++ b/packages/util-crypto/src/scrypt/encode.spec.ts
@@ -5,9 +5,9 @@
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { DEFAULT_PARAMS } from './defaults';
-import { scryptEncode } from '.';
+import { perfWasm } from '../test/index.js';
+import { DEFAULT_PARAMS } from './defaults.js';
+import { scryptEncode } from './index.js';
export const KNOWN_TEST = 'testing, 123';
diff --git a/packages/util-crypto/src/scrypt/encode.ts b/packages/util-crypto/src/scrypt/encode.ts
index 5349f1d8b..cf80d1441 100644
--- a/packages/util-crypto/src/scrypt/encode.ts
+++ b/packages/util-crypto/src/scrypt/encode.ts
@@ -2,15 +2,15 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { Params } from './types';
+import type { Params } from './types.js';
import { scrypt as scryptJs } from '@noble/hashes/scrypt';
import { hasBigInt, objectSpread, u8aToU8a } from '@polkadot/util';
import { isReady, scrypt } from '@polkadot/wasm-crypto';
-import { randomAsU8a } from '../random/asU8a';
-import { DEFAULT_PARAMS } from './defaults';
+import { randomAsU8a } from '../random/asU8a.js';
+import { DEFAULT_PARAMS } from './defaults.js';
interface Result {
params: Params,
diff --git a/packages/util-crypto/src/scrypt/fromU8a.ts b/packages/util-crypto/src/scrypt/fromU8a.ts
index f27b8dcbe..9e6be4150 100644
--- a/packages/util-crypto/src/scrypt/fromU8a.ts
+++ b/packages/util-crypto/src/scrypt/fromU8a.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Params } from './types';
+import type { Params } from './types.js';
import { u8aToBn } from '@polkadot/util';
-import { BN_LE_OPTS } from '../bn';
-import { DEFAULT_PARAMS } from './defaults';
+import { BN_LE_OPTS } from '../bn.js';
+import { DEFAULT_PARAMS } from './defaults.js';
interface Result {
params: Params,
diff --git a/packages/util-crypto/src/scrypt/index.ts b/packages/util-crypto/src/scrypt/index.ts
index 64b2405d8..32fa89642 100644
--- a/packages/util-crypto/src/scrypt/index.ts
+++ b/packages/util-crypto/src/scrypt/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { scryptEncode } from './encode';
-export { scryptFromU8a } from './fromU8a';
-export { scryptToU8a } from './toU8a';
+export { scryptEncode } from './encode.js';
+export { scryptFromU8a } from './fromU8a.js';
+export { scryptToU8a } from './toU8a.js';
diff --git a/packages/util-crypto/src/scrypt/toU8a.ts b/packages/util-crypto/src/scrypt/toU8a.ts
index 869de9c4e..bf956d218 100644
--- a/packages/util-crypto/src/scrypt/toU8a.ts
+++ b/packages/util-crypto/src/scrypt/toU8a.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Params } from './types';
+import type { Params } from './types.js';
import { bnToU8a, u8aConcat } from '@polkadot/util';
-import { BN_LE_32_OPTS } from '../bn';
+import { BN_LE_32_OPTS } from '../bn.js';
export function scryptToU8a (salt: Uint8Array, { N, p, r }: Params): Uint8Array {
return u8aConcat(
diff --git a/packages/util-crypto/src/secp256k1/compress.spec.ts b/packages/util-crypto/src/secp256k1/compress.spec.ts
index b1af4a41b..0d21275b5 100644
--- a/packages/util-crypto/src/secp256k1/compress.spec.ts
+++ b/packages/util-crypto/src/secp256k1/compress.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { secp256k1Compress } from '.';
+import { perfWasm } from '../test/index.js';
+import { secp256k1Compress } from './index.js';
describe('secp256k1Compress', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/secp256k1/deriveHard.ts b/packages/util-crypto/src/secp256k1/deriveHard.ts
index 37883c10a..1da72a144 100644
--- a/packages/util-crypto/src/secp256k1/deriveHard.ts
+++ b/packages/util-crypto/src/secp256k1/deriveHard.ts
@@ -3,7 +3,7 @@
import { compactAddLength, isU8a, stringToU8a, u8aConcat } from '@polkadot/util';
-import { blake2AsU8a } from '../blake2/asU8a';
+import { blake2AsU8a } from '../blake2/asU8a.js';
const HDKD = compactAddLength(stringToU8a('Secp256k1HDKD'));
diff --git a/packages/util-crypto/src/secp256k1/expand.spec.ts b/packages/util-crypto/src/secp256k1/expand.spec.ts
index e1b0ed9c1..20a412761 100644
--- a/packages/util-crypto/src/secp256k1/expand.spec.ts
+++ b/packages/util-crypto/src/secp256k1/expand.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { secp256k1Expand } from '.';
+import { perfWasm } from '../test/index.js';
+import { secp256k1Expand } from './index.js';
describe('secp256k1Expand', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/secp256k1/expand.ts b/packages/util-crypto/src/secp256k1/expand.ts
index 617fbe939..ad77ed9ef 100644
--- a/packages/util-crypto/src/secp256k1/expand.ts
+++ b/packages/util-crypto/src/secp256k1/expand.ts
@@ -6,7 +6,7 @@ import { Point } from '@noble/secp256k1';
import { bnToU8a, hasBigInt, u8aConcat } from '@polkadot/util';
import { isReady, secp256k1Expand as wasm } from '@polkadot/wasm-crypto';
-import { BN_BE_256_OPTS } from '../bn';
+import { BN_BE_256_OPTS } from '../bn.js';
export function secp256k1Expand (publicKey: Uint8Array, onlyJs?: boolean): Uint8Array {
if (publicKey.length === 65) {
diff --git a/packages/util-crypto/src/secp256k1/hasher.spec.ts b/packages/util-crypto/src/secp256k1/hasher.spec.ts
index b2f061959..03689c1a5 100644
--- a/packages/util-crypto/src/secp256k1/hasher.spec.ts
+++ b/packages/util-crypto/src/secp256k1/hasher.spec.ts
@@ -3,7 +3,7 @@
///
-import { hasher } from './hasher';
+import { hasher } from './hasher.js';
describe('hasher', (): void => {
it('creates a blake2 hash', (): void => {
diff --git a/packages/util-crypto/src/secp256k1/hasher.ts b/packages/util-crypto/src/secp256k1/hasher.ts
index 2c814231d..513247c95 100644
--- a/packages/util-crypto/src/secp256k1/hasher.ts
+++ b/packages/util-crypto/src/secp256k1/hasher.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HashType } from './types';
+import type { HashType } from './types.js';
-import { blake2AsU8a } from '../blake2';
-import { keccakAsU8a } from '../keccak';
+import { blake2AsU8a } from '../blake2/index.js';
+import { keccakAsU8a } from '../keccak/index.js';
export function hasher (hashType: HashType, data: Uint8Array | string, onlyJs?: boolean): Uint8Array {
return hashType === 'keccak'
diff --git a/packages/util-crypto/src/secp256k1/index.ts b/packages/util-crypto/src/secp256k1/index.ts
index 80b4d2abd..9e5ac21bb 100644
--- a/packages/util-crypto/src/secp256k1/index.ts
+++ b/packages/util-crypto/src/secp256k1/index.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { secp256k1Compress } from './compress';
-export { secp256k1Expand } from './expand';
-export { secp256k1PairFromSeed } from './pair/fromSeed';
-export { secp256k1Recover } from './recover';
-export { secp256k1Sign } from './sign';
-export { secp256k1PrivateKeyTweakAdd } from './tweakAdd';
-export { secp256k1Verify } from './verify';
+export { secp256k1Compress } from './compress.js';
+export { secp256k1Expand } from './expand.js';
+export { secp256k1PairFromSeed } from './pair/fromSeed.js';
+export { secp256k1Recover } from './recover.js';
+export { secp256k1Sign } from './sign.js';
+export { secp256k1PrivateKeyTweakAdd } from './tweakAdd.js';
+export { secp256k1Verify } from './verify.js';
diff --git a/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts b/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts
index eb4036639..fc056dc78 100644
--- a/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts
+++ b/packages/util-crypto/src/secp256k1/pair/fromSeed.spec.ts
@@ -6,9 +6,9 @@
import { hexToU8a, u8aToHex } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { mnemonicToMiniSecret } from '../../mnemonic';
-import { perfWasm } from '../../test';
-import { secp256k1PairFromSeed } from '..';
+import { mnemonicToMiniSecret } from '../../mnemonic/index.js';
+import { perfWasm } from '../../test/index.js';
+import { secp256k1PairFromSeed } from '../index.js';
// mnemonic, secret, public, account_id
type Test = [string, string, string, string];
diff --git a/packages/util-crypto/src/secp256k1/pair/fromSeed.ts b/packages/util-crypto/src/secp256k1/pair/fromSeed.ts
index 310e9680c..0ee7fb59f 100644
--- a/packages/util-crypto/src/secp256k1/pair/fromSeed.ts
+++ b/packages/util-crypto/src/secp256k1/pair/fromSeed.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import { getPublicKey } from '@noble/secp256k1';
diff --git a/packages/util-crypto/src/secp256k1/recover.spec.ts b/packages/util-crypto/src/secp256k1/recover.spec.ts
index 0ad333150..f780861d9 100644
--- a/packages/util-crypto/src/secp256k1/recover.spec.ts
+++ b/packages/util-crypto/src/secp256k1/recover.spec.ts
@@ -6,9 +6,9 @@
import { u8aToHex, u8aToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { keccakAsU8a } from '../keccak';
-import { perfWasm } from '../test';
-import { secp256k1Recover } from '.';
+import { keccakAsU8a } from '../keccak/index.js';
+import { perfWasm } from '../test/index.js';
+import { secp256k1Recover } from './index.js';
const sig = u8aToU8a('0x7505f2880114da51b3f5d535f8687953c0ab9af4ab81e592eaebebf53b728d2b6dfd9b5bcd70fee412b1f31360e7c2774009305cb84fc50c1d0ff8034dfa5fff');
const msg = u8aToU8a('0xa30b64ce1eedf409c8afb801d72c05234e64849ea538c15dd3c8cf4ffcf166c9');
diff --git a/packages/util-crypto/src/secp256k1/recover.ts b/packages/util-crypto/src/secp256k1/recover.ts
index bf813eeb5..40c961821 100644
--- a/packages/util-crypto/src/secp256k1/recover.ts
+++ b/packages/util-crypto/src/secp256k1/recover.ts
@@ -9,8 +9,8 @@ import { recoverPublicKey, Signature } from '@noble/secp256k1';
import { hasBigInt, u8aToU8a } from '@polkadot/util';
import { isReady, secp256k1Recover as wasm } from '@polkadot/wasm-crypto';
-import { secp256k1Compress } from './compress';
-import { secp256k1Expand } from './expand';
+import { secp256k1Compress } from './compress.js';
+import { secp256k1Expand } from './expand.js';
/**
* @name secp256k1Recover
diff --git a/packages/util-crypto/src/secp256k1/sign.spec.ts b/packages/util-crypto/src/secp256k1/sign.spec.ts
index a6dc695b9..670d2f48f 100644
--- a/packages/util-crypto/src/secp256k1/sign.spec.ts
+++ b/packages/util-crypto/src/secp256k1/sign.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { secp256k1PairFromSeed, secp256k1Sign } from '.';
+import { perfWasm } from '../test/index.js';
+import { secp256k1PairFromSeed, secp256k1Sign } from './index.js';
const pair = secp256k1PairFromSeed(hexToU8a('0x4380de832af797688026ce24f85204d508243f201650c1a134929e5458b7fbae'));
const msg = hexToU8a('0xa30b64ce1eedf409c8afb801d72c05234e64849ea538c15dd3c8cf4ffcf166c9');
diff --git a/packages/util-crypto/src/secp256k1/sign.ts b/packages/util-crypto/src/secp256k1/sign.ts
index e1c5936ec..d796f2b91 100644
--- a/packages/util-crypto/src/secp256k1/sign.ts
+++ b/packages/util-crypto/src/secp256k1/sign.ts
@@ -1,16 +1,16 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../types';
-import type { HashType } from './types';
+import type { Keypair } from '../types.js';
+import type { HashType } from './types.js';
import { Signature, signSync } from '@noble/secp256k1';
import { bnToU8a, hasBigInt, u8aConcat } from '@polkadot/util';
import { isReady, secp256k1Sign as wasm } from '@polkadot/wasm-crypto';
-import { BN_BE_256_OPTS } from '../bn';
-import { hasher } from './hasher';
+import { BN_BE_256_OPTS } from '../bn.js';
+import { hasher } from './hasher.js';
/**
* @name secp256k1Sign
diff --git a/packages/util-crypto/src/secp256k1/signVerify.spec.ts b/packages/util-crypto/src/secp256k1/signVerify.spec.ts
index 162ef564c..5f7da1cfc 100644
--- a/packages/util-crypto/src/secp256k1/signVerify.spec.ts
+++ b/packages/util-crypto/src/secp256k1/signVerify.spec.ts
@@ -3,13 +3,13 @@
///
-import '../bundleInit';
+import '../bundleInit.js';
import { stringToU8a } from '@polkadot/util';
-import { randomAsU8a } from '../random/asU8a';
-import { hasher } from './hasher';
-import { secp256k1Expand, secp256k1PairFromSeed, secp256k1Sign, secp256k1Verify } from '.';
+import { randomAsU8a } from '../random/asU8a.js';
+import { hasher } from './hasher.js';
+import { secp256k1Expand, secp256k1PairFromSeed, secp256k1Sign, secp256k1Verify } from './index.js';
const MESSAGE = stringToU8a('this is a message');
diff --git a/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts b/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts
index ee5c60e47..eb10cdadf 100644
--- a/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts
+++ b/packages/util-crypto/src/secp256k1/tweakAdd.spec.ts
@@ -3,7 +3,7 @@
///
-import { secp256k1PrivateKeyTweakAdd } from './tweakAdd';
+import { secp256k1PrivateKeyTweakAdd } from './tweakAdd.js';
describe('TweakAdd', (): void => {
it('fails for wrong array length', (): void => {
diff --git a/packages/util-crypto/src/secp256k1/tweakAdd.ts b/packages/util-crypto/src/secp256k1/tweakAdd.ts
index 9510f998a..1d9d715b2 100644
--- a/packages/util-crypto/src/secp256k1/tweakAdd.ts
+++ b/packages/util-crypto/src/secp256k1/tweakAdd.ts
@@ -4,7 +4,7 @@
import { _0n, BN, bnToU8a, hasBigInt, isU8a, nToU8a, u8aToBigInt } from '@polkadot/util';
import { BigInt } from '@polkadot/x-bigint';
-import { BN_BE_256_OPTS, BN_BE_OPTS } from '../bn';
+import { BN_BE_256_OPTS, BN_BE_OPTS } from '../bn.js';
// pre-defined curve param as lifted form elliptic
// https://github.com/indutny/elliptic/blob/e71b2d9359c5fe9437fbf46f1f05096de447de57/lib/elliptic/curves.js#L182
diff --git a/packages/util-crypto/src/secp256k1/verify.spec.ts b/packages/util-crypto/src/secp256k1/verify.spec.ts
index f88edb50c..568ba52e9 100644
--- a/packages/util-crypto/src/secp256k1/verify.spec.ts
+++ b/packages/util-crypto/src/secp256k1/verify.spec.ts
@@ -3,14 +3,14 @@
///
-import '../bundleInit';
+import '../bundleInit.js';
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { hasher } from './hasher';
-import { secp256k1PairFromSeed, secp256k1Verify } from '.';
+import { perfWasm } from '../test/index.js';
+import { hasher } from './hasher.js';
+import { secp256k1PairFromSeed, secp256k1Verify } from './index.js';
const message = 'Pay KSMs to the Kusama account:88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee';
diff --git a/packages/util-crypto/src/secp256k1/verify.ts b/packages/util-crypto/src/secp256k1/verify.ts
index c31aec582..b24c0e31b 100644
--- a/packages/util-crypto/src/secp256k1/verify.ts
+++ b/packages/util-crypto/src/secp256k1/verify.ts
@@ -2,12 +2,12 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { HashType } from './types';
+import type { HashType } from './types.js';
import { u8aEq, u8aToU8a } from '@polkadot/util';
-import { hasher } from './hasher';
-import { secp256k1Recover } from './recover';
+import { hasher } from './hasher.js';
+import { secp256k1Recover } from './recover.js';
/**
* @name secp256k1Verify
diff --git a/packages/util-crypto/src/sha/asU8a.ts b/packages/util-crypto/src/sha/asU8a.ts
index 44c09e5bf..47344b8e1 100644
--- a/packages/util-crypto/src/sha/asU8a.ts
+++ b/packages/util-crypto/src/sha/asU8a.ts
@@ -6,7 +6,7 @@ import { sha512 as sha512Js } from '@noble/hashes/sha512';
import { sha256, sha512 } from '@polkadot/wasm-crypto';
-import { createBitHasher, createDualHasher } from '../helpers';
+import { createBitHasher, createDualHasher } from '../helpers.js';
/**
* @name shaAsU8a
diff --git a/packages/util-crypto/src/sha/asU8a256.spec.ts b/packages/util-crypto/src/sha/asU8a256.spec.ts
index 86670e877..3a18905fc 100644
--- a/packages/util-crypto/src/sha/asU8a256.spec.ts
+++ b/packages/util-crypto/src/sha/asU8a256.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { sha256AsU8a } from '.';
+import { perfWasm } from '../test/index.js';
+import { sha256AsU8a } from './index.js';
const TESTS = [
{
diff --git a/packages/util-crypto/src/sha/asU8a512.spec.ts b/packages/util-crypto/src/sha/asU8a512.spec.ts
index 5bfa46142..8b26079fe 100644
--- a/packages/util-crypto/src/sha/asU8a512.spec.ts
+++ b/packages/util-crypto/src/sha/asU8a512.spec.ts
@@ -5,8 +5,8 @@
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { sha512AsU8a } from '.';
+import { perfWasm } from '../test/index.js';
+import { sha512AsU8a } from './index.js';
describe('sha512AsU8a', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/sha/index.ts b/packages/util-crypto/src/sha/index.ts
index a514c0ddf..e959e3fc9 100644
--- a/packages/util-crypto/src/sha/index.ts
+++ b/packages/util-crypto/src/sha/index.ts
@@ -5,4 +5,4 @@
* @summary Implements Sha-256/512 hashing functions for a variety of input and outputs
*/
-export { shaAsU8a, sha256AsU8a, sha512AsU8a } from './asU8a';
+export { shaAsU8a, sha256AsU8a, sha512AsU8a } from './asU8a.js';
diff --git a/packages/util-crypto/src/signature/index.ts b/packages/util-crypto/src/signature/index.ts
index e150630c2..02cdd8101 100644
--- a/packages/util-crypto/src/signature/index.ts
+++ b/packages/util-crypto/src/signature/index.ts
@@ -5,4 +5,4 @@
* @summary Utilities for working with signatures
*/
-export { signatureVerify } from './verify';
+export { signatureVerify } from './verify.js';
diff --git a/packages/util-crypto/src/signature/verify.spec.ts b/packages/util-crypto/src/signature/verify.spec.ts
index 10cb57b41..c7c10ba4b 100644
--- a/packages/util-crypto/src/signature/verify.spec.ts
+++ b/packages/util-crypto/src/signature/verify.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a, stringToU8a, u8aConcat, u8aToHex, u8aWrapBytes } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { decodeAddress } from '../address';
-import { signatureVerify } from '.';
+import { decodeAddress } from '../address/index.js';
+import { signatureVerify } from './index.js';
const ADDR_ED = 'DxN4uvzwPzJLtn17yew6jEffPhXQfdKHTp2brufb98vGbPN';
const ADDR_SR = 'EK1bFgKm2FsghcttHT7TB7rNyXApFgs9fCbijMGQNyFGBQm';
diff --git a/packages/util-crypto/src/signature/verify.ts b/packages/util-crypto/src/signature/verify.ts
index d6f5f65de..a21665b28 100644
--- a/packages/util-crypto/src/signature/verify.ts
+++ b/packages/util-crypto/src/signature/verify.ts
@@ -2,14 +2,14 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { KeypairType, VerifyResult } from '../types';
+import type { KeypairType, VerifyResult } from '../types.js';
import { u8aIsWrapped, u8aToU8a, u8aUnwrapBytes, u8aWrapBytes } from '@polkadot/util';
-import { decodeAddress } from '../address/decode';
-import { ed25519Verify } from '../ed25519/verify';
-import { secp256k1Verify } from '../secp256k1/verify';
-import { sr25519Verify } from '../sr25519/verify';
+import { decodeAddress } from '../address/decode.js';
+import { ed25519Verify } from '../ed25519/verify.js';
+import { secp256k1Verify } from '../secp256k1/verify.js';
+import { sr25519Verify } from '../sr25519/verify.js';
interface VerifyInput {
message: Uint8Array;
diff --git a/packages/util-crypto/src/sr25519/agreement.spec.ts b/packages/util-crypto/src/sr25519/agreement.spec.ts
index d65b60aac..07b407d4a 100644
--- a/packages/util-crypto/src/sr25519/agreement.spec.ts
+++ b/packages/util-crypto/src/sr25519/agreement.spec.ts
@@ -3,12 +3,12 @@
///
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
import { u8aToHex } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { sr25519Agreement, sr25519PairFromSeed } from '.';
+import { sr25519Agreement, sr25519PairFromSeed } from './index.js';
describe('agreement', (): void => {
let pairA: Keypair;
diff --git a/packages/util-crypto/src/sr25519/derive.ts b/packages/util-crypto/src/sr25519/derive.ts
index db6961cfd..94cc804b0 100644
--- a/packages/util-crypto/src/sr25519/derive.ts
+++ b/packages/util-crypto/src/sr25519/derive.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
import { isU8a } from '@polkadot/util';
-import { sr25519PairFromU8a } from './pair/fromU8a';
-import { sr25519KeypairToU8a } from './pair/toU8a';
+import { sr25519PairFromU8a } from './pair/fromU8a.js';
+import { sr25519KeypairToU8a } from './pair/toU8a.js';
export function createDeriveFn (derive: (pair: Uint8Array, cc: Uint8Array) => Uint8Array): (keypair: Keypair, chainCode: Uint8Array) => Keypair {
return (keypair: Keypair, chainCode: Uint8Array): Keypair => {
diff --git a/packages/util-crypto/src/sr25519/deriveHard.ts b/packages/util-crypto/src/sr25519/deriveHard.ts
index 78541d6a7..836e53908 100644
--- a/packages/util-crypto/src/sr25519/deriveHard.ts
+++ b/packages/util-crypto/src/sr25519/deriveHard.ts
@@ -3,6 +3,6 @@
import { sr25519DeriveKeypairHard } from '@polkadot/wasm-crypto';
-import { createDeriveFn } from './derive';
+import { createDeriveFn } from './derive.js';
export const sr25519DeriveHard = createDeriveFn(sr25519DeriveKeypairHard);
diff --git a/packages/util-crypto/src/sr25519/deriveSoft.ts b/packages/util-crypto/src/sr25519/deriveSoft.ts
index 3a25997a5..bd4a7c2f8 100644
--- a/packages/util-crypto/src/sr25519/deriveSoft.ts
+++ b/packages/util-crypto/src/sr25519/deriveSoft.ts
@@ -3,6 +3,6 @@
import { sr25519DeriveKeypairSoft } from '@polkadot/wasm-crypto';
-import { createDeriveFn } from './derive';
+import { createDeriveFn } from './derive.js';
export const sr25519DeriveSoft = createDeriveFn(sr25519DeriveKeypairSoft);
diff --git a/packages/util-crypto/src/sr25519/index.ts b/packages/util-crypto/src/sr25519/index.ts
index 9f4027ad8..ba8f7990d 100644
--- a/packages/util-crypto/src/sr25519/index.ts
+++ b/packages/util-crypto/src/sr25519/index.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { sr25519Agreement } from './agreement';
-export { sr25519DeriveHard } from './deriveHard';
-export { sr25519DerivePublic } from './derivePublic';
-export { sr25519DeriveSoft } from './deriveSoft';
-export { sr25519PairFromSeed } from './pair/fromSeed';
-export { sr25519Sign } from './sign';
-export { sr25519Verify } from './verify';
-export { sr25519VrfSign } from './vrfSign';
-export { sr25519VrfVerify } from './vrfVerify';
+export { sr25519Agreement } from './agreement.js';
+export { sr25519DeriveHard } from './deriveHard.js';
+export { sr25519DerivePublic } from './derivePublic.js';
+export { sr25519DeriveSoft } from './deriveSoft.js';
+export { sr25519PairFromSeed } from './pair/fromSeed.js';
+export { sr25519Sign } from './sign.js';
+export { sr25519Verify } from './verify.js';
+export { sr25519VrfSign } from './vrfSign.js';
+export { sr25519VrfVerify } from './vrfVerify.js';
diff --git a/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts b/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts
index 83d10e21f..b0c0dda8f 100644
--- a/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts
+++ b/packages/util-crypto/src/sr25519/pair/fromSeed.spec.ts
@@ -6,9 +6,9 @@
import { stringToU8a, u8aToHex } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { mnemonicToMiniSecret } from '../../mnemonic';
-import { sr25519PairFromSeed } from '..';
-import tests from './testing.spec';
+import { mnemonicToMiniSecret } from '../../mnemonic/index.js';
+import { sr25519PairFromSeed } from '../index.js';
+import tests from './testing.spec.js';
describe('sr25519PairFromSeed', (): void => {
const TEST = stringToU8a('12345678901234567890123456789012');
diff --git a/packages/util-crypto/src/sr25519/pair/fromSeed.ts b/packages/util-crypto/src/sr25519/pair/fromSeed.ts
index 171cd2027..eab29aec3 100644
--- a/packages/util-crypto/src/sr25519/pair/fromSeed.ts
+++ b/packages/util-crypto/src/sr25519/pair/fromSeed.ts
@@ -2,12 +2,12 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import { u8aToU8a } from '@polkadot/util';
import { sr25519KeypairFromSeed } from '@polkadot/wasm-crypto';
-import { sr25519PairFromU8a } from './fromU8a';
+import { sr25519PairFromU8a } from './fromU8a.js';
/**
* @name sr25519PairFromSeed
diff --git a/packages/util-crypto/src/sr25519/pair/fromU8a.ts b/packages/util-crypto/src/sr25519/pair/fromU8a.ts
index 3989dc0d3..ef5057faf 100644
--- a/packages/util-crypto/src/sr25519/pair/fromU8a.ts
+++ b/packages/util-crypto/src/sr25519/pair/fromU8a.ts
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import { u8aToU8a } from '@polkadot/util';
diff --git a/packages/util-crypto/src/sr25519/pair/toU8a.ts b/packages/util-crypto/src/sr25519/pair/toU8a.ts
index 106be31c9..007ce85e5 100644
--- a/packages/util-crypto/src/sr25519/pair/toU8a.ts
+++ b/packages/util-crypto/src/sr25519/pair/toU8a.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Keypair } from '../../types';
+import type { Keypair } from '../../types.js';
import { u8aConcat } from '@polkadot/util';
diff --git a/packages/util-crypto/src/sr25519/sign.spec.ts b/packages/util-crypto/src/sr25519/sign.spec.ts
index 6fc7a1314..bf31de86a 100644
--- a/packages/util-crypto/src/sr25519/sign.spec.ts
+++ b/packages/util-crypto/src/sr25519/sign.spec.ts
@@ -6,9 +6,9 @@
import { stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { randomAsU8a } from '../random/asU8a';
-import { sr25519PairFromSeed } from './pair/fromSeed';
-import { sr25519Sign } from './sign';
+import { randomAsU8a } from '../random/asU8a.js';
+import { sr25519PairFromSeed } from './pair/fromSeed.js';
+import { sr25519Sign } from './sign.js';
const MESSAGE = stringToU8a('this is a message');
diff --git a/packages/util-crypto/src/sr25519/sign.ts b/packages/util-crypto/src/sr25519/sign.ts
index 001b2f8d6..d137e2897 100644
--- a/packages/util-crypto/src/sr25519/sign.ts
+++ b/packages/util-crypto/src/sr25519/sign.ts
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
import { u8aToU8a } from '@polkadot/util';
import { sr25519Sign as wasmSign } from '@polkadot/wasm-crypto';
diff --git a/packages/util-crypto/src/sr25519/verify.spec.ts b/packages/util-crypto/src/sr25519/verify.spec.ts
index c73436cdf..ae9bfa55c 100644
--- a/packages/util-crypto/src/sr25519/verify.spec.ts
+++ b/packages/util-crypto/src/sr25519/verify.spec.ts
@@ -6,10 +6,10 @@
import { stringToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { randomAsU8a } from '../random/asU8a';
-import { sr25519PairFromSeed } from './pair/fromSeed';
-import { sr25519Sign } from './sign';
-import { sr25519Verify } from './verify';
+import { randomAsU8a } from '../random/asU8a.js';
+import { sr25519PairFromSeed } from './pair/fromSeed.js';
+import { sr25519Sign } from './sign.js';
+import { sr25519Verify } from './verify.js';
const MESSAGE = stringToU8a('this is a message');
diff --git a/packages/util-crypto/src/sr25519/vrfSign.ts b/packages/util-crypto/src/sr25519/vrfSign.ts
index 657dd6fbb..1f0c208d5 100644
--- a/packages/util-crypto/src/sr25519/vrfSign.ts
+++ b/packages/util-crypto/src/sr25519/vrfSign.ts
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { HexString } from '@polkadot/util/types';
-import type { Keypair } from '../types';
+import type { Keypair } from '../types.js';
import { u8aToU8a } from '@polkadot/util';
import { vrfSign } from '@polkadot/wasm-crypto';
diff --git a/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts b/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts
index 5c0e786a9..e31c6caac 100644
--- a/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts
+++ b/packages/util-crypto/src/sr25519/vrfSignVerify.spec.ts
@@ -6,10 +6,10 @@
import { stringToU8a, u8aEq } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { randomAsU8a } from '../random/asU8a';
-import { sr25519PairFromSeed } from './pair/fromSeed';
-import { sr25519VrfSign } from './vrfSign';
-import { sr25519VrfVerify } from './vrfVerify';
+import { randomAsU8a } from '../random/asU8a.js';
+import { sr25519PairFromSeed } from './pair/fromSeed.js';
+import { sr25519VrfSign } from './vrfSign.js';
+import { sr25519VrfVerify } from './vrfVerify.js';
const MESSAGE = stringToU8a('this is a message');
diff --git a/packages/util-crypto/src/test/index.ts b/packages/util-crypto/src/test/index.ts
index b18e1f7c6..0c9fffc9a 100644
--- a/packages/util-crypto/src/test/index.ts
+++ b/packages/util-crypto/src/test/index.ts
@@ -3,4 +3,4 @@
export { perf, perfCmp } from '@polkadot/util/test';
-export { perfWasm } from './performance';
+export { perfWasm } from './performance.js';
diff --git a/packages/util-crypto/src/test/performance.ts b/packages/util-crypto/src/test/performance.ts
index f0765cd6d..4b0fbb642 100644
--- a/packages/util-crypto/src/test/performance.ts
+++ b/packages/util-crypto/src/test/performance.ts
@@ -4,7 +4,7 @@
import { arrayRange } from '@polkadot/util';
import { perf, perfCmp } from '@polkadot/util/test';
-import { randomAsU8a } from '..';
+import { randomAsU8a } from '../index.js';
type ExecFn = (input: Uint8Array, onlyJs: boolean) => unknown;
diff --git a/packages/util-crypto/src/types.ts b/packages/util-crypto/src/types.ts
index 20d9436c0..8a5f366d0 100644
--- a/packages/util-crypto/src/types.ts
+++ b/packages/util-crypto/src/types.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './address/types';
-export * from './json/types';
+export * from './address/types.js';
+export * from './json/types.js';
export interface Keypair {
publicKey: Uint8Array;
diff --git a/packages/util-crypto/src/xxhash/asHex.spec.ts b/packages/util-crypto/src/xxhash/asHex.spec.ts
index cb5e66a86..d04973124 100644
--- a/packages/util-crypto/src/xxhash/asHex.spec.ts
+++ b/packages/util-crypto/src/xxhash/asHex.spec.ts
@@ -5,7 +5,7 @@
import { waitReady } from '@polkadot/wasm-crypto';
-import { xxhashAsHex } from '.';
+import { xxhashAsHex } from './index.js';
describe('xxhashAsHex', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/xxhash/asU8a.spec.ts b/packages/util-crypto/src/xxhash/asU8a.spec.ts
index 391c929c6..01e2608bb 100644
--- a/packages/util-crypto/src/xxhash/asU8a.spec.ts
+++ b/packages/util-crypto/src/xxhash/asU8a.spec.ts
@@ -6,8 +6,8 @@
import { hexToU8a } from '@polkadot/util';
import { waitReady } from '@polkadot/wasm-crypto';
-import { perfWasm } from '../test';
-import { xxhashAsU8a } from '.';
+import { perfWasm } from '../test/index.js';
+import { xxhashAsU8a } from './index.js';
describe('xxhashAsU8a', (): void => {
beforeEach(async (): Promise => {
diff --git a/packages/util-crypto/src/xxhash/asU8a.ts b/packages/util-crypto/src/xxhash/asU8a.ts
index 0b7386108..c560cb856 100644
--- a/packages/util-crypto/src/xxhash/asU8a.ts
+++ b/packages/util-crypto/src/xxhash/asU8a.ts
@@ -6,8 +6,8 @@ import type { HexString } from '@polkadot/util/types';
import { hasBigInt, u8aToU8a } from '@polkadot/util';
import { isReady, twox } from '@polkadot/wasm-crypto';
-import { createAsHex } from '../helpers';
-import { xxhash64 } from './xxhash64';
+import { createAsHex } from '../helpers.js';
+import { xxhash64 } from './xxhash64.js';
/**
* @name xxhashAsU8a
diff --git a/packages/util-crypto/src/xxhash/index.ts b/packages/util-crypto/src/xxhash/index.ts
index b9cbc7e54..94b3a083f 100644
--- a/packages/util-crypto/src/xxhash/index.ts
+++ b/packages/util-crypto/src/xxhash/index.ts
@@ -5,4 +5,4 @@
* @summary Create xxhash64 values with specified bitlengths
*/
-export { xxhashAsHex, xxhashAsU8a } from './asU8a';
+export { xxhashAsHex, xxhashAsU8a } from './asU8a.js';
diff --git a/packages/util/src/array/chunk.spec.ts b/packages/util/src/array/chunk.spec.ts
index 370b60c35..10e99da10 100644
--- a/packages/util/src/array/chunk.spec.ts
+++ b/packages/util/src/array/chunk.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { arrayChunk, arrayRange } from '.';
+import { arrayChunk, arrayRange } from '../index.js';
+import { perf } from '../test/index.js';
describe('arrayChunk', (): void => {
it('chunks with exact', (): void => {
diff --git a/packages/util/src/array/filter.spec.ts b/packages/util/src/array/filter.spec.ts
index b09cdcdaa..a8e9bf6aa 100644
--- a/packages/util/src/array/filter.spec.ts
+++ b/packages/util/src/array/filter.spec.ts
@@ -3,7 +3,7 @@
///
-import { arrayFilter } from '.';
+import { arrayFilter } from './index.js';
describe('filterArray', (): void => {
it('filters arrays, removing undefined', (): void => {
diff --git a/packages/util/src/array/flatten.spec.ts b/packages/util/src/array/flatten.spec.ts
index 413f043d6..90e4e4fd2 100644
--- a/packages/util/src/array/flatten.spec.ts
+++ b/packages/util/src/array/flatten.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { arrayFlatten } from '.';
+import { perf } from '../test/index.js';
+import { arrayFlatten } from './index.js';
const PERF_ONE = [[1, 2, 3, 4, 5]];
const PERF_MUL = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
diff --git a/packages/util/src/array/index.ts b/packages/util/src/array/index.ts
index f3d10d753..a5c47a2ee 100644
--- a/packages/util/src/array/index.ts
+++ b/packages/util/src/array/index.ts
@@ -5,10 +5,10 @@
* @summary Utility methods that operates on arrays
*/
-export { arrayChunk } from './chunk';
-export { arrayFilter } from './filter';
-export { arrayFlatten } from './flatten';
-export { arrayRange } from './range';
-export { arrayShuffle } from './shuffle';
-export { arrayUnzip } from './unzip';
-export { arrayZip } from './zip';
+export { arrayChunk } from './chunk.js';
+export { arrayFilter } from './filter.js';
+export { arrayFlatten } from './flatten.js';
+export { arrayRange } from './range.js';
+export { arrayShuffle } from './shuffle.js';
+export { arrayUnzip } from './unzip.js';
+export { arrayZip } from './zip.js';
diff --git a/packages/util/src/array/range.spec.ts b/packages/util/src/array/range.spec.ts
index e0ebc102c..d3cc16e6d 100644
--- a/packages/util/src/array/range.spec.ts
+++ b/packages/util/src/array/range.spec.ts
@@ -3,7 +3,7 @@
///
-import { arrayRange } from '.';
+import { arrayRange } from './index.js';
describe('arrayRange', (): void => {
it('does not allow 0 values', (): void => {
diff --git a/packages/util/src/array/shuffle.spec.ts b/packages/util/src/array/shuffle.spec.ts
index 1c2637fe6..c45b9105f 100644
--- a/packages/util/src/array/shuffle.spec.ts
+++ b/packages/util/src/array/shuffle.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { arrayRange, arrayShuffle } from '.';
+import { perf } from '../test/index.js';
+import { arrayRange, arrayShuffle } from './index.js';
const ptest = arrayRange(16284);
diff --git a/packages/util/src/array/unzip.spec.ts b/packages/util/src/array/unzip.spec.ts
index 70e556e1b..f4a3e95f9 100644
--- a/packages/util/src/array/unzip.spec.ts
+++ b/packages/util/src/array/unzip.spec.ts
@@ -3,7 +3,7 @@
///
-import { arrayUnzip } from '.';
+import { arrayUnzip } from './index.js';
describe('arrayUnzip', (): void => {
it('unzips entries', (): void => {
diff --git a/packages/util/src/array/zip.spec.ts b/packages/util/src/array/zip.spec.ts
index 040e3340e..1b6f0f918 100644
--- a/packages/util/src/array/zip.spec.ts
+++ b/packages/util/src/array/zip.spec.ts
@@ -3,7 +3,7 @@
///
-import { arrayZip } from '.';
+import { arrayZip } from './index.js';
describe('arrayZip', (): void => {
it('zips a simple one', (): void => {
diff --git a/packages/util/src/assert.spec.ts b/packages/util/src/assert.spec.ts
index c736b0390..d2fdc54df 100644
--- a/packages/util/src/assert.spec.ts
+++ b/packages/util/src/assert.spec.ts
@@ -3,7 +3,7 @@
///
-import { assert, assertReturn } from '.';
+import { assert, assertReturn } from './index.js';
describe('assert', (): void => {
it('should not throw an error when test is true', (): void => {
diff --git a/packages/util/src/assert.ts b/packages/util/src/assert.ts
index a1687c517..0047a9dea 100644
--- a/packages/util/src/assert.ts
+++ b/packages/util/src/assert.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { isFunction } from './is/function';
+import { isFunction } from './is/function.js';
type MessageFn = () => string;
diff --git a/packages/util/src/bi/index.ts b/packages/util/src/bi/index.ts
index a7dd1b6c3..839546570 100644
--- a/packages/util/src/bi/index.ts
+++ b/packages/util/src/bi/index.ts
@@ -5,10 +5,10 @@
* @summary Utility methods to convert to and from `bigint` objects
*/
-export * from './consts';
+export * from './consts.js';
-export { nSqrt } from './sqrt';
-export { nToBigInt } from './toBigInt';
-export { nMax, nMin } from './min';
-export { nToHex } from './toHex';
-export { nToU8a } from './toU8a';
+export { nSqrt } from './sqrt.js';
+export { nToBigInt } from './toBigInt.js';
+export { nMax, nMin } from './min.js';
+export { nToHex } from './toHex.js';
+export { nToU8a } from './toU8a.js';
diff --git a/packages/util/src/bi/max.spec.ts b/packages/util/src/bi/max.spec.ts
index 3e227703a..80ef657e7 100644
--- a/packages/util/src/bi/max.spec.ts
+++ b/packages/util/src/bi/max.spec.ts
@@ -3,7 +3,7 @@
///
-import { nMax } from '.';
+import { nMax } from './index.js';
describe('nMax', (): void => {
it('finds maximum', (): void => {
diff --git a/packages/util/src/bi/min.spec.ts b/packages/util/src/bi/min.spec.ts
index 97aa91b49..f3cc14a8f 100644
--- a/packages/util/src/bi/min.spec.ts
+++ b/packages/util/src/bi/min.spec.ts
@@ -3,7 +3,7 @@
///
-import { nMin } from '.';
+import { nMin } from './index.js';
describe('nMin', (): void => {
it('finds BN minimum', (): void => {
diff --git a/packages/util/src/bi/min.ts b/packages/util/src/bi/min.ts
index 55b1bb814..96a471aa2 100644
--- a/packages/util/src/bi/min.ts
+++ b/packages/util/src/bi/min.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { createCmp } from './helpers';
+import { createCmp } from './helpers.js';
/**
* @name nMax
diff --git a/packages/util/src/bi/sqrt.spec.ts b/packages/util/src/bi/sqrt.spec.ts
index 2576f7e55..3db59d183 100644
--- a/packages/util/src/bi/sqrt.spec.ts
+++ b/packages/util/src/bi/sqrt.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { _sqrt2pow53n, nSqrt } from '.';
+import { BN } from '../bn/index.js';
+import { _sqrt2pow53n, nSqrt } from './index.js';
export const SQRT_TESTS: [string | number | BN | bigint, string | number][] = [
[0, 0],
diff --git a/packages/util/src/bi/sqrt.ts b/packages/util/src/bi/sqrt.ts
index b5aab780e..9eeb70bfa 100644
--- a/packages/util/src/bi/sqrt.ts
+++ b/packages/util/src/bi/sqrt.ts
@@ -1,13 +1,13 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn';
-import type { ToBigInt, ToBn } from '../types';
+import type { BN } from '../bn/index.js';
+import type { ToBigInt, ToBn } from '../types.js';
import { BigInt } from '@polkadot/x-bigint';
-import { _0n, _1n, _2pow53n, _sqrt2pow53n } from './consts';
-import { nToBigInt } from './toBigInt';
+import { _0n, _1n, _2pow53n, _sqrt2pow53n } from './consts.js';
+import { nToBigInt } from './toBigInt.js';
/**
* @name nSqrt
diff --git a/packages/util/src/bi/toBigInt.spec.ts b/packages/util/src/bi/toBigInt.spec.ts
index 95e7abe32..f50592165 100644
--- a/packages/util/src/bi/toBigInt.spec.ts
+++ b/packages/util/src/bi/toBigInt.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { nToBigInt } from '.';
+import { BN } from '../bn/index.js';
+import { nToBigInt } from './index.js';
describe('nToBigInt', (): void => {
it('converts null values to 0x00', (): void => {
diff --git a/packages/util/src/bi/toBigInt.ts b/packages/util/src/bi/toBigInt.ts
index 843aa0990..db5935202 100644
--- a/packages/util/src/bi/toBigInt.ts
+++ b/packages/util/src/bi/toBigInt.ts
@@ -1,16 +1,16 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
-import type { HexString, ToBigInt, ToBn } from '../types';
+import type { BN } from '../bn/bn.js';
+import type { HexString, ToBigInt, ToBn } from '../types.js';
import { BigInt } from '@polkadot/x-bigint';
-import { hexToBigInt } from '../hex/toBigInt';
-import { isBn } from '../is/bn';
-import { isHex } from '../is/hex';
-import { isToBigInt } from '../is/toBigInt';
-import { isToBn } from '../is/toBn';
+import { hexToBigInt } from '../hex/toBigInt.js';
+import { isBn } from '../is/bn.js';
+import { isHex } from '../is/hex.js';
+import { isToBigInt } from '../is/toBigInt.js';
+import { isToBn } from '../is/toBn.js';
/**
* @name nToBigInt
diff --git a/packages/util/src/bi/toHex.spec.ts b/packages/util/src/bi/toHex.spec.ts
index 66d0b5fef..0177b6c9a 100644
--- a/packages/util/src/bi/toHex.spec.ts
+++ b/packages/util/src/bi/toHex.spec.ts
@@ -3,7 +3,7 @@
///
-import { nToHex } from '.';
+import { nToHex } from './index.js';
describe('nToHex', (): void => {
it('converts null values to 0x00', (): void => {
diff --git a/packages/util/src/bi/toHex.ts b/packages/util/src/bi/toHex.ts
index 87610b1ee..5b8103c78 100644
--- a/packages/util/src/bi/toHex.ts
+++ b/packages/util/src/bi/toHex.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
-import type { HexString, NumberOptions, ToBigInt, ToBn } from '../types';
+import type { BN } from '../bn/bn.js';
+import type { HexString, NumberOptions, ToBigInt, ToBn } from '../types.js';
-import { u8aToHex } from '../u8a';
-import { nToU8a } from './toU8a';
+import { u8aToHex } from '../u8a/index.js';
+import { nToU8a } from './toU8a.js';
/**
* @name nToHex
diff --git a/packages/util/src/bi/toU8a.spec.ts b/packages/util/src/bi/toU8a.spec.ts
index 0a0b6094c..75ea89299 100644
--- a/packages/util/src/bi/toU8a.spec.ts
+++ b/packages/util/src/bi/toU8a.spec.ts
@@ -3,9 +3,9 @@
///
-import { arrayRange } from '../array';
-import { perf } from '../test';
-import { nToU8a } from '.';
+import { arrayRange } from '../array/index.js';
+import { perf } from '../test/index.js';
+import { nToU8a } from './index.js';
const ptest = arrayRange(65536).map((v) => [v]);
diff --git a/packages/util/src/bi/toU8a.ts b/packages/util/src/bi/toU8a.ts
index 329d7e9ed..6055d37a9 100644
--- a/packages/util/src/bi/toU8a.ts
+++ b/packages/util/src/bi/toU8a.ts
@@ -1,13 +1,13 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
-import type { NumberOptions, ToBigInt, ToBn } from '../types';
+import type { BN } from '../bn/bn.js';
+import type { NumberOptions, ToBigInt, ToBn } from '../types.js';
import { BigInt } from '@polkadot/x-bigint';
-import { _0n, _1n } from './consts';
-import { nToBigInt } from './toBigInt';
+import { _0n, _1n } from './consts.js';
+import { nToBigInt } from './toBigInt.js';
const DIV = BigInt(256);
const NEG_MASK = BigInt(0xff);
diff --git a/packages/util/src/bn/consts.spec.ts b/packages/util/src/bn/consts.spec.ts
index ddec5d6f1..556e27dfe 100644
--- a/packages/util/src/bn/consts.spec.ts
+++ b/packages/util/src/bn/consts.spec.ts
@@ -3,7 +3,7 @@
///
-import { BN, BN_HUNDRED, BN_ONE, BN_TEN, BN_THOUSAND, BN_ZERO } from '.';
+import { BN, BN_HUNDRED, BN_ONE, BN_TEN, BN_THOUSAND, BN_ZERO } from './index.js';
describe('consts', (): void => {
it('BN_ZERO equals 0', (): void => {
diff --git a/packages/util/src/bn/consts.ts b/packages/util/src/bn/consts.ts
index fd4d5b01e..6638a09a2 100644
--- a/packages/util/src/bn/consts.ts
+++ b/packages/util/src/bn/consts.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { BN } from './bn';
+import { BN } from './bn.js';
/**
* @name BN_ZERO
diff --git a/packages/util/src/bn/fromHex.spec.ts b/packages/util/src/bn/fromHex.spec.ts
index 924f114ec..3b141240b 100644
--- a/packages/util/src/bn/fromHex.spec.ts
+++ b/packages/util/src/bn/fromHex.spec.ts
@@ -3,8 +3,8 @@
///
-import { isFunction } from '../is/function';
-import { bnFromHex } from '.';
+import { isFunction } from '../is/function.js';
+import { bnFromHex } from './index.js';
describe('bnFromHex', (): void => {
it('exists as a function', (): void => {
diff --git a/packages/util/src/bn/fromHex.ts b/packages/util/src/bn/fromHex.ts
index 502cd6a0e..9579adf3f 100644
--- a/packages/util/src/bn/fromHex.ts
+++ b/packages/util/src/bn/fromHex.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { hexToBn as bnFromHex } from '../hex/toBn';
+export { hexToBn as bnFromHex } from '../hex/toBn.js';
diff --git a/packages/util/src/bn/index.ts b/packages/util/src/bn/index.ts
index ef346af9b..7df49d356 100644
--- a/packages/util/src/bn/index.ts
+++ b/packages/util/src/bn/index.ts
@@ -5,12 +5,12 @@
* @summary Utility methods to convert to and from `BN` objects
*/
-export * from './consts';
+export * from './consts.js';
-export { BN } from './bn';
-export { bnFromHex } from './fromHex';
-export { bnMax, bnMin } from './min';
-export { bnSqrt } from './sqrt';
-export { bnToBn } from './toBn';
-export { bnToHex } from './toHex';
-export { bnToU8a } from './toU8a';
+export { BN } from './bn.js';
+export { bnFromHex } from './fromHex.js';
+export { bnMax, bnMin } from './min.js';
+export { bnSqrt } from './sqrt.js';
+export { bnToBn } from './toBn.js';
+export { bnToHex } from './toHex.js';
+export { bnToU8a } from './toU8a.js';
diff --git a/packages/util/src/bn/max.spec.ts b/packages/util/src/bn/max.spec.ts
index e78fc568a..12d2c6694 100644
--- a/packages/util/src/bn/max.spec.ts
+++ b/packages/util/src/bn/max.spec.ts
@@ -3,7 +3,7 @@
///
-import { BN, bnMax } from '.';
+import { BN, bnMax } from './index.js';
describe('bnMax', (): void => {
it('finds BN maximum', (): void => {
diff --git a/packages/util/src/bn/min.spec.ts b/packages/util/src/bn/min.spec.ts
index abecd216f..8841a7b15 100644
--- a/packages/util/src/bn/min.spec.ts
+++ b/packages/util/src/bn/min.spec.ts
@@ -3,7 +3,7 @@
///
-import { BN, bnMin } from '.';
+import { BN, bnMin } from './index.js';
describe('bnMin', (): void => {
it('finds BN minimum', (): void => {
diff --git a/packages/util/src/bn/min.ts b/packages/util/src/bn/min.ts
index d48028f6c..44e0b3c81 100644
--- a/packages/util/src/bn/min.ts
+++ b/packages/util/src/bn/min.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { createCmp } from '../bi/helpers';
-import { BN } from './bn';
+import { createCmp } from '../bi/helpers.js';
+import { BN } from './bn.js';
/**
* @name bnMax
diff --git a/packages/util/src/bn/sqrt.spec.ts b/packages/util/src/bn/sqrt.spec.ts
index 78bb2ee27..65a0f8631 100644
--- a/packages/util/src/bn/sqrt.spec.ts
+++ b/packages/util/src/bn/sqrt.spec.ts
@@ -3,8 +3,8 @@
///
-import { SQRT_TESTS } from '../bi/sqrt.spec';
-import { BN, BN_SQRT_MAX_INTEGER, bnSqrt } from '.';
+import { SQRT_TESTS } from '../bi/sqrt.spec.js';
+import { BN, BN_SQRT_MAX_INTEGER, bnSqrt } from './index.js';
describe('bnSqrt', (): void => {
it('fails on < 0 roots', (): void => {
diff --git a/packages/util/src/bn/sqrt.ts b/packages/util/src/bn/sqrt.ts
index 66175f4cd..0745e4bd1 100644
--- a/packages/util/src/bn/sqrt.ts
+++ b/packages/util/src/bn/sqrt.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBn } from '../types';
+import type { ToBn } from '../types.js';
-import { BN } from './bn';
-import { BN_MAX_INTEGER, BN_ONE, BN_SQRT_MAX_INTEGER } from './consts';
-import { bnToBn } from './toBn';
+import { BN } from './bn.js';
+import { BN_MAX_INTEGER, BN_ONE, BN_SQRT_MAX_INTEGER } from './consts.js';
+import { bnToBn } from './toBn.js';
/**
* @name bnSqrt
diff --git a/packages/util/src/bn/toBn.spec.ts b/packages/util/src/bn/toBn.spec.ts
index 274c7812d..a677f6fdb 100644
--- a/packages/util/src/bn/toBn.spec.ts
+++ b/packages/util/src/bn/toBn.spec.ts
@@ -3,7 +3,7 @@
///
-import { BN, bnToBn } from '.';
+import { BN, bnToBn } from './index.js';
describe('bnToBn', (): void => {
it('converts null values to 0x00', (): void => {
diff --git a/packages/util/src/bn/toBn.ts b/packages/util/src/bn/toBn.ts
index c1b12ec0d..d90a7cdb7 100644
--- a/packages/util/src/bn/toBn.ts
+++ b/packages/util/src/bn/toBn.ts
@@ -1,14 +1,14 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString, ToBigInt, ToBn } from '../types';
+import type { HexString, ToBigInt, ToBn } from '../types.js';
-import { hexToBn } from '../hex/toBn';
-import { isBigInt } from '../is/bigInt';
-import { isHex } from '../is/hex';
-import { isToBigInt } from '../is/toBigInt';
-import { isToBn } from '../is/toBn';
-import { BN } from './bn';
+import { hexToBn } from '../hex/toBn.js';
+import { isBigInt } from '../is/bigInt.js';
+import { isHex } from '../is/hex.js';
+import { isToBigInt } from '../is/toBigInt.js';
+import { isToBn } from '../is/toBn.js';
+import { BN } from './bn.js';
/**
* @name bnToBn
diff --git a/packages/util/src/bn/toHex.spec.ts b/packages/util/src/bn/toHex.spec.ts
index 1a7d496b5..239680a97 100644
--- a/packages/util/src/bn/toHex.spec.ts
+++ b/packages/util/src/bn/toHex.spec.ts
@@ -3,7 +3,7 @@
///
-import { BN, bnToHex } from '.';
+import { BN, bnToHex } from './index.js';
describe('bnToHex', (): void => {
it('converts null values to 0x00', (): void => {
diff --git a/packages/util/src/bn/toHex.ts b/packages/util/src/bn/toHex.ts
index e1dcb403d..15db02d8b 100644
--- a/packages/util/src/bn/toHex.ts
+++ b/packages/util/src/bn/toHex.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString, NumberOptions, ToBn } from '../types';
-import type { BN } from './bn';
+import type { HexString, NumberOptions, ToBn } from '../types.js';
+import type { BN } from './bn.js';
-import { u8aToHex } from '../u8a';
-import { bnToU8a } from './toU8a';
+import { u8aToHex } from '../u8a/index.js';
+import { bnToU8a } from './toU8a.js';
/**
* @name bnToHex
diff --git a/packages/util/src/bn/toU8a.spec.ts b/packages/util/src/bn/toU8a.spec.ts
index 5feebf2d9..ddf9e24da 100644
--- a/packages/util/src/bn/toU8a.spec.ts
+++ b/packages/util/src/bn/toU8a.spec.ts
@@ -3,9 +3,9 @@
///
-import { arrayRange } from '../array';
-import { perf } from '../test';
-import { BN, bnToU8a } from '.';
+import { arrayRange } from '../array/index.js';
+import { perf } from '../test/index.js';
+import { BN, bnToU8a } from './index.js';
const ptest = arrayRange(65536).map((v) => [v]);
diff --git a/packages/util/src/bn/toU8a.ts b/packages/util/src/bn/toU8a.ts
index 888dfcb75..9f2a257d2 100644
--- a/packages/util/src/bn/toU8a.ts
+++ b/packages/util/src/bn/toU8a.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { NumberOptions, ToBn } from '../types';
-import type { BN } from './bn';
+import type { NumberOptions, ToBn } from '../types.js';
+import type { BN } from './bn.js';
-import { bnToBn } from './toBn';
+import { bnToBn } from './toBn.js';
const DEFAULT_OPTS: NumberOptions = { bitLength: -1, isLe: true, isNegative: false };
diff --git a/packages/util/src/buffer/index.ts b/packages/util/src/buffer/index.ts
index d54a95f93..238a81f65 100644
--- a/packages/util/src/buffer/index.ts
+++ b/packages/util/src/buffer/index.ts
@@ -5,4 +5,4 @@
* @summary Utility methods to convert to and from `Buffer` objects
*/
-export { bufferToU8a } from './toU8a';
+export { bufferToU8a } from './toU8a.js';
diff --git a/packages/util/src/buffer/toU8a.spec.ts b/packages/util/src/buffer/toU8a.spec.ts
index 2eeba1e0f..f20b285ca 100644
--- a/packages/util/src/buffer/toU8a.spec.ts
+++ b/packages/util/src/buffer/toU8a.spec.ts
@@ -3,7 +3,7 @@
///
-import { bufferToU8a } from '.';
+import { bufferToU8a } from './index.js';
describe('bufferToU8a', (): void => {
it('returns an empty buffer when null provided', (): void => {
diff --git a/packages/util/src/bundle.ts b/packages/util/src/bundle.ts
index b8863eb0c..0eb9410da 100644
--- a/packages/util/src/bundle.ts
+++ b/packages/util/src/bundle.ts
@@ -4,28 +4,28 @@
/**
* @summary Utility methods for this package are split into groups
*/
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
-export * from './array';
-export * from './assert';
-export * from './bi';
-export * from './bn';
-export * from './buffer';
-export * from './compact';
-export * from './extractTime';
-export * from './float';
-export * from './format';
-export * from './has';
-export * from './hex';
-export * from './is';
-export * from './lazy';
-export * from './logger';
-export * from './memoize';
-export * from './nextTick';
-export * from './number';
-export * from './object';
-export * from './promisify';
-export * from './string';
-export * from './stringify';
-export * from './u8a';
-export * from './versionDetect';
+export * from './array/index.js';
+export * from './assert.js';
+export * from './bi/index.js';
+export * from './bn/index.js';
+export * from './buffer/index.js';
+export * from './compact/index.js';
+export * from './extractTime.js';
+export * from './float/index.js';
+export * from './format/index.js';
+export * from './has.js';
+export * from './hex/index.js';
+export * from './is/index.js';
+export * from './lazy.js';
+export * from './logger.js';
+export * from './memoize.js';
+export * from './nextTick.js';
+export * from './number/index.js';
+export * from './object/index.js';
+export * from './promisify.js';
+export * from './string/index.js';
+export * from './stringify.js';
+export * from './u8a/index.js';
+export * from './versionDetect.js';
diff --git a/packages/util/src/compact/addLength.spec.ts b/packages/util/src/compact/addLength.spec.ts
index da6f35d88..c89c5d4d2 100644
--- a/packages/util/src/compact/addLength.spec.ts
+++ b/packages/util/src/compact/addLength.spec.ts
@@ -3,7 +3,7 @@
///
-import { compactAddLength } from '.';
+import { compactAddLength } from './index.js';
describe('compactAddLength', (): void => {
it('correctly adds the length prefix', (): void => {
diff --git a/packages/util/src/compact/addLength.ts b/packages/util/src/compact/addLength.ts
index 35eb81ec2..87054f2d6 100644
--- a/packages/util/src/compact/addLength.ts
+++ b/packages/util/src/compact/addLength.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { u8aConcatStrict } from '../u8a';
-import { compactToU8a } from './toU8a';
+import { u8aConcatStrict } from '../u8a/index.js';
+import { compactToU8a } from './toU8a.js';
/**
* @name compactAddLength
diff --git a/packages/util/src/compact/defaults.ts b/packages/util/src/compact/defaults.ts
index 49af3df49..60d48b185 100644
--- a/packages/util/src/compact/defaults.ts
+++ b/packages/util/src/compact/defaults.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BitLength } from './types';
+import type { BitLength } from './types.js';
/** @internal */
export const DEFAULT_BITLENGTH: BitLength = 32;
diff --git a/packages/util/src/compact/fromU8a.spec.ts b/packages/util/src/compact/fromU8a.spec.ts
index e4515c4b0..985a81919 100644
--- a/packages/util/src/compact/fromU8a.spec.ts
+++ b/packages/util/src/compact/fromU8a.spec.ts
@@ -3,10 +3,10 @@
///
-import { BN } from '../bn/bn';
-import { hexToU8a } from '../hex/toU8a';
-import { perf } from '../test';
-import { compactFromU8a, compactFromU8aLim } from '.';
+import { BN } from '../bn/bn.js';
+import { hexToU8a } from '../hex/toU8a.js';
+import { perf } from '../test/index.js';
+import { compactFromU8a, compactFromU8aLim } from './index.js';
describe('compactFromU8a', (): void => {
it('decoded u8 value', (): void => {
diff --git a/packages/util/src/compact/fromU8a.ts b/packages/util/src/compact/fromU8a.ts
index 2b3d68ac8..f55aba103 100644
--- a/packages/util/src/compact/fromU8a.ts
+++ b/packages/util/src/compact/fromU8a.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { U8aLike } from '../types';
+import type { U8aLike } from '../types.js';
-import { BN } from '../bn';
-import { u8aToBn, u8aToU8a } from '../u8a';
+import { BN } from '../bn/index.js';
+import { u8aToBn, u8aToU8a } from '../u8a/index.js';
/**
* @name compactFromU8a
diff --git a/packages/util/src/compact/index.ts b/packages/util/src/compact/index.ts
index 21ea363e6..f4f821fde 100644
--- a/packages/util/src/compact/index.ts
+++ b/packages/util/src/compact/index.ts
@@ -22,7 +22,7 @@
* Note: we use *LOW BITS* of the LSB in LE encoding to encode the 2 bit key.
*/
-export { compactAddLength } from './addLength';
-export { compactStripLength } from './stripLength';
-export { compactFromU8a, compactFromU8aLim } from './fromU8a';
-export { compactToU8a } from './toU8a';
+export { compactAddLength } from './addLength.js';
+export { compactStripLength } from './stripLength.js';
+export { compactFromU8a, compactFromU8aLim } from './fromU8a.js';
+export { compactToU8a } from './toU8a.js';
diff --git a/packages/util/src/compact/stripLength.spec.ts b/packages/util/src/compact/stripLength.spec.ts
index 5f692762a..75c8e232f 100644
--- a/packages/util/src/compact/stripLength.spec.ts
+++ b/packages/util/src/compact/stripLength.spec.ts
@@ -3,7 +3,7 @@
///
-import { compactStripLength } from '.';
+import { compactStripLength } from './index.js';
describe('compactStripLength', (): void => {
it('correctly removes the length prefix', (): void => {
diff --git a/packages/util/src/compact/stripLength.ts b/packages/util/src/compact/stripLength.ts
index 1a1a58593..2bfb4f965 100644
--- a/packages/util/src/compact/stripLength.ts
+++ b/packages/util/src/compact/stripLength.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { compactFromU8a } from './fromU8a';
+import { compactFromU8a } from './fromU8a.js';
/**
* @name compactStripLength
diff --git a/packages/util/src/compact/toU8a.spec.ts b/packages/util/src/compact/toU8a.spec.ts
index d6f6b3bd8..1e88ef956 100644
--- a/packages/util/src/compact/toU8a.spec.ts
+++ b/packages/util/src/compact/toU8a.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { compactToU8a } from '.';
+import { BN } from '../bn/index.js';
+import { compactToU8a } from './index.js';
describe('encode', (): void => {
it('encodes short u8', (): void => {
diff --git a/packages/util/src/compact/toU8a.ts b/packages/util/src/compact/toU8a.ts
index a8abc9671..02071eafa 100644
--- a/packages/util/src/compact/toU8a.ts
+++ b/packages/util/src/compact/toU8a.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { BN, BN_ONE, BN_TWO, bnToBn, bnToU8a } from '../bn';
-import { u8aConcatStrict } from '../u8a';
+import { BN, BN_ONE, BN_TWO, bnToBn, bnToU8a } from '../bn/index.js';
+import { u8aConcatStrict } from '../u8a/index.js';
const MAX_U8 = BN_TWO.pow(new BN(8 - 2)).isub(BN_ONE);
const MAX_U16 = BN_TWO.pow(new BN(16 - 2)).isub(BN_ONE);
diff --git a/packages/util/src/detectPackage.ts b/packages/util/src/detectPackage.ts
index b4adec0c0..1c795a5aa 100644
--- a/packages/util/src/detectPackage.ts
+++ b/packages/util/src/detectPackage.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import others from './detectOther';
-import { packageInfo } from './packageInfo';
-import { detectPackage } from './versionDetect';
+import others from './detectOther.js';
+import { packageInfo } from './packageInfo.js';
+import { detectPackage } from './versionDetect.js';
detectPackage(packageInfo, null, others);
diff --git a/packages/util/src/extractTime.spec.ts b/packages/util/src/extractTime.spec.ts
index d7e2b4d84..e3704022e 100644
--- a/packages/util/src/extractTime.spec.ts
+++ b/packages/util/src/extractTime.spec.ts
@@ -3,7 +3,7 @@
///
-import { extractTime } from '.';
+import { extractTime } from './index.js';
describe('extractTime', (): void => {
const milliseconds = 1e9 + 123;
diff --git a/packages/util/src/extractTime.ts b/packages/util/src/extractTime.ts
index 2229152fb..1e9e17fde 100644
--- a/packages/util/src/extractTime.ts
+++ b/packages/util/src/extractTime.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Time } from './types';
+import type { Time } from './types.js';
const MIN_MS = 60 * 1000;
const HR_MS = MIN_MS * 60;
diff --git a/packages/util/src/float/index.ts b/packages/util/src/float/index.ts
index aec737002..e837b25bc 100644
--- a/packages/util/src/float/index.ts
+++ b/packages/util/src/float/index.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { floatToU8a } from './toU8a';
+export { floatToU8a } from './toU8a.js';
diff --git a/packages/util/src/float/toU8a.spec.ts b/packages/util/src/float/toU8a.spec.ts
index c116f16c1..720ca6d78 100644
--- a/packages/util/src/float/toU8a.spec.ts
+++ b/packages/util/src/float/toU8a.spec.ts
@@ -3,8 +3,8 @@
///
-import { u8aToHex } from '../u8a';
-import { floatToU8a } from '.';
+import { u8aToHex } from '../u8a/index.js';
+import { floatToU8a } from './index.js';
describe('floatToU8a', (): void => {
it('throws on invalid bitLength', (): void => {
diff --git a/packages/util/src/format/formatBalance.spec.ts b/packages/util/src/format/formatBalance.spec.ts
index 63ff0b957..0cd509424 100644
--- a/packages/util/src/format/formatBalance.spec.ts
+++ b/packages/util/src/format/formatBalance.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { formatBalance } from '.';
+import { BN } from '../bn/index.js';
+import { formatBalance } from './index.js';
const FMT_DEFAULTS = {
decimals: 0,
diff --git a/packages/util/src/format/formatBalance.ts b/packages/util/src/format/formatBalance.ts
index 7bb0e24bc..154fdedf5 100644
--- a/packages/util/src/format/formatBalance.ts
+++ b/packages/util/src/format/formatBalance.ts
@@ -1,14 +1,14 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
-import type { SiDef, ToBn } from '../types';
+import type { BN } from '../bn/bn.js';
+import type { SiDef, ToBn } from '../types.js';
-import { bnToBn } from '../bn/toBn';
-import { isBoolean } from '../is/boolean';
-import { formatDecimal } from './formatDecimal';
-import { getSeparator } from './getSeparator';
-import { calcSi, findSi, SI, SI_MID } from './si';
+import { bnToBn } from '../bn/toBn.js';
+import { isBoolean } from '../is/boolean.js';
+import { formatDecimal } from './formatDecimal.js';
+import { getSeparator } from './getSeparator.js';
+import { calcSi, findSi, SI, SI_MID } from './si.js';
interface Defaults {
decimals: number;
diff --git a/packages/util/src/format/formatDate.spec.ts b/packages/util/src/format/formatDate.spec.ts
index a131ca1df..48750bffb 100644
--- a/packages/util/src/format/formatDate.spec.ts
+++ b/packages/util/src/format/formatDate.spec.ts
@@ -3,7 +3,7 @@
///
-import { formatDate } from '.';
+import { formatDate } from './index.js';
describe('formatDate', (): void => {
it('formats a known date into the correct format', (): void => {
diff --git a/packages/util/src/format/formatDecimal.spec.ts b/packages/util/src/format/formatDecimal.spec.ts
index 2ee55db82..83bd5168c 100644
--- a/packages/util/src/format/formatDecimal.spec.ts
+++ b/packages/util/src/format/formatDecimal.spec.ts
@@ -3,7 +3,7 @@
///
-import { formatDecimal } from '.';
+import { formatDecimal } from './index.js';
describe('formatDecimal', (): void => {
it('formats decimals in number groupings', (): void => {
diff --git a/packages/util/src/format/formatElapsed.spec.ts b/packages/util/src/format/formatElapsed.spec.ts
index 8f57cf65c..737826b57 100644
--- a/packages/util/src/format/formatElapsed.spec.ts
+++ b/packages/util/src/format/formatElapsed.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { formatElapsed } from '.';
+import { BN } from '../bn/index.js';
+import { formatElapsed } from './index.js';
describe('formatElapsed', (): void => {
const start = 12345678;
diff --git a/packages/util/src/format/formatElapsed.ts b/packages/util/src/format/formatElapsed.ts
index 20ffaac84..43f76bf40 100644
--- a/packages/util/src/format/formatElapsed.ts
+++ b/packages/util/src/format/formatElapsed.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
-import type { ToBn } from '../types';
+import type { BN } from '../bn/bn.js';
+import type { ToBn } from '../types.js';
-import { bnToBn } from '../bn/toBn';
+import { bnToBn } from '../bn/toBn.js';
/** @internal */
function formatValue (elapsed: number): string {
diff --git a/packages/util/src/format/formatNumber.spec.ts b/packages/util/src/format/formatNumber.spec.ts
index 4e9bca3ac..e8ba2b040 100644
--- a/packages/util/src/format/formatNumber.spec.ts
+++ b/packages/util/src/format/formatNumber.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { formatNumber } from '.';
+import { BN } from '../bn/index.js';
+import { formatNumber } from './index.js';
describe('formatNumber', (): void => {
it('formats empty', (): void => {
diff --git a/packages/util/src/format/formatNumber.ts b/packages/util/src/format/formatNumber.ts
index e241b1bf5..33eec95d9 100644
--- a/packages/util/src/format/formatNumber.ts
+++ b/packages/util/src/format/formatNumber.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
-import type { ToBn } from '../types';
+import type { BN } from '../bn/bn.js';
+import type { ToBn } from '../types.js';
-import { bnToBn } from '../bn/toBn';
-import { formatDecimal } from './formatDecimal';
-import { getSeparator } from './getSeparator';
+import { bnToBn } from '../bn/toBn.js';
+import { formatDecimal } from './formatDecimal.js';
+import { getSeparator } from './getSeparator.js';
interface Options {
/**
diff --git a/packages/util/src/format/getSeparator.spec.ts b/packages/util/src/format/getSeparator.spec.ts
index 3c26ecfa5..c4c267fe2 100644
--- a/packages/util/src/format/getSeparator.spec.ts
+++ b/packages/util/src/format/getSeparator.spec.ts
@@ -3,7 +3,7 @@
///
-import { getSeparator } from './getSeparator';
+import { getSeparator } from './getSeparator.js';
describe('getSeparator', (): void => {
it('uses system locale', (): void => {
diff --git a/packages/util/src/format/index.ts b/packages/util/src/format/index.ts
index 9b6ca74f6..61dec443b 100644
--- a/packages/util/src/format/index.ts
+++ b/packages/util/src/format/index.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { formatBalance } from './formatBalance';
-export { formatDate } from './formatDate';
-export { formatDecimal } from './formatDecimal';
-export { formatElapsed } from './formatElapsed';
-export { formatNumber } from './formatNumber';
-export { calcSi, findSi } from './si';
+export { formatBalance } from './formatBalance.js';
+export { formatDate } from './formatDate.js';
+export { formatDecimal } from './formatDecimal.js';
+export { formatElapsed } from './formatElapsed.js';
+export { formatNumber } from './formatNumber.js';
+export { calcSi, findSi } from './si.js';
diff --git a/packages/util/src/format/si.ts b/packages/util/src/format/si.ts
index 3c2fe9949..93f4ee223 100644
--- a/packages/util/src/format/si.ts
+++ b/packages/util/src/format/si.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { SiDef } from '../types';
+import type { SiDef } from '../types.js';
/** @internal */
export const SI_MID = 8;
diff --git a/packages/util/src/has.spec.ts b/packages/util/src/has.spec.ts
index 6ca8a42df..526883c15 100644
--- a/packages/util/src/has.spec.ts
+++ b/packages/util/src/has.spec.ts
@@ -3,7 +3,7 @@
///
-import { hasBuffer } from './has';
+import { hasBuffer } from './has.js';
describe('hasBuffer', (): void => {
it('has Buffer (Jest + Node.js)', (): void => {
diff --git a/packages/util/src/hex/addPrefix.spec.ts b/packages/util/src/hex/addPrefix.spec.ts
index 8eb9d87d1..e5079c3a6 100644
--- a/packages/util/src/hex/addPrefix.spec.ts
+++ b/packages/util/src/hex/addPrefix.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexAddPrefix } from '.';
+import { hexAddPrefix } from './index.js';
describe('hexAddPrefix', (): void => {
it('does not add when prefix is available', (): void => {
diff --git a/packages/util/src/hex/addPrefix.ts b/packages/util/src/hex/addPrefix.ts
index 66e14311f..db466c541 100644
--- a/packages/util/src/hex/addPrefix.ts
+++ b/packages/util/src/hex/addPrefix.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { hexHasPrefix } from './hasPrefix';
+import { hexHasPrefix } from './hasPrefix.js';
/**
* @name hexAddPrefix
diff --git a/packages/util/src/hex/fixLength.spec.ts b/packages/util/src/hex/fixLength.spec.ts
index d1bc4d4b9..5b101d50c 100644
--- a/packages/util/src/hex/fixLength.spec.ts
+++ b/packages/util/src/hex/fixLength.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexFixLength } from '.';
+import { hexFixLength } from './index.js';
describe('hexFixLength', (): void => {
it('returns bitLength === -1 as-is', (): void => {
diff --git a/packages/util/src/hex/fixLength.ts b/packages/util/src/hex/fixLength.ts
index 860890c26..cf2ed692b 100644
--- a/packages/util/src/hex/fixLength.ts
+++ b/packages/util/src/hex/fixLength.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { hexAddPrefix } from './addPrefix';
-import { hexStripPrefix } from './stripPrefix';
+import { hexAddPrefix } from './addPrefix.js';
+import { hexStripPrefix } from './stripPrefix.js';
/**
* @name hexFixLength
diff --git a/packages/util/src/hex/hasPrefix.spec.ts b/packages/util/src/hex/hasPrefix.spec.ts
index 84f989be4..523e919ce 100644
--- a/packages/util/src/hex/hasPrefix.spec.ts
+++ b/packages/util/src/hex/hasPrefix.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexHasPrefix } from '.';
+import { hexHasPrefix } from './index.js';
describe('hexHasPrefix', (): void => {
it('returns true when hex prefix is found', (): void => {
diff --git a/packages/util/src/hex/hasPrefix.ts b/packages/util/src/hex/hasPrefix.ts
index e1a9b3461..d7b487ec7 100644
--- a/packages/util/src/hex/hasPrefix.ts
+++ b/packages/util/src/hex/hasPrefix.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { isHex } from '../is/hex';
+import { isHex } from '../is/hex.js';
/**
* @name hexHasPrefix
diff --git a/packages/util/src/hex/index.ts b/packages/util/src/hex/index.ts
index 3617cd2b3..863d8c0d5 100644
--- a/packages/util/src/hex/index.ts
+++ b/packages/util/src/hex/index.ts
@@ -5,12 +5,12 @@
* @summary Internal utilities to create and test for hex values
*/
-export { hexAddPrefix } from './addPrefix';
-export { hexFixLength } from './fixLength';
-export { hexHasPrefix } from './hasPrefix';
-export { hexStripPrefix } from './stripPrefix';
-export { hexToBigInt } from './toBigInt';
-export { hexToBn } from './toBn';
-export { hexToNumber } from './toNumber';
-export { hexToString } from './toString';
-export { hexToU8a } from './toU8a';
+export { hexAddPrefix } from './addPrefix.js';
+export { hexFixLength } from './fixLength.js';
+export { hexHasPrefix } from './hasPrefix.js';
+export { hexStripPrefix } from './stripPrefix.js';
+export { hexToBigInt } from './toBigInt.js';
+export { hexToBn } from './toBn.js';
+export { hexToNumber } from './toNumber.js';
+export { hexToString } from './toString.js';
+export { hexToU8a } from './toU8a.js';
diff --git a/packages/util/src/hex/stripPrefix.spec.ts b/packages/util/src/hex/stripPrefix.spec.ts
index 2ea62b398..a46efd5cc 100644
--- a/packages/util/src/hex/stripPrefix.spec.ts
+++ b/packages/util/src/hex/stripPrefix.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexStripPrefix } from '.';
+import { hexStripPrefix } from './index.js';
describe('hexStripPrefix', (): void => {
it('returns an empty string when null value supplied', (): void => {
diff --git a/packages/util/src/hex/stripPrefix.ts b/packages/util/src/hex/stripPrefix.ts
index 5799261e6..f6dc0b352 100644
--- a/packages/util/src/hex/stripPrefix.ts
+++ b/packages/util/src/hex/stripPrefix.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { REGEX_HEX_NOPREFIX, REGEX_HEX_PREFIXED } from '../is/hex';
+import { REGEX_HEX_NOPREFIX, REGEX_HEX_PREFIXED } from '../is/hex.js';
/**
* @name hexStripPrefix
diff --git a/packages/util/src/hex/toBigInt.spec.ts b/packages/util/src/hex/toBigInt.spec.ts
index a93f9c7ee..7b4dd1076 100644
--- a/packages/util/src/hex/toBigInt.spec.ts
+++ b/packages/util/src/hex/toBigInt.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexToBigInt } from '.';
+import { hexToBigInt } from './index.js';
describe('hexToBigInt', (): void => {
it('converts prefixed hex values to BN', (): void => {
diff --git a/packages/util/src/hex/toBigInt.ts b/packages/util/src/hex/toBigInt.ts
index c978a6b09..b3f02f5fc 100644
--- a/packages/util/src/hex/toBigInt.ts
+++ b/packages/util/src/hex/toBigInt.ts
@@ -1,12 +1,12 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBnOptions } from '../types';
+import type { ToBnOptions } from '../types.js';
import { BigInt } from '@polkadot/x-bigint';
-import { u8aToBigInt } from '../u8a/toBigInt';
-import { hexToU8a } from './toU8a';
+import { u8aToBigInt } from '../u8a/toBigInt.js';
+import { hexToU8a } from './toU8a.js';
/**
* @name hexToBigInt
diff --git a/packages/util/src/hex/toBn.spec.ts b/packages/util/src/hex/toBn.spec.ts
index 385fd4d22..833717574 100644
--- a/packages/util/src/hex/toBn.spec.ts
+++ b/packages/util/src/hex/toBn.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexToBn } from '.';
+import { hexToBn } from './index.js';
describe('hexToBn', (): void => {
it('converts prefixed hex values to BN', (): void => {
diff --git a/packages/util/src/hex/toBn.ts b/packages/util/src/hex/toBn.ts
index 2ec28ae9d..79da751cd 100644
--- a/packages/util/src/hex/toBn.ts
+++ b/packages/util/src/hex/toBn.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBnOptions } from '../types';
+import type { ToBnOptions } from '../types.js';
-import { BN } from '../bn/bn';
-import { hexStripPrefix } from './stripPrefix';
+import { BN } from '../bn/bn.js';
+import { hexStripPrefix } from './stripPrefix.js';
/**
* @name hexToBn
diff --git a/packages/util/src/hex/toNumber.spec.ts b/packages/util/src/hex/toNumber.spec.ts
index 8976e39e2..d59d9bd59 100644
--- a/packages/util/src/hex/toNumber.spec.ts
+++ b/packages/util/src/hex/toNumber.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexToNumber } from '.';
+import { hexToNumber } from './index.js';
describe('hexToNumber', (): void => {
it('converts an empty to NaN', (): void => {
diff --git a/packages/util/src/hex/toNumber.ts b/packages/util/src/hex/toNumber.ts
index 3d4ca4cd4..ef38745c4 100644
--- a/packages/util/src/hex/toNumber.ts
+++ b/packages/util/src/hex/toNumber.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { hexToBn } from './toBn';
+import { hexToBn } from './toBn.js';
/**
* @name hexToNumber
diff --git a/packages/util/src/hex/toString.spec.ts b/packages/util/src/hex/toString.spec.ts
index a83640a0f..6c1bdcb99 100644
--- a/packages/util/src/hex/toString.spec.ts
+++ b/packages/util/src/hex/toString.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexToString } from '.';
+import { hexToString } from './index.js';
describe('hexToString', (): void => {
it('converts an empty to ""', (): void => {
diff --git a/packages/util/src/hex/toString.ts b/packages/util/src/hex/toString.ts
index d35496f72..8d8528a75 100644
--- a/packages/util/src/hex/toString.ts
+++ b/packages/util/src/hex/toString.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { u8aToString } from '../u8a/toString';
-import { hexToU8a } from './toU8a';
+import { u8aToString } from '../u8a/toString.js';
+import { hexToU8a } from './toU8a.js';
/**
* @name hexToU8a
diff --git a/packages/util/src/hex/toU8a.spec.ts b/packages/util/src/hex/toU8a.spec.ts
index 6164291ff..dd5f744cc 100644
--- a/packages/util/src/hex/toU8a.spec.ts
+++ b/packages/util/src/hex/toU8a.spec.ts
@@ -3,9 +3,9 @@
///
-import { perfCmp } from '../test';
-import { hexToU8a as hexToU8aBuffer } from './toU8aBuffer';
-import { hexToU8a } from '.';
+import { perfCmp } from '../test/index.js';
+import { hexToU8a } from './index.js';
+import { hexToU8a as hexToU8aBuffer } from './toU8aBuffer.js';
let ptest = '0x';
diff --git a/packages/util/src/hex/toU8a.ts b/packages/util/src/hex/toU8a.ts
index e87d9a41a..9dffe623f 100644
--- a/packages/util/src/hex/toU8a.ts
+++ b/packages/util/src/hex/toU8a.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
const CHR = '0123456789abcdef';
const U8 = new Uint8Array(256);
diff --git a/packages/util/src/hex/toU8aBuffer.spec.ts b/packages/util/src/hex/toU8aBuffer.spec.ts
index 4f0be0ecf..d605db1f7 100644
--- a/packages/util/src/hex/toU8aBuffer.spec.ts
+++ b/packages/util/src/hex/toU8aBuffer.spec.ts
@@ -3,7 +3,7 @@
///
-import { hexToU8a } from './toU8aBuffer';
+import { hexToU8a } from './toU8aBuffer.js';
describe('hexToU8a', (): void => {
it('returns an empty Uint8Array when null provided', (): void => {
diff --git a/packages/util/src/hex/toU8aBuffer.ts b/packages/util/src/hex/toU8aBuffer.ts
index bfb3d8227..1e00198e6 100644
--- a/packages/util/src/hex/toU8aBuffer.ts
+++ b/packages/util/src/hex/toU8aBuffer.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
/**
* @name hexToU8a
diff --git a/packages/util/src/index.spec.ts b/packages/util/src/index.spec.ts
index 05d2fb0f5..86b2c89b5 100644
--- a/packages/util/src/index.spec.ts
+++ b/packages/util/src/index.spec.ts
@@ -3,7 +3,7 @@
///
-import { assert } from '.';
+import { assert } from './index.js';
describe('index', (): void => {
it('exports ok', (): void => {
diff --git a/packages/util/src/index.ts b/packages/util/src/index.ts
index 20ba86932..c16234dd1 100644
--- a/packages/util/src/index.ts
+++ b/packages/util/src/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import './detectPackage';
+import './detectPackage.js';
-export * from './bundle';
+export * from './bundle.js';
diff --git a/packages/util/src/is/array.spec.ts b/packages/util/src/is/array.spec.ts
index 3eeda3466..932911a0d 100644
--- a/packages/util/src/is/array.spec.ts
+++ b/packages/util/src/is/array.spec.ts
@@ -3,7 +3,7 @@
///
-import { isArray } from '.';
+import { isArray } from './index.js';
describe('isArray', (): void => {
it('is false on no value', (): void => {
diff --git a/packages/util/src/is/ascii.spec.ts b/packages/util/src/is/ascii.spec.ts
index e7ee1a7ce..268dd73f0 100644
--- a/packages/util/src/is/ascii.spec.ts
+++ b/packages/util/src/is/ascii.spec.ts
@@ -3,9 +3,9 @@
///
-import { stringToU8a } from '../string';
-import { perf } from '../test';
-import { isAscii } from '.';
+import { stringToU8a } from '../string/index.js';
+import { perf } from '../test/index.js';
+import { isAscii } from './index.js';
describe('isAscii', (): void => {
it('returns true for an ASCII string', (): void => {
diff --git a/packages/util/src/is/ascii.ts b/packages/util/src/is/ascii.ts
index ff1071e57..b2da9ba2c 100644
--- a/packages/util/src/is/ascii.ts
+++ b/packages/util/src/is/ascii.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString, U8aLike } from '../types';
+import type { AnyString, U8aLike } from '../types.js';
-import { u8aToU8a } from '../u8a/toU8a';
-import { isHex } from './hex';
-import { isString } from './string';
+import { u8aToU8a } from '../u8a/toU8a.js';
+import { isHex } from './hex.js';
+import { isString } from './string.js';
/** @internal */
function isAsciiStr (str: AnyString): boolean {
diff --git a/packages/util/src/is/bigInt.spec.ts b/packages/util/src/is/bigInt.spec.ts
index ac6f648e8..093f4c5db 100644
--- a/packages/util/src/is/bigInt.spec.ts
+++ b/packages/util/src/is/bigInt.spec.ts
@@ -3,7 +3,7 @@
///
-import { isBigInt } from '.';
+import { isBigInt } from './index.js';
describe('isBigInt', (): void => {
it('returns true when a BigInt value', (): void => {
diff --git a/packages/util/src/is/bn.spec.ts b/packages/util/src/is/bn.spec.ts
index 2c417339f..d04c26996 100644
--- a/packages/util/src/is/bn.spec.ts
+++ b/packages/util/src/is/bn.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { isBn } from '.';
+import { BN } from '../bn/index.js';
+import { isBn } from './index.js';
describe('isBN', (): void => {
it('returns true when a BN value', (): void => {
diff --git a/packages/util/src/is/bn.ts b/packages/util/src/is/bn.ts
index 89feaa438..d86ed4510 100644
--- a/packages/util/src/is/bn.ts
+++ b/packages/util/src/is/bn.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { BN } from '../bn/bn';
+import { BN } from '../bn/bn.js';
/**
* @name isBn
diff --git a/packages/util/src/is/boolean.spec.ts b/packages/util/src/is/boolean.spec.ts
index 60114685a..f97945000 100644
--- a/packages/util/src/is/boolean.spec.ts
+++ b/packages/util/src/is/boolean.spec.ts
@@ -3,7 +3,7 @@
///
-import { isBoolean } from '.';
+import { isBoolean } from './index.js';
describe('isBoolean', (): void => {
it('returns true on false', (): void => {
diff --git a/packages/util/src/is/buffer.spec.ts b/packages/util/src/is/buffer.spec.ts
index f8054832b..56a9510cb 100644
--- a/packages/util/src/is/buffer.spec.ts
+++ b/packages/util/src/is/buffer.spec.ts
@@ -3,7 +3,7 @@
///
-import { isBuffer } from '.';
+import { isBuffer } from './index.js';
describe('isBuffer', (): void => {
it('returns true when a Buffer value', (): void => {
diff --git a/packages/util/src/is/buffer.ts b/packages/util/src/is/buffer.ts
index 08e7b34a2..fdebb40eb 100644
--- a/packages/util/src/is/buffer.ts
+++ b/packages/util/src/is/buffer.ts
@@ -3,8 +3,8 @@
import { xglobal } from '@polkadot/x-global';
-import { hasBuffer } from '../has';
-import { isFunction } from './function';
+import { hasBuffer } from '../has.js';
+import { isFunction } from './function.js';
// We define a scappy low-level interface to mock Buffer
// (this removes the need for the node typings in built bundles)
diff --git a/packages/util/src/is/childClass.spec.ts b/packages/util/src/is/childClass.spec.ts
index 6e24258cb..8676a52de 100644
--- a/packages/util/src/is/childClass.spec.ts
+++ b/packages/util/src/is/childClass.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { isChildClass } from '.';
+import { BN } from '../bn/index.js';
+import { isChildClass } from './index.js';
describe('isChildClass', (): void => {
it('returns true when a Child value', (): void => {
diff --git a/packages/util/src/is/childClass.ts b/packages/util/src/is/childClass.ts
index fdb2c7cb4..cada6575a 100644
--- a/packages/util/src/is/childClass.ts
+++ b/packages/util/src/is/childClass.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Constructor } from '../types';
+import type { Constructor } from '../types.js';
-import { isClass } from './class';
+import { isClass } from './class.js';
/**
* @name isChildClass
diff --git a/packages/util/src/is/class.spec.ts b/packages/util/src/is/class.spec.ts
index 6d763bc7f..a8ebb62ce 100644
--- a/packages/util/src/is/class.spec.ts
+++ b/packages/util/src/is/class.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from '../bn';
-import { isClass } from '.';
+import { BN } from '../bn/index.js';
+import { isClass } from './index.js';
describe('isClass', (): void => {
it('returns false on a pure object', (): void => {
diff --git a/packages/util/src/is/class.ts b/packages/util/src/is/class.ts
index 839bb5bfe..75cad842f 100644
--- a/packages/util/src/is/class.ts
+++ b/packages/util/src/is/class.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Constructor } from '../types';
+import type { Constructor } from '../types.js';
-import { isOnFunction } from './helpers';
+import { isOnFunction } from './helpers.js';
/**
* @name isClass
diff --git a/packages/util/src/is/codec.spec.ts b/packages/util/src/is/codec.spec.ts
index 5b5413e54..a2e8d8dfd 100644
--- a/packages/util/src/is/codec.spec.ts
+++ b/packages/util/src/is/codec.spec.ts
@@ -3,8 +3,8 @@
///
-import { perfCmp } from '../test';
-import { isCodec } from '.';
+import { perfCmp } from '../test/index.js';
+import { isCodec } from './index.js';
const ptest = {
registry: {
diff --git a/packages/util/src/is/codec.ts b/packages/util/src/is/codec.ts
index ad075ba64..25eebcf90 100644
--- a/packages/util/src/is/codec.ts
+++ b/packages/util/src/is/codec.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { isOnObject } from './helpers';
+import { isOnObject } from './helpers.js';
interface Registry {
get: (...params: unknown[]) => unknown;
diff --git a/packages/util/src/is/compact.spec.ts b/packages/util/src/is/compact.spec.ts
index a1bc39aef..c01ac2fee 100644
--- a/packages/util/src/is/compact.spec.ts
+++ b/packages/util/src/is/compact.spec.ts
@@ -5,7 +5,7 @@
import BN from 'bn.js';
-import { isCompact } from '.';
+import { isCompact } from './index.js';
describe('isCompact', (): void => {
it('is false on no value', (): void => {
diff --git a/packages/util/src/is/compact.ts b/packages/util/src/is/compact.ts
index f283caf3e..307aba65b 100644
--- a/packages/util/src/is/compact.ts
+++ b/packages/util/src/is/compact.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from '../bn/bn';
+import type { BN } from '../bn/bn.js';
-import { isOnObject } from './helpers';
+import { isOnObject } from './helpers.js';
interface Compact {
toBigInt (): bigint;
diff --git a/packages/util/src/is/error.spec.ts b/packages/util/src/is/error.spec.ts
index 97ec8ee6a..f0249c24c 100644
--- a/packages/util/src/is/error.spec.ts
+++ b/packages/util/src/is/error.spec.ts
@@ -3,7 +3,7 @@
///
-import { isError } from '.';
+import { isError } from './index.js';
describe('isError', (): void => {
it('returns true when an Error value', (): void => {
diff --git a/packages/util/src/is/function.spec.ts b/packages/util/src/is/function.spec.ts
index 221b2f88c..c38e3d75f 100644
--- a/packages/util/src/is/function.spec.ts
+++ b/packages/util/src/is/function.spec.ts
@@ -3,7 +3,7 @@
///
-import { isFunction } from '.';
+import { isFunction } from './index.js';
describe('isFunction', (): void => {
it('returns true on valid functions', (): void => {
diff --git a/packages/util/src/is/helpers.ts b/packages/util/src/is/helpers.ts
index 061561ff9..24043c28d 100644
--- a/packages/util/src/is/helpers.ts
+++ b/packages/util/src/is/helpers.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { isFunction } from './function';
-import { isObject } from './object';
+import { isFunction } from './function.js';
+import { isObject } from './object.js';
export function isOn (...fns: (keyof T)[]): (value?: unknown) => value is T {
return (value?: unknown): value is T =>
diff --git a/packages/util/src/is/hex.spec.ts b/packages/util/src/is/hex.spec.ts
index ea0a6aad2..3ad4959e9 100644
--- a/packages/util/src/is/hex.spec.ts
+++ b/packages/util/src/is/hex.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { isHex } from '.';
+import { perf } from '../test/index.js';
+import { isHex } from './index.js';
describe('isHex', (): void => {
const test = '1234abcd';
diff --git a/packages/util/src/is/hex.ts b/packages/util/src/is/hex.ts
index 5bc34e78f..ef51db805 100644
--- a/packages/util/src/is/hex.ts
+++ b/packages/util/src/is/hex.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
export const REGEX_HEX_PREFIXED = /^0x[\da-fA-F]+$/;
diff --git a/packages/util/src/is/index.ts b/packages/util/src/is/index.ts
index e7c4152bd..5df806156 100644
--- a/packages/util/src/is/index.ts
+++ b/packages/util/src/is/index.ts
@@ -4,32 +4,32 @@
/**
* @summary Type checking utilities
*/
-export { isArray } from './array';
-export { isAscii } from './ascii';
-export { isBigInt } from './bigInt';
-export { isBn } from './bn';
-export { isBuffer } from './buffer';
-export { isBoolean } from './boolean';
-export { isChildClass } from './childClass';
-export { isClass } from './class';
-export { isCodec } from './codec';
-export { isCompact } from './compact';
-export { isError } from './error';
-export { isFunction } from './function';
-export { isHex } from './hex';
-export { isInstanceOf } from './instanceOf';
-export { isIp } from './ip';
-export { isJsonObject } from './jsonObject';
-export { isNull } from './null';
-export { isNumber } from './number';
-export { isObject } from './object';
-export { isObservable } from './observable';
-export { isPromise } from './promise';
-export { isString } from './string';
-export { isTestChain } from './testChain';
-export { isToBigInt } from './toBigInt';
-export { isToBn } from './toBn';
-export { isU8a } from './u8a';
-export { isUndefined } from './undefined';
-export { isUtf8 } from './utf8';
-export { isWasm } from './wasm';
+export { isArray } from './array.js';
+export { isAscii } from './ascii.js';
+export { isBigInt } from './bigInt.js';
+export { isBn } from './bn.js';
+export { isBuffer } from './buffer.js';
+export { isBoolean } from './boolean.js';
+export { isChildClass } from './childClass.js';
+export { isClass } from './class.js';
+export { isCodec } from './codec.js';
+export { isCompact } from './compact.js';
+export { isError } from './error.js';
+export { isFunction } from './function.js';
+export { isHex } from './hex.js';
+export { isInstanceOf } from './instanceOf.js';
+export { isIp } from './ip.js';
+export { isJsonObject } from './jsonObject.js';
+export { isNull } from './null.js';
+export { isNumber } from './number.js';
+export { isObject } from './object.js';
+export { isObservable } from './observable.js';
+export { isPromise } from './promise.js';
+export { isString } from './string.js';
+export { isTestChain } from './testChain.js';
+export { isToBigInt } from './toBigInt.js';
+export { isToBn } from './toBn.js';
+export { isU8a } from './u8a.js';
+export { isUndefined } from './undefined.js';
+export { isUtf8 } from './utf8.js';
+export { isWasm } from './wasm.js';
diff --git a/packages/util/src/is/instanceOf.spec.ts b/packages/util/src/is/instanceOf.spec.ts
index c4e14d52d..79b7257f0 100644
--- a/packages/util/src/is/instanceOf.spec.ts
+++ b/packages/util/src/is/instanceOf.spec.ts
@@ -3,7 +3,7 @@
///
-import { isInstanceOf } from '.';
+import { isInstanceOf } from './index.js';
describe('isInstanceOf', (): void => {
it('returns true on real instances', (): void => {
diff --git a/packages/util/src/is/ip.spec.ts b/packages/util/src/is/ip.spec.ts
index ee7a43b20..d8c8251ba 100644
--- a/packages/util/src/is/ip.spec.ts
+++ b/packages/util/src/is/ip.spec.ts
@@ -3,7 +3,7 @@
///
-import { isIp } from '.';
+import { isIp } from './index.js';
describe('isIp', (): void => {
it('returns false when non-ip found', (): void => {
diff --git a/packages/util/src/is/jsonObject.spec.ts b/packages/util/src/is/jsonObject.spec.ts
index 7e1abbfc9..5a1fdbebc 100644
--- a/packages/util/src/is/jsonObject.spec.ts
+++ b/packages/util/src/is/jsonObject.spec.ts
@@ -3,7 +3,7 @@
///
-import { isJsonObject } from '.';
+import { isJsonObject } from './index.js';
const jsonObject = `{
"Test": "1234",
diff --git a/packages/util/src/is/jsonObject.ts b/packages/util/src/is/jsonObject.ts
index e7b65910a..a4a0f3c77 100644
--- a/packages/util/src/is/jsonObject.ts
+++ b/packages/util/src/is/jsonObject.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { stringify } from '../stringify';
+import { stringify } from '../stringify.js';
interface ObjectIndexed {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/packages/util/src/is/null.spec.ts b/packages/util/src/is/null.spec.ts
index 1b468247e..0efc4771c 100644
--- a/packages/util/src/is/null.spec.ts
+++ b/packages/util/src/is/null.spec.ts
@@ -3,7 +3,7 @@
///
-import { isNull } from '.';
+import { isNull } from './index.js';
describe('isNull', (): void => {
it('returns true when a null value', (): void => {
diff --git a/packages/util/src/is/number.spec.ts b/packages/util/src/is/number.spec.ts
index 673feb1dc..a56cd15db 100644
--- a/packages/util/src/is/number.spec.ts
+++ b/packages/util/src/is/number.spec.ts
@@ -3,7 +3,7 @@
///
-import { isNumber } from '.';
+import { isNumber } from './index.js';
describe('isNumber', (): void => {
it('returns true on valid numbers', (): void => {
diff --git a/packages/util/src/is/object.spec.ts b/packages/util/src/is/object.spec.ts
index e1458f7f5..a50b4f5dc 100644
--- a/packages/util/src/is/object.spec.ts
+++ b/packages/util/src/is/object.spec.ts
@@ -3,7 +3,7 @@
///
-import { isObject } from '.';
+import { isObject } from './index.js';
describe('isObject', (): void => {
it('returns true on valid objects', (): void => {
diff --git a/packages/util/src/is/observable.spec.ts b/packages/util/src/is/observable.spec.ts
index accb43777..2e2a4251f 100644
--- a/packages/util/src/is/observable.spec.ts
+++ b/packages/util/src/is/observable.spec.ts
@@ -3,7 +3,7 @@
///
-import { isObservable } from '.';
+import { isObservable } from './index.js';
describe('isObservable', (): void => {
it('returns true on valid observables', (): void => {
diff --git a/packages/util/src/is/observable.ts b/packages/util/src/is/observable.ts
index 5193a1e85..894722aac 100644
--- a/packages/util/src/is/observable.ts
+++ b/packages/util/src/is/observable.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Observable } from '../types';
+import type { Observable } from '../types.js';
-import { isOn } from './helpers';
+import { isOn } from './helpers.js';
/**
* @name isBObservable
diff --git a/packages/util/src/is/promise.spec.ts b/packages/util/src/is/promise.spec.ts
index 99f3a4fe0..c8964865e 100644
--- a/packages/util/src/is/promise.spec.ts
+++ b/packages/util/src/is/promise.spec.ts
@@ -3,7 +3,7 @@
///
-import { isPromise } from '.';
+import { isPromise } from './index.js';
describe('isPromise', (): void => {
it('returns true on valid Promise (Promise-like)', (): void => {
diff --git a/packages/util/src/is/promise.ts b/packages/util/src/is/promise.ts
index eb84df58c..63fddd547 100644
--- a/packages/util/src/is/promise.ts
+++ b/packages/util/src/is/promise.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { isOnObject } from './helpers';
+import { isOnObject } from './helpers.js';
export const isPromise = /*#__PURE__*/ isOnObject>('catch', 'then');
diff --git a/packages/util/src/is/string.spec.ts b/packages/util/src/is/string.spec.ts
index f2fd268aa..5f956e465 100644
--- a/packages/util/src/is/string.spec.ts
+++ b/packages/util/src/is/string.spec.ts
@@ -3,7 +3,7 @@
///
-import { isString } from '.';
+import { isString } from './index.js';
describe('isString', (): void => {
it('returns true on valid strings', (): void => {
diff --git a/packages/util/src/is/string.ts b/packages/util/src/is/string.ts
index 6b54a3d40..130ddd05d 100644
--- a/packages/util/src/is/string.ts
+++ b/packages/util/src/is/string.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString } from '../types';
+import type { AnyString } from '../types.js';
/**
* @name isString
diff --git a/packages/util/src/is/testChain.spec.ts b/packages/util/src/is/testChain.spec.ts
index 7ca2ba4a1..986b241d6 100644
--- a/packages/util/src/is/testChain.spec.ts
+++ b/packages/util/src/is/testChain.spec.ts
@@ -3,7 +3,7 @@
///
-import { isTestChain } from '.';
+import { isTestChain } from './index.js';
describe('isTestChain', (): void => {
it('enables test environment when chain specification matches text of dev or loc(al)', (): void => {
diff --git a/packages/util/src/is/toBigInt.spec.ts b/packages/util/src/is/toBigInt.spec.ts
index 4e957fc3e..4b6fa3ff1 100644
--- a/packages/util/src/is/toBigInt.spec.ts
+++ b/packages/util/src/is/toBigInt.spec.ts
@@ -3,7 +3,7 @@
///
-import { isToBigInt } from '.';
+import { isToBigInt } from './index.js';
describe('isToBigInt', (): void => {
it('is false on no value', (): void => {
diff --git a/packages/util/src/is/toBigInt.ts b/packages/util/src/is/toBigInt.ts
index 5ae62d93e..1b4074fe8 100644
--- a/packages/util/src/is/toBigInt.ts
+++ b/packages/util/src/is/toBigInt.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBigInt } from '../types';
+import type { ToBigInt } from '../types.js';
-import { isOn } from './helpers';
+import { isOn } from './helpers.js';
export const isToBigInt = /*#__PURE__*/ isOn('toBigInt');
diff --git a/packages/util/src/is/toBn.spec.ts b/packages/util/src/is/toBn.spec.ts
index b59b8dbe7..7c0d4af99 100644
--- a/packages/util/src/is/toBn.spec.ts
+++ b/packages/util/src/is/toBn.spec.ts
@@ -5,7 +5,7 @@
import BN from 'bn.js';
-import { isToBn } from '.';
+import { isToBn } from './index.js';
describe('isToBn', (): void => {
it('is false on no value', (): void => {
diff --git a/packages/util/src/is/toBn.ts b/packages/util/src/is/toBn.ts
index 166988c0d..8a0156b04 100644
--- a/packages/util/src/is/toBn.ts
+++ b/packages/util/src/is/toBn.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBn } from '../types';
+import type { ToBn } from '../types.js';
-import { isOn } from './helpers';
+import { isOn } from './helpers.js';
export const isToBn = /*#__PURE__*/ isOn('toBn');
diff --git a/packages/util/src/is/u8a.spec.ts b/packages/util/src/is/u8a.spec.ts
index 8d3fe9f91..4a50377ad 100644
--- a/packages/util/src/is/u8a.spec.ts
+++ b/packages/util/src/is/u8a.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { isU8a } from '.';
+import { perf } from '../test/index.js';
+import { isU8a } from './index.js';
describe('isU8a', (): void => {
it('returns false on undefined values', (): void => {
diff --git a/packages/util/src/is/undefined.spec.ts b/packages/util/src/is/undefined.spec.ts
index 37ad5048c..80b9b1103 100644
--- a/packages/util/src/is/undefined.spec.ts
+++ b/packages/util/src/is/undefined.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { isUndefined } from '.';
+import { perf } from '../test/index.js';
+import { isUndefined } from './index.js';
describe('isUndefined', (): void => {
it('returns true on undefined values', (): void => {
diff --git a/packages/util/src/is/utf8.spec.ts b/packages/util/src/is/utf8.spec.ts
index 2b1cc7d55..d810b30d9 100644
--- a/packages/util/src/is/utf8.spec.ts
+++ b/packages/util/src/is/utf8.spec.ts
@@ -3,7 +3,7 @@
///
-import { isUtf8 } from '.';
+import { isUtf8 } from './index.js';
describe('isUtf8', (): void => {
it('returns true for an ASCII string', (): void => {
diff --git a/packages/util/src/is/utf8.ts b/packages/util/src/is/utf8.ts
index 318cbdaf9..16539c870 100644
--- a/packages/util/src/is/utf8.ts
+++ b/packages/util/src/is/utf8.ts
@@ -3,10 +3,10 @@
// Adapted from https://github.com/JulienPalard/is_utf8/blob/master/is_utf8.c
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { u8aToU8a } from '../u8a/toU8a';
-import { isString } from './string';
+import { u8aToU8a } from '../u8a/toU8a.js';
+import { isString } from './string.js';
/**
* @name isUtf8
diff --git a/packages/util/src/is/wasm.spec.ts b/packages/util/src/is/wasm.spec.ts
index 581f06457..55543c454 100644
--- a/packages/util/src/is/wasm.spec.ts
+++ b/packages/util/src/is/wasm.spec.ts
@@ -3,7 +3,7 @@
///
-import { isWasm } from '.';
+import { isWasm } from './index.js';
describe('isWasm', (): void => {
it('is false on no value', (): void => {
diff --git a/packages/util/src/is/wasm.ts b/packages/util/src/is/wasm.ts
index 65bde47de..e6a5059ff 100644
--- a/packages/util/src/is/wasm.ts
+++ b/packages/util/src/is/wasm.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { u8aEq } from '../u8a/eq';
-import { isU8a } from './u8a';
+import { u8aEq } from '../u8a/eq.js';
+import { isU8a } from './u8a.js';
const WASM_MAGIC = new Uint8Array([0, 97, 115, 109]); // \0asm
diff --git a/packages/util/src/lazy.spec.ts b/packages/util/src/lazy.spec.ts
index 46115950a..6b520de1a 100644
--- a/packages/util/src/lazy.spec.ts
+++ b/packages/util/src/lazy.spec.ts
@@ -3,7 +3,7 @@
///
-import { lazyMethod, lazyMethods } from '.';
+import { lazyMethod, lazyMethods } from './index.js';
describe('lazyMethod', (): void => {
it('adds a key on the object', (): void => {
diff --git a/packages/util/src/logger.spec.ts b/packages/util/src/logger.spec.ts
index d3e9d7753..427e14773 100644
--- a/packages/util/src/logger.spec.ts
+++ b/packages/util/src/logger.spec.ts
@@ -3,10 +3,10 @@
///
-import type { Logger } from './types';
+import type { Logger } from './types.js';
-import { BN } from './bn';
-import { logger, loggerFormat } from '.';
+import { BN } from './bn/index.js';
+import { logger, loggerFormat } from './index.js';
describe('logger', (): void => {
const dateMatch = expect.stringMatching(/20[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/);
diff --git a/packages/util/src/logger.ts b/packages/util/src/logger.ts
index b2c8934cb..4a6cd7fdf 100644
--- a/packages/util/src/logger.ts
+++ b/packages/util/src/logger.ts
@@ -1,19 +1,19 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Logger, Logger$Data } from './types';
+import type { Logger, Logger$Data } from './types.js';
import { xglobal } from '@polkadot/x-global';
-import { formatDate } from './format/formatDate';
-import { isBn } from './is/bn';
-import { isBuffer } from './is/buffer';
-import { isFunction } from './is/function';
-import { isObject } from './is/object';
-import { isU8a } from './is/u8a';
-import { u8aToHex } from './u8a/toHex';
-import { u8aToU8a } from './u8a/toU8a';
-import { hasProcess } from './has';
+import { formatDate } from './format/formatDate.js';
+import { isBn } from './is/bn.js';
+import { isBuffer } from './is/buffer.js';
+import { isFunction } from './is/function.js';
+import { isObject } from './is/object.js';
+import { isU8a } from './is/u8a.js';
+import { u8aToHex } from './u8a/toHex.js';
+import { u8aToU8a } from './u8a/toU8a.js';
+import { hasProcess } from './has.js';
type ConsoleType = 'error' | 'log' | 'warn';
type LogType = ConsoleType | 'debug';
diff --git a/packages/util/src/memoize.spec.ts b/packages/util/src/memoize.spec.ts
index db4bfd8a3..46ecd0e58 100644
--- a/packages/util/src/memoize.spec.ts
+++ b/packages/util/src/memoize.spec.ts
@@ -3,7 +3,7 @@
///
-import { memoize } from '.';
+import { memoize } from './index.js';
describe('memoize', (): void => {
it('returns actual values', (): void => {
diff --git a/packages/util/src/memoize.ts b/packages/util/src/memoize.ts
index a52256145..fc29ac2d2 100644
--- a/packages/util/src/memoize.ts
+++ b/packages/util/src/memoize.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { Memoized } from './types';
+import type { Memoized } from './types.js';
-import { stringify } from './stringify';
+import { stringify } from './stringify.js';
interface Options {
getInstanceId?: () => string;
diff --git a/packages/util/src/mod.ts b/packages/util/src/mod.ts
index b96d26cfd..87d28d78f 100644
--- a/packages/util/src/mod.ts
+++ b/packages/util/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './index';
+export * from './index.js';
diff --git a/packages/util/src/number/index.ts b/packages/util/src/number/index.ts
index 3ebb7ab2a..7387cd0df 100644
--- a/packages/util/src/number/index.ts
+++ b/packages/util/src/number/index.ts
@@ -5,5 +5,5 @@
* @summary Utility methods to convert to and from `number` values
*/
-export { numberToHex } from './toHex';
-export { numberToU8a } from './toU8a';
+export { numberToHex } from './toHex.js';
+export { numberToU8a } from './toU8a.js';
diff --git a/packages/util/src/number/toHex.spec.ts b/packages/util/src/number/toHex.spec.ts
index 0c0cfc268..1749f6e4b 100644
--- a/packages/util/src/number/toHex.spec.ts
+++ b/packages/util/src/number/toHex.spec.ts
@@ -3,7 +3,7 @@
///
-import { numberToHex } from '.';
+import { numberToHex } from './index.js';
describe('numberToHex', (): void => {
it('converts undefined to 0x00', (): void => {
diff --git a/packages/util/src/number/toHex.ts b/packages/util/src/number/toHex.ts
index 8de97a2ef..df79317d2 100644
--- a/packages/util/src/number/toHex.ts
+++ b/packages/util/src/number/toHex.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { hexFixLength } from '../hex/fixLength';
+import { hexFixLength } from '../hex/fixLength.js';
/**
* @name numberToHex
diff --git a/packages/util/src/number/toU8a.spec.ts b/packages/util/src/number/toU8a.spec.ts
index 44d26dae5..a20e3ec45 100644
--- a/packages/util/src/number/toU8a.spec.ts
+++ b/packages/util/src/number/toU8a.spec.ts
@@ -3,7 +3,7 @@
///
-import { numberToU8a } from '.';
+import { numberToU8a } from './index.js';
describe('numberToU8a', (): void => {
it('converts undefined to empty', (): void => {
diff --git a/packages/util/src/number/toU8a.ts b/packages/util/src/number/toU8a.ts
index 8ee6a99e6..dd162e494 100644
--- a/packages/util/src/number/toU8a.ts
+++ b/packages/util/src/number/toU8a.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { hexToU8a } from '../hex/toU8a';
-import { numberToHex } from './toHex';
+import { hexToU8a } from '../hex/toU8a.js';
+import { numberToHex } from './toHex.js';
/**
* @name numberToU8a
diff --git a/packages/util/src/object/clear.spec.ts b/packages/util/src/object/clear.spec.ts
index 3bdd70b82..8ea3b5ff5 100644
--- a/packages/util/src/object/clear.spec.ts
+++ b/packages/util/src/object/clear.spec.ts
@@ -3,7 +3,7 @@
///
-import { objectClear } from '.';
+import { objectClear } from './index.js';
describe('objectClear', (): void => {
it('clears an object', (): void => {
diff --git a/packages/util/src/object/copy.spec.ts b/packages/util/src/object/copy.spec.ts
index b900c122c..30cf067a0 100644
--- a/packages/util/src/object/copy.spec.ts
+++ b/packages/util/src/object/copy.spec.ts
@@ -3,7 +3,7 @@
///
-import { objectCopy } from '.';
+import { objectCopy } from './index.js';
describe('objectCopy', (): void => {
it('makes a shallow copy of the object', (): void => {
diff --git a/packages/util/src/object/copy.ts b/packages/util/src/object/copy.ts
index f094f633b..8649ef84b 100644
--- a/packages/util/src/object/copy.ts
+++ b/packages/util/src/object/copy.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { objectSpread } from './spread';
+import { objectSpread } from './spread.js';
/**
* @name objectCopy
diff --git a/packages/util/src/object/entries.spec.ts b/packages/util/src/object/entries.spec.ts
index 4259ffe64..36d6e27f6 100644
--- a/packages/util/src/object/entries.spec.ts
+++ b/packages/util/src/object/entries.spec.ts
@@ -3,7 +3,7 @@
///
-import { objectEntries } from '.';
+import { objectEntries } from './index.js';
describe('objectEntries', (): void => {
it('extracts all entries', (): void => {
diff --git a/packages/util/src/object/index.ts b/packages/util/src/object/index.ts
index 6cfbf78bb..28ebb7ad6 100644
--- a/packages/util/src/object/index.ts
+++ b/packages/util/src/object/index.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { objectClear } from './clear';
-export { objectCopy } from './copy';
-export { objectEntries } from './entries';
-export { objectKeys } from './keys';
-export { objectProperty, objectProperties } from './property';
-export { objectSpread } from './spread';
-export { objectValues } from './values';
+export { objectClear } from './clear.js';
+export { objectCopy } from './copy.js';
+export { objectEntries } from './entries.js';
+export { objectKeys } from './keys.js';
+export { objectProperty, objectProperties } from './property.js';
+export { objectSpread } from './spread.js';
+export { objectValues } from './values.js';
diff --git a/packages/util/src/object/keys.spec.ts b/packages/util/src/object/keys.spec.ts
index 586dd7b20..44b3f6aa0 100644
--- a/packages/util/src/object/keys.spec.ts
+++ b/packages/util/src/object/keys.spec.ts
@@ -3,7 +3,7 @@
///
-import { objectKeys } from '.';
+import { objectKeys } from './index.js';
describe('objectKeys', (): void => {
it('extracts all keys', (): void => {
diff --git a/packages/util/src/object/property.spec.ts b/packages/util/src/object/property.spec.ts
index efb9b58db..bcfcf20ca 100644
--- a/packages/util/src/object/property.spec.ts
+++ b/packages/util/src/object/property.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { objectProperties, objectProperty } from '.';
+import { perf } from '../test/index.js';
+import { objectProperties, objectProperty } from './index.js';
describe('objectProperty/objectProperties', (): void => {
it('sets a property', (): void => {
diff --git a/packages/util/src/object/spread.spec.ts b/packages/util/src/object/spread.spec.ts
index ba82c8e17..8e98c54a9 100644
--- a/packages/util/src/object/spread.spec.ts
+++ b/packages/util/src/object/spread.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { objectSpread } from '.';
+import { perf } from '../test/index.js';
+import { objectSpread } from './index.js';
describe('objectSpread', (): void => {
it('spreads obj sources', (): void => {
diff --git a/packages/util/src/object/values.spec.ts b/packages/util/src/object/values.spec.ts
index a6ed6785b..dcc957531 100644
--- a/packages/util/src/object/values.spec.ts
+++ b/packages/util/src/object/values.spec.ts
@@ -3,7 +3,7 @@
///
-import { objectValues } from '.';
+import { objectValues } from './index.js';
describe('objectValues', (): void => {
it('extracts all values', (): void => {
diff --git a/packages/util/src/promisify.spec.ts b/packages/util/src/promisify.spec.ts
index d91c2bdf7..dd7e569ca 100644
--- a/packages/util/src/promisify.spec.ts
+++ b/packages/util/src/promisify.spec.ts
@@ -3,7 +3,7 @@
///
-import { promisify } from '.';
+import { promisify } from './index.js';
describe('promisify', (): void => {
it('handles functions with no parameters (resolve)', (): Promise => {
diff --git a/packages/util/src/string/camelCase.spec.ts b/packages/util/src/string/camelCase.spec.ts
index 1c0761b1e..4fd4c34cd 100644
--- a/packages/util/src/string/camelCase.spec.ts
+++ b/packages/util/src/string/camelCase.spec.ts
@@ -5,9 +5,9 @@
import { getRandomValues } from '@polkadot/x-randomvalues';
-import { arrayRange } from '../array';
-import { perf } from '../test';
-import { stringCamelCase, stringUpperFirst } from '.';
+import { arrayRange } from '../array/index.js';
+import { perf } from '../test/index.js';
+import { stringCamelCase, stringUpperFirst } from './index.js';
const SEPS = [' ', '_', '-', '.', ','];
const words = 'bring|brisk|broccoli|broken|bronze|broom|brother|brown|brush|bubble|buddy|budget|buffalo|build|bulb|bulk|bullet|bundle|bunker|burden'.split('|');
diff --git a/packages/util/src/string/camelCase.ts b/packages/util/src/string/camelCase.ts
index 36ed7b088..3c76dfe45 100644
--- a/packages/util/src/string/camelCase.ts
+++ b/packages/util/src/string/camelCase.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString } from '../types';
+import type { AnyString } from '../types.js';
export const CC_TO_UP = new Array(256);
export const CC_TO_LO = new Array(256);
diff --git a/packages/util/src/string/index.ts b/packages/util/src/string/index.ts
index f44c869ea..d6a5af3e3 100644
--- a/packages/util/src/string/index.ts
+++ b/packages/util/src/string/index.ts
@@ -5,8 +5,8 @@
* @summary Utility methods to convert to work with `string` values
*/
-export { stringCamelCase, stringPascalCase } from './camelCase';
-export { stringLowerFirst, stringUpperFirst } from './lowerFirst';
-export { stringShorten } from './shorten';
-export { stringToHex } from './toHex';
-export { stringToU8a } from './toU8a';
+export { stringCamelCase, stringPascalCase } from './camelCase.js';
+export { stringLowerFirst, stringUpperFirst } from './lowerFirst.js';
+export { stringShorten } from './shorten.js';
+export { stringToHex } from './toHex.js';
+export { stringToU8a } from './toU8a.js';
diff --git a/packages/util/src/string/lowerFirst.spec.ts b/packages/util/src/string/lowerFirst.spec.ts
index daf27a0b8..3a97eb754 100644
--- a/packages/util/src/string/lowerFirst.spec.ts
+++ b/packages/util/src/string/lowerFirst.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { stringLowerFirst } from '.';
+import { perf } from '../test/index.js';
+import { stringLowerFirst } from './index.js';
describe('stringLowerFirst', (): void => {
it("lowers the first letter if it's a capital letter", (): void => {
diff --git a/packages/util/src/string/lowerFirst.ts b/packages/util/src/string/lowerFirst.ts
index d9a61a680..5db31b74d 100644
--- a/packages/util/src/string/lowerFirst.ts
+++ b/packages/util/src/string/lowerFirst.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString } from '../types';
+import type { AnyString } from '../types.js';
-import { CC_TO_LO, CC_TO_UP } from './camelCase';
+import { CC_TO_LO, CC_TO_UP } from './camelCase.js';
/** @internal */
function converter (map: readonly string[]): (value?: AnyString | null) => string {
diff --git a/packages/util/src/string/pascalCase.spec.ts b/packages/util/src/string/pascalCase.spec.ts
index eaf09f98d..c51ba3c8a 100644
--- a/packages/util/src/string/pascalCase.spec.ts
+++ b/packages/util/src/string/pascalCase.spec.ts
@@ -3,7 +3,7 @@
///
-import { stringPascalCase } from '.';
+import { stringPascalCase } from './index.js';
describe('stringPascalCase', (): void => {
it('works correctly', (): void => {
diff --git a/packages/util/src/string/shorten.spec.ts b/packages/util/src/string/shorten.spec.ts
index ef57e09cf..93c8ea323 100644
--- a/packages/util/src/string/shorten.spec.ts
+++ b/packages/util/src/string/shorten.spec.ts
@@ -3,7 +3,7 @@
///
-import { stringShorten } from '.';
+import { stringShorten } from './index.js';
describe('stringShorten', (): void => {
it('returns the value as-is when <= maxLength', (): void => {
diff --git a/packages/util/src/string/shorten.ts b/packages/util/src/string/shorten.ts
index 46c80317f..9fa434218 100644
--- a/packages/util/src/string/shorten.ts
+++ b/packages/util/src/string/shorten.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString } from '../types';
+import type { AnyString } from '../types.js';
/**
* @name stringShorten
diff --git a/packages/util/src/string/toHex.spec.ts b/packages/util/src/string/toHex.spec.ts
index d70d3a110..522b209ec 100644
--- a/packages/util/src/string/toHex.spec.ts
+++ b/packages/util/src/string/toHex.spec.ts
@@ -3,7 +3,7 @@
///
-import { stringToHex } from '.';
+import { stringToHex } from './index.js';
describe('hexToString', (): void => {
it('converts an empty to ""', (): void => {
diff --git a/packages/util/src/string/toHex.ts b/packages/util/src/string/toHex.ts
index 2cb957141..a6fc92299 100644
--- a/packages/util/src/string/toHex.ts
+++ b/packages/util/src/string/toHex.ts
@@ -1,10 +1,10 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString, HexString } from '../types';
+import type { AnyString, HexString } from '../types.js';
-import { u8aToHex } from '../u8a/toHex';
-import { stringToU8a } from './toU8a';
+import { u8aToHex } from '../u8a/toHex.js';
+import { stringToU8a } from './toU8a.js';
/**
* @name stringToHex
diff --git a/packages/util/src/string/toU8a.spec.ts b/packages/util/src/string/toU8a.spec.ts
index ca8535887..3be1cadaf 100644
--- a/packages/util/src/string/toU8a.spec.ts
+++ b/packages/util/src/string/toU8a.spec.ts
@@ -3,7 +3,7 @@
///
-import { stringToU8a } from '..';
+import { stringToU8a } from '../index.js';
const RUSS_HELLO = new Uint8Array([208, 159, 209, 128, 208, 184, 208, 178, 208, 181, 209, 130, 44, 32, 208, 188, 208, 184, 209, 128, 33]);
diff --git a/packages/util/src/string/toU8a.ts b/packages/util/src/string/toU8a.ts
index 1cec5c346..1959bc8a4 100644
--- a/packages/util/src/string/toU8a.ts
+++ b/packages/util/src/string/toU8a.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { AnyString } from '../types';
+import type { AnyString } from '../types.js';
import { TextEncoder } from '@polkadot/x-textencoder';
diff --git a/packages/util/src/string/upperFirst.spec.ts b/packages/util/src/string/upperFirst.spec.ts
index 124bc5884..62b142b69 100644
--- a/packages/util/src/string/upperFirst.spec.ts
+++ b/packages/util/src/string/upperFirst.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { stringUpperFirst } from '.';
+import { perf } from '../test/index.js';
+import { stringUpperFirst } from './index.js';
describe('stringUpperFirst', (): void => {
it("uppers the first letter if it's a capital letter", (): void => {
diff --git a/packages/util/src/stringify.spec.ts b/packages/util/src/stringify.spec.ts
index 8681851e7..1f7c409ce 100644
--- a/packages/util/src/stringify.spec.ts
+++ b/packages/util/src/stringify.spec.ts
@@ -3,8 +3,8 @@
///
-import { BN } from './bn';
-import { stringify } from './stringify';
+import { BN } from './bn/index.js';
+import { stringify } from './stringify.js';
describe('stringify', (): void => {
it('stringifies a BigInt', (): void => {
diff --git a/packages/util/src/stringify.ts b/packages/util/src/stringify.ts
index f1c1c09c0..b1491ec54 100644
--- a/packages/util/src/stringify.ts
+++ b/packages/util/src/stringify.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { isBigInt } from './is/bigInt';
+import { isBigInt } from './is/bigInt.js';
/** @internal */
function replacer (_: unknown, v: unknown): unknown {
diff --git a/packages/util/src/test/index.ts b/packages/util/src/test/index.ts
index 0ad5e889c..145432412 100644
--- a/packages/util/src/test/index.ts
+++ b/packages/util/src/test/index.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { perf, perfCmp } from './performance';
+export { perf, perfCmp } from './performance.js';
diff --git a/packages/util/src/test/performance.ts b/packages/util/src/test/performance.ts
index 8748981fc..7d3450fc8 100644
--- a/packages/util/src/test/performance.ts
+++ b/packages/util/src/test/performance.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { formatDecimal, formatNumber } from '..';
+import { formatDecimal, formatNumber } from '../index.js';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
type ExecFn = (...params: any[]) => unknown;
diff --git a/packages/util/src/types.ts b/packages/util/src/types.ts
index 604656851..2b6f4bb00 100644
--- a/packages/util/src/types.ts
+++ b/packages/util/src/types.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { BN } from './bn/bn';
+import type { BN } from './bn/bn.js';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export interface Constructor {
diff --git a/packages/util/src/u8a/cmp.spec.ts b/packages/util/src/u8a/cmp.spec.ts
index af5dd2841..1102cd3d7 100644
--- a/packages/util/src/u8a/cmp.spec.ts
+++ b/packages/util/src/u8a/cmp.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aCmp } from '.';
+import { perf } from '../test/index.js';
+import { u8aCmp } from './index.js';
const ltest = new Uint8Array(32768);
const stest = new Uint8Array(256);
diff --git a/packages/util/src/u8a/cmp.ts b/packages/util/src/u8a/cmp.ts
index b9e009236..573162d11 100644
--- a/packages/util/src/u8a/cmp.ts
+++ b/packages/util/src/u8a/cmp.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { u8aToU8a } from './toU8a';
+import { u8aToU8a } from './toU8a.js';
/**
* @name u8aCmp
diff --git a/packages/util/src/u8a/concat.spec.ts b/packages/util/src/u8a/concat.spec.ts
index dbaa44135..78ef5eb10 100644
--- a/packages/util/src/u8a/concat.spec.ts
+++ b/packages/util/src/u8a/concat.spec.ts
@@ -5,9 +5,9 @@
import { getRandomValues } from '@polkadot/x-randomvalues';
-import { arrayRange } from '../array';
-import { perf } from '../test';
-import { u8aConcat, u8aConcatStrict } from '.';
+import { arrayRange } from '../array/index.js';
+import { perf } from '../test/index.js';
+import { u8aConcat, u8aConcatStrict } from './index.js';
const ptest = arrayRange(10).map(() => getRandomValues(new Uint8Array(32)));
diff --git a/packages/util/src/u8a/concat.ts b/packages/util/src/u8a/concat.ts
index 45a83ddf2..0e1d69022 100644
--- a/packages/util/src/u8a/concat.ts
+++ b/packages/util/src/u8a/concat.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { U8aLike } from '../types';
+import type { U8aLike } from '../types.js';
-import { u8aToU8a } from './toU8a';
+import { u8aToU8a } from './toU8a.js';
/**
* @name u8aConcat
diff --git a/packages/util/src/u8a/concatBuffer.ts b/packages/util/src/u8a/concatBuffer.ts
index faabc368c..474a264c7 100644
--- a/packages/util/src/u8a/concatBuffer.ts
+++ b/packages/util/src/u8a/concatBuffer.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { U8aLike } from '../types';
+import type { U8aLike } from '../types.js';
-import { u8aToU8a } from './toU8a';
+import { u8aToU8a } from './toU8a.js';
/**
* @name u8aConcat
diff --git a/packages/util/src/u8a/empty.spec.ts b/packages/util/src/u8a/empty.spec.ts
index 3fec47052..35330d4ea 100644
--- a/packages/util/src/u8a/empty.spec.ts
+++ b/packages/util/src/u8a/empty.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aEmpty } from '.';
+import { perf } from '../test/index.js';
+import { u8aEmpty } from './index.js';
describe('u8aEmpty', (): void => {
it('returns true on zero length', (): void => {
diff --git a/packages/util/src/u8a/eq.spec.ts b/packages/util/src/u8a/eq.spec.ts
index 8dd6b3ffe..2a35418fd 100644
--- a/packages/util/src/u8a/eq.spec.ts
+++ b/packages/util/src/u8a/eq.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aEq } from '.';
+import { perf } from '../test/index.js';
+import { u8aEq } from './index.js';
const ltest = new Uint8Array(32768);
const stest = new Uint8Array(256);
diff --git a/packages/util/src/u8a/eq.ts b/packages/util/src/u8a/eq.ts
index 6e996abd9..6329fdc5a 100644
--- a/packages/util/src/u8a/eq.ts
+++ b/packages/util/src/u8a/eq.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
-import { u8aToU8a } from './toU8a';
+import { u8aToU8a } from './toU8a.js';
/**
* @name u8aEq
diff --git a/packages/util/src/u8a/fixLength.spec.ts b/packages/util/src/u8a/fixLength.spec.ts
index 211d655a0..548ef5140 100644
--- a/packages/util/src/u8a/fixLength.spec.ts
+++ b/packages/util/src/u8a/fixLength.spec.ts
@@ -3,7 +3,7 @@
///
-import { u8aFixLength } from '.';
+import { u8aFixLength } from './index.js';
describe('u8aFixLength', (): void => {
it('returns bitLength === -1 as-is', (): void => {
diff --git a/packages/util/src/u8a/index.ts b/packages/util/src/u8a/index.ts
index fe082d9b1..28b6ef863 100644
--- a/packages/util/src/u8a/index.ts
+++ b/packages/util/src/u8a/index.ts
@@ -5,18 +5,18 @@
* @summary Utility methods to convert to and from `Uint8Array` objects
*/
-export { u8aCmp } from './cmp';
-export { u8aConcat, u8aConcatStrict } from './concat';
-export { u8aEmpty } from './empty';
-export { u8aEq } from './eq';
-export { u8aFixLength } from './fixLength';
-export { u8aToFloat } from './toFloat';
-export { u8aSorted } from './sorted';
-export { u8aToBigInt } from './toBigInt';
-export { u8aToBn } from './toBn';
-export { u8aToBuffer } from './toBuffer';
-export { u8aToHex } from './toHex';
-export { u8aToNumber } from './toNumber';
-export { u8aToString } from './toString';
-export { u8aToU8a } from './toU8a';
-export { U8A_WRAP_ETHEREUM, U8A_WRAP_POSTFIX, U8A_WRAP_PREFIX, u8aIsWrapped, u8aWrapBytes, u8aUnwrapBytes } from './wrap';
+export { u8aCmp } from './cmp.js';
+export { u8aConcat, u8aConcatStrict } from './concat.js';
+export { u8aEmpty } from './empty.js';
+export { u8aEq } from './eq.js';
+export { u8aFixLength } from './fixLength.js';
+export { u8aToFloat } from './toFloat.js';
+export { u8aSorted } from './sorted.js';
+export { u8aToBigInt } from './toBigInt.js';
+export { u8aToBn } from './toBn.js';
+export { u8aToBuffer } from './toBuffer.js';
+export { u8aToHex } from './toHex.js';
+export { u8aToNumber } from './toNumber.js';
+export { u8aToString } from './toString.js';
+export { u8aToU8a } from './toU8a.js';
+export { U8A_WRAP_ETHEREUM, U8A_WRAP_POSTFIX, U8A_WRAP_PREFIX, u8aIsWrapped, u8aWrapBytes, u8aUnwrapBytes } from './wrap.js';
diff --git a/packages/util/src/u8a/sorted.spec.ts b/packages/util/src/u8a/sorted.spec.ts
index 4902bb072..647aaed78 100644
--- a/packages/util/src/u8a/sorted.spec.ts
+++ b/packages/util/src/u8a/sorted.spec.ts
@@ -3,7 +3,7 @@
///
-import { u8aSorted } from '.';
+import { u8aSorted } from './index.js';
describe('u8aSorted', (): void => {
it('sorts a simple set of u8a', (): void => {
diff --git a/packages/util/src/u8a/sorted.ts b/packages/util/src/u8a/sorted.ts
index 115a5641c..c427c4c7b 100644
--- a/packages/util/src/u8a/sorted.ts
+++ b/packages/util/src/u8a/sorted.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { u8aCmp } from './cmp';
+import { u8aCmp } from './cmp.js';
/**
* @name u8aSorted
diff --git a/packages/util/src/u8a/toBigInt.spec.ts b/packages/util/src/u8a/toBigInt.spec.ts
index ad1f372c7..ba28b84ac 100644
--- a/packages/util/src/u8a/toBigInt.spec.ts
+++ b/packages/util/src/u8a/toBigInt.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aToBigInt } from '.';
+import { perf } from '../test/index.js';
+import { u8aToBigInt } from './index.js';
describe('u8aToBigInt', (): void => {
it('converts little-endian by default', (): void => {
diff --git a/packages/util/src/u8a/toBigInt.ts b/packages/util/src/u8a/toBigInt.ts
index 82d610ae7..79abee417 100644
--- a/packages/util/src/u8a/toBigInt.ts
+++ b/packages/util/src/u8a/toBigInt.ts
@@ -1,11 +1,11 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBnOptions } from '../types';
+import type { ToBnOptions } from '../types.js';
import { BigInt } from '@polkadot/x-bigint';
-import { _1n } from '../bi/consts';
+import { _1n } from '../bi/consts.js';
const U8_MAX = BigInt(256);
const U16_MAX = BigInt(256 * 256);
diff --git a/packages/util/src/u8a/toBn.spec.ts b/packages/util/src/u8a/toBn.spec.ts
index c47fa894a..5d7e6864a 100644
--- a/packages/util/src/u8a/toBn.spec.ts
+++ b/packages/util/src/u8a/toBn.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aToBn } from '.';
+import { perf } from '../test/index.js';
+import { u8aToBn } from './index.js';
describe('u8aToBn', (): void => {
it('converts little-endian by default', (): void => {
diff --git a/packages/util/src/u8a/toBn.ts b/packages/util/src/u8a/toBn.ts
index 59156b04a..84e8d5e81 100644
--- a/packages/util/src/u8a/toBn.ts
+++ b/packages/util/src/u8a/toBn.ts
@@ -1,9 +1,9 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { ToBnOptions } from '../types';
+import type { ToBnOptions } from '../types.js';
-import { BN } from '../bn/bn';
+import { BN } from '../bn/bn.js';
/**
* @name u8aToBn
diff --git a/packages/util/src/u8a/toBuffer.spec.ts b/packages/util/src/u8a/toBuffer.spec.ts
index 6412da4b4..ad3dc45d9 100644
--- a/packages/util/src/u8a/toBuffer.spec.ts
+++ b/packages/util/src/u8a/toBuffer.spec.ts
@@ -3,7 +3,7 @@
///
-import { u8aToBuffer } from '.';
+import { u8aToBuffer } from './index.js';
describe('u8aToBuffer', (): void => {
it('returns [] when the buffer is null', (): void => {
diff --git a/packages/util/src/u8a/toFloat.spec.ts b/packages/util/src/u8a/toFloat.spec.ts
index 6f3a01ffc..30fc847ad 100644
--- a/packages/util/src/u8a/toFloat.spec.ts
+++ b/packages/util/src/u8a/toFloat.spec.ts
@@ -3,8 +3,8 @@
///
-import { hexToU8a } from '../hex';
-import { u8aToFloat } from '.';
+import { hexToU8a } from '../hex/index.js';
+import { u8aToFloat } from './index.js';
describe('u8aToFloat', (): void => {
it('throws on invalid bitLength', (): void => {
diff --git a/packages/util/src/u8a/toHex.spec.ts b/packages/util/src/u8a/toHex.spec.ts
index 16fd8b6ce..2230af35a 100644
--- a/packages/util/src/u8a/toHex.spec.ts
+++ b/packages/util/src/u8a/toHex.spec.ts
@@ -3,9 +3,9 @@
///
-import { perfCmp } from '../test';
-import { u8aToHex as u8aToHexBuffer } from './toHexBuffer';
-import { u8aToHex } from '.';
+import { perfCmp } from '../test/index.js';
+import { u8aToHex } from './index.js';
+import { u8aToHex as u8aToHexBuffer } from './toHexBuffer.js';
const ptest32k = new Uint8Array(32768);
const ptest256 = new Uint8Array(256);
diff --git a/packages/util/src/u8a/toHex.ts b/packages/util/src/u8a/toHex.ts
index a1ad555e0..02e12bb8d 100644
--- a/packages/util/src/u8a/toHex.ts
+++ b/packages/util/src/u8a/toHex.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
const U8 = new Array(256);
const U16 = new Array(256 * 256);
diff --git a/packages/util/src/u8a/toHexBuffer.spec.ts b/packages/util/src/u8a/toHexBuffer.spec.ts
index 40a78c927..9c6c5f032 100644
--- a/packages/util/src/u8a/toHexBuffer.spec.ts
+++ b/packages/util/src/u8a/toHexBuffer.spec.ts
@@ -3,7 +3,7 @@
///
-import { u8aToHex } from './toHexBuffer';
+import { u8aToHex } from './toHexBuffer.js';
describe('u8aToHex', (): void => {
it('returns empty as 0x', (): void => {
diff --git a/packages/util/src/u8a/toHexBuffer.ts b/packages/util/src/u8a/toHexBuffer.ts
index e0788f64d..47303e4b0 100644
--- a/packages/util/src/u8a/toHexBuffer.ts
+++ b/packages/util/src/u8a/toHexBuffer.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { HexString } from '../types';
+import type { HexString } from '../types.js';
/**
* @name u8aToHex
diff --git a/packages/util/src/u8a/toNumber.spec.ts b/packages/util/src/u8a/toNumber.spec.ts
index 1afd5b7cb..7cb9cdb6d 100644
--- a/packages/util/src/u8a/toNumber.spec.ts
+++ b/packages/util/src/u8a/toNumber.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aToNumber } from '.';
+import { perf } from '../test/index.js';
+import { u8aToNumber } from './index.js';
describe('u8aToNumber', (): void => {
describe('unsigned', (): void => {
diff --git a/packages/util/src/u8a/toString.spec.ts b/packages/util/src/u8a/toString.spec.ts
index 54a02e307..2443994a1 100644
--- a/packages/util/src/u8a/toString.spec.ts
+++ b/packages/util/src/u8a/toString.spec.ts
@@ -3,7 +3,7 @@
///
-import { u8aToString } from '.';
+import { u8aToString } from './index.js';
describe('u8aToString', (): void => {
it('decodes to an empty string for undefined', (): void => {
diff --git a/packages/util/src/u8a/toU8a.spec.ts b/packages/util/src/u8a/toU8a.spec.ts
index 99ec740ce..ecf501842 100644
--- a/packages/util/src/u8a/toU8a.spec.ts
+++ b/packages/util/src/u8a/toU8a.spec.ts
@@ -3,8 +3,8 @@
///
-import { perf } from '../test';
-import { u8aToU8a } from '.';
+import { perf } from '../test/index.js';
+import { u8aToU8a } from './index.js';
describe('u8aToU8a', (): void => {
it('returns an empty Uint8Array when null/undefined/"" provided', (): void => {
diff --git a/packages/util/src/u8a/toU8a.ts b/packages/util/src/u8a/toU8a.ts
index 02d22a09d..f201aca39 100644
--- a/packages/util/src/u8a/toU8a.ts
+++ b/packages/util/src/u8a/toU8a.ts
@@ -1,13 +1,13 @@
// Copyright 2017-2023 @polkadot/util authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import type { U8aLike } from '../types';
+import type { U8aLike } from '../types.js';
-import { hexToU8a } from '../hex/toU8a';
-import { isBuffer } from '../is/buffer';
-import { isHex } from '../is/hex';
-import { isU8a } from '../is/u8a';
-import { stringToU8a } from '../string/toU8a';
+import { hexToU8a } from '../hex/toU8a.js';
+import { isBuffer } from '../is/buffer.js';
+import { isHex } from '../is/hex.js';
+import { isU8a } from '../is/u8a.js';
+import { stringToU8a } from '../string/toU8a.js';
/**
* @name u8aToU8a
diff --git a/packages/util/src/u8a/wrap.spec.ts b/packages/util/src/u8a/wrap.spec.ts
index 27db40e9b..3aef79c43 100644
--- a/packages/util/src/u8a/wrap.spec.ts
+++ b/packages/util/src/u8a/wrap.spec.ts
@@ -7,7 +7,7 @@
import { u8aConcat, u8aEq, u8aToString } from '@polkadot/util';
-import { U8A_WRAP_ETHEREUM, U8A_WRAP_POSTFIX, U8A_WRAP_PREFIX, u8aUnwrapBytes, u8aWrapBytes } from './wrap';
+import { U8A_WRAP_ETHEREUM, U8A_WRAP_POSTFIX, U8A_WRAP_PREFIX, u8aUnwrapBytes, u8aWrapBytes } from './wrap.js';
const TEST_DATA = 'this is just some random message that we expect to be wrapped along the way';
const TEST_ETH = u8aConcat(U8A_WRAP_ETHEREUM, TEST_DATA);
diff --git a/packages/util/src/u8a/wrap.ts b/packages/util/src/u8a/wrap.ts
index 4cbc8b795..a65bd00b4 100644
--- a/packages/util/src/u8a/wrap.ts
+++ b/packages/util/src/u8a/wrap.ts
@@ -3,11 +3,11 @@
// Originally from https://github.com/polkadot-js/extension/pull/743
-import type { U8aLike } from '../types';
+import type { U8aLike } from '../types.js';
-import { u8aConcatStrict } from './concat';
-import { u8aEq } from './eq';
-import { u8aToU8a } from './toU8a';
+import { u8aConcatStrict } from './concat.js';
+import { u8aEq } from './eq.js';
+import { u8aToU8a } from './toU8a.js';
/** @internal */
export const U8A_WRAP_ETHEREUM = u8aToU8a('\x19Ethereum Signed Message:\n');
diff --git a/packages/util/src/versionDetect.spec.ts b/packages/util/src/versionDetect.spec.ts
index bf5918bc0..bf5ee18e3 100644
--- a/packages/util/src/versionDetect.spec.ts
+++ b/packages/util/src/versionDetect.spec.ts
@@ -3,7 +3,7 @@
///
-import { detectPackage } from './versionDetect';
+import { detectPackage } from './versionDetect.js';
describe('detectPackage', (): void => {
const PKG = '@polkadot/util';
diff --git a/packages/util/src/versionDetect.ts b/packages/util/src/versionDetect.ts
index ede4d9601..2871b489e 100644
--- a/packages/util/src/versionDetect.ts
+++ b/packages/util/src/versionDetect.ts
@@ -3,7 +3,7 @@
import { xglobal } from '@polkadot/x-global';
-import { isFunction } from './is/function';
+import { isFunction } from './is/function.js';
type This = typeof globalThis;
diff --git a/packages/x-bigint/src/index.ts b/packages/x-bigint/src/index.ts
index c54717d41..651f3f664 100644
--- a/packages/x-bigint/src/index.ts
+++ b/packages/x-bigint/src/index.ts
@@ -3,7 +3,7 @@
import { xglobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const BigInt: BigIntConstructor = typeof xglobal.BigInt === 'function' && typeof xglobal.BigInt.asIntN === 'function'
? xglobal.BigInt
diff --git a/packages/x-bigint/src/mod.ts b/packages/x-bigint/src/mod.ts
index e3e0da4dd..b80db642f 100644
--- a/packages/x-bigint/src/mod.ts
+++ b/packages/x-bigint/src/mod.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-bigint authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
const _BigInt = BigInt;
diff --git a/packages/x-bundle/src/index.ts b/packages/x-bundle/src/index.ts
index f29c03b31..88ecb37da 100644
--- a/packages/x-bundle/src/index.ts
+++ b/packages/x-bundle/src/index.ts
@@ -1,6 +1,6 @@
// Copyright 2017-2023 @polkadot/x-bundle authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
console.error('@polkadot/x-bundle is not meant to be used directly');
diff --git a/packages/x-fetch/src/browser.ts b/packages/x-fetch/src/browser.ts
index 35f4eb955..1478eb0da 100644
--- a/packages/x-fetch/src/browser.ts
+++ b/packages/x-fetch/src/browser.ts
@@ -3,6 +3,6 @@
import { xglobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const fetch = xglobal.fetch;
diff --git a/packages/x-fetch/src/mod.ts b/packages/x-fetch/src/mod.ts
index d22775b44..2b9f4d64e 100644
--- a/packages/x-fetch/src/mod.ts
+++ b/packages/x-fetch/src/mod.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-fetch authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
const _fetch = fetch;
diff --git a/packages/x-fetch/src/node.ts b/packages/x-fetch/src/node.ts
index dcf911ca8..36443b6d7 100644
--- a/packages/x-fetch/src/node.ts
+++ b/packages/x-fetch/src/node.ts
@@ -3,7 +3,7 @@
import { extractGlobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
// This is an ESM module, use the async import(...) syntax to pull it
// in. Logically we would like it in nodeFetch(...) itself, however
diff --git a/packages/x-fetch/src/react-native.ts b/packages/x-fetch/src/react-native.ts
index c9d983e92..4700c6f9b 100644
--- a/packages/x-fetch/src/react-native.ts
+++ b/packages/x-fetch/src/react-native.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/x-fetch authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { fetch, packageInfo } from './browser';
+export { fetch, packageInfo } from './browser.js';
diff --git a/packages/x-global/src/index.ts b/packages/x-global/src/index.ts
index b94a90fa6..01e508959 100644
--- a/packages/x-global/src/index.ts
+++ b/packages/x-global/src/index.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-global authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
// Ensure that we are able to run this without any @types/node definitions
// and without having lib: ['dom'] in our TypeScript configuration
diff --git a/packages/x-global/src/mod.ts b/packages/x-global/src/mod.ts
index 91f501c0d..2dfb26876 100644
--- a/packages/x-global/src/mod.ts
+++ b/packages/x-global/src/mod.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/x-global authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export * from './index';
+export * from './index.js';
diff --git a/packages/x-randomvalues/src/base64.spec.ts b/packages/x-randomvalues/src/base64.spec.ts
index 08fe3b011..f395393b0 100644
--- a/packages/x-randomvalues/src/base64.spec.ts
+++ b/packages/x-randomvalues/src/base64.spec.ts
@@ -5,7 +5,7 @@
import { perf } from '@polkadot/util/test';
-import { base64Decode } from './base64';
+import { base64Decode } from './base64.js';
const HELLO_DUAL = 'aGVsbG8gd29ybGQg0J/RgNC40LLQtdGC0YHRgtCy0YPRjiDQvNC4IOS9oOWlvQ==';
diff --git a/packages/x-randomvalues/src/browser.ts b/packages/x-randomvalues/src/browser.ts
index b5ae4cf04..c4b1b8fe5 100644
--- a/packages/x-randomvalues/src/browser.ts
+++ b/packages/x-randomvalues/src/browser.ts
@@ -3,7 +3,7 @@
import { xglobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export function getRandomValues (arr: T): T {
// We use x-global here - this prevents packagers such as rollup
diff --git a/packages/x-randomvalues/src/fallback.spec.ts b/packages/x-randomvalues/src/fallback.spec.ts
index fbffa9849..938e67ab4 100644
--- a/packages/x-randomvalues/src/fallback.spec.ts
+++ b/packages/x-randomvalues/src/fallback.spec.ts
@@ -3,7 +3,7 @@
///
-import { insecureRandomValues } from './fallback';
+import { insecureRandomValues } from './fallback.js';
describe('fallback (insecure)', (): void => {
it('subsequent results does not match', (): void => {
diff --git a/packages/x-randomvalues/src/mod.ts b/packages/x-randomvalues/src/mod.ts
index 575f38221..552f9909c 100644
--- a/packages/x-randomvalues/src/mod.ts
+++ b/packages/x-randomvalues/src/mod.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-randomvalues authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export function getRandomValues (arr: T): T {
return crypto.getRandomValues(arr);
diff --git a/packages/x-randomvalues/src/node.ts b/packages/x-randomvalues/src/node.ts
index 71316da89..fbb4f4115 100644
--- a/packages/x-randomvalues/src/node.ts
+++ b/packages/x-randomvalues/src/node.ts
@@ -3,7 +3,7 @@
import crypto from 'crypto';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export function getRandomValues (output: T): T {
const bytes = crypto.randomBytes(output.length);
diff --git a/packages/x-randomvalues/src/react-native.ts b/packages/x-randomvalues/src/react-native.ts
index ed2986fc5..2d7fbe0a2 100644
--- a/packages/x-randomvalues/src/react-native.ts
+++ b/packages/x-randomvalues/src/react-native.ts
@@ -9,11 +9,11 @@ import { NativeModules } from 'react-native';
import { xglobal } from '@polkadot/x-global';
-import { base64Decode } from './base64';
-import { getRandomValues as getRandomValuesGlobal } from './browser';
-import { insecureRandomValues } from './fallback';
+import { base64Decode } from './base64.js';
+import { getRandomValues as getRandomValuesGlobal } from './browser.js';
+import { insecureRandomValues } from './fallback.js';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
interface RNExt {
ExpoRandom: {
diff --git a/packages/x-textdecoder/src/browser.ts b/packages/x-textdecoder/src/browser.ts
index 40589c722..088c13a2c 100644
--- a/packages/x-textdecoder/src/browser.ts
+++ b/packages/x-textdecoder/src/browser.ts
@@ -3,8 +3,8 @@
import { extractGlobal } from '@polkadot/x-global';
-import { TextDecoder as Fallback } from './fallback';
+import { TextDecoder as Fallback } from './fallback.js';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const TextDecoder = /*#__PURE__*/ extractGlobal('TextDecoder', Fallback);
diff --git a/packages/x-textdecoder/src/fallback.spec.ts b/packages/x-textdecoder/src/fallback.spec.ts
index 169563f67..76fdd4979 100644
--- a/packages/x-textdecoder/src/fallback.spec.ts
+++ b/packages/x-textdecoder/src/fallback.spec.ts
@@ -3,7 +3,7 @@
///
-import { TextDecoder } from './fallback';
+import { TextDecoder } from './fallback.js';
describe('TextDecoder (fallback)', (): void => {
it('decodes correctly', (): void => {
diff --git a/packages/x-textdecoder/src/mod.ts b/packages/x-textdecoder/src/mod.ts
index 0078b0593..dc315de54 100644
--- a/packages/x-textdecoder/src/mod.ts
+++ b/packages/x-textdecoder/src/mod.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
const _TextDecoder = TextDecoder;
diff --git a/packages/x-textdecoder/src/node.spec.ts b/packages/x-textdecoder/src/node.spec.ts
index 4909cc0dd..b8c13ddac 100644
--- a/packages/x-textdecoder/src/node.spec.ts
+++ b/packages/x-textdecoder/src/node.spec.ts
@@ -13,7 +13,7 @@ describe('TextDecoder (node)', (): void => {
let TD: typeof TextDecoder;
beforeEach(async (): Promise => {
- const node = await import('./node');
+ const node = await import('./node.js');
TD = node.TextDecoder;
});
diff --git a/packages/x-textdecoder/src/node.ts b/packages/x-textdecoder/src/node.ts
index 2814e312a..5d5bdf566 100644
--- a/packages/x-textdecoder/src/node.ts
+++ b/packages/x-textdecoder/src/node.ts
@@ -5,6 +5,6 @@ import util from 'util';
import { extractGlobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const TextDecoder = /*#__PURE__*/ extractGlobal('TextDecoder', util.TextDecoder);
diff --git a/packages/x-textdecoder/src/react-native.ts b/packages/x-textdecoder/src/react-native.ts
index d4900d5d1..ddcd6fa11 100644
--- a/packages/x-textdecoder/src/react-native.ts
+++ b/packages/x-textdecoder/src/react-native.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { TextDecoder, packageInfo } from './browser';
+export { TextDecoder, packageInfo } from './browser.js';
diff --git a/packages/x-textdecoder/src/typeCheck.ts b/packages/x-textdecoder/src/typeCheck.ts
index b470a0702..d04149b13 100644
--- a/packages/x-textdecoder/src/typeCheck.ts
+++ b/packages/x-textdecoder/src/typeCheck.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/x-textdecoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { TextDecoder as BrowserTD } from './browser';
-import { TextDecoder as NodeTD } from './node';
+import { TextDecoder as BrowserTD } from './browser.js';
+import { TextDecoder as NodeTD } from './node.js';
console.log(new BrowserTD('utf-8').decode(new Uint8Array([1, 2, 3])));
console.log(new NodeTD('utf-8').decode(new Uint8Array([1, 2, 3])));
diff --git a/packages/x-textencoder/src/browser.ts b/packages/x-textencoder/src/browser.ts
index 057eea729..e046e0bde 100644
--- a/packages/x-textencoder/src/browser.ts
+++ b/packages/x-textencoder/src/browser.ts
@@ -3,8 +3,8 @@
import { extractGlobal } from '@polkadot/x-global';
-import { TextEncoder as Fallback } from './fallback';
+import { TextEncoder as Fallback } from './fallback.js';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const TextEncoder = /*#__PURE__*/ extractGlobal('TextEncoder', Fallback);
diff --git a/packages/x-textencoder/src/fallback.spec.ts b/packages/x-textencoder/src/fallback.spec.ts
index cfb0efed4..f893dfdb8 100644
--- a/packages/x-textencoder/src/fallback.spec.ts
+++ b/packages/x-textencoder/src/fallback.spec.ts
@@ -3,7 +3,7 @@
///
-import { TextEncoder } from './fallback';
+import { TextEncoder } from './fallback.js';
describe('TextEncoder (fallback)', (): void => {
it('encodes correctly', (): void => {
diff --git a/packages/x-textencoder/src/mod.ts b/packages/x-textencoder/src/mod.ts
index 85b1f7c21..78d586492 100644
--- a/packages/x-textencoder/src/mod.ts
+++ b/packages/x-textencoder/src/mod.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
const _TextEncoder = TextEncoder;
diff --git a/packages/x-textencoder/src/node.spec.ts b/packages/x-textencoder/src/node.spec.ts
index 318d55c17..4bea67b01 100644
--- a/packages/x-textencoder/src/node.spec.ts
+++ b/packages/x-textencoder/src/node.spec.ts
@@ -13,7 +13,7 @@ describe('TextEncoder (node)', (): void => {
let TE: typeof TextEncoder;
beforeEach(async (): Promise => {
- const node = await import('./node');
+ const node = await import('./node.js');
TE = node.TextEncoder;
});
diff --git a/packages/x-textencoder/src/node.ts b/packages/x-textencoder/src/node.ts
index 0302521fe..2fb702101 100644
--- a/packages/x-textencoder/src/node.ts
+++ b/packages/x-textencoder/src/node.ts
@@ -5,7 +5,7 @@ import util from 'util';
import { extractGlobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
class Fallback {
#encoder: util.TextEncoder;
diff --git a/packages/x-textencoder/src/react-native.ts b/packages/x-textencoder/src/react-native.ts
index cd8dabf0b..1c28962ab 100644
--- a/packages/x-textencoder/src/react-native.ts
+++ b/packages/x-textencoder/src/react-native.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { TextEncoder, packageInfo } from './browser';
+export { TextEncoder, packageInfo } from './browser.js';
diff --git a/packages/x-textencoder/src/typeCheck.ts b/packages/x-textencoder/src/typeCheck.ts
index cb1a16793..097556bd6 100644
--- a/packages/x-textencoder/src/typeCheck.ts
+++ b/packages/x-textencoder/src/typeCheck.ts
@@ -1,8 +1,8 @@
// Copyright 2017-2023 @polkadot/x-textencoder authors & contributors
// SPDX-License-Identifier: Apache-2.0
-import { TextEncoder as BrowserTE } from './browser';
-import { TextEncoder as NodeTE } from './node';
+import { TextEncoder as BrowserTE } from './browser.js';
+import { TextEncoder as NodeTE } from './node.js';
console.log(new BrowserTE().encode('abc'));
console.log(new NodeTE().encode('abc'));
diff --git a/packages/x-ws/src/browser.ts b/packages/x-ws/src/browser.ts
index 3828e25a6..e1109fdf8 100644
--- a/packages/x-ws/src/browser.ts
+++ b/packages/x-ws/src/browser.ts
@@ -3,6 +3,6 @@
import { xglobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const WebSocket = xglobal.WebSocket;
diff --git a/packages/x-ws/src/mod.ts b/packages/x-ws/src/mod.ts
index d7dbd8460..e8d0ffd69 100644
--- a/packages/x-ws/src/mod.ts
+++ b/packages/x-ws/src/mod.ts
@@ -1,7 +1,7 @@
// Copyright 2017-2023 @polkadot/x-ws authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
const _WebSocket = WebSocket;
diff --git a/packages/x-ws/src/node.ts b/packages/x-ws/src/node.ts
index 207e157bd..087075f57 100644
--- a/packages/x-ws/src/node.ts
+++ b/packages/x-ws/src/node.ts
@@ -5,6 +5,6 @@ import ws from 'ws';
import { extractGlobal } from '@polkadot/x-global';
-export { packageInfo } from './packageInfo';
+export { packageInfo } from './packageInfo.js';
export const WebSocket = /*#__PURE__*/ extractGlobal('WebSocket', ws);
diff --git a/packages/x-ws/src/react-native.ts b/packages/x-ws/src/react-native.ts
index 93dd9d6c3..ee5914c93 100644
--- a/packages/x-ws/src/react-native.ts
+++ b/packages/x-ws/src/react-native.ts
@@ -1,4 +1,4 @@
// Copyright 2017-2023 @polkadot/x-ws authors & contributors
// SPDX-License-Identifier: Apache-2.0
-export { WebSocket, packageInfo } from './browser';
+export { WebSocket, packageInfo } from './browser.js';
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 5c5123dd2..777c75a81 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -3,29 +3,35 @@
"compilerOptions": {
"composite": true,
"paths": {
- "@polkadot/hw-ledger": ["hw-ledger/src"],
- "@polkadot/hw-ledger/*": ["hw-ledger/src/*"],
- "@polkadot/hw-ledger-transports": ["hw-ledger-transports/src/browser"],
- "@polkadot/hw-ledger-transports/*": ["hw-ledger-transports/src/browser"],
- "@polkadot/keyring": ["keyring/src"],
+ "@polkadot/hw-ledger": ["hw-ledger/src/index.ts"],
+ "@polkadot/hw-ledger/packageInfo": ["hw-ledger/src/packageInfo.ts"],
+ "@polkadot/hw-ledger/*": ["hw-ledger/src/*.ts"],
+ "@polkadot/hw-ledger-transports": ["hw-ledger-transports/src/browser.ts"],
+ "@polkadot/hw-ledger-transports/packageInfo": ["hw-ledger-transports/src/packageInfo.ts"],
+ "@polkadot/hw-ledger-transports/*": ["hw-ledger-transports/src/browser.ts"],
+ "@polkadot/keyring": ["keyring/src/index.ts"],
+ "@polkadot/keyring/packageInfo": ["keyring/src/packageInfo.ts"],
"@polkadot/keyring/*": ["keyring/src/*"],
- "@polkadot/networks": ["networks/src"],
- "@polkadot/networks/*": ["networks/src/*"],
- "@polkadot/util-crypto": ["util-crypto/src"],
- "@polkadot/util-crypto/*": ["util-crypto/src/*"],
- "@polkadot/util": ["util/src"],
- "@polkadot/util/*": ["util/src/*"],
- "@polkadot/x-bundle/*": ["x-bundle/src/*"],
- "@polkadot/x-bigint": ["x-bigint/src"],
- "@polkadot/x-fetch": ["x-fetch/src/browser"],
- "@polkadot/x-global": ["x-global/src"],
- "@polkadot/x-randomvalues": ["x-randomvalues/src/browser"],
- "@polkadot/x-textdecoder": ["x-textdecoder/src/browser"],
- "@polkadot/x-textencoder": ["x-textencoder/src/browser"],
- "@polkadot/x-ws": ["x-ws/src/browser"]
+ "@polkadot/networks": ["networks/src/index.ts"],
+ "@polkadot/networks/packageInfo": ["networks/src/packageInfo.ts"],
+ "@polkadot/util-crypto": ["util-crypto/src/index.ts"],
+ "@polkadot/util-crypto/packageInfo": ["util-crypto/src/packageInfo.ts"],
+ "@polkadot/util-crypto/*": ["util-crypto/src/*.ts"],
+ "@polkadot/util": ["util/src/index.ts"],
+ "@polkadot/util/packageInfo": ["util/src/packageInfo.ts"],
+ "@polkadot/util/test": ["util/src/test/index.ts"],
+ "@polkadot/util/*": ["util/src/*.ts"],
+ "@polkadot/x-bundle/*": ["x-bundle/src/*.ts"],
+ "@polkadot/x-bigint": ["x-bigint/src/index.ts"],
+ "@polkadot/x-bigint/shim": ["x-bigint/src/shim.ts"],
+ "@polkadot/x-fetch": ["x-fetch/src/browser.ts"],
+ "@polkadot/x-global": ["x-global/src/index.ts"],
+ "@polkadot/x-randomvalues": ["x-randomvalues/src/browser.ts"],
+ "@polkadot/x-textdecoder": ["x-textdecoder/src/browser.ts"],
+ "@polkadot/x-textencoder": ["x-textencoder/src/browser.ts"],
+ "@polkadot/x-ws": ["x-ws/src/browser.ts"]
},
"resolveJsonModule": true,
- "skipLibCheck": true,
- "target": "es2020"
+ "skipLibCheck": true
}
}
diff --git a/yarn.lock b/yarn.lock
index f3aacafab..e2012c8a0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -661,9 +661,9 @@ __metadata:
languageName: node
linkType: hard
-"@polkadot/dev@npm:^0.70.4":
- version: 0.70.4
- resolution: "@polkadot/dev@npm:0.70.4"
+"@polkadot/dev@npm:^0.71.1":
+ version: 0.71.1
+ resolution: "@polkadot/dev@npm:0.71.1"
dependencies:
"@eslint/js": ^8.35.0
"@rollup/plugin-alias": ^4.0.3
@@ -673,8 +673,8 @@ __metadata:
"@rollup/plugin-json": ^6.0.0
"@rollup/plugin-node-resolve": ^15.0.1
"@rushstack/eslint-patch": ^1.2.0
- "@typescript-eslint/eslint-plugin": ^5.54.0
- "@typescript-eslint/parser": ^5.54.0
+ "@typescript-eslint/eslint-plugin": ^5.54.1
+ "@typescript-eslint/parser": ^5.54.1
eslint: ^8.35.0
eslint-config-standard: ^17.0.0
eslint-import-resolver-node: ^0.3.7
@@ -728,7 +728,7 @@ __metadata:
polkadot-exec-rollup: scripts/polkadot-exec-rollup.mjs
polkadot-exec-tsc: scripts/polkadot-exec-tsc.mjs
polkadot-exec-webpack: scripts/polkadot-exec-webpack.mjs
- checksum: 446bc7a0637a91d30829d5fccb2b6c74d9f54bc7e67290c11cfca56a0f528a33b5ee1b066ed9bde6b669d866c89e3895ff7a44b79210bb549dd406afccc0ca9d
+ checksum: 18505f604cd99a6fa858fe0dd6f9f09f6ae46bc3428616dd8df6f4533b4854de1c517f1c0ede5f7c11a881ffea2175ffd48c8526ea16f7da3320595d0ae67cf8
languageName: node
linkType: hard
@@ -1432,13 +1432,13 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/eslint-plugin@npm:^5.54.0":
- version: 5.54.0
- resolution: "@typescript-eslint/eslint-plugin@npm:5.54.0"
+"@typescript-eslint/eslint-plugin@npm:^5.54.1":
+ version: 5.54.1
+ resolution: "@typescript-eslint/eslint-plugin@npm:5.54.1"
dependencies:
- "@typescript-eslint/scope-manager": 5.54.0
- "@typescript-eslint/type-utils": 5.54.0
- "@typescript-eslint/utils": 5.54.0
+ "@typescript-eslint/scope-manager": 5.54.1
+ "@typescript-eslint/type-utils": 5.54.1
+ "@typescript-eslint/utils": 5.54.1
debug: ^4.3.4
grapheme-splitter: ^1.0.4
ignore: ^5.2.0
@@ -1452,7 +1452,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 4fdb520b8e0f6b9eb878206ddfa4212522f170d1507d7aba8a975159a198efa37af6d2d17982dd560317452d0748f2e2da5dd7347b172bc4446d1c5562ce2e94
+ checksum: 76476c08ca0142a9bf6e2381f5cd1c037d86fbafa9c0dded4a97bd3b23b5962dd2c3943bade11b21d674195674f0e36dbf80faa15a1906f5a2ca1f699baf1dd5
languageName: node
linkType: hard
@@ -1467,20 +1467,20 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/parser@npm:^5.54.0":
- version: 5.54.0
- resolution: "@typescript-eslint/parser@npm:5.54.0"
+"@typescript-eslint/parser@npm:^5.54.1":
+ version: 5.54.1
+ resolution: "@typescript-eslint/parser@npm:5.54.1"
dependencies:
- "@typescript-eslint/scope-manager": 5.54.0
- "@typescript-eslint/types": 5.54.0
- "@typescript-eslint/typescript-estree": 5.54.0
+ "@typescript-eslint/scope-manager": 5.54.1
+ "@typescript-eslint/types": 5.54.1
+ "@typescript-eslint/typescript-estree": 5.54.1
debug: ^4.3.4
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 368d6dd85be42c3f518f0ddeed23ecd1d3c9484a77ae291ee4e08e2703ed379bed613bde014cd8ab2a3e06e85dd8aef201112ae5e3d2a07deba29ae80bb1fe06
+ checksum: f466513d306ca926b97c2cec1eebaf2cd15d45bd5633a4358f23ba9a4de1b0ec4630b1c20abc395943934ed1d2ef65f545fd6737c317a7abe579612101e8a83f
languageName: node
linkType: hard
@@ -1494,22 +1494,22 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/scope-manager@npm:5.54.0":
- version: 5.54.0
- resolution: "@typescript-eslint/scope-manager@npm:5.54.0"
+"@typescript-eslint/scope-manager@npm:5.54.1":
+ version: 5.54.1
+ resolution: "@typescript-eslint/scope-manager@npm:5.54.1"
dependencies:
- "@typescript-eslint/types": 5.54.0
- "@typescript-eslint/visitor-keys": 5.54.0
- checksum: e50f12396de0ddb94aab119bdd5f4769b80dd2c273e137fd25e5811e25114d7a3d3668cdb3c454aca9537e940744881d62a1fed2ec86f07f60533dc7382ae15c
+ "@typescript-eslint/types": 5.54.1
+ "@typescript-eslint/visitor-keys": 5.54.1
+ checksum: 9add24cf3a7852634ad0680a827646860ac4698a6ac8aae31e8b781e29f59e84b51f0cdaacffd0747811012647f01b51969d988da9b302ead374ceebffbe204b
languageName: node
linkType: hard
-"@typescript-eslint/type-utils@npm:5.54.0":
- version: 5.54.0
- resolution: "@typescript-eslint/type-utils@npm:5.54.0"
+"@typescript-eslint/type-utils@npm:5.54.1":
+ version: 5.54.1
+ resolution: "@typescript-eslint/type-utils@npm:5.54.1"
dependencies:
- "@typescript-eslint/typescript-estree": 5.54.0
- "@typescript-eslint/utils": 5.54.0
+ "@typescript-eslint/typescript-estree": 5.54.1
+ "@typescript-eslint/utils": 5.54.1
debug: ^4.3.4
tsutils: ^3.21.0
peerDependencies:
@@ -1517,7 +1517,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 9cb5b52c7277bdf74b9ea3282fc40f41fda90ea4b1d33039044476e43cf05a766b1294e7d45f429594f2776828f7d17729cfa4ea027315f3df883e748ba57514
+ checksum: 0073838b782b7f4619775be124ca6643fec43a2d56043eaf3ceb100960a5193f14ac747b28ce17a5c9ac643fdee8abda82a7d905c81521358de7b27a2dcbc9af
languageName: node
linkType: hard
@@ -1535,10 +1535,10 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/types@npm:5.54.0":
- version: 5.54.0
- resolution: "@typescript-eslint/types@npm:5.54.0"
- checksum: 0f66b1b93078f3afea6dfcd3d4e2f0abea4f60cd0c613c2cf13f85098e5bf786185484c9846ed80b6c4272de2c31a70c5a8aacb91314cf1b6da7dcb8855cb7ac
+"@typescript-eslint/types@npm:5.54.1":
+ version: 5.54.1
+ resolution: "@typescript-eslint/types@npm:5.54.1"
+ checksum: 84a8f725cfa10646af389659e09c510c38d82c65960c7b613f844a264acc0e197471cba03f3e8f4b6411bc35dca28922c8352a7bd44621411c73fd6dd4096da2
languageName: node
linkType: hard
@@ -1560,12 +1560,12 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/typescript-estree@npm:5.54.0, @typescript-eslint/typescript-estree@npm:^5.13.0":
- version: 5.54.0
- resolution: "@typescript-eslint/typescript-estree@npm:5.54.0"
+"@typescript-eslint/typescript-estree@npm:5.54.1, @typescript-eslint/typescript-estree@npm:^5.13.0":
+ version: 5.54.1
+ resolution: "@typescript-eslint/typescript-estree@npm:5.54.1"
dependencies:
- "@typescript-eslint/types": 5.54.0
- "@typescript-eslint/visitor-keys": 5.54.0
+ "@typescript-eslint/types": 5.54.1
+ "@typescript-eslint/visitor-keys": 5.54.1
debug: ^4.3.4
globby: ^11.1.0
is-glob: ^4.0.3
@@ -1574,7 +1574,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 377c75c34c4f95b7ab6218c1d96a6db3ea6ed6727711b6a09354582fe0157861dc1b6fb9e3f7113cd09741f713735d59d5ab5845457f5733a4ebad7470bf600a
+ checksum: ea42bdb4832fa96fa1121237c9b664ac4506e2836646651e08a8542c8601d78af6c288779707f893ca4c884221829bb7d7b4b43c4a9c3ed959519266d03a139b
languageName: node
linkType: hard
@@ -1614,21 +1614,21 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/utils@npm:5.54.0, @typescript-eslint/utils@npm:^5.10.0":
- version: 5.54.0
- resolution: "@typescript-eslint/utils@npm:5.54.0"
+"@typescript-eslint/utils@npm:5.54.1, @typescript-eslint/utils@npm:^5.10.0":
+ version: 5.54.1
+ resolution: "@typescript-eslint/utils@npm:5.54.1"
dependencies:
"@types/json-schema": ^7.0.9
"@types/semver": ^7.3.12
- "@typescript-eslint/scope-manager": 5.54.0
- "@typescript-eslint/types": 5.54.0
- "@typescript-eslint/typescript-estree": 5.54.0
+ "@typescript-eslint/scope-manager": 5.54.1
+ "@typescript-eslint/types": 5.54.1
+ "@typescript-eslint/typescript-estree": 5.54.1
eslint-scope: ^5.1.1
eslint-utils: ^3.0.0
semver: ^7.3.7
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- checksum: b8f344fc2961c7af530b93e53d5a17b5084cdf550b381082e3fb7f349ef16e718d9eebde1b9fc2d8fc4ecf8d60d334b004359977247554265c1afc87323bed37
+ checksum: 8f428ea4d338ce85d55fd0c9ae2b217b323f29f51b7c9f8077fef7001ca21d28b032c5e5165b67ae6057aef69edb0e7a164c3c483703be6f3e4e574248bbc399
languageName: node
linkType: hard
@@ -1652,13 +1652,13 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/visitor-keys@npm:5.54.0":
- version: 5.54.0
- resolution: "@typescript-eslint/visitor-keys@npm:5.54.0"
+"@typescript-eslint/visitor-keys@npm:5.54.1":
+ version: 5.54.1
+ resolution: "@typescript-eslint/visitor-keys@npm:5.54.1"
dependencies:
- "@typescript-eslint/types": 5.54.0
+ "@typescript-eslint/types": 5.54.1
eslint-visitor-keys: ^3.3.0
- checksum: 17fc323c09e6272b603cdaec30a99916600fbbb737e1fbc8c1727a487753b4363cea112277fa43e0562bff34bdd1de9ad73ff9433118b1fd469b112fad0313ca
+ checksum: 3a691abd2a43b86a0c41526d14a2afcc93a2e0512b5f8b9ec43f6029c493870808036eae5ee4fc655d26e1999017c4a4dffb241f47c36c2a1238ec9fbd08719c
languageName: node
linkType: hard
@@ -7945,7 +7945,7 @@ fsevents@~2.3.2:
resolution: "root-workspace-0b6124@workspace:."
dependencies:
"@babel/core": ^7.21.0
- "@polkadot/dev": ^0.70.4
+ "@polkadot/dev": ^0.71.1
"@types/node": ^18.14.6
languageName: unknown
linkType: soft