@hyperlane-xyz/registry 19.1.0 → 19.2.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.
Files changed (38) hide show
  1. package/dist/chainMetadata.js +2 -2
  2. package/dist/chains/celestiatestnet/metadata.js +1 -1
  3. package/dist/chains/celestiatestnet/metadata.json +1 -1
  4. package/dist/chains/celestiatestnet/metadata.yaml +1 -1
  5. package/dist/chains/paradex/metadata.js +1 -1
  6. package/dist/chains/paradex/metadata.json +1 -1
  7. package/dist/chains/paradex/metadata.yaml +1 -1
  8. package/dist/deployments/warp_routes/SEDA/base-ethereum-config.d.ts +2 -0
  9. package/dist/deployments/warp_routes/SEDA/base-ethereum-config.js +34 -0
  10. package/dist/deployments/warp_routes/SEDA/base-ethereum-config.json +34 -0
  11. package/dist/deployments/warp_routes/SEDA/base-ethereum-config.yaml +22 -0
  12. package/dist/deployments/warp_routes/TIA/basesepolia-celestiatestnet-config.d.ts +2 -0
  13. package/dist/deployments/warp_routes/TIA/basesepolia-celestiatestnet-config.js +33 -0
  14. package/dist/deployments/warp_routes/TIA/basesepolia-celestiatestnet-config.json +33 -0
  15. package/dist/deployments/warp_routes/TIA/basesepolia-celestiatestnet-config.yaml +21 -0
  16. package/dist/deployments/warp_routes/USDC/subtensor-config.d.ts +2 -0
  17. package/dist/deployments/warp_routes/USDC/subtensor-config.js +214 -0
  18. package/dist/deployments/warp_routes/USDC/subtensor-config.json +214 -0
  19. package/dist/deployments/warp_routes/USDC/subtensor-config.yaml +107 -0
  20. package/dist/fs/FileSystemRegistry.d.ts +2 -2
  21. package/dist/fs/registry-utils.js +7 -3
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.js +2 -1
  24. package/dist/registry/BaseRegistry.d.ts +2 -2
  25. package/dist/registry/GithubRegistry.d.ts +3 -2
  26. package/dist/registry/GithubRegistry.js +7 -0
  27. package/dist/registry/HttpClientRegistry.d.ts +34 -0
  28. package/dist/registry/HttpClientRegistry.js +149 -0
  29. package/dist/registry/IRegistry.d.ts +19 -11
  30. package/dist/registry/IRegistry.js +1 -0
  31. package/dist/registry/MergedRegistry.d.ts +3 -3
  32. package/dist/registry/MergedRegistry.js +8 -9
  33. package/dist/registry/SynchronousRegistry.d.ts +2 -2
  34. package/dist/registry/warp-utils.d.ts +1 -2
  35. package/dist/types.d.ts +4826 -1
  36. package/dist/types.js +15 -0
  37. package/dist/warpRouteConfigs.js +281 -0
  38. package/package.json +1 -1
@@ -1,5 +1,14 @@
1
1
  import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
2
- import { ChainAddresses, MaybePromise, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteId } from '../types.js';
2
+ import { ChainAddresses, MaybePromise, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteId, WarpRouteFilterParams, UpdateChainParams } from '../types.js';
3
+ type MethodsOf<T> = {
4
+ [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
5
+ }[keyof T];
6
+ /**
7
+ * A type listing all method names on IRegistry.
8
+ * It is derived from IRegistry to ensure it's always in sync.
9
+ * Omit is used to avoid a circular reference with the `unimplementedMethods` property.
10
+ */
11
+ export type IRegistryMethods = MethodsOf<Omit<IRegistry, 'unimplementedMethods'>>;
3
12
  export interface ChainFiles {
4
13
  metadata?: string;
5
14
  addresses?: string;
@@ -12,20 +21,12 @@ export interface RegistryContent {
12
21
  warpDeployConfig: Record<WarpRouteId, string>;
13
22
  };
14
23
  }
15
- export interface UpdateChainParams {
16
- chainName: ChainName;
17
- metadata?: ChainMetadata;
18
- addresses?: ChainAddresses;
19
- }
20
- export interface WarpRouteFilterParams {
21
- symbol?: string;
22
- label?: string;
23
- }
24
24
  export declare enum RegistryType {
25
25
  Github = "github",
26
26
  FileSystem = "filesystem",
27
27
  Merged = "merged",
28
- Partial = "partial"
28
+ Partial = "partial",
29
+ Http = "http"
29
30
  }
30
31
  export type AddWarpRouteConfigOptions = {
31
32
  symbol: string;
@@ -35,6 +36,12 @@ export type AddWarpRouteConfigOptions = {
35
36
  export interface IRegistry {
36
37
  type: RegistryType;
37
38
  uri: string;
39
+ /**
40
+ * An optional set of method names that are not implemented by the registry.
41
+ * If a method is in this set, it should not be called.
42
+ * If this property is undefined, all methods are assumed to be implemented.
43
+ */
44
+ readonly unimplementedMethods?: Set<IRegistryMethods>;
38
45
  getUri(itemPath?: string): string;
39
46
  listRegistryContent(): MaybePromise<RegistryContent>;
40
47
  getChains(): MaybePromise<Array<ChainName>>;
@@ -54,3 +61,4 @@ export interface IRegistry {
54
61
  getWarpDeployConfigs(filter?: WarpRouteFilterParams): MaybePromise<WarpDeployConfigMap>;
55
62
  merge(otherRegistry: IRegistry): IRegistry;
56
63
  }
64
+ export {};
@@ -4,4 +4,5 @@ export var RegistryType;
4
4
  RegistryType["FileSystem"] = "filesystem";
5
5
  RegistryType["Merged"] = "merged";
6
6
  RegistryType["Partial"] = "partial";
7
+ RegistryType["Http"] = "http";
7
8
  })(RegistryType || (RegistryType = {}));
@@ -1,7 +1,7 @@
1
1
  import type { Logger } from 'pino';
2
2
  import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
3
- import { ChainAddresses, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteId } from '../types.js';
4
- import { AddWarpRouteConfigOptions, IRegistry, RegistryContent, RegistryType, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
3
+ import { ChainAddresses, UpdateChainParams, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteFilterParams, WarpRouteId } from '../types.js';
4
+ import { AddWarpRouteConfigOptions, IRegistry, IRegistryMethods, RegistryContent, RegistryType } from './IRegistry.js';
5
5
  export interface MergedRegistryOptions {
6
6
  registries: Array<IRegistry>;
7
7
  logger?: Logger;
@@ -36,6 +36,6 @@ export declare class MergedRegistry implements IRegistry {
36
36
  addWarpRoute(config: WarpCoreConfig, options?: AddWarpRouteConfigOptions): Promise<void>;
37
37
  addWarpRouteConfig(config: WarpRouteDeployConfig, options: AddWarpRouteConfigOptions): Promise<void>;
38
38
  protected multiRegistryRead<R>(readFn: (registry: IRegistry) => Promise<R> | R): Promise<(Awaited<R> | Awaited<R>)[]>;
39
- protected multiRegistryWrite(writeFn: (registry: IRegistry) => Promise<void>, logMsg: string): Promise<void>;
39
+ protected multiRegistryWrite(writeFn: (registry: IRegistry) => Promise<void>, methodName: IRegistryMethods, logMsg: string): Promise<void>;
40
40
  merge(otherRegistry: IRegistry): IRegistry;
41
41
  }
@@ -53,13 +53,13 @@ export class MergedRegistry {
53
53
  return results.find((uri) => !!uri) || null;
54
54
  }
55
55
  async addChain(chain) {
56
- return this.multiRegistryWrite(async (registry) => await registry.addChain(chain), `adding chain ${chain.chainName}`);
56
+ return this.multiRegistryWrite(async (registry) => await registry.addChain(chain), 'addChain', `adding chain ${chain.chainName}`);
57
57
  }
58
58
  async updateChain(chain) {
59
- return this.multiRegistryWrite(async (registry) => await registry.updateChain(chain), `updating chain ${chain.chainName}`);
59
+ return this.multiRegistryWrite(async (registry) => await registry.updateChain(chain), 'updateChain', `updating chain ${chain.chainName}`);
60
60
  }
61
61
  async removeChain(chain) {
62
- return this.multiRegistryWrite(async (registry) => await registry.removeChain(chain), `removing chain ${chain}`);
62
+ return this.multiRegistryWrite(async (registry) => await registry.removeChain(chain), 'removeChain', `removing chain ${chain}`);
63
63
  }
64
64
  async getWarpRoute(id) {
65
65
  const results = await this.multiRegistryRead((r) => r.getWarpRoute(id));
@@ -78,19 +78,18 @@ export class MergedRegistry {
78
78
  return results.reduce((acc, content) => objMerge(acc, content), {});
79
79
  }
80
80
  async addWarpRoute(config, options) {
81
- return this.multiRegistryWrite(async (registry) => await registry.addWarpRoute(config, options), 'adding warp route');
81
+ return this.multiRegistryWrite(async (registry) => await registry.addWarpRoute(config, options), 'addWarpRoute', 'adding warp route');
82
82
  }
83
83
  async addWarpRouteConfig(config, options) {
84
- return this.multiRegistryWrite(async (registry) => await registry.addWarpRouteConfig(config, options), 'adding warp route deploy config');
84
+ return this.multiRegistryWrite(async (registry) => await registry.addWarpRouteConfig(config, options), 'addWarpRouteConfig', 'adding warp route deploy config');
85
85
  }
86
86
  multiRegistryRead(readFn) {
87
87
  return Promise.all(this.registries.map(readFn));
88
88
  }
89
- async multiRegistryWrite(writeFn, logMsg) {
89
+ async multiRegistryWrite(writeFn, methodName, logMsg) {
90
90
  for (const registry of this.registries) {
91
- // TODO remove this when GithubRegistry supports write methods
92
- if (registry.type === RegistryType.Github) {
93
- this.logger.warn(`Skipping ${logMsg} at ${registry.type} registry`);
91
+ if (registry.unimplementedMethods?.has(methodName)) {
92
+ this.logger.warn(`Skipping ${logMsg} at ${registry.type} registry (not supported)`);
94
93
  continue;
95
94
  }
96
95
  try {
@@ -1,7 +1,7 @@
1
1
  import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
2
- import { ChainAddresses, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteId } from '../types.js';
2
+ import { ChainAddresses, UpdateChainParams, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteFilterParams, WarpRouteId } from '../types.js';
3
3
  import { BaseRegistry } from './BaseRegistry.js';
4
- import { AddWarpRouteConfigOptions, IRegistry, RegistryContent, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
4
+ import { AddWarpRouteConfigOptions, IRegistry, RegistryContent } from './IRegistry.js';
5
5
  /**
6
6
  * Shared code for sync registries like the FileSystem and Partial registries.
7
7
  * This is required because of the inconsistent sync/async methods across registries.
@@ -1,6 +1,5 @@
1
1
  import { TokenStandard, type ChainMap, type WarpCoreConfig } from '@hyperlane-xyz/sdk';
2
- import { ChainAddresses, WarpRouteId } from '../types.js';
3
- import { WarpRouteFilterParams } from './IRegistry.js';
2
+ import { ChainAddresses, WarpRouteFilterParams, WarpRouteId } from '../types.js';
4
3
  /**
5
4
  * Converts from a full warp config to a map of chain addresses.
6
5
  */