@pezkuwi/networks 14.0.9 → 14.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/build/LICENSE +201 -0
  2. package/build/README.md +5 -0
  3. package/build/cjs/defaults/genesis.js +216 -0
  4. package/build/cjs/defaults/icons.js +12 -0
  5. package/build/cjs/defaults/index.js +11 -0
  6. package/build/cjs/defaults/ledger.js +55 -0
  7. package/build/cjs/defaults/testnets.js +13 -0
  8. package/build/cjs/index.js +7 -0
  9. package/build/cjs/interfaces.js +82 -0
  10. package/build/cjs/packageDetect.js +5 -0
  11. package/build/cjs/packageInfo.js +4 -0
  12. package/build/cjs/types.js +2 -0
  13. package/build/defaults/genesis.d.ts +2 -0
  14. package/build/defaults/genesis.js +213 -0
  15. package/build/defaults/icons.d.ts +2 -0
  16. package/build/defaults/icons.js +9 -0
  17. package/build/defaults/index.d.ts +4 -0
  18. package/build/defaults/index.js +4 -0
  19. package/build/defaults/ledger.d.ts +2 -0
  20. package/build/defaults/ledger.js +52 -0
  21. package/build/defaults/testnets.d.ts +2 -0
  22. package/build/defaults/testnets.js +10 -0
  23. package/build/index.d.ts +2 -0
  24. package/build/index.js +2 -0
  25. package/build/interfaces.d.ts +4 -0
  26. package/build/interfaces.js +79 -0
  27. package/build/package.json +189 -0
  28. package/build/packageDetect.d.ts +1 -0
  29. package/build/packageDetect.js +3 -0
  30. package/build/packageInfo.d.ts +6 -0
  31. package/build/packageInfo.js +1 -0
  32. package/build/types.d.ts +31 -0
  33. package/build/types.js +1 -0
  34. package/build-deno/README.md +5 -0
  35. package/build-deno/defaults/genesis.ts +216 -0
  36. package/build-deno/defaults/icons.ts +12 -0
  37. package/build-deno/defaults/index.ts +5 -0
  38. package/build-deno/defaults/ledger.ts +55 -0
  39. package/build-deno/defaults/testnets.ts +13 -0
  40. package/build-deno/index.ts +4 -0
  41. package/build-deno/interfaces.ts +100 -0
  42. package/build-deno/mod.ts +2 -0
  43. package/build-deno/packageDetect.ts +7 -0
  44. package/build-deno/packageInfo.ts +3 -0
  45. package/build-deno/types.ts +41 -0
  46. package/{cjs → build-tsc-cjs}/interfaces.js +39 -3
  47. package/{cjs → build-tsc-cjs}/packageInfo.js +1 -1
  48. package/{interfaces.js → build-tsc-esm/interfaces.js} +39 -2
  49. package/{packageInfo.js → build-tsc-esm/packageInfo.js} +1 -1
  50. package/package.json +8 -169
  51. package/src/defaults/genesis.ts +226 -0
  52. package/src/defaults/icons.ts +15 -0
  53. package/src/defaults/index.ts +7 -0
  54. package/src/defaults/ledger.ts +61 -0
  55. package/src/defaults/testnets.ts +16 -0
  56. package/src/defaults.spec.ts +59 -0
  57. package/src/index.spec.ts +120 -0
  58. package/src/index.ts +9 -0
  59. package/src/interfaces.ts +109 -0
  60. package/src/mod.ts +4 -0
  61. package/src/packageDetect.ts +11 -0
  62. package/src/packageInfo.ts +6 -0
  63. package/src/ss58registry.spec.ts +34 -0
  64. package/src/types.ts +43 -0
  65. package/test/ss58registry.json +1905 -0
  66. package/tsconfig.build.json +17 -0
  67. package/tsconfig.build.tsbuildinfo +1 -0
  68. package/tsconfig.spec.json +18 -0
  69. package/tsconfig.spec.tsbuildinfo +1 -0
  70. /package/{defaults → build/cjs/defaults}/genesis.d.ts +0 -0
  71. /package/{defaults → build/cjs/defaults}/icons.d.ts +0 -0
  72. /package/{defaults → build/cjs/defaults}/index.d.ts +0 -0
  73. /package/{defaults → build/cjs/defaults}/ledger.d.ts +0 -0
  74. /package/{defaults → build/cjs/defaults}/testnets.d.ts +0 -0
  75. /package/{index.d.ts → build/cjs/index.d.ts} +0 -0
  76. /package/{interfaces.d.ts → build/cjs/interfaces.d.ts} +0 -0
  77. /package/{cjs → build/cjs}/package.json +0 -0
  78. /package/{packageDetect.d.ts → build/cjs/packageDetect.d.ts} +0 -0
  79. /package/{packageInfo.d.ts → build/cjs/packageInfo.d.ts} +0 -0
  80. /package/{types.d.ts → build/cjs/types.d.ts} +0 -0
  81. /package/{cjs → build-tsc}/defaults/genesis.d.ts +0 -0
  82. /package/{cjs → build-tsc}/defaults/icons.d.ts +0 -0
  83. /package/{cjs → build-tsc}/defaults/index.d.ts +0 -0
  84. /package/{cjs → build-tsc}/defaults/ledger.d.ts +0 -0
  85. /package/{cjs → build-tsc}/defaults/testnets.d.ts +0 -0
  86. /package/{cjs → build-tsc}/index.d.ts +0 -0
  87. /package/{cjs → build-tsc}/interfaces.d.ts +0 -0
  88. /package/{cjs → build-tsc}/packageDetect.d.ts +0 -0
  89. /package/{cjs → build-tsc}/packageInfo.d.ts +0 -0
  90. /package/{cjs → build-tsc}/types.d.ts +0 -0
  91. /package/{cjs → build-tsc-cjs}/defaults/genesis.js +0 -0
  92. /package/{cjs → build-tsc-cjs}/defaults/icons.js +0 -0
  93. /package/{cjs → build-tsc-cjs}/defaults/index.js +0 -0
  94. /package/{cjs → build-tsc-cjs}/defaults/ledger.js +0 -0
  95. /package/{cjs → build-tsc-cjs}/defaults/testnets.js +0 -0
  96. /package/{cjs → build-tsc-cjs}/index.js +0 -0
  97. /package/{cjs → build-tsc-cjs}/packageDetect.js +0 -0
  98. /package/{cjs → build-tsc-cjs}/types.js +0 -0
  99. /package/{defaults → build-tsc-esm/defaults}/genesis.js +0 -0
  100. /package/{defaults → build-tsc-esm/defaults}/icons.js +0 -0
  101. /package/{defaults → build-tsc-esm/defaults}/index.js +0 -0
  102. /package/{defaults → build-tsc-esm/defaults}/ledger.js +0 -0
  103. /package/{defaults → build-tsc-esm/defaults}/testnets.js +0 -0
  104. /package/{index.js → build-tsc-esm/index.js} +0 -0
  105. /package/{packageDetect.js → build-tsc-esm/packageDetect.js} +0 -0
  106. /package/{types.js → build-tsc-esm/types.js} +0 -0
@@ -0,0 +1,120 @@
1
+ // Copyright 2017-2025 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import type { BizinikwiNetwork } from './types.js';
7
+
8
+ import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
9
+ import { allNetworks, availableNetworks, selectableNetworks } from './index.js';
10
+
11
+ describe('availableNetworks', (): void => {
12
+ it('has the correct starting order', (): void => {
13
+ expect(availableNetworks.slice(0, 3).map(({ prefix }) => prefix)).toEqual([0, 2, 42]);
14
+ });
15
+
16
+ it('has a sorted list (first external, last external)', (): void => {
17
+ expect(availableNetworks[3].displayName).toEqual('3DP network');
18
+ expect(availableNetworks[availableNetworks.length - 1].displayName).toEqual('ZERO');
19
+ });
20
+
21
+ it('has no ignored networks', (): void => {
22
+ expect(availableNetworks.some(({ isIgnored }) => isIgnored)).toEqual(false);
23
+ });
24
+
25
+ it('has no reserved networks', (): void => {
26
+ expect(availableNetworks.some(({ prefix }) => prefix === 47)).toEqual(false);
27
+ });
28
+
29
+ it('has allNetworks genesis information', (): void => {
30
+ expect(
31
+ Object.entries(knownGenesis).filter(([network, genesisHash]) =>
32
+ availableNetworks.some((a) =>
33
+ a.network === network &&
34
+ genesisHash.some((g, index) => a.genesisHash[index] !== g)
35
+ )
36
+ )
37
+ ).toEqual([]);
38
+ });
39
+
40
+ it('has allNetworks ledger details', (): void => {
41
+ expect(
42
+ Object.entries(knownLedger).filter(([network, slip44]) =>
43
+ availableNetworks.some((a) =>
44
+ a.network === network && (
45
+ a.slip44 !== slip44 ||
46
+ !a.hasLedgerSupport ||
47
+ !a.genesisHash.length
48
+ )
49
+ )
50
+ )
51
+ ).toEqual([]);
52
+ });
53
+
54
+ it('has no testnets exposed', (): void => {
55
+ expect(
56
+ Object.keys(knownTestnet).filter((network) =>
57
+ availableNetworks.some((a) =>
58
+ a.network === network
59
+ )
60
+ )
61
+ ).toEqual([]);
62
+ });
63
+
64
+ it('has allNetworks icons, except for overrides', (): void => {
65
+ expect(
66
+ availableNetworks.filter(({ icon, network }) =>
67
+ icon !== 'substrate' &&
68
+ knownIcon[network] !== icon
69
+ )
70
+ ).toEqual([]);
71
+ });
72
+
73
+ it('has all the correct fields', (): void => {
74
+ expect(availableNetworks[0]).toEqual({
75
+ decimals: [10],
76
+ displayName: 'Polkadot Relay Chain',
77
+ genesisHash: [
78
+ '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3'
79
+ ],
80
+ hasLedgerSupport: true,
81
+ icon: 'polkadot',
82
+ isIgnored: false,
83
+ isTestnet: false,
84
+ network: 'polkadot',
85
+ prefix: 0,
86
+ slip44: 354,
87
+ standardAccount: '*25519',
88
+ symbols: ['DOT'],
89
+ website: 'https://polkadot.network'
90
+ });
91
+ });
92
+ });
93
+
94
+ describe('allNetworks', (): void => {
95
+ it('has no ss58 duplicates', (): void => {
96
+ const dupes: BizinikwiNetwork[] = [];
97
+ const uniques: BizinikwiNetwork[] = [];
98
+
99
+ allNetworks.forEach((a): void => {
100
+ if (uniques.some((u) => u.prefix === a.prefix)) {
101
+ dupes.push(a);
102
+ } else {
103
+ uniques.push(a);
104
+ }
105
+ });
106
+
107
+ expect(dupes).toEqual([]);
108
+ });
109
+ });
110
+
111
+ describe('selectableNetworks', (): void => {
112
+ it('has the correct starting order', (): void => {
113
+ expect(selectableNetworks.slice(0, 3).map(({ prefix }) => prefix)).toEqual([0, 2, 42]);
114
+ });
115
+
116
+ it('has a sorted list (first external, last external)', (): void => {
117
+ expect(selectableNetworks[3].displayName).toEqual('3DP network');
118
+ expect(selectableNetworks[selectableNetworks.length - 1].displayName).toEqual('Zeitgeist');
119
+ });
120
+ });
package/src/index.ts ADDED
@@ -0,0 +1,9 @@
1
+ // Copyright 2017-2025 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // TODO: This was removed, really cannot recall the reason...
5
+ // ... put it back, but keep it removed
6
+ // import './packageDetect.js';
7
+
8
+ export * from './interfaces.js';
9
+ export { packageInfo } from './packageInfo.js';
@@ -0,0 +1,109 @@
1
+ // Copyright 2017-2025 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { KnownBizinikiwi, Network, BizinikwiNetwork } from './types.js';
5
+
6
+ import { knownGenesis, knownIcon, knownLedger, knownTestnet } from './defaults/index.js';
7
+
8
+ // These are known prefixes that are not sorted
9
+ const UNSORTED = [0, 2, 42];
10
+ const TESTNETS = ['testnet'];
11
+
12
+ const customNetworks: KnownBizinikiwi[] = [
13
+ {
14
+ decimals: [10],
15
+ displayName: 'Pezkuwi Relay Chain',
16
+ network: 'pezkuwi',
17
+ prefix: 0,
18
+ standardAccount: '*25519',
19
+ symbols: ['PZW'],
20
+ website: 'https://pezkuwi.com'
21
+ },
22
+ {
23
+ decimals: [12],
24
+ displayName: 'Zagros Relay Chain',
25
+ network: 'zagros',
26
+ prefix: 2,
27
+ standardAccount: '*25519',
28
+ symbols: ['ZGS'],
29
+ website: 'https://zagros.pezkuwi.com'
30
+ },
31
+ {
32
+ decimals: [12],
33
+ displayName: 'Bizinikiwi',
34
+ network: 'bizinikiwi',
35
+ prefix: 42,
36
+ standardAccount: '*25519',
37
+ symbols: ['BZN'],
38
+ website: 'https://bizinikiwi.com'
39
+ },
40
+ {
41
+ decimals: [18],
42
+ displayName: 'PezkuwiChain',
43
+ network: 'pezkuwichain',
44
+ prefix: 1453,
45
+ standardAccount: '*25519',
46
+ symbols: ['PZC'],
47
+ website: 'https://chain.pezkuwi.com'
48
+ }
49
+ ];
50
+
51
+ function toExpanded (o: KnownBizinikiwi): BizinikwiNetwork {
52
+ const network = o.network || '';
53
+ const nameParts = network.replace(/_/g, '-').split('-');
54
+ const n = o as BizinikwiNetwork;
55
+
56
+ // ledger additions
57
+ n.slip44 = knownLedger[network];
58
+ n.hasLedgerSupport = !!n.slip44;
59
+
60
+ // general items
61
+ n.genesisHash = knownGenesis[network] || [];
62
+ n.icon = knownIcon[network] || 'substrate';
63
+
64
+ // filtering
65
+ n.isTestnet = !!knownTestnet[network] || TESTNETS.includes(nameParts[nameParts.length - 1]);
66
+ n.isIgnored = n.isTestnet || (
67
+ !(
68
+ o.standardAccount &&
69
+ o.decimals?.length &&
70
+ o.symbols?.length
71
+ ) &&
72
+ o.prefix !== 42
73
+ );
74
+
75
+ return n;
76
+ }
77
+
78
+ function filterSelectable ({ genesisHash, prefix }: Network): boolean {
79
+ return !!genesisHash.length || prefix === 42;
80
+ }
81
+
82
+ function filterAvailable (n: BizinikwiNetwork): n is Network {
83
+ return !n.isIgnored && !!n.network;
84
+ }
85
+
86
+ function sortNetworks (a: Network, b: Network): number {
87
+ const isUnSortedA = UNSORTED.includes(a.prefix);
88
+ const isUnSortedB = UNSORTED.includes(b.prefix);
89
+
90
+ return isUnSortedA === isUnSortedB
91
+ ? isUnSortedA
92
+ ? 0
93
+ : a.displayName.localeCompare(b.displayName)
94
+ : isUnSortedA
95
+ ? -1
96
+ : 1;
97
+ }
98
+
99
+ // This is all the Bizinikiwi networks with our additional information
100
+ export const allNetworks = customNetworks.map(toExpanded);
101
+
102
+ // The list of available/claimed prefixes
103
+ // - no testnets
104
+ // - we only include those where we have a standardAccount
105
+ // - sort by name, however we keep 0, 2, 42 first in the list
106
+ export const availableNetworks = allNetworks.filter(filterAvailable).sort(sortNetworks);
107
+
108
+ // A filtered list of those chains we have details about (genesisHashes)
109
+ export const selectableNetworks = availableNetworks.filter(filterSelectable);
package/src/mod.ts ADDED
@@ -0,0 +1,4 @@
1
+ // Copyright 2017-2025 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export * from './index.js';
@@ -0,0 +1,11 @@
1
+ // Copyright 2017-2026 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // Do not edit, auto-generated by @pezkuwi/dev
5
+ // (packageInfo imports will be kept as-is, user-editable)
6
+
7
+ import { detectPackage } from '@pezkuwi/util';
8
+
9
+ import { packageInfo } from './packageInfo.js';
10
+
11
+ detectPackage(packageInfo, null, []);
@@ -0,0 +1,6 @@
1
+ // Copyright 2017-2026 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // Do not edit, auto-generated by @pezkuwi/dev
5
+
6
+ export const packageInfo = { name: '@pezkuwi/networks', path: 'auto', type: 'auto', version: '14.0.10' };
@@ -0,0 +1,34 @@
1
+ // Copyright 2017-2025 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /// <reference types="@pezkuwi/dev-test/globals.d.ts" />
5
+
6
+ import known from '@substrate/ss58-registry';
7
+ import fs from 'node:fs';
8
+
9
+ import { stringify } from '@pezkuwi/util';
10
+
11
+ describe('@substrate/ss58-registry', (): void => {
12
+ it('has known values', (): void => {
13
+ const testUrl = new URL('../test/ss58registry.json', import.meta.url);
14
+ const json = stringify(known, 2);
15
+
16
+ try {
17
+ expect(
18
+ JSON.parse(json)
19
+ ).toEqual(
20
+ JSON.parse(
21
+ fs.readFileSync(testUrl, 'utf-8')
22
+ )
23
+ );
24
+ } catch (error) {
25
+ if (process.env['GITHUB_REPOSITORY']) {
26
+ console.error(json);
27
+
28
+ throw error;
29
+ }
30
+
31
+ fs.writeFileSync(testUrl, json, { flag: 'w' });
32
+ }
33
+ });
34
+ });
package/src/types.ts ADDED
@@ -0,0 +1,43 @@
1
+ // Copyright 2017-2025 @pezkuwi/networks authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { RegistryEntry } from '@substrate/ss58-registry';
5
+ import type { HexString } from '@pezkuwi/util/types';
6
+
7
+ export type Icon = 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate';
8
+
9
+ export type KnownIcon = Record<string, Icon>;
10
+
11
+ export type KnownLedger = Record<string, number>;
12
+
13
+ export type KnownGenesis = Record<string, HexString[]>;
14
+
15
+ export type KnownBizinikiwi = RegistryEntry;
16
+
17
+ export type KnownTestnet = Record<string, true>;
18
+
19
+ export interface BizinikwiNetwork extends KnownBizinikiwi {
20
+ /** The genesisHash for the chain */
21
+ genesisHash: HexString[];
22
+ /** Does the chain has support for Ledger devices */
23
+ hasLedgerSupport: boolean;
24
+ /** The IdentityIcon to use for the chain */
25
+ icon: Icon;
26
+ /** Flag set when we don't include this chain */
27
+ isIgnored: boolean;
28
+ /** Flag to indicate a testnet */
29
+ isTestnet: boolean;
30
+ /** The Ledger-specific/required slip44 for the chain */
31
+ slip44?: number | null;
32
+ }
33
+
34
+ export interface Network extends BizinikwiNetwork {
35
+ /** The network assigned to this chain */
36
+ network: string;
37
+ }
38
+
39
+ export interface Ss58Registry {
40
+ registry: KnownBizinikiwi[];
41
+ specification: string;
42
+ schema: Record<keyof KnownBizinikiwi, string>;
43
+ }