@xyo-network/chain-bridge 1.15.2

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 (188) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +96 -0
  3. package/dist/node/driver/index.d.ts +2 -0
  4. package/dist/node/driver/index.d.ts.map +1 -0
  5. package/dist/node/driver/indexer/ChainBlockIteration/ChainHashIterationService.d.ts +24 -0
  6. package/dist/node/driver/indexer/ChainBlockIteration/ChainHashIterationService.d.ts.map +1 -0
  7. package/dist/node/driver/indexer/ChainBlockIteration/index.d.ts +2 -0
  8. package/dist/node/driver/indexer/ChainBlockIteration/index.d.ts.map +1 -0
  9. package/dist/node/driver/indexer/ChainBlocksObservable.d.ts +5 -0
  10. package/dist/node/driver/indexer/ChainBlocksObservable.d.ts.map +1 -0
  11. package/dist/node/driver/indexer/ChainHydratedBlocksObservable.d.ts +11 -0
  12. package/dist/node/driver/indexer/ChainHydratedBlocksObservable.d.ts.map +1 -0
  13. package/dist/node/driver/indexer/index.d.ts +2 -0
  14. package/dist/node/driver/indexer/index.d.ts.map +1 -0
  15. package/dist/node/driver/indexer/spec/ChainBlocksObservable.spec.d.ts +2 -0
  16. package/dist/node/driver/indexer/spec/ChainBlocksObservable.spec.d.ts.map +1 -0
  17. package/dist/node/driver/indexer/spec/ChainHydratedBlocksObservable.spec.d.ts +2 -0
  18. package/dist/node/driver/indexer/spec/ChainHydratedBlocksObservable.spec.d.ts.map +1 -0
  19. package/dist/node/driver/mongo/MongoMap.d.ts +17 -0
  20. package/dist/node/driver/mongo/MongoMap.d.ts.map +1 -0
  21. package/dist/node/driver/mongo/index.d.ts +2 -0
  22. package/dist/node/driver/mongo/index.d.ts.map +1 -0
  23. package/dist/node/driver/mongo/spec/MongoMap.spec.d.ts +2 -0
  24. package/dist/node/driver/mongo/spec/MongoMap.spec.d.ts.map +1 -0
  25. package/dist/node/index.d.ts +2 -0
  26. package/dist/node/index.d.ts.map +1 -0
  27. package/dist/node/index.mjs +751 -0
  28. package/dist/node/index.mjs.map +1 -0
  29. package/dist/node/interface/index.d.ts +5 -0
  30. package/dist/node/interface/index.d.ts.map +1 -0
  31. package/dist/node/interface/interface/ChainBridgeRelayInterface.d.ts +9 -0
  32. package/dist/node/interface/interface/ChainBridgeRelayInterface.d.ts.map +1 -0
  33. package/dist/node/interface/interface/IntentIndexerInterface.d.ts +6 -0
  34. package/dist/node/interface/interface/IntentIndexerInterface.d.ts.map +1 -0
  35. package/dist/node/interface/interface/LockingProcessorInterface.d.ts +9 -0
  36. package/dist/node/interface/interface/LockingProcessorInterface.d.ts.map +1 -0
  37. package/dist/node/interface/interface/ObservationIndexerInterface.d.ts +7 -0
  38. package/dist/node/interface/interface/ObservationIndexerInterface.d.ts.map +1 -0
  39. package/dist/node/interface/interface/Params.d.ts +26 -0
  40. package/dist/node/interface/interface/Params.d.ts.map +1 -0
  41. package/dist/node/interface/interface/RelayInterface.d.ts +8 -0
  42. package/dist/node/interface/interface/RelayInterface.d.ts.map +1 -0
  43. package/dist/node/interface/interface/index.d.ts +7 -0
  44. package/dist/node/interface/interface/index.d.ts.map +1 -0
  45. package/dist/node/interface/repository/RepositoryInterface.d.ts +22 -0
  46. package/dist/node/interface/repository/RepositoryInterface.d.ts.map +1 -0
  47. package/dist/node/interface/repository/index.d.ts +2 -0
  48. package/dist/node/interface/repository/index.d.ts.map +1 -0
  49. package/dist/node/interface/service/ChainBridgeRelay/ChainBridgeRelayInterface.d.ts +9 -0
  50. package/dist/node/interface/service/ChainBridgeRelay/ChainBridgeRelayInterface.d.ts.map +1 -0
  51. package/dist/node/interface/service/ChainBridgeRelay/ChainBridgeRelayService.d.ts +31 -0
  52. package/dist/node/interface/service/ChainBridgeRelay/ChainBridgeRelayService.d.ts.map +1 -0
  53. package/dist/node/interface/service/ChainBridgeRelay/index.d.ts +2 -0
  54. package/dist/node/interface/service/ChainBridgeRelay/index.d.ts.map +1 -0
  55. package/dist/node/interface/service/ChainBridgeRelay/spec/ChainBridgeRelayService.spec.d.ts +2 -0
  56. package/dist/node/interface/service/ChainBridgeRelay/spec/ChainBridgeRelayService.spec.d.ts.map +1 -0
  57. package/dist/node/interface/service/Observer/Observer.d.ts +15 -0
  58. package/dist/node/interface/service/Observer/Observer.d.ts.map +1 -0
  59. package/dist/node/interface/service/Observer/index.d.ts +2 -0
  60. package/dist/node/interface/service/Observer/index.d.ts.map +1 -0
  61. package/dist/node/interface/service/index.d.ts +3 -0
  62. package/dist/node/interface/service/index.d.ts.map +1 -0
  63. package/dist/node/interface/util/getBridgeIntentIdentifier.d.ts +5 -0
  64. package/dist/node/interface/util/getBridgeIntentIdentifier.d.ts.map +1 -0
  65. package/dist/node/interface/util/index.d.ts +2 -0
  66. package/dist/node/interface/util/index.d.ts.map +1 -0
  67. package/dist/node/manifest/getLocator.d.ts +14 -0
  68. package/dist/node/manifest/getLocator.d.ts.map +1 -0
  69. package/dist/node/manifest/getNode.d.ts +15 -0
  70. package/dist/node/manifest/getNode.d.ts.map +1 -0
  71. package/dist/node/manifest/index.d.ts +6 -0
  72. package/dist/node/manifest/index.d.ts.map +1 -0
  73. package/dist/node/manifest/nodeManifest.d.ts +6 -0
  74. package/dist/node/manifest/nodeManifest.d.ts.map +1 -0
  75. package/dist/node/manifest/private/index.d.ts +5 -0
  76. package/dist/node/manifest/private/index.d.ts.map +1 -0
  77. package/dist/node/manifest/public/index.d.ts +14 -0
  78. package/dist/node/manifest/public/index.d.ts.map +1 -0
  79. package/dist/node/manifest/public/spec/Node.spec.d.ts +2 -0
  80. package/dist/node/manifest/public/spec/Node.spec.d.ts.map +1 -0
  81. package/dist/node/server/app.d.ts +4 -0
  82. package/dist/node/server/app.d.ts.map +1 -0
  83. package/dist/node/server/index.d.ts +11 -0
  84. package/dist/node/server/index.d.ts.map +1 -0
  85. package/dist/node/server/instrumentation.d.ts +9 -0
  86. package/dist/node/server/instrumentation.d.ts.map +1 -0
  87. package/dist/node/server/routes/addRoutes.d.ts +3 -0
  88. package/dist/node/server/routes/addRoutes.d.ts.map +1 -0
  89. package/dist/node/server/routes/address/AddressPathParams.d.ts +4 -0
  90. package/dist/node/server/routes/address/AddressPathParams.d.ts.map +1 -0
  91. package/dist/node/server/routes/address/addNodeRoutes.d.ts +3 -0
  92. package/dist/node/server/routes/address/addNodeRoutes.d.ts.map +1 -0
  93. package/dist/node/server/routes/address/get/get.d.ts +4 -0
  94. package/dist/node/server/routes/address/get/get.d.ts.map +1 -0
  95. package/dist/node/server/routes/address/get/index.d.ts +2 -0
  96. package/dist/node/server/routes/address/get/index.d.ts.map +1 -0
  97. package/dist/node/server/routes/address/index.d.ts +2 -0
  98. package/dist/node/server/routes/address/index.d.ts.map +1 -0
  99. package/dist/node/server/routes/address/post/getQueryConfig.d.ts +6 -0
  100. package/dist/node/server/routes/address/post/getQueryConfig.d.ts.map +1 -0
  101. package/dist/node/server/routes/address/post/index.d.ts +2 -0
  102. package/dist/node/server/routes/address/post/index.d.ts.map +1 -0
  103. package/dist/node/server/routes/address/post/post.d.ts +8 -0
  104. package/dist/node/server/routes/address/post/post.d.ts.map +1 -0
  105. package/dist/node/server/routes/dataLake/addDataLakeRoutes.d.ts +3 -0
  106. package/dist/node/server/routes/dataLake/addDataLakeRoutes.d.ts.map +1 -0
  107. package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts +10 -0
  108. package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts.map +1 -0
  109. package/dist/node/server/routes/dataLake/index.d.ts +2 -0
  110. package/dist/node/server/routes/dataLake/index.d.ts.map +1 -0
  111. package/dist/node/server/routes/healthz/get.d.ts +3 -0
  112. package/dist/node/server/routes/healthz/get.d.ts.map +1 -0
  113. package/dist/node/server/routes/healthz/index.d.ts +2 -0
  114. package/dist/node/server/routes/healthz/index.d.ts.map +1 -0
  115. package/dist/node/server/routes/index.d.ts +5 -0
  116. package/dist/node/server/routes/index.d.ts.map +1 -0
  117. package/dist/node/server/routes/rpc/index.d.ts +2 -0
  118. package/dist/node/server/routes/rpc/index.d.ts.map +1 -0
  119. package/dist/node/server/routes/rpc/routes/addRpcRoutes.d.ts +3 -0
  120. package/dist/node/server/routes/rpc/routes/addRpcRoutes.d.ts.map +1 -0
  121. package/dist/node/server/routes/rpc/routes/index.d.ts +2 -0
  122. package/dist/node/server/routes/rpc/routes/index.d.ts.map +1 -0
  123. package/dist/node/server/server.d.ts +11 -0
  124. package/dist/node/server/server.d.ts.map +1 -0
  125. package/package.json +125 -0
  126. package/src/driver/index.ts +1 -0
  127. package/src/driver/indexer/ChainBlockIteration/ChainHashIterationService.ts +87 -0
  128. package/src/driver/indexer/ChainBlockIteration/index.ts +1 -0
  129. package/src/driver/indexer/ChainBlocksObservable.ts +47 -0
  130. package/src/driver/indexer/ChainHydratedBlocksObservable.ts +23 -0
  131. package/src/driver/indexer/index.ts +1 -0
  132. package/src/driver/indexer/spec/ChainBlocksObservable.spec.ts +58 -0
  133. package/src/driver/indexer/spec/ChainHydratedBlocksObservable.spec.ts +58 -0
  134. package/src/driver/mongo/MongoMap.ts +62 -0
  135. package/src/driver/mongo/index.ts +1 -0
  136. package/src/driver/mongo/spec/MongoMap.spec.ts +67 -0
  137. package/src/index.ts +1 -0
  138. package/src/interface/index.ts +4 -0
  139. package/src/interface/interface/ChainBridgeRelayInterface.ts +9 -0
  140. package/src/interface/interface/IntentIndexerInterface.ts +7 -0
  141. package/src/interface/interface/LockingProcessorInterface.ts +10 -0
  142. package/src/interface/interface/ObservationIndexerInterface.ts +12 -0
  143. package/src/interface/interface/Params.ts +26 -0
  144. package/src/interface/interface/RelayInterface.ts +8 -0
  145. package/src/interface/interface/index.ts +6 -0
  146. package/src/interface/repository/RepositoryInterface.ts +28 -0
  147. package/src/interface/repository/index.ts +1 -0
  148. package/src/interface/service/ChainBridgeRelay/ChainBridgeRelayInterface.ts +11 -0
  149. package/src/interface/service/ChainBridgeRelay/ChainBridgeRelayService.ts +116 -0
  150. package/src/interface/service/ChainBridgeRelay/index.ts +1 -0
  151. package/src/interface/service/ChainBridgeRelay/spec/ChainBridgeRelayService.spec.ts +264 -0
  152. package/src/interface/service/Observer/Observer.ts +48 -0
  153. package/src/interface/service/Observer/index.ts +1 -0
  154. package/src/interface/service/index.ts +2 -0
  155. package/src/interface/util/getBridgeIntentIdentifier.ts +18 -0
  156. package/src/interface/util/index.ts +1 -0
  157. package/src/manifest/getLocator.ts +105 -0
  158. package/src/manifest/getNode.ts +32 -0
  159. package/src/manifest/index.ts +5 -0
  160. package/src/manifest/node.json +17 -0
  161. package/src/manifest/nodeManifest.ts +8 -0
  162. package/src/manifest/private/index.ts +4 -0
  163. package/src/manifest/public/Chain.json +138 -0
  164. package/src/manifest/public/Pending.json +35 -0
  165. package/src/manifest/public/index.ts +20 -0
  166. package/src/manifest/public/spec/Node.spec.ts +32 -0
  167. package/src/server/app.ts +37 -0
  168. package/src/server/index.ts +13 -0
  169. package/src/server/instrumentation.ts +15 -0
  170. package/src/server/routes/addRoutes.ts +11 -0
  171. package/src/server/routes/address/AddressPathParams.ts +3 -0
  172. package/src/server/routes/address/addNodeRoutes.ts +21 -0
  173. package/src/server/routes/address/get/get.ts +33 -0
  174. package/src/server/routes/address/get/index.ts +1 -0
  175. package/src/server/routes/address/index.ts +1 -0
  176. package/src/server/routes/address/post/getQueryConfig.ts +23 -0
  177. package/src/server/routes/address/post/index.ts +1 -0
  178. package/src/server/routes/address/post/post.ts +77 -0
  179. package/src/server/routes/dataLake/addDataLakeRoutes.ts +9 -0
  180. package/src/server/routes/dataLake/archivistMiddleware.ts +86 -0
  181. package/src/server/routes/dataLake/index.ts +1 -0
  182. package/src/server/routes/healthz/get.ts +20 -0
  183. package/src/server/routes/healthz/index.ts +1 -0
  184. package/src/server/routes/index.ts +5 -0
  185. package/src/server/routes/rpc/index.ts +1 -0
  186. package/src/server/routes/rpc/routes/addRpcRoutes.ts +22 -0
  187. package/src/server/routes/rpc/routes/index.ts +1 -0
  188. package/src/server/server.ts +59 -0
@@ -0,0 +1,4 @@
1
+ export type AddressPathParams = {
2
+ address: string;
3
+ };
4
+ //# sourceMappingURL=AddressPathParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddressPathParams.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/address/AddressPathParams.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Express } from 'express';
2
+ export declare const addNodeRoutes: (app: Express) => void;
3
+ //# sourceMappingURL=addNodeRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addNodeRoutes.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/address/addNodeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,SAczC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Payload } from '@xyo-network/payload-model';
2
+ import type { AddressPathParams } from '../AddressPathParams.ts';
3
+ export declare const getAddress: (req: import("express").Request<AddressPathParams, Payload[], any, import("qs").ParsedQs, Record<string, any>>, res: import("express").Response<Payload[], Record<string, any>>, next: import("express").NextFunction) => Promise<unknown>;
4
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/get/get.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAwBhE,eAAO,MAAM,UAAU,4OAAwB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './get.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/get/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './addNodeRoutes.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/address/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
+ import type { ModuleConfig, ModuleInstance } from '@xyo-network/module-model';
3
+ import type { Payload } from '@xyo-network/payload-model';
4
+ import type { Request } from 'express';
5
+ export declare const getQueryConfig: (mod: ModuleInstance, req: Request, bw: QueryBoundWitness, payloads?: Payload[]) => ModuleConfig | undefined;
6
+ //# sourceMappingURL=getQueryConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getQueryConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/post/getQueryConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEtF,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAItC,eAAO,MAAM,cAAc,GAAI,KAAK,cAAc,EAAE,KAAK,OAAO,EAAE,IAAI,iBAAiB,EAAE,WAAW,OAAO,EAAE,KAAG,YAAY,GAAG,SAa9H,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './post.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/post/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { type QueryBoundWitness } from '@xyo-network/boundwitness-model';
2
+ import type { ModuleQueryResult } from '@xyo-network/module-model';
3
+ import type { ModuleError, Payload } from '@xyo-network/payload-model';
4
+ import type { AddressPathParams } from '../AddressPathParams.ts';
5
+ type PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]];
6
+ export declare const postAddress: (req: import("express").Request<AddressPathParams, ModuleError | ModuleQueryResult, PostAddressRequestBody, import("qs").ParsedQs, Record<string, any>>, res: import("express").Response<ModuleError | ModuleQueryResult, Record<string, any>>, next: import("express").NextFunction) => Promise<unknown>;
7
+ export {};
8
+ //# sourceMappingURL=post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/post/post.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE7F,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAItE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,KAAK,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC,CAAA;AA2DxE,eAAO,MAAM,WAAW,2SAAwB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Express } from 'express';
2
+ export declare const addDataLakeRoutes: (app: Express) => void;
3
+ //# sourceMappingURL=addDataLakeRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addDataLakeRoutes.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/dataLake/addDataLakeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAItC,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,SAI7C,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { ModuleIdentifier } from '@xyo-network/module-model';
2
+ import type { NodeInstance } from '@xyo-network/node-model';
3
+ import type { Router } from 'express';
4
+ type ArchivistMiddlewareOptions = {
5
+ archivistModuleIdentifier: ModuleIdentifier;
6
+ node: NodeInstance;
7
+ };
8
+ export declare const archivistMiddleware: (options: ArchivistMiddlewareOptions) => Router;
9
+ export {};
10
+ //# sourceMappingURL=archivistMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archivistMiddleware.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/dataLake/archivistMiddleware.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAI3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAiBrC,KAAK,0BAA0B,GAAG;IAChC,yBAAyB,EAAE,gBAAgB,CAAA;IAC3C,IAAI,EAAE,YAAY,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,MAkDzE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './addDataLakeRoutes.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/dataLake/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { RequestHandler } from 'express';
2
+ export declare const getHealthz: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
3
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/get.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiB7C,eAAO,MAAM,UAAU,4HAAU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './get.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './address/index.ts';
2
+ export * from './addRoutes.ts';
3
+ export * from './healthz/index.ts';
4
+ export * from './rpc/index.ts';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAElC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './routes/index.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/rpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Express } from 'express';
2
+ export declare const addRpcRoutes: (app: Express) => void;
3
+ //# sourceMappingURL=addRpcRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addRpcRoutes.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/rpc/routes/addRpcRoutes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,eAAO,MAAM,YAAY,GAAI,KAAK,OAAO,SAaxC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './addRpcRoutes.ts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/rpc/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { Logger } from '@xylabs/logger';
2
+ import type { NodeInstance } from '@xyo-network/node-model';
3
+ import { type Config } from '@xyo-network/xl1-protocol-sdk';
4
+ interface GetServerContext {
5
+ config: Config;
6
+ logger?: Logger;
7
+ node?: NodeInstance;
8
+ }
9
+ export declare const getServer: (context: GetServerContext) => Promise<import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>>;
10
+ export {};
11
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAI5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAA;AA8B3D,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,eAAO,MAAM,SAAS,GAAU,SAAS,gBAAgB,gHAexD,CAAA"}
package/package.json ADDED
@@ -0,0 +1,125 @@
1
+ {
2
+ "name": "@xyo-network/chain-bridge",
3
+ "version": "1.15.2",
4
+ "description": "XYO Layer One Bridge",
5
+ "homepage": "https://xylabs.com",
6
+ "bugs": {
7
+ "url": "git+https://github.com/xylabs/xyo-chain/issues",
8
+ "email": "support@xylabs.com"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/xylabs/xyo-chain.git"
13
+ },
14
+ "license": "LGPL-3.0-only",
15
+ "author": {
16
+ "name": "XY Labs Development Team",
17
+ "email": "support@xylabs.com",
18
+ "url": "https://xylabs.com"
19
+ },
20
+ "sideEffects": false,
21
+ "type": "module",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/node/index.d.ts",
25
+ "source": "./src/index.ts",
26
+ "default": "./dist/node/index.mjs"
27
+ },
28
+ "./package.json": "./package.json",
29
+ "./README.md": "./README.md"
30
+ },
31
+ "module": "./dist/node/index.mjs",
32
+ "source": "./src/index.ts",
33
+ "types": "./dist/node/index.d.ts",
34
+ "files": [
35
+ "dist",
36
+ "src"
37
+ ],
38
+ "scripts": {
39
+ "build-tests": "tsc --noEmit --lib dom,esnext",
40
+ "deploy": "echo Deploy not allowed!",
41
+ "deploy3": "echo Deploy3 not allowed!",
42
+ "start": "nodemon",
43
+ "start-esm": "node ./dist/node/index.mjs",
44
+ "test": "vitest run",
45
+ "test:ci": "vitest run",
46
+ "types": "tsc --noEmit -p tsconfig.test.json"
47
+ },
48
+ "dependencies": {
49
+ "@opentelemetry/instrumentation": "~0.205.0",
50
+ "@opentelemetry/instrumentation-express": "~0.54.0",
51
+ "@opentelemetry/instrumentation-http": "~0.205.0",
52
+ "@xylabs/assert": "~5.0.11",
53
+ "@xylabs/creatable": "~5.0.11",
54
+ "@xylabs/express": "~5.0.11",
55
+ "@xylabs/hex": "~5.0.11",
56
+ "@xylabs/logger": "~5.0.11",
57
+ "@xylabs/mongo": "~5.0.11",
58
+ "@xylabs/typeof": "~5.0.11",
59
+ "@xyo-network/archivist-memory": "~5.1.3",
60
+ "@xyo-network/archivist-model": "~5.1.3",
61
+ "@xyo-network/archivist-mongodb": "~5.1.3",
62
+ "@xyo-network/archivist-view": "~5.1.3",
63
+ "@xyo-network/bios": "~7.1.0",
64
+ "@xyo-network/boundwitness-model": "~5.1.3",
65
+ "@xyo-network/chain-modules": "~1.15.2",
66
+ "@xyo-network/chain-protocol": "~1.15.2",
67
+ "@xyo-network/chain-rpc": "~1.15.2",
68
+ "@xyo-network/chain-telemetry": "~1.15.2",
69
+ "@xyo-network/manifest-model": "~5.1.3",
70
+ "@xyo-network/manifest-wrapper": "~5.1.3",
71
+ "@xyo-network/module-abstract": "~5.1.3",
72
+ "@xyo-network/module-factory-locator": "~5.1.3",
73
+ "@xyo-network/module-model": "~5.1.3",
74
+ "@xyo-network/node-model": "~5.1.3",
75
+ "@xyo-network/payload-builder": "~5.1.3",
76
+ "@xyo-network/payload-model": "~5.1.3",
77
+ "@xyo-network/sentinel-memory": "~5.1.3",
78
+ "@xyo-network/wallet": "~5.1.3",
79
+ "@xyo-network/wallet-model": "~5.1.3",
80
+ "@xyo-network/xl1-protocol-sdk": "~1.15.2",
81
+ "@xyo-network/xl1-rpc": "~1.15.2",
82
+ "compression": "~1.8.1",
83
+ "cors": "~2.8.5",
84
+ "express": "~5.1.0",
85
+ "http-status-codes": "~2.3.0",
86
+ "mongodb": "~6.20.0",
87
+ "rxjs": "~7.8.2"
88
+ },
89
+ "devDependencies": {
90
+ "@types/compression": "~1.8.1",
91
+ "@types/cors": "~2.8.19",
92
+ "@types/express": "5.0.3",
93
+ "@types/express-serve-static-core": "~5.0.7",
94
+ "@types/node": "~24.5.2",
95
+ "@xylabs/base": "~5.0.11",
96
+ "@xylabs/object": "~5.0.11",
97
+ "@xylabs/promise": "~5.0.11",
98
+ "@xylabs/ts-scripts-yarn3": "~7.1.7",
99
+ "@xylabs/tsconfig": "~7.1.7",
100
+ "@xyo-network/account": "~5.1.3",
101
+ "@xyo-network/account-model": "~5.1.3",
102
+ "@xyo-network/archivist-abstract": "~5.1.3",
103
+ "@xyo-network/bios-model": "~7.1.0",
104
+ "@xyo-network/boundwitness-builder": "~5.1.3",
105
+ "@xyo-network/chain-services": "~1.15.2",
106
+ "@xyo-network/module-abstract-mongodb": "~5.1.3",
107
+ "@xyo-network/module-model-mongodb": "~5.1.3",
108
+ "@xyo-network/node-memory": "~5.1.3",
109
+ "@xyo-network/xl1-protocol": "~1.12.40",
110
+ "dotenv": "~17.2.2",
111
+ "eslint": "^9.36.0",
112
+ "nodemon": "~3.1.10",
113
+ "tslib": "~2.8.1",
114
+ "typescript": "~5.9.2",
115
+ "vitest": "~3.2.4",
116
+ "vitest-mock-extended": "~3.1.0"
117
+ },
118
+ "engines": {
119
+ "node": ">=22.3 <23"
120
+ },
121
+ "engineStrict": true,
122
+ "publishConfig": {
123
+ "access": "restricted"
124
+ }
125
+ }
@@ -0,0 +1 @@
1
+ export * from './mongo/index.ts'
@@ -0,0 +1,87 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Hash, Hex } from '@xylabs/hex'
3
+ import type { Promisable } from '@xylabs/promise'
4
+ import {
5
+ isDefined, isNull, isUndefined,
6
+ } from '@xylabs/typeof'
7
+ import type { ArchivistInstance } from '@xyo-network/archivist-model'
8
+ import type { BaseServiceParams } from '@xyo-network/chain-services'
9
+ import { BaseService } from '@xyo-network/chain-services'
10
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
11
+ import type { WithStorageMeta } from '@xyo-network/payload-model'
12
+ import {
13
+ asBlockBoundWitnessWithStorageMeta, type BlockBoundWitness, type ChainIteratorServiceEventData, type EventingChainHashIteratorService,
14
+ isBlockBoundWitnessWithStorageMeta,
15
+ } from '@xyo-network/xl1-protocol'
16
+
17
+ export interface ChainHashIterationServiceParams extends BaseServiceParams {
18
+ chainArchivist: ArchivistInstance
19
+ head: BlockBoundWitness
20
+ }
21
+
22
+ export class ChainHashIterationService extends BaseService<ChainHashIterationServiceParams, ChainIteratorServiceEventData>
23
+ implements EventingChainHashIteratorService {
24
+ protected _currentHead: WithStorageMeta<BlockBoundWitness> | undefined
25
+
26
+ get chainArchivist(): ArchivistInstance { return assertEx(this.params.chainArchivist) }
27
+
28
+ get chainId(): Hex { return assertEx(this._currentHead?.chain ?? this.params?.head?.chain, () => 'Current head is not set') }
29
+
30
+ get(id: Hash): Promisable<BlockBoundWitness | undefined> {
31
+ return this.getHashAsBlockBoundWitnessWithStorageMeta(id)
32
+ }
33
+
34
+ async head(): Promise<WithStorageMeta<BlockBoundWitness>> {
35
+ if (isDefined(this._currentHead)) return this._currentHead
36
+ if (isDefined(this.params.head)) {
37
+ const newHead = await this.getBoundWitnessAsBlockBoundWitnessWithStorageMeta(this.params.head)
38
+ this._currentHead = newHead
39
+ return newHead
40
+ }
41
+ throw new Error('Head is not set')
42
+ }
43
+
44
+ async next(_id: Hex): Promise<WithStorageMeta<BlockBoundWitness> | undefined> {
45
+ await Promise.resolve() // to make this function async
46
+ throw new Error('Next method not implemented for ChainHashIterationService.')
47
+ }
48
+
49
+ async previous(block: Hash | undefined = undefined, count: number = 1): Promise<WithStorageMeta<BlockBoundWitness>[]> {
50
+ const results: WithStorageMeta<BlockBoundWitness>[] = []
51
+ let currentBlock: WithStorageMeta<BlockBoundWitness> | undefined = await this.head()
52
+ if (isDefined(block)) {
53
+ currentBlock = await this.getHashAsBlockBoundWitnessWithStorageMeta(block)
54
+ }
55
+ while (currentBlock && results.length < count) {
56
+ if (isBlockBoundWitnessWithStorageMeta(currentBlock)) {
57
+ results.push(currentBlock)
58
+ const { previous } = currentBlock
59
+ if (isNull(previous)) break
60
+ const nextBlock = await this.chainArchivist.get([previous])
61
+ currentBlock = asBlockBoundWitnessWithStorageMeta(nextBlock[0])
62
+ } else {
63
+ const hash = await PayloadBuilder.hash(currentBlock)
64
+ assertEx(asBlockBoundWitnessWithStorageMeta(currentBlock), () => `Expected hash to be a block bound witness [${hash}]`)
65
+ }
66
+ }
67
+ return results
68
+ }
69
+
70
+ async updateHead(head: BlockBoundWitness): Promise<void> {
71
+ const newHead = await this.getBoundWitnessAsBlockBoundWitnessWithStorageMeta(head)
72
+ this._currentHead = newHead
73
+ void this.emit('headUpdated', { blocks: [newHead] })
74
+ }
75
+
76
+ private async getBoundWitnessAsBlockBoundWitnessWithStorageMeta(head: BlockBoundWitness): Promise<WithStorageMeta<BlockBoundWitness>> {
77
+ const hash = await PayloadBuilder.hash(head)
78
+ return this.getHashAsBlockBoundWitnessWithStorageMeta(hash)
79
+ }
80
+
81
+ private async getHashAsBlockBoundWitnessWithStorageMeta(hash: Hash): Promise<WithStorageMeta<BlockBoundWitness>> {
82
+ const stored = (await this.chainArchivist.get([hash])).at(-1)
83
+ const bw = asBlockBoundWitnessWithStorageMeta(stored)
84
+ if (isUndefined(bw)) throw new Error(`Block not found in archivist [${hash}]`)
85
+ return bw
86
+ }
87
+ }
@@ -0,0 +1 @@
1
+ export * from './ChainHashIterationService.ts'
@@ -0,0 +1,47 @@
1
+ import { isDefined, isUndefined } from '@xylabs/typeof'
2
+ import type { WithStorageMeta } from '@xyo-network/payload-model'
3
+ import type {
4
+ BlockBoundWitness, EventingChainBlockNumberIteratorService, HeadEventArgs,
5
+ } from '@xyo-network/xl1-protocol'
6
+ import type { Observable } from 'rxjs'
7
+ import {
8
+ concatMap, defer, fromEvent, mergeMap,
9
+ } from 'rxjs'
10
+
11
+ export const chainBlocks$ = (
12
+ chainIterator: EventingChainBlockNumberIteratorService,
13
+ ): Observable<WithStorageMeta<BlockBoundWitness>> => {
14
+ // Event source: head updated
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ const headUpdates$ = fromEvent<HeadEventArgs>(chainIterator as any, 'headUpdated')
17
+
18
+ return defer(async () => {
19
+ // seed with current head (optional)
20
+ const head = await chainIterator.head()
21
+ return head
22
+ }).pipe(
23
+ // merge initial head + updates into a single stream
24
+ mergeMap((firstHead) => {
25
+ let lastSeen: number | undefined = firstHead.block
26
+
27
+ return headUpdates$.pipe(
28
+ concatMap(async (blocks: HeadEventArgs) => {
29
+ // walk backwards from newHead until we reach lastSeen
30
+ const history: WithStorageMeta<BlockBoundWitness>[] = []
31
+ const newHead = blocks.blocks.at(-1)
32
+ let cursor: number | undefined = newHead?.block
33
+ while (isDefined(cursor) && (isUndefined(lastSeen) || cursor > lastSeen)) {
34
+ const blocks = await chainIterator.previous(cursor, 1)
35
+ if (blocks.length === 0) break
36
+ history.push(blocks[0])
37
+ cursor = blocks[0].block - 1
38
+ }
39
+ if (isDefined(newHead)) lastSeen = newHead.block
40
+ // emit in ascending order
41
+ return history.toReversed()
42
+ }),
43
+ mergeMap(blocks => blocks), // flatten
44
+ )
45
+ }),
46
+ )
47
+ }
@@ -0,0 +1,23 @@
1
+ import type { ReadArchivist } from '@xyo-network/archivist-model'
2
+ import type { WithStorageMeta } from '@xyo-network/payload-model'
3
+ import type { BlockBoundWitness, HydratedBlock } from '@xyo-network/xl1-protocol'
4
+ import { hydrateBlock } from '@xyo-network/xl1-protocol-sdk'
5
+ import type { Observable } from 'rxjs'
6
+ import { concatMap } from 'rxjs'
7
+
8
+ import { chainBlocks$ } from './ChainBlocksObservable.ts'
9
+
10
+ /**
11
+ * Creates an observable of HydratedBlocks from a chain iterator + archivist.
12
+ * @param chainIterator - EventingChainBlockNumberIteratorService that emits heads
13
+ * @param archivist - ReadArchivist used to fetch payloads and hydrate blocks
14
+ */
15
+ export const hydratedChainBlocks$ = (
16
+ chainIterator: Parameters<typeof chainBlocks$>[0],
17
+ archivist: ReadArchivist,
18
+ ): Observable<HydratedBlock> => {
19
+ return chainBlocks$(chainIterator).pipe(
20
+ concatMap((block: WithStorageMeta<BlockBoundWitness>) =>
21
+ hydrateBlock(archivist, block._hash)),
22
+ )
23
+ }
@@ -0,0 +1 @@
1
+ export * from './ChainBlocksObservable.ts'
@@ -0,0 +1,58 @@
1
+ import { Account } from '@xyo-network/account'
2
+ import type { AccountInstance } from '@xyo-network/account-model'
3
+ import { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'
4
+ import type { ArchivistInstance } from '@xyo-network/archivist-model'
5
+ import { buildRandomChain } from '@xyo-network/chain-protocol'
6
+ import { ChainBlockNumberIterationService } from '@xyo-network/chain-services'
7
+ import type { EventingChainBlockNumberIteratorService, HydratedBlock } from '@xyo-network/xl1-protocol'
8
+ import { flattenHydratedBlocks, getDefaultConfig } from '@xyo-network/xl1-protocol-sdk'
9
+ import {
10
+ firstValueFrom, take, toArray,
11
+ } from 'rxjs'
12
+ import {
13
+ beforeAll, beforeEach, describe, expect, it,
14
+ } from 'vitest'
15
+
16
+ import { chainBlocks$ } from '../ChainBlocksObservable.ts'
17
+
18
+ describe('chainBlocks$', () => {
19
+ let chainArchivist: ArchivistInstance
20
+ let producer: AccountInstance
21
+ let chain: HydratedBlock[]
22
+ let chainIterator: EventingChainBlockNumberIteratorService
23
+ const config = getDefaultConfig()
24
+
25
+ beforeAll(async () => {
26
+ producer = await Account.random()
27
+ })
28
+
29
+ beforeEach(async () => {
30
+ chain = await buildRandomChain(producer, 10)
31
+ chainArchivist = await MemoryArchivist.create({ config: { schema: MemoryArchivistConfigSchema } })
32
+ await chainArchivist.insert(flattenHydratedBlocks(chain))
33
+ chainIterator = await ChainBlockNumberIterationService.create({ chainArchivist, config })
34
+ })
35
+ it('emits blocks in order when head updates', async () => {
36
+ // Arrange
37
+ // Setup initial head
38
+ await chainIterator.updateHead(chain[4][0])
39
+
40
+ // Setup observable to collect 3 blocks
41
+ const resultPromise = firstValueFrom(
42
+ chainBlocks$(chainIterator).pipe(
43
+ take(3), // wait for 3 blocks
44
+ toArray(), // collect into array
45
+ ),
46
+ )
47
+
48
+ // Act
49
+ // Simulate head updates
50
+ await chainIterator.updateHead(chain[6][0])
51
+ await chainIterator.updateHead(chain[7][0])
52
+ const blocks = await resultPromise
53
+
54
+ // Assert
55
+ // Assert blocks are in ascending order
56
+ expect(blocks.map(b => b.block)).toEqual([5, 6, 7])
57
+ })
58
+ })
@@ -0,0 +1,58 @@
1
+ import { Account } from '@xyo-network/account'
2
+ import type { AccountInstance } from '@xyo-network/account-model'
3
+ import { MemoryArchivist, MemoryArchivistConfigSchema } from '@xyo-network/archivist-memory'
4
+ import type { ArchivistInstance } from '@xyo-network/archivist-model'
5
+ import { buildRandomChain } from '@xyo-network/chain-protocol'
6
+ import { ChainBlockNumberIterationService } from '@xyo-network/chain-services'
7
+ import type { EventingChainBlockNumberIteratorService, HydratedBlock } from '@xyo-network/xl1-protocol'
8
+ import { flattenHydratedBlocks, getDefaultConfig } from '@xyo-network/xl1-protocol-sdk'
9
+ import {
10
+ firstValueFrom, take, toArray,
11
+ } from 'rxjs'
12
+ import {
13
+ beforeAll, beforeEach, describe, expect, it,
14
+ } from 'vitest'
15
+
16
+ import { hydratedChainBlocks$ } from '../ChainHydratedBlocksObservable.ts'
17
+
18
+ describe('hydratedChainBlocks$', () => {
19
+ let chainArchivist: ArchivistInstance
20
+ let producer: AccountInstance
21
+ let chain: HydratedBlock[]
22
+ let chainIterator: EventingChainBlockNumberIteratorService
23
+ const config = getDefaultConfig()
24
+
25
+ beforeAll(async () => {
26
+ producer = await Account.random()
27
+ })
28
+
29
+ beforeEach(async () => {
30
+ chain = await buildRandomChain(producer, 10)
31
+ chainArchivist = await MemoryArchivist.create({ config: { schema: MemoryArchivistConfigSchema } })
32
+ await chainArchivist.insert(flattenHydratedBlocks(chain))
33
+ chainIterator = await ChainBlockNumberIterationService.create({ chainArchivist, config })
34
+ })
35
+ it('emits blocks in order when head updates', async () => {
36
+ // Arrange
37
+ // Setup initial head
38
+ await chainIterator.updateHead(chain[4][0])
39
+
40
+ // Setup observable to collect 3 blocks
41
+ const resultPromise = firstValueFrom(
42
+ hydratedChainBlocks$(chainIterator, chainArchivist).pipe(
43
+ take(3), // wait for 3 blocks
44
+ toArray(), // collect into array
45
+ ),
46
+ )
47
+
48
+ // Act
49
+ // Simulate head updates
50
+ await chainIterator.updateHead(chain[6][0])
51
+ await chainIterator.updateHead(chain[7][0])
52
+ const blocks = await resultPromise
53
+
54
+ // Assert
55
+ // Assert blocks are in ascending order
56
+ expect(blocks.map(b => b[0].block)).toEqual([5, 6, 7])
57
+ })
58
+ })