@gfxlabs/oku-chains 1.12.3 → 1.12.4
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/dist/browser.js +185 -0
- package/dist/index-mjs.js +179 -1
- package/dist/index.js +185 -0
- package/dist/types/index.d.ts +51 -0
- package/dist/types/util/lookup.d.ts +53 -0
- package/package.json +2 -2
package/dist/browser.js
CHANGED
|
@@ -6915,6 +6915,123 @@
|
|
|
6915
6915
|
return chain;
|
|
6916
6916
|
}
|
|
6917
6917
|
|
|
6918
|
+
/**
|
|
6919
|
+
* Error thrown when a network cannot be found by any lookup method.
|
|
6920
|
+
*/
|
|
6921
|
+
class NetworkNotFoundError extends Error {
|
|
6922
|
+
constructor(input) {
|
|
6923
|
+
super(`chain not found: ${String(input)}`);
|
|
6924
|
+
this.name = "NetworkNotFoundError";
|
|
6925
|
+
}
|
|
6926
|
+
}
|
|
6927
|
+
/**
|
|
6928
|
+
* Build a lookup index from a list of chains for fast repeated lookups.
|
|
6929
|
+
* Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
|
|
6930
|
+
*/
|
|
6931
|
+
function buildNetworkIndex(chains) {
|
|
6932
|
+
const byId = new Map();
|
|
6933
|
+
const byName = new Map();
|
|
6934
|
+
const byCAIP2 = new Map();
|
|
6935
|
+
for (const chain of chains) {
|
|
6936
|
+
byId.set(chain.id, chain);
|
|
6937
|
+
byName.set(chain.internalName, chain);
|
|
6938
|
+
byCAIP2.set(`${chain.caip2Namespace}:${chain.id}`, chain);
|
|
6939
|
+
}
|
|
6940
|
+
return { byId, byName, byCAIP2 };
|
|
6941
|
+
}
|
|
6942
|
+
/**
|
|
6943
|
+
* Look up a chain by its numeric chain ID.
|
|
6944
|
+
*/
|
|
6945
|
+
function networkById$1(id, idx) {
|
|
6946
|
+
const chain = idx.byId.get(id);
|
|
6947
|
+
if (!chain) {
|
|
6948
|
+
throw new NetworkNotFoundError(id);
|
|
6949
|
+
}
|
|
6950
|
+
return chain;
|
|
6951
|
+
}
|
|
6952
|
+
/**
|
|
6953
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
6954
|
+
*/
|
|
6955
|
+
function networkByName$1(name, idx) {
|
|
6956
|
+
const chain = idx.byName.get(name);
|
|
6957
|
+
if (!chain) {
|
|
6958
|
+
throw new NetworkNotFoundError(name);
|
|
6959
|
+
}
|
|
6960
|
+
return chain;
|
|
6961
|
+
}
|
|
6962
|
+
/**
|
|
6963
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
6964
|
+
*/
|
|
6965
|
+
function networkByCAIP2$1(caip2, idx) {
|
|
6966
|
+
// Validate the format
|
|
6967
|
+
parseCAIP2(caip2);
|
|
6968
|
+
const chain = idx.byCAIP2.get(caip2);
|
|
6969
|
+
if (!chain) {
|
|
6970
|
+
throw new NetworkNotFoundError(caip2);
|
|
6971
|
+
}
|
|
6972
|
+
return chain;
|
|
6973
|
+
}
|
|
6974
|
+
/**
|
|
6975
|
+
* Look up a chain from a string. Tries, in order:
|
|
6976
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
6977
|
+
* 2. Internal name
|
|
6978
|
+
* 3. Numeric chain ID (parsed from string)
|
|
6979
|
+
*
|
|
6980
|
+
* Mirrors the Go `NetworkByString` function.
|
|
6981
|
+
*/
|
|
6982
|
+
function networkByString$1(s, idx) {
|
|
6983
|
+
if (s === "") {
|
|
6984
|
+
throw new NetworkNotFoundError("empty string");
|
|
6985
|
+
}
|
|
6986
|
+
// Try CAIP-2
|
|
6987
|
+
if (s.includes(":")) {
|
|
6988
|
+
return networkByCAIP2$1(s, idx);
|
|
6989
|
+
}
|
|
6990
|
+
// Try internal name
|
|
6991
|
+
const byName = idx.byName.get(s);
|
|
6992
|
+
if (byName) {
|
|
6993
|
+
return byName;
|
|
6994
|
+
}
|
|
6995
|
+
// Try numeric chain ID
|
|
6996
|
+
const parsed = Number(s);
|
|
6997
|
+
if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {
|
|
6998
|
+
const byId = idx.byId.get(Math.trunc(parsed));
|
|
6999
|
+
if (byId) {
|
|
7000
|
+
return byId;
|
|
7001
|
+
}
|
|
7002
|
+
}
|
|
7003
|
+
throw new NetworkNotFoundError(s);
|
|
7004
|
+
}
|
|
7005
|
+
/**
|
|
7006
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
7007
|
+
* - `number`: treated as chain ID
|
|
7008
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
7009
|
+
* internal name, then as a numeric chain ID string
|
|
7010
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
7011
|
+
*
|
|
7012
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
7013
|
+
*
|
|
7014
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7015
|
+
*/
|
|
7016
|
+
function networkByAny$1(v, idx) {
|
|
7017
|
+
if (v == null) {
|
|
7018
|
+
throw new NetworkNotFoundError("null");
|
|
7019
|
+
}
|
|
7020
|
+
// Pass-through if already a chain config object
|
|
7021
|
+
if (typeof v === "object" && "id" in v && "internalName" in v) {
|
|
7022
|
+
return v;
|
|
7023
|
+
}
|
|
7024
|
+
// Numeric chain ID
|
|
7025
|
+
if (typeof v === "number") {
|
|
7026
|
+
return networkById$1(Math.trunc(v), idx);
|
|
7027
|
+
}
|
|
7028
|
+
// String: CAIP-2, name, or numeric string
|
|
7029
|
+
if (typeof v === "string") {
|
|
7030
|
+
return networkByString$1(v, idx);
|
|
7031
|
+
}
|
|
7032
|
+
throw new NetworkNotFoundError(v);
|
|
7033
|
+
}
|
|
7034
|
+
|
|
6918
7035
|
const MAINNET_CHAINS = [
|
|
6919
7036
|
arbitrum,
|
|
6920
7037
|
base,
|
|
@@ -6965,8 +7082,70 @@
|
|
|
6965
7082
|
gensyn,
|
|
6966
7083
|
pharos,
|
|
6967
7084
|
];
|
|
7085
|
+
/** Pre-built lookup index over MAINNET_CHAINS (like Go's module-level maps). */
|
|
7086
|
+
const _idx = buildNetworkIndex(MAINNET_CHAINS);
|
|
7087
|
+
/**
|
|
7088
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
7089
|
+
* - `number`: treated as chain ID
|
|
7090
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
7091
|
+
* internal name, then as a numeric chain ID string
|
|
7092
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
7093
|
+
*
|
|
7094
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
7095
|
+
*
|
|
7096
|
+
* @example
|
|
7097
|
+
* ```ts
|
|
7098
|
+
* import { networkByAny } from "@gfxlabs/oku-chains";
|
|
7099
|
+
*
|
|
7100
|
+
* networkByAny(1) // by chain ID
|
|
7101
|
+
* networkByAny("mainnet") // by internal name
|
|
7102
|
+
* networkByAny("eip155:1") // by CAIP-2
|
|
7103
|
+
* networkByAny("42161") // by chain ID string
|
|
7104
|
+
* ```
|
|
7105
|
+
*
|
|
7106
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7107
|
+
*/
|
|
7108
|
+
function networkByAny(v) {
|
|
7109
|
+
return networkByAny$1(v, _idx);
|
|
7110
|
+
}
|
|
7111
|
+
/**
|
|
7112
|
+
* Look up a chain by its numeric chain ID.
|
|
7113
|
+
*
|
|
7114
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7115
|
+
*/
|
|
7116
|
+
function networkById(id) {
|
|
7117
|
+
return networkById$1(id, _idx);
|
|
7118
|
+
}
|
|
7119
|
+
/**
|
|
7120
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
7121
|
+
*
|
|
7122
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7123
|
+
*/
|
|
7124
|
+
function networkByName(name) {
|
|
7125
|
+
return networkByName$1(name, _idx);
|
|
7126
|
+
}
|
|
7127
|
+
/**
|
|
7128
|
+
* Look up a chain from a string. Tries, in order:
|
|
7129
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
7130
|
+
* 2. Internal name
|
|
7131
|
+
* 3. Numeric chain ID (parsed from string)
|
|
7132
|
+
*
|
|
7133
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7134
|
+
*/
|
|
7135
|
+
function networkByString(s) {
|
|
7136
|
+
return networkByString$1(s, _idx);
|
|
7137
|
+
}
|
|
7138
|
+
/**
|
|
7139
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
7140
|
+
*
|
|
7141
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7142
|
+
*/
|
|
7143
|
+
function networkByCAIP2(caip2) {
|
|
7144
|
+
return networkByCAIP2$1(caip2, _idx);
|
|
7145
|
+
}
|
|
6968
7146
|
|
|
6969
7147
|
exports.MAINNET_CHAINS = MAINNET_CHAINS;
|
|
7148
|
+
exports.NetworkNotFoundError = NetworkNotFoundError;
|
|
6970
7149
|
exports.arbitrum = arbitrum;
|
|
6971
7150
|
exports.avalanche = avalanche;
|
|
6972
7151
|
exports.base = base;
|
|
@@ -6974,6 +7153,7 @@
|
|
|
6974
7153
|
exports.bob = bob;
|
|
6975
7154
|
exports.boba = boba;
|
|
6976
7155
|
exports.bsc = bsc;
|
|
7156
|
+
exports.buildNetworkIndex = buildNetworkIndex;
|
|
6977
7157
|
exports.celo = celo;
|
|
6978
7158
|
exports.corn = corn;
|
|
6979
7159
|
exports.etherlink = etherlink;
|
|
@@ -6996,6 +7176,11 @@
|
|
|
6996
7176
|
exports.metal = metal;
|
|
6997
7177
|
exports.monad = monad;
|
|
6998
7178
|
exports.moonbeam = moonbeam;
|
|
7179
|
+
exports.networkByAny = networkByAny;
|
|
7180
|
+
exports.networkByCAIP2 = networkByCAIP2;
|
|
7181
|
+
exports.networkById = networkById;
|
|
7182
|
+
exports.networkByName = networkByName;
|
|
7183
|
+
exports.networkByString = networkByString;
|
|
6999
7184
|
exports.nibiru = nibiru;
|
|
7000
7185
|
exports.optimism = optimism;
|
|
7001
7186
|
exports.parseCAIP2 = parseCAIP2;
|
package/dist/index-mjs.js
CHANGED
|
@@ -6912,6 +6912,123 @@ function fromCAIP2(caip2, chains) {
|
|
|
6912
6912
|
return chain;
|
|
6913
6913
|
}
|
|
6914
6914
|
|
|
6915
|
+
/**
|
|
6916
|
+
* Error thrown when a network cannot be found by any lookup method.
|
|
6917
|
+
*/
|
|
6918
|
+
class NetworkNotFoundError extends Error {
|
|
6919
|
+
constructor(input) {
|
|
6920
|
+
super(`chain not found: ${String(input)}`);
|
|
6921
|
+
this.name = "NetworkNotFoundError";
|
|
6922
|
+
}
|
|
6923
|
+
}
|
|
6924
|
+
/**
|
|
6925
|
+
* Build a lookup index from a list of chains for fast repeated lookups.
|
|
6926
|
+
* Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
|
|
6927
|
+
*/
|
|
6928
|
+
function buildNetworkIndex(chains) {
|
|
6929
|
+
const byId = new Map();
|
|
6930
|
+
const byName = new Map();
|
|
6931
|
+
const byCAIP2 = new Map();
|
|
6932
|
+
for (const chain of chains) {
|
|
6933
|
+
byId.set(chain.id, chain);
|
|
6934
|
+
byName.set(chain.internalName, chain);
|
|
6935
|
+
byCAIP2.set(`${chain.caip2Namespace}:${chain.id}`, chain);
|
|
6936
|
+
}
|
|
6937
|
+
return { byId, byName, byCAIP2 };
|
|
6938
|
+
}
|
|
6939
|
+
/**
|
|
6940
|
+
* Look up a chain by its numeric chain ID.
|
|
6941
|
+
*/
|
|
6942
|
+
function networkById$1(id, idx) {
|
|
6943
|
+
const chain = idx.byId.get(id);
|
|
6944
|
+
if (!chain) {
|
|
6945
|
+
throw new NetworkNotFoundError(id);
|
|
6946
|
+
}
|
|
6947
|
+
return chain;
|
|
6948
|
+
}
|
|
6949
|
+
/**
|
|
6950
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
6951
|
+
*/
|
|
6952
|
+
function networkByName$1(name, idx) {
|
|
6953
|
+
const chain = idx.byName.get(name);
|
|
6954
|
+
if (!chain) {
|
|
6955
|
+
throw new NetworkNotFoundError(name);
|
|
6956
|
+
}
|
|
6957
|
+
return chain;
|
|
6958
|
+
}
|
|
6959
|
+
/**
|
|
6960
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
6961
|
+
*/
|
|
6962
|
+
function networkByCAIP2$1(caip2, idx) {
|
|
6963
|
+
// Validate the format
|
|
6964
|
+
parseCAIP2(caip2);
|
|
6965
|
+
const chain = idx.byCAIP2.get(caip2);
|
|
6966
|
+
if (!chain) {
|
|
6967
|
+
throw new NetworkNotFoundError(caip2);
|
|
6968
|
+
}
|
|
6969
|
+
return chain;
|
|
6970
|
+
}
|
|
6971
|
+
/**
|
|
6972
|
+
* Look up a chain from a string. Tries, in order:
|
|
6973
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
6974
|
+
* 2. Internal name
|
|
6975
|
+
* 3. Numeric chain ID (parsed from string)
|
|
6976
|
+
*
|
|
6977
|
+
* Mirrors the Go `NetworkByString` function.
|
|
6978
|
+
*/
|
|
6979
|
+
function networkByString$1(s, idx) {
|
|
6980
|
+
if (s === "") {
|
|
6981
|
+
throw new NetworkNotFoundError("empty string");
|
|
6982
|
+
}
|
|
6983
|
+
// Try CAIP-2
|
|
6984
|
+
if (s.includes(":")) {
|
|
6985
|
+
return networkByCAIP2$1(s, idx);
|
|
6986
|
+
}
|
|
6987
|
+
// Try internal name
|
|
6988
|
+
const byName = idx.byName.get(s);
|
|
6989
|
+
if (byName) {
|
|
6990
|
+
return byName;
|
|
6991
|
+
}
|
|
6992
|
+
// Try numeric chain ID
|
|
6993
|
+
const parsed = Number(s);
|
|
6994
|
+
if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {
|
|
6995
|
+
const byId = idx.byId.get(Math.trunc(parsed));
|
|
6996
|
+
if (byId) {
|
|
6997
|
+
return byId;
|
|
6998
|
+
}
|
|
6999
|
+
}
|
|
7000
|
+
throw new NetworkNotFoundError(s);
|
|
7001
|
+
}
|
|
7002
|
+
/**
|
|
7003
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
7004
|
+
* - `number`: treated as chain ID
|
|
7005
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
7006
|
+
* internal name, then as a numeric chain ID string
|
|
7007
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
7008
|
+
*
|
|
7009
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
7010
|
+
*
|
|
7011
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7012
|
+
*/
|
|
7013
|
+
function networkByAny$1(v, idx) {
|
|
7014
|
+
if (v == null) {
|
|
7015
|
+
throw new NetworkNotFoundError("null");
|
|
7016
|
+
}
|
|
7017
|
+
// Pass-through if already a chain config object
|
|
7018
|
+
if (typeof v === "object" && "id" in v && "internalName" in v) {
|
|
7019
|
+
return v;
|
|
7020
|
+
}
|
|
7021
|
+
// Numeric chain ID
|
|
7022
|
+
if (typeof v === "number") {
|
|
7023
|
+
return networkById$1(Math.trunc(v), idx);
|
|
7024
|
+
}
|
|
7025
|
+
// String: CAIP-2, name, or numeric string
|
|
7026
|
+
if (typeof v === "string") {
|
|
7027
|
+
return networkByString$1(v, idx);
|
|
7028
|
+
}
|
|
7029
|
+
throw new NetworkNotFoundError(v);
|
|
7030
|
+
}
|
|
7031
|
+
|
|
6915
7032
|
const MAINNET_CHAINS = [
|
|
6916
7033
|
arbitrum,
|
|
6917
7034
|
base,
|
|
@@ -6962,5 +7079,66 @@ const MAINNET_CHAINS = [
|
|
|
6962
7079
|
gensyn,
|
|
6963
7080
|
pharos,
|
|
6964
7081
|
];
|
|
7082
|
+
/** Pre-built lookup index over MAINNET_CHAINS (like Go's module-level maps). */
|
|
7083
|
+
const _idx = buildNetworkIndex(MAINNET_CHAINS);
|
|
7084
|
+
/**
|
|
7085
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
7086
|
+
* - `number`: treated as chain ID
|
|
7087
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
7088
|
+
* internal name, then as a numeric chain ID string
|
|
7089
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
7090
|
+
*
|
|
7091
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
7092
|
+
*
|
|
7093
|
+
* @example
|
|
7094
|
+
* ```ts
|
|
7095
|
+
* import { networkByAny } from "@gfxlabs/oku-chains";
|
|
7096
|
+
*
|
|
7097
|
+
* networkByAny(1) // by chain ID
|
|
7098
|
+
* networkByAny("mainnet") // by internal name
|
|
7099
|
+
* networkByAny("eip155:1") // by CAIP-2
|
|
7100
|
+
* networkByAny("42161") // by chain ID string
|
|
7101
|
+
* ```
|
|
7102
|
+
*
|
|
7103
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7104
|
+
*/
|
|
7105
|
+
function networkByAny(v) {
|
|
7106
|
+
return networkByAny$1(v, _idx);
|
|
7107
|
+
}
|
|
7108
|
+
/**
|
|
7109
|
+
* Look up a chain by its numeric chain ID.
|
|
7110
|
+
*
|
|
7111
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7112
|
+
*/
|
|
7113
|
+
function networkById(id) {
|
|
7114
|
+
return networkById$1(id, _idx);
|
|
7115
|
+
}
|
|
7116
|
+
/**
|
|
7117
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
7118
|
+
*
|
|
7119
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7120
|
+
*/
|
|
7121
|
+
function networkByName(name) {
|
|
7122
|
+
return networkByName$1(name, _idx);
|
|
7123
|
+
}
|
|
7124
|
+
/**
|
|
7125
|
+
* Look up a chain from a string. Tries, in order:
|
|
7126
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
7127
|
+
* 2. Internal name
|
|
7128
|
+
* 3. Numeric chain ID (parsed from string)
|
|
7129
|
+
*
|
|
7130
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7131
|
+
*/
|
|
7132
|
+
function networkByString(s) {
|
|
7133
|
+
return networkByString$1(s, _idx);
|
|
7134
|
+
}
|
|
7135
|
+
/**
|
|
7136
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
7137
|
+
*
|
|
7138
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7139
|
+
*/
|
|
7140
|
+
function networkByCAIP2(caip2) {
|
|
7141
|
+
return networkByCAIP2$1(caip2, _idx);
|
|
7142
|
+
}
|
|
6965
7143
|
|
|
6966
|
-
export { MAINNET_CHAINS, arbitrum, avalanche, base, blast, bob, boba, bsc, celo, corn, etherlink, filecoin, formatCAIP2, fromCAIP2, gensyn, gnosis, goat, hemi, hyperevm, lens, lightlink, linea, lisk, mainnet, manta, mantle, matchain, metal, monad, moonbeam, nibiru, optimism, parseCAIP2, pharos, plasma, polygon, polygonZkEvm, redbelly, ronin, rootstock, saga, scroll, sei, sonic, taiko, telos, toCAIP2, tronShasta, unichain, worldchain, xdc, zerog, zkSync };
|
|
7144
|
+
export { MAINNET_CHAINS, NetworkNotFoundError, arbitrum, avalanche, base, blast, bob, boba, bsc, buildNetworkIndex, celo, corn, etherlink, filecoin, formatCAIP2, fromCAIP2, gensyn, gnosis, goat, hemi, hyperevm, lens, lightlink, linea, lisk, mainnet, manta, mantle, matchain, metal, monad, moonbeam, networkByAny, networkByCAIP2, networkById, networkByName, networkByString, nibiru, optimism, parseCAIP2, pharos, plasma, polygon, polygonZkEvm, redbelly, ronin, rootstock, saga, scroll, sei, sonic, taiko, telos, toCAIP2, tronShasta, unichain, worldchain, xdc, zerog, zkSync };
|
package/dist/index.js
CHANGED
|
@@ -6914,6 +6914,123 @@ function fromCAIP2(caip2, chains) {
|
|
|
6914
6914
|
return chain;
|
|
6915
6915
|
}
|
|
6916
6916
|
|
|
6917
|
+
/**
|
|
6918
|
+
* Error thrown when a network cannot be found by any lookup method.
|
|
6919
|
+
*/
|
|
6920
|
+
class NetworkNotFoundError extends Error {
|
|
6921
|
+
constructor(input) {
|
|
6922
|
+
super(`chain not found: ${String(input)}`);
|
|
6923
|
+
this.name = "NetworkNotFoundError";
|
|
6924
|
+
}
|
|
6925
|
+
}
|
|
6926
|
+
/**
|
|
6927
|
+
* Build a lookup index from a list of chains for fast repeated lookups.
|
|
6928
|
+
* Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
|
|
6929
|
+
*/
|
|
6930
|
+
function buildNetworkIndex(chains) {
|
|
6931
|
+
const byId = new Map();
|
|
6932
|
+
const byName = new Map();
|
|
6933
|
+
const byCAIP2 = new Map();
|
|
6934
|
+
for (const chain of chains) {
|
|
6935
|
+
byId.set(chain.id, chain);
|
|
6936
|
+
byName.set(chain.internalName, chain);
|
|
6937
|
+
byCAIP2.set(`${chain.caip2Namespace}:${chain.id}`, chain);
|
|
6938
|
+
}
|
|
6939
|
+
return { byId, byName, byCAIP2 };
|
|
6940
|
+
}
|
|
6941
|
+
/**
|
|
6942
|
+
* Look up a chain by its numeric chain ID.
|
|
6943
|
+
*/
|
|
6944
|
+
function networkById$1(id, idx) {
|
|
6945
|
+
const chain = idx.byId.get(id);
|
|
6946
|
+
if (!chain) {
|
|
6947
|
+
throw new NetworkNotFoundError(id);
|
|
6948
|
+
}
|
|
6949
|
+
return chain;
|
|
6950
|
+
}
|
|
6951
|
+
/**
|
|
6952
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
6953
|
+
*/
|
|
6954
|
+
function networkByName$1(name, idx) {
|
|
6955
|
+
const chain = idx.byName.get(name);
|
|
6956
|
+
if (!chain) {
|
|
6957
|
+
throw new NetworkNotFoundError(name);
|
|
6958
|
+
}
|
|
6959
|
+
return chain;
|
|
6960
|
+
}
|
|
6961
|
+
/**
|
|
6962
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
6963
|
+
*/
|
|
6964
|
+
function networkByCAIP2$1(caip2, idx) {
|
|
6965
|
+
// Validate the format
|
|
6966
|
+
parseCAIP2(caip2);
|
|
6967
|
+
const chain = idx.byCAIP2.get(caip2);
|
|
6968
|
+
if (!chain) {
|
|
6969
|
+
throw new NetworkNotFoundError(caip2);
|
|
6970
|
+
}
|
|
6971
|
+
return chain;
|
|
6972
|
+
}
|
|
6973
|
+
/**
|
|
6974
|
+
* Look up a chain from a string. Tries, in order:
|
|
6975
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
6976
|
+
* 2. Internal name
|
|
6977
|
+
* 3. Numeric chain ID (parsed from string)
|
|
6978
|
+
*
|
|
6979
|
+
* Mirrors the Go `NetworkByString` function.
|
|
6980
|
+
*/
|
|
6981
|
+
function networkByString$1(s, idx) {
|
|
6982
|
+
if (s === "") {
|
|
6983
|
+
throw new NetworkNotFoundError("empty string");
|
|
6984
|
+
}
|
|
6985
|
+
// Try CAIP-2
|
|
6986
|
+
if (s.includes(":")) {
|
|
6987
|
+
return networkByCAIP2$1(s, idx);
|
|
6988
|
+
}
|
|
6989
|
+
// Try internal name
|
|
6990
|
+
const byName = idx.byName.get(s);
|
|
6991
|
+
if (byName) {
|
|
6992
|
+
return byName;
|
|
6993
|
+
}
|
|
6994
|
+
// Try numeric chain ID
|
|
6995
|
+
const parsed = Number(s);
|
|
6996
|
+
if (!Number.isNaN(parsed) && Number.isFinite(parsed)) {
|
|
6997
|
+
const byId = idx.byId.get(Math.trunc(parsed));
|
|
6998
|
+
if (byId) {
|
|
6999
|
+
return byId;
|
|
7000
|
+
}
|
|
7001
|
+
}
|
|
7002
|
+
throw new NetworkNotFoundError(s);
|
|
7003
|
+
}
|
|
7004
|
+
/**
|
|
7005
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
7006
|
+
* - `number`: treated as chain ID
|
|
7007
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
7008
|
+
* internal name, then as a numeric chain ID string
|
|
7009
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
7010
|
+
*
|
|
7011
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
7012
|
+
*
|
|
7013
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7014
|
+
*/
|
|
7015
|
+
function networkByAny$1(v, idx) {
|
|
7016
|
+
if (v == null) {
|
|
7017
|
+
throw new NetworkNotFoundError("null");
|
|
7018
|
+
}
|
|
7019
|
+
// Pass-through if already a chain config object
|
|
7020
|
+
if (typeof v === "object" && "id" in v && "internalName" in v) {
|
|
7021
|
+
return v;
|
|
7022
|
+
}
|
|
7023
|
+
// Numeric chain ID
|
|
7024
|
+
if (typeof v === "number") {
|
|
7025
|
+
return networkById$1(Math.trunc(v), idx);
|
|
7026
|
+
}
|
|
7027
|
+
// String: CAIP-2, name, or numeric string
|
|
7028
|
+
if (typeof v === "string") {
|
|
7029
|
+
return networkByString$1(v, idx);
|
|
7030
|
+
}
|
|
7031
|
+
throw new NetworkNotFoundError(v);
|
|
7032
|
+
}
|
|
7033
|
+
|
|
6917
7034
|
const MAINNET_CHAINS = [
|
|
6918
7035
|
arbitrum,
|
|
6919
7036
|
base,
|
|
@@ -6964,8 +7081,70 @@ const MAINNET_CHAINS = [
|
|
|
6964
7081
|
gensyn,
|
|
6965
7082
|
pharos,
|
|
6966
7083
|
];
|
|
7084
|
+
/** Pre-built lookup index over MAINNET_CHAINS (like Go's module-level maps). */
|
|
7085
|
+
const _idx = buildNetworkIndex(MAINNET_CHAINS);
|
|
7086
|
+
/**
|
|
7087
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
7088
|
+
* - `number`: treated as chain ID
|
|
7089
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
7090
|
+
* internal name, then as a numeric chain ID string
|
|
7091
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
7092
|
+
*
|
|
7093
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
7094
|
+
*
|
|
7095
|
+
* @example
|
|
7096
|
+
* ```ts
|
|
7097
|
+
* import { networkByAny } from "@gfxlabs/oku-chains";
|
|
7098
|
+
*
|
|
7099
|
+
* networkByAny(1) // by chain ID
|
|
7100
|
+
* networkByAny("mainnet") // by internal name
|
|
7101
|
+
* networkByAny("eip155:1") // by CAIP-2
|
|
7102
|
+
* networkByAny("42161") // by chain ID string
|
|
7103
|
+
* ```
|
|
7104
|
+
*
|
|
7105
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7106
|
+
*/
|
|
7107
|
+
function networkByAny(v) {
|
|
7108
|
+
return networkByAny$1(v, _idx);
|
|
7109
|
+
}
|
|
7110
|
+
/**
|
|
7111
|
+
* Look up a chain by its numeric chain ID.
|
|
7112
|
+
*
|
|
7113
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7114
|
+
*/
|
|
7115
|
+
function networkById(id) {
|
|
7116
|
+
return networkById$1(id, _idx);
|
|
7117
|
+
}
|
|
7118
|
+
/**
|
|
7119
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
7120
|
+
*
|
|
7121
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7122
|
+
*/
|
|
7123
|
+
function networkByName(name) {
|
|
7124
|
+
return networkByName$1(name, _idx);
|
|
7125
|
+
}
|
|
7126
|
+
/**
|
|
7127
|
+
* Look up a chain from a string. Tries, in order:
|
|
7128
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
7129
|
+
* 2. Internal name
|
|
7130
|
+
* 3. Numeric chain ID (parsed from string)
|
|
7131
|
+
*
|
|
7132
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7133
|
+
*/
|
|
7134
|
+
function networkByString(s) {
|
|
7135
|
+
return networkByString$1(s, _idx);
|
|
7136
|
+
}
|
|
7137
|
+
/**
|
|
7138
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
7139
|
+
*
|
|
7140
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
7141
|
+
*/
|
|
7142
|
+
function networkByCAIP2(caip2) {
|
|
7143
|
+
return networkByCAIP2$1(caip2, _idx);
|
|
7144
|
+
}
|
|
6967
7145
|
|
|
6968
7146
|
exports.MAINNET_CHAINS = MAINNET_CHAINS;
|
|
7147
|
+
exports.NetworkNotFoundError = NetworkNotFoundError;
|
|
6969
7148
|
exports.arbitrum = arbitrum;
|
|
6970
7149
|
exports.avalanche = avalanche;
|
|
6971
7150
|
exports.base = base;
|
|
@@ -6973,6 +7152,7 @@ exports.blast = blast;
|
|
|
6973
7152
|
exports.bob = bob;
|
|
6974
7153
|
exports.boba = boba;
|
|
6975
7154
|
exports.bsc = bsc;
|
|
7155
|
+
exports.buildNetworkIndex = buildNetworkIndex;
|
|
6976
7156
|
exports.celo = celo;
|
|
6977
7157
|
exports.corn = corn;
|
|
6978
7158
|
exports.etherlink = etherlink;
|
|
@@ -6995,6 +7175,11 @@ exports.matchain = matchain;
|
|
|
6995
7175
|
exports.metal = metal;
|
|
6996
7176
|
exports.monad = monad;
|
|
6997
7177
|
exports.moonbeam = moonbeam;
|
|
7178
|
+
exports.networkByAny = networkByAny;
|
|
7179
|
+
exports.networkByCAIP2 = networkByCAIP2;
|
|
7180
|
+
exports.networkById = networkById;
|
|
7181
|
+
exports.networkByName = networkByName;
|
|
7182
|
+
exports.networkByString = networkByString;
|
|
6998
7183
|
exports.nibiru = nibiru;
|
|
6999
7184
|
exports.optimism = optimism;
|
|
7000
7185
|
exports.parseCAIP2 = parseCAIP2;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./definitions/index";
|
|
2
2
|
export * from "./spec/index";
|
|
3
3
|
export * from "./util/caip2";
|
|
4
|
+
export { NetworkNotFoundError, type NetworkIndex, buildNetworkIndex, } from "./util/lookup";
|
|
5
|
+
import type { IChainInfo } from "./spec";
|
|
4
6
|
export declare const MAINNET_CHAINS: readonly [Readonly<{
|
|
5
7
|
name: "Arbitrum";
|
|
6
8
|
launchTime: 1688997600;
|
|
@@ -10760,3 +10762,52 @@ export declare const MAINNET_CHAINS: readonly [Readonly<{
|
|
|
10760
10762
|
} & {
|
|
10761
10763
|
caip2Namespace: string;
|
|
10762
10764
|
}>];
|
|
10765
|
+
/**
|
|
10766
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
10767
|
+
* - `number`: treated as chain ID
|
|
10768
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
10769
|
+
* internal name, then as a numeric chain ID string
|
|
10770
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
10771
|
+
*
|
|
10772
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
10773
|
+
*
|
|
10774
|
+
* @example
|
|
10775
|
+
* ```ts
|
|
10776
|
+
* import { networkByAny } from "@gfxlabs/oku-chains";
|
|
10777
|
+
*
|
|
10778
|
+
* networkByAny(1) // by chain ID
|
|
10779
|
+
* networkByAny("mainnet") // by internal name
|
|
10780
|
+
* networkByAny("eip155:1") // by CAIP-2
|
|
10781
|
+
* networkByAny("42161") // by chain ID string
|
|
10782
|
+
* ```
|
|
10783
|
+
*
|
|
10784
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
10785
|
+
*/
|
|
10786
|
+
export declare function networkByAny(v: string | number | IChainInfo): IChainInfo;
|
|
10787
|
+
/**
|
|
10788
|
+
* Look up a chain by its numeric chain ID.
|
|
10789
|
+
*
|
|
10790
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
10791
|
+
*/
|
|
10792
|
+
export declare function networkById(id: number): IChainInfo;
|
|
10793
|
+
/**
|
|
10794
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
10795
|
+
*
|
|
10796
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
10797
|
+
*/
|
|
10798
|
+
export declare function networkByName(name: string): IChainInfo;
|
|
10799
|
+
/**
|
|
10800
|
+
* Look up a chain from a string. Tries, in order:
|
|
10801
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
10802
|
+
* 2. Internal name
|
|
10803
|
+
* 3. Numeric chain ID (parsed from string)
|
|
10804
|
+
*
|
|
10805
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
10806
|
+
*/
|
|
10807
|
+
export declare function networkByString(s: string): IChainInfo;
|
|
10808
|
+
/**
|
|
10809
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
10810
|
+
*
|
|
10811
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
10812
|
+
*/
|
|
10813
|
+
export declare function networkByCAIP2(caip2: string): IChainInfo;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { IChainInfo } from "../spec";
|
|
2
|
+
/**
|
|
3
|
+
* Error thrown when a network cannot be found by any lookup method.
|
|
4
|
+
*/
|
|
5
|
+
export declare class NetworkNotFoundError extends Error {
|
|
6
|
+
constructor(input: unknown);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Pre-computed lookup index for fast chain resolution.
|
|
10
|
+
*/
|
|
11
|
+
export interface NetworkIndex {
|
|
12
|
+
byId: Map<number, IChainInfo>;
|
|
13
|
+
byName: Map<string, IChainInfo>;
|
|
14
|
+
byCAIP2: Map<string, IChainInfo>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Build a lookup index from a list of chains for fast repeated lookups.
|
|
18
|
+
* Pre-computes maps keyed by chain ID, internal name, and CAIP-2 identifier.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildNetworkIndex(chains: readonly IChainInfo[]): NetworkIndex;
|
|
21
|
+
/**
|
|
22
|
+
* Look up a chain by its numeric chain ID.
|
|
23
|
+
*/
|
|
24
|
+
export declare function networkById(id: number, idx: NetworkIndex): IChainInfo;
|
|
25
|
+
/**
|
|
26
|
+
* Look up a chain by its internal name (e.g. "arbitrum", "mainnet").
|
|
27
|
+
*/
|
|
28
|
+
export declare function networkByName(name: string, idx: NetworkIndex): IChainInfo;
|
|
29
|
+
/**
|
|
30
|
+
* Look up a chain by its CAIP-2 identifier string (e.g. "eip155:1").
|
|
31
|
+
*/
|
|
32
|
+
export declare function networkByCAIP2(caip2: string, idx: NetworkIndex): IChainInfo;
|
|
33
|
+
/**
|
|
34
|
+
* Look up a chain from a string. Tries, in order:
|
|
35
|
+
* 1. CAIP-2 identifier (if the string contains ":")
|
|
36
|
+
* 2. Internal name
|
|
37
|
+
* 3. Numeric chain ID (parsed from string)
|
|
38
|
+
*
|
|
39
|
+
* Mirrors the Go `NetworkByString` function.
|
|
40
|
+
*/
|
|
41
|
+
export declare function networkByString(s: string, idx: NetworkIndex): IChainInfo;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve a chain from an arbitrary input. Accepts:
|
|
44
|
+
* - `number`: treated as chain ID
|
|
45
|
+
* - `string`: tried as CAIP-2 identifier (if it contains ":"), then as
|
|
46
|
+
* internal name, then as a numeric chain ID string
|
|
47
|
+
* - `IChainInfo`: returned directly (pass-through)
|
|
48
|
+
*
|
|
49
|
+
* Mirrors the Go `NetworkByAny` function.
|
|
50
|
+
*
|
|
51
|
+
* @throws {NetworkNotFoundError} if no matching chain is found
|
|
52
|
+
*/
|
|
53
|
+
export declare function networkByAny(v: string | number | IChainInfo, idx: NetworkIndex): IChainInfo;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gfxlabs/oku-chains",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index-mjs.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"typescript": "^5.9.3",
|
|
54
54
|
"viem": "^2.47.11"
|
|
55
55
|
},
|
|
56
|
-
"packageManager": "yarn@4.
|
|
56
|
+
"packageManager": "yarn@4.15.0",
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"viem": "2.x"
|
|
59
59
|
}
|