@revoke.cash/chains 1.0.0

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.
package/README.md ADDED
@@ -0,0 +1,75 @@
1
+ [![Publish](https://github.com/RevokeCash/chains/actions/workflows/publish-release.yml/badge.svg)](https://github.com/RevokeCash/chains/actions/workflows/publish-release.yml/badge.svg) ![npm](https://img.shields.io/npm/v/@revoke.cash/chains?logoColor=blue)
2
+
3
+ # Eth Chains
4
+
5
+ Helper module for getting EVM chain info from [chainid.network](https://chainid.network/).
6
+
7
+ Note: This package was initially created by @taylorjdawson. We forked the repository so we can control the release process with an automated script. The original package can be found [here](https://github.com/taylorjdawson/eth-chains).
8
+
9
+ ## Installation
10
+
11
+ ```
12
+ yarn add @revoke.cash/chains
13
+ ```
14
+
15
+ ### Note on versioning
16
+
17
+ `@revoke.cash/chains` uses a weekly automated release script that updates its chain data. This release script takes breaking changes into account, so breaking changes (e.g. renamed chains) are released as a new major version, while non-breaking changes (e.g. new chains) are released as a new minor version.
18
+
19
+ ## Usage
20
+
21
+ Import `chains` methods and enums:
22
+
23
+ ```ts
24
+ import chains, { ChainId, ChainName } from '@revoke.cash/chains'
25
+ ```
26
+
27
+ ### Easily get most popular chains:
28
+
29
+ ```ts
30
+ import { chain } from '@revoke.cash/chains'
31
+
32
+ console.log(chain.ethereum.rinkeby)
33
+
34
+ console.log(chain.polygon.mumbai)
35
+ ```
36
+
37
+ ### Chain names and ids via Enums:
38
+
39
+ ```ts
40
+ console.log(ChainId.EthereumMainnet) // 1
41
+ console.log(ChainId.BinanceSmartChainMainnet) // 56
42
+ console.log(ChainName.EthereumMainnet) // "Ethereum Mainnet"
43
+ console.log(ChainName.Rinkeby) // "Rinkeby"
44
+ ```
45
+
46
+ ### Chain by ID:
47
+
48
+ ```ts
49
+ chains.getById(ChainId.EthereumMainnet) // { name: "Ethereum Mainnet", ..., "infoURL": "https://ethereum.org" }
50
+ // Equivalent
51
+ chains.getById(1)
52
+ ```
53
+
54
+ ### Chain by Name:
55
+
56
+ ```ts
57
+ chains.getByName(ChainName.EthereumMainnet) // { name: "Ethereum Mainnet", ..., "infoURL": "https://ethereum.org" }
58
+ // Equivalent
59
+ chains.getByName('Ethereum Mainnet')
60
+ ```
61
+
62
+ ### Get all Chains:
63
+
64
+ ```ts
65
+ const allChains = chains.all()
66
+ // { 1: { name: "Ethereum Mainnet", ..., "infoURL": "https://ethereum.org" }, 2: {...}}
67
+ ```
68
+
69
+ ### Typescript Types:
70
+
71
+ ```ts
72
+ import { Chain, NativeCurrency, Explorer } from '@revoke.cash/chains'
73
+ const ethereum: Chain = chains.getById(ChainId.EthereumMainnet)
74
+ ethereum.chain // 'ETH'
75
+ ```
@@ -0,0 +1,8 @@
1
+ {
2
+ "semi": false,
3
+ "trailingComma": "none",
4
+ "singleQuote": true,
5
+ "printWidth": 80,
6
+ "tabWidth": 2,
7
+ "arrowParens": "avoid"
8
+ }
@@ -0,0 +1 @@
1
+ export { default as chains, Chain, ChainId, ChainName, NativeCurrency, Explorer, Parent, chain } from './src';
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.chain = exports.ChainName = exports.ChainId = exports.chains = void 0;
7
+ var src_1 = require("./src");
8
+ Object.defineProperty(exports, "chains", { enumerable: true, get: function () { return __importDefault(src_1).default; } });
9
+ Object.defineProperty(exports, "ChainId", { enumerable: true, get: function () { return src_1.ChainId; } });
10
+ Object.defineProperty(exports, "ChainName", { enumerable: true, get: function () { return src_1.ChainName; } });
11
+ Object.defineProperty(exports, "chain", { enumerable: true, get: function () { return src_1.chain; } });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var got_1 = __importDefault(require("got"));
54
+ var fs_1 = require("fs");
55
+ var util_1 = require("util");
56
+ var prettier_1 = require("prettier");
57
+ var helpers_1 = require("./helpers");
58
+ var _prettierrc_json_1 = __importDefault(require("../.prettierrc.json"));
59
+ var constants_1 = require("./constants");
60
+ var formatterOptions = __assign(__assign({}, _prettierrc_json_1.default), { parser: 'typescript' });
61
+ var getEnumKey = function (chainName) {
62
+ var enumKey = helpers_1.capitalize(chainName.replace(/\s/g, ''));
63
+ // If the key starts with a number or contains ',' or '.' then wrap it in quotes
64
+ enumKey = !!chainName.match(/^\d|[\-\.\()]/) ? "'" + enumKey + "'" : enumKey;
65
+ return enumKey;
66
+ };
67
+ var getBuildEnums = function (chains) {
68
+ return chains
69
+ .reduce(function (enumStrings, chain, index, array) {
70
+ var _a;
71
+ var key = (_a = constants_1.ENUM_KEY_OVERRIDES[chain.chainId]) !== null && _a !== void 0 ? _a : getEnumKey(chain.name);
72
+ var tail = index === array.length - 1 ? ' }' : ', ';
73
+ enumStrings[0] += key + " = '" + chain.name + "'" + tail;
74
+ enumStrings[1] += key + " = " + chain.chainId + tail;
75
+ return enumStrings;
76
+ }, ['export enum ChainName { ', 'export enum ChainId { '])
77
+ .join('\n');
78
+ };
79
+ var generateEnumFile = function (chains) { return __awaiter(void 0, void 0, void 0, function () {
80
+ return __generator(this, function (_a) {
81
+ fs_1.promises.writeFile('./src/enums.ts', prettier_1.format(getBuildEnums(chains), __assign(__assign({}, _prettierrc_json_1.default), { parser: 'typescript' })));
82
+ return [2 /*return*/];
83
+ });
84
+ }); };
85
+ var generateChainsFile = function () { return __awaiter(void 0, void 0, void 0, function () {
86
+ var chains, chainsJs;
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0: return [4 /*yield*/, got_1.default('https://chainid.network/chains.json').json()];
90
+ case 1:
91
+ chains = _a.sent();
92
+ return [4 /*yield*/, generateEnumFile(chains).catch(function () {
93
+ console.log('Error generating enum file');
94
+ })];
95
+ case 2:
96
+ _a.sent();
97
+ chainsJs = chains
98
+ .map(function (chain) { return chain.chainId + ": " + util_1.inspect(chain, { depth: null }); })
99
+ .join(',\n');
100
+ fs_1.promises.writeFile('./src/chains.ts', prettier_1.format("import { Chains } from \"./types\"\nexport const chains: Chains = {\n" + chainsJs + "\n}", formatterOptions));
101
+ return [2 /*return*/];
102
+ }
103
+ });
104
+ }); };
105
+ generateChainsFile();
@@ -0,0 +1,2 @@
1
+ import { Chains } from './types';
2
+ export declare const chains: Chains;