@xyo-network/xl1-rpc 1.9.0 → 1.10.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 (112) hide show
  1. package/dist/neutral/index.mjs +459 -486
  2. package/dist/neutral/index.mjs.map +1 -1
  3. package/dist/neutral/provider/client/MemoryXyoClient.d.ts +2 -2
  4. package/dist/neutral/provider/client/MemoryXyoClient.d.ts.map +1 -1
  5. package/dist/neutral/provider/{provider → connection}/HttpRpcXyoConnection.d.ts +2 -0
  6. package/dist/neutral/provider/connection/HttpRpcXyoConnection.d.ts.map +1 -0
  7. package/dist/neutral/provider/{provider → connection}/XyoConnection.d.ts +2 -0
  8. package/dist/neutral/provider/connection/XyoConnection.d.ts.map +1 -0
  9. package/dist/neutral/provider/connection/index.d.ts.map +1 -0
  10. package/dist/neutral/provider/connection/spec/XyoConnection.d.ts.map +1 -0
  11. package/dist/neutral/provider/datalake/AbstractXyoDataLake.d.ts +10 -0
  12. package/dist/neutral/provider/datalake/AbstractXyoDataLake.d.ts.map +1 -0
  13. package/dist/neutral/provider/datalake/ArchivistXyoDataLake.d.ts +11 -0
  14. package/dist/neutral/provider/datalake/ArchivistXyoDataLake.d.ts.map +1 -0
  15. package/dist/neutral/provider/datalake/HttpXyoDataLake.d.ts +20 -0
  16. package/dist/neutral/provider/datalake/HttpXyoDataLake.d.ts.map +1 -0
  17. package/dist/neutral/provider/datalake/index.d.ts +4 -0
  18. package/dist/neutral/provider/datalake/index.d.ts.map +1 -0
  19. package/dist/neutral/provider/gateway/Abstract.d.ts +13 -0
  20. package/dist/neutral/provider/gateway/Abstract.d.ts.map +1 -0
  21. package/dist/neutral/provider/gateway/MemoryXyoGateway.d.ts.map +1 -0
  22. package/dist/neutral/provider/gateway/index.d.ts.map +1 -0
  23. package/dist/neutral/provider/gateway/spec/MemoryXyoGateway.spec.d.ts.map +1 -0
  24. package/dist/neutral/provider/index.d.ts +3 -2
  25. package/dist/neutral/provider/index.d.ts.map +1 -1
  26. package/dist/neutral/provider/network/MemoryXyoNetwork.d.ts +3 -3
  27. package/dist/neutral/provider/network/MemoryXyoNetwork.d.ts.map +1 -1
  28. package/dist/neutral/provider/network/lib/StatusNetworks.d.ts +3 -3
  29. package/dist/neutral/provider/network/lib/StatusNetworks.d.ts.map +1 -1
  30. package/dist/neutral/types/XyoGatewayRpc.d.ts +1 -1
  31. package/dist/neutral/types/XyoGatewayRpc.d.ts.map +1 -1
  32. package/dist/node/index-node.mjs +490 -515
  33. package/dist/node/index-node.mjs.map +1 -1
  34. package/dist/node/provider/client/MemoryXyoClient.d.ts +2 -2
  35. package/dist/node/provider/client/MemoryXyoClient.d.ts.map +1 -1
  36. package/dist/node/provider/{provider → connection}/HttpRpcXyoConnection.d.ts +2 -0
  37. package/dist/node/provider/connection/HttpRpcXyoConnection.d.ts.map +1 -0
  38. package/dist/node/provider/{provider → connection}/XyoConnection.d.ts +2 -0
  39. package/dist/node/provider/connection/XyoConnection.d.ts.map +1 -0
  40. package/dist/node/provider/connection/index.d.ts.map +1 -0
  41. package/dist/node/provider/connection/spec/XyoConnection.d.ts.map +1 -0
  42. package/dist/node/provider/datalake/AbstractXyoDataLake.d.ts +10 -0
  43. package/dist/node/provider/datalake/AbstractXyoDataLake.d.ts.map +1 -0
  44. package/dist/node/provider/datalake/ArchivistXyoDataLake.d.ts +11 -0
  45. package/dist/node/provider/datalake/ArchivistXyoDataLake.d.ts.map +1 -0
  46. package/dist/node/provider/datalake/HttpXyoDataLake.d.ts +20 -0
  47. package/dist/node/provider/datalake/HttpXyoDataLake.d.ts.map +1 -0
  48. package/dist/node/provider/datalake/index.d.ts +4 -0
  49. package/dist/node/provider/datalake/index.d.ts.map +1 -0
  50. package/dist/node/provider/gateway/Abstract.d.ts +13 -0
  51. package/dist/node/provider/gateway/Abstract.d.ts.map +1 -0
  52. package/dist/node/provider/gateway/MemoryXyoGateway.d.ts.map +1 -0
  53. package/dist/node/provider/gateway/index.d.ts.map +1 -0
  54. package/dist/node/provider/gateway/spec/MemoryXyoGateway.spec.d.ts.map +1 -0
  55. package/dist/node/provider/index.d.ts +3 -2
  56. package/dist/node/provider/index.d.ts.map +1 -1
  57. package/dist/node/provider/network/MemoryXyoNetwork.d.ts +3 -3
  58. package/dist/node/provider/network/MemoryXyoNetwork.d.ts.map +1 -1
  59. package/dist/node/provider/network/lib/StatusNetworks.d.ts +3 -3
  60. package/dist/node/provider/network/lib/StatusNetworks.d.ts.map +1 -1
  61. package/dist/node/types/XyoGatewayRpc.d.ts +1 -1
  62. package/dist/node/types/XyoGatewayRpc.d.ts.map +1 -1
  63. package/package.json +37 -36
  64. package/src/provider/client/MemoryXyoClient.ts +3 -3
  65. package/src/provider/client/spec/MemoryXyoClient.spec.ts +17 -10
  66. package/src/provider/{provider → connection}/HttpRpcXyoConnection.ts +10 -3
  67. package/src/provider/{provider → connection}/XyoConnection.ts +2 -0
  68. package/src/provider/datalake/AbstractXyoDataLake.ts +38 -0
  69. package/src/provider/datalake/ArchivistXyoDataLake.ts +26 -0
  70. package/src/provider/datalake/HttpXyoDataLake.ts +105 -0
  71. package/src/provider/datalake/index.ts +3 -0
  72. package/src/provider/gateway/Abstract.ts +47 -0
  73. package/src/provider/{host → gateway}/spec/MemoryXyoGateway.spec.ts +7 -3
  74. package/src/provider/index.ts +3 -2
  75. package/src/provider/network/MemoryXyoNetwork.ts +4 -3
  76. package/src/provider/network/lib/StatusNetworks.ts +9 -9
  77. package/src/provider/signer/spec/RpcEngineXyoSigner.spec.ts +1 -1
  78. package/src/transport/post-message/SessionEnvelope.ts +1 -1
  79. package/src/types/XyoGatewayRpc.ts +2 -2
  80. package/dist/neutral/provider/host/Abstract.d.ts +0 -15
  81. package/dist/neutral/provider/host/Abstract.d.ts.map +0 -1
  82. package/dist/neutral/provider/host/MemoryXyoGateway.d.ts.map +0 -1
  83. package/dist/neutral/provider/host/index.d.ts.map +0 -1
  84. package/dist/neutral/provider/host/spec/MemoryXyoGateway.spec.d.ts.map +0 -1
  85. package/dist/neutral/provider/provider/HttpRpcXyoConnection.d.ts.map +0 -1
  86. package/dist/neutral/provider/provider/XyoConnection.d.ts.map +0 -1
  87. package/dist/neutral/provider/provider/index.d.ts.map +0 -1
  88. package/dist/neutral/provider/provider/spec/XyoConnection.d.ts.map +0 -1
  89. package/dist/node/provider/host/Abstract.d.ts +0 -15
  90. package/dist/node/provider/host/Abstract.d.ts.map +0 -1
  91. package/dist/node/provider/host/MemoryXyoGateway.d.ts.map +0 -1
  92. package/dist/node/provider/host/index.d.ts.map +0 -1
  93. package/dist/node/provider/host/spec/MemoryXyoGateway.spec.d.ts.map +0 -1
  94. package/dist/node/provider/provider/HttpRpcXyoConnection.d.ts.map +0 -1
  95. package/dist/node/provider/provider/XyoConnection.d.ts.map +0 -1
  96. package/dist/node/provider/provider/index.d.ts.map +0 -1
  97. package/dist/node/provider/provider/spec/XyoConnection.d.ts.map +0 -1
  98. package/src/provider/host/Abstract.ts +0 -42
  99. /package/dist/neutral/provider/{provider → connection}/index.d.ts +0 -0
  100. /package/dist/neutral/provider/{provider → connection}/spec/XyoConnection.d.ts +0 -0
  101. /package/dist/neutral/provider/{host → gateway}/MemoryXyoGateway.d.ts +0 -0
  102. /package/dist/neutral/provider/{host → gateway}/index.d.ts +0 -0
  103. /package/dist/neutral/provider/{host → gateway}/spec/MemoryXyoGateway.spec.d.ts +0 -0
  104. /package/dist/node/provider/{provider → connection}/index.d.ts +0 -0
  105. /package/dist/node/provider/{provider → connection}/spec/XyoConnection.d.ts +0 -0
  106. /package/dist/node/provider/{host → gateway}/MemoryXyoGateway.d.ts +0 -0
  107. /package/dist/node/provider/{host → gateway}/index.d.ts +0 -0
  108. /package/dist/node/provider/{host → gateway}/spec/MemoryXyoGateway.spec.d.ts +0 -0
  109. /package/src/provider/{provider → connection}/index.ts +0 -0
  110. /package/src/provider/{provider → connection}/spec/XyoConnection.ts +0 -0
  111. /package/src/provider/{host → gateway}/MemoryXyoGateway.ts +0 -0
  112. /package/src/provider/{host → gateway}/index.ts +0 -0
@@ -0,0 +1,11 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import type { ReadWriteArchivist } from '@xyo-network/archivist-model';
3
+ import { type DataLakeData } from '@xyo-network/xl1-protocol';
4
+ import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts';
5
+ export declare class ArchivistXyoDataLake extends AbstractXyoDataLake {
6
+ private _archivist;
7
+ constructor(archivist: ReadWriteArchivist);
8
+ add(items: DataLakeData[]): Promise<DataLakeData[]>;
9
+ get(hashes: Hash[]): Promise<DataLakeData[]>;
10
+ }
11
+ //# sourceMappingURL=ArchivistXyoDataLake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchivistXyoDataLake.d.ts","sourceRoot":"","sources":["../../../../src/provider/datalake/ArchivistXyoDataLake.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,UAAU,CAAoB;gBAE1B,SAAS,EAAE,kBAAkB;IAKnC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAMnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAGnD"}
@@ -0,0 +1,20 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ import { type Payload } from '@xyo-network/payload-model';
4
+ import { type DataLakeData } from '@xyo-network/xl1-protocol';
5
+ import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts';
6
+ export declare class HttpXyoDataLake extends AbstractXyoDataLake {
7
+ private _axiosGet;
8
+ private _axiosInsertBlob;
9
+ private _axiosInsertJson;
10
+ private _endpoint;
11
+ constructor(endpoint: string);
12
+ get endpoint(): string;
13
+ add(items: DataLakeData[]): Promise<DataLakeData[]>;
14
+ get(hashes: Hash[]): Promise<DataLakeData[]>;
15
+ protected addArrayBuffer(item: ArrayBuffer): Promise<ArrayBuffer | undefined>;
16
+ protected addPayload(item: Payload): Promise<Payload | undefined>;
17
+ protected fetchOne(hash: Hash, maxDepth?: number): Promise<DataLakeData | undefined>;
18
+ protected getOne(hash: Hash): Promisable<DataLakeData | undefined>;
19
+ }
20
+ //# sourceMappingURL=HttpXyoDataLake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpXyoDataLake.d.ts","sourceRoot":"","sources":["../../../../src/provider/datalake/HttpXyoDataLake.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,2BAA2B,CAAA;AAG5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,eAAgB,SAAQ,mBAAmB;IACtD,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,gBAAgB,CAAO;IAC/B,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,SAAS,CAAQ;gBAEb,QAAQ,EAAE,MAAM;IAQ5B,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEK,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsBnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;cAMlC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;cAYnE,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;cAYvD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAE,MAAgC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAWnH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC;CAWnE"}
@@ -0,0 +1,4 @@
1
+ export * from './AbstractXyoDataLake.ts';
2
+ export * from './ArchivistXyoDataLake.ts';
3
+ export * from './HttpXyoDataLake.ts';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/provider/datalake/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { Hash } from '@xylabs/hex';
2
+ import type { Promisable } from '@xylabs/promise';
3
+ import type { Payload } from '@xyo-network/payload-model';
4
+ import { type AllowedBlockPayload, type HydratedTransaction, type XyoConnectionProvider, type XyoGatewayProvider, type XyoSigner } from '@xyo-network/xl1-protocol';
5
+ export declare abstract class AbstractXyoGateway implements XyoGatewayProvider {
6
+ addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[]): Promise<[Hash, HydratedTransaction]>;
7
+ addTransactionToChain(tx: HydratedTransaction): Promise<Hash>;
8
+ /** @deprecated use addPayloadsToChain instead */
9
+ submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[]): Promise<HydratedTransaction>;
10
+ abstract connection(): Promisable<XyoConnectionProvider>;
11
+ abstract signer(): Promisable<XyoSigner>;
12
+ }
13
+ //# sourceMappingURL=Abstract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Abstract.d.ts","sourceRoot":"","sources":["../../../../src/provider/gateway/Abstract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAC9F,MAAM,2BAA2B,CAAA;AAGlC,8BAAsB,kBAAmB,YAAW,kBAAkB;IAC9D,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAW7G,qBAAqB,CAAC,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,iDAAiD;IAC3C,iBAAiB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAS7H,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,qBAAqB,CAAC;IACxD,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC;CACzC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryXyoGateway.d.ts","sourceRoot":"","sources":["../../../../src/provider/gateway/MemoryXyoGateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEvB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB;IAMhE,UAAU,IAAI,qBAAqB;IAInC,MAAM,IAAI,SAAS;CAGpB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/provider/gateway/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryXyoGateway.spec.d.ts","sourceRoot":"","sources":["../../../../../src/provider/gateway/spec/MemoryXyoGateway.spec.ts"],"names":[],"mappings":""}
@@ -1,7 +1,8 @@
1
1
  export * from './client/index.ts';
2
- export * from './host/index.ts';
2
+ export * from './connection/index.ts';
3
+ export * from './datalake/index.ts';
4
+ export * from './gateway/index.ts';
3
5
  export * from './network/index.ts';
4
- export * from './provider/index.ts';
5
6
  export * from './runner/index.ts';
6
7
  export * from './signer/index.ts';
7
8
  export * from './viewer/index.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA"}
@@ -1,7 +1,7 @@
1
- import type { NetworkId, NetworkStatus, XyoNetwork } from '@xyo-network/xl1-protocol';
1
+ import type { GatewayName, NetworkStatus, XyoNetwork } from '@xyo-network/xl1-protocol';
2
2
  export declare class MemoryXyoNetwork implements XyoNetwork {
3
- protected readonly _networkId: NetworkId;
4
- constructor(networkId: NetworkId);
3
+ protected readonly _networkId: GatewayName;
4
+ constructor(networkId: GatewayName);
5
5
  status(): Promise<NetworkStatus>;
6
6
  private makeRequest;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryXyoNetwork.d.ts","sourceRoot":"","sources":["../../../../src/provider/network/MemoryXyoNetwork.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EAAE,aAAa,EAAE,UAAU,EACrC,MAAM,2BAA2B,CAAA;AAQlC,qBAAa,gBAAiB,YAAW,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAA;gBAE5B,SAAS,EAAE,SAAS;IAI1B,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;YASxB,WAAW;CAkB1B"}
1
+ {"version":3,"file":"MemoryXyoNetwork.d.ts","sourceRoot":"","sources":["../../../../src/provider/network/MemoryXyoNetwork.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EAAE,UAAU,EAC1B,MAAM,2BAA2B,CAAA;AAQlC,qBAAa,gBAAiB,YAAW,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;gBAE9B,SAAS,EAAE,WAAW;IAI5B,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;YASxB,WAAW;CAkB1B"}
@@ -1,10 +1,10 @@
1
- import type { NetworkId } from '@xyo-network/xl1-protocol';
1
+ import type { GatewayName } from '@xyo-network/xl1-protocol';
2
2
  export type StatusNetwork = {
3
- id: NetworkId;
3
+ id: GatewayName;
4
4
  statusUrl: string;
5
5
  };
6
6
  export declare const MainNetworkStats: StatusNetwork;
7
7
  export declare const SequenceNetworkStats: StatusNetwork;
8
8
  export declare const LocalNetworkStats: StatusNetwork;
9
- export declare const StatusNetworks: Record<NetworkId, StatusNetwork>;
9
+ export declare const StatusNetworks: Record<GatewayName, StatusNetwork>;
10
10
  //# sourceMappingURL=StatusNetworks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusNetworks.d.ts","sourceRoot":"","sources":["../../../../../src/provider/network/lib/StatusNetworks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,SAAS,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,aAG9B,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,CAI3D,CAAA"}
1
+ {"version":3,"file":"StatusNetworks.d.ts","sourceRoot":"","sources":["../../../../../src/provider/network/lib/StatusNetworks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,WAAW,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,aAG9B,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CAI7D,CAAA"}
@@ -3,6 +3,6 @@ export type XyoGatewayMethodPrefix = 'xyoGateway';
3
3
  export type XyoGatewayMethodName = keyof Pick<XyoGatewayProvider, 'submitTransaction'>;
4
4
  export type XyoGatewayRpcMethodName = `${XyoGatewayMethodPrefix}_${XyoGatewayMethodName}`;
5
5
  export type XyoGatewayRpcMethodHandlers = {
6
- [K in XyoGatewayMethodName as `${XyoGatewayMethodPrefix}_${K}`]: (params: Parameters<XyoGatewayProvider[K]>) => ReturnType<XyoGatewayProvider[K]>;
6
+ [K in XyoGatewayMethodName as `${XyoGatewayMethodPrefix}_${K}`]: (params: Parameters<Exclude<XyoGatewayProvider[K], undefined>>) => ReturnType<Exclude<XyoGatewayProvider[K], undefined>>;
7
7
  };
8
8
  //# sourceMappingURL=XyoGatewayRpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XyoGatewayRpc.d.ts","sourceRoot":"","sources":["../../../src/types/XyoGatewayRpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAA;AAEjD,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAGtF,MAAM,MAAM,uBAAuB,GAAG,GAAG,sBAAsB,IAAI,oBAAoB,EAAE,CAAA;AAGzF,MAAM,MAAM,2BAA2B,GAAG;KACvC,CAAC,IAAI,oBAAoB,IAAI,GAAG,sBAAsB,IAAI,CAAC,EAAE,GAAG,CAC/D,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KACtC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACvC,CAAA"}
1
+ {"version":3,"file":"XyoGatewayRpc.d.ts","sourceRoot":"","sources":["../../../src/types/XyoGatewayRpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAAA;AAEjD,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;AAGtF,MAAM,MAAM,uBAAuB,GAAG,GAAG,sBAAsB,IAAI,oBAAoB,EAAE,CAAA;AAGzF,MAAM,MAAM,2BAA2B,GAAG;KACvC,CAAC,IAAI,oBAAoB,IAAI,GAAG,sBAAsB,IAAI,CAAC,EAAE,GAAG,CAC/D,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,KAC1D,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;CAC3D,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-rpc",
4
- "version": "1.9.0",
4
+ "version": "1.10.0",
5
5
  "description": "XYO Layer One API",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -57,43 +57,44 @@
57
57
  "types": "tsc --noEmit -p tsconfig.test.json"
58
58
  },
59
59
  "dependencies": {
60
- "@metamask/json-rpc-engine": "^10.0.3",
61
- "@metamask/utils": "^11.4.2",
62
- "@xylabs/assert": "^5.0.0",
63
- "@xylabs/axios": "^5.0.0",
64
- "@xylabs/hex": "^5.0.0",
65
- "@xylabs/object": "^5.0.0",
66
- "@xylabs/promise": "^5.0.0",
67
- "@xylabs/typeof": "^5.0.0",
68
- "@xyo-network/account-model": "^5.0.0",
69
- "@xyo-network/archivist-memory": "^5.0.0",
70
- "@xyo-network/archivist-model": "^5.0.0",
71
- "@xyo-network/boundwitness-model": "^5.0.0",
72
- "@xyo-network/module-model": "^5.0.0",
73
- "@xyo-network/node-model": "^5.0.0",
74
- "@xyo-network/payload-builder": "^5.0.0",
75
- "@xyo-network/payload-model": "^5.0.0",
76
- "@xyo-network/payload-wrapper": "^5.0.0",
77
- "@xyo-network/xl1-protocol": "^1.8.0",
78
- "@xyo-network/xl1-protocol-sdk": "^1.9.0",
79
- "@xyo-network/xl1-wrappers": "^1.9.0",
80
- "axios": "^1.11.0",
81
- "uuid": "^11.1.0",
82
- "zod": "^3.25.76"
60
+ "@metamask/json-rpc-engine": "~10.0.3",
61
+ "@metamask/utils": "~11.4.2",
62
+ "@xylabs/assert": "~5.0.2",
63
+ "@xylabs/axios": "~5.0.2",
64
+ "@xylabs/exists": "~5.0.2",
65
+ "@xylabs/hex": "~5.0.2",
66
+ "@xylabs/object": "~5.0.2",
67
+ "@xylabs/promise": "~5.0.2",
68
+ "@xylabs/typeof": "~5.0.2",
69
+ "@xyo-network/account-model": "~5.0.0",
70
+ "@xyo-network/archivist-memory": "~5.0.0",
71
+ "@xyo-network/archivist-model": "~5.0.0",
72
+ "@xyo-network/boundwitness-model": "~5.0.0",
73
+ "@xyo-network/hash": "~5.0.0",
74
+ "@xyo-network/module-model": "~5.0.0",
75
+ "@xyo-network/node-model": "~5.0.0",
76
+ "@xyo-network/payload-builder": "~5.0.0",
77
+ "@xyo-network/payload-model": "~5.0.0",
78
+ "@xyo-network/payload-wrapper": "~5.0.0",
79
+ "@xyo-network/xl1-protocol": "~1.9.3",
80
+ "@xyo-network/xl1-protocol-sdk": "~1.10.0",
81
+ "@xyo-network/xl1-wrappers": "~1.10.0",
82
+ "axios": "~1.11.0",
83
+ "uuid": "~11.1.0",
84
+ "zod": "~3.25.76"
83
85
  },
84
86
  "devDependencies": {
85
- "@metamask/utils": "^11.4.2",
86
- "@types/node": "^24.1.0",
87
- "@xylabs/logger": "^5.0.0",
88
- "@xylabs/ts-scripts-yarn3": "^7.0.2",
89
- "@xylabs/tsconfig": "^7.0.2",
90
- "@xylabs/vitest-extended": "^5.0.0",
91
- "@xyo-network/account": "^5.0.0",
92
- "@xyo-network/wallet": "^5.0.0",
93
- "dotenv": "^17.2.1",
94
- "knip": "^5.62.0",
95
- "typescript": "^5.8.3",
96
- "vitest": "^3.2.4"
87
+ "@metamask/utils": "~11.4.2",
88
+ "@types/node": "~24.2.0",
89
+ "@xylabs/logger": "~5.0.2",
90
+ "@xylabs/ts-scripts-yarn3": "~7.0.3",
91
+ "@xylabs/tsconfig": "~7.0.3",
92
+ "@xylabs/vitest-extended": "~5.0.2",
93
+ "@xyo-network/account": "~5.0.0",
94
+ "@xyo-network/wallet": "~5.0.0",
95
+ "dotenv": "~17.2.1",
96
+ "typescript": "~5.9.2",
97
+ "vitest": "~3.2.4"
97
98
  },
98
99
  "packageManager": "yarn@4.6.0",
99
100
  "engines": {
@@ -4,10 +4,10 @@ import type {
4
4
 
5
5
  export class MemoryXyoClient implements XyoClient {
6
6
  gateways: Readonly<Record<string, XyoGatewayProvider>>
7
- permissionsProvider: PermissionsProvider
7
+ permissions: PermissionsProvider
8
8
 
9
- constructor(gateways: Readonly<Record<string, XyoGatewayProvider>>, permissionsProvider: PermissionsProvider) {
9
+ constructor(gateways: Readonly<Record<string, XyoGatewayProvider>>, permissions: PermissionsProvider) {
10
10
  this.gateways = gateways
11
- this.permissionsProvider = permissionsProvider
11
+ this.permissions = permissions
12
12
  }
13
13
  }
@@ -1,9 +1,11 @@
1
+ import { isHash } from '@xylabs/hex'
1
2
  import type { AccountInstance } from '@xyo-network/account-model'
2
3
  import { PayloadBuilder } from '@xyo-network/payload-builder'
3
4
  import type { Payload } from '@xyo-network/payload-model'
4
5
  import { HDWallet } from '@xyo-network/wallet'
5
6
  import type {
6
- AllowedBlockPayload, HashPayload, XyoClient,
7
+ AllowedBlockPayload, GatewayName, HashPayload, XyoClient,
8
+ XyoConnectionProvider,
7
9
  } from '@xyo-network/xl1-protocol'
8
10
  import { HashSchema } from '@xyo-network/xl1-protocol'
9
11
  import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from '@xyo-network/xl1-protocol-sdk'
@@ -11,8 +13,8 @@ import {
11
13
  beforeAll, beforeEach, describe, expect, it,
12
14
  } from 'vitest'
13
15
 
14
- import { MemoryXyoGateway } from '../../host/index.ts'
15
- import { RpcXyoConnection } from '../../provider/index.ts'
16
+ import { HttpRpcXyoConnection } from '../../connection/index.ts'
17
+ import { MemoryXyoGateway } from '../../gateway/index.ts'
16
18
  import { MemoryXyoSigner } from '../../signer/index.ts'
17
19
  import { MemoryXyoClient } from '../MemoryXyoClient.ts'
18
20
  import { MemoryPermissionsStore } from '../PermissionsStore/index.ts'
@@ -24,11 +26,11 @@ type TestPayload = Payload<{
24
26
 
25
27
  describe('Client', () => {
26
28
  const endpoint = 'http://localhost:8080/rpc'
27
- const dataLakeEndpoint = 'http://localhost:8080/chain/archivist'
29
+ // const dataLakeEndpoint = 'http://localhost:8080/chain/archivist'
28
30
  let account: AccountInstance
29
31
  let signer: MemoryXyoSigner
30
32
  let store: MemoryPermissionsStore
31
- let connection: RpcXyoConnection
33
+ let connection: XyoConnectionProvider
32
34
  let gateway: MemoryXyoGateway
33
35
  let client: XyoClient
34
36
 
@@ -38,7 +40,11 @@ describe('Client', () => {
38
40
  account = await wallet.derivePath(ADDRESS_INDEX.XYO)
39
41
  signer = new MemoryXyoSigner(account)
40
42
  store = new MemoryPermissionsStore()
41
- connection = new RpcXyoConnection({ endpoint, account })
43
+ connection = new HttpRpcXyoConnection({
44
+ endpoint,
45
+ account,
46
+ // storage: dataLakeEndpoint,
47
+ })
42
48
  gateway = new MemoryXyoGateway(signer, connection)
43
49
  client = new MemoryXyoClient({ localhost: gateway }, store)
44
50
  })
@@ -55,16 +61,17 @@ describe('Client', () => {
55
61
  offChainPayloads = [id]
56
62
  })
57
63
  it('should be defined', () => {
58
- const gateway = client.gateways.localhost.connection()
64
+ const gateway = client.gateways['localhost' as GatewayName].connection()
59
65
  expect(gateway).toBeDefined()
60
66
  })
61
67
  it('should allow retrieving the chain ID', async () => {
62
- const chainId = await (await client.gateways.localhost?.connection())?.viewer?.chainId()
68
+ const chainId = await (await client.gateways['localhost' as GatewayName]?.connection())?.viewer?.chainId()
63
69
  expect(chainId).toBeDefined()
64
70
  })
65
71
  it.only('should allow for submitting transactions', async () => {
66
- const transaction = await (await client.gateways.localhost?.connection())?.submitTransaction?.(onChainPayloads, offChainPayloads)
67
- expect(transaction).toBeDefined()
72
+ const [hash, tx] = await client.gateways['localhost' as GatewayName]?.addPayloadsToChain?.(onChainPayloads, offChainPayloads) ?? []
73
+ expect(isHash(hash)).toBeTrue()
74
+ expect(tx).toBeDefined()
68
75
  })
69
76
  })
70
77
  })
@@ -1,8 +1,11 @@
1
- import { isDefined } from '@xylabs/typeof'
1
+ import { isDefined, isString } from '@xylabs/typeof'
2
2
  import type { AccountInstance } from '@xyo-network/account-model'
3
+ import type { XyoDataLakeProvider } from '@xyo-network/xl1-protocol'
4
+ import { isDataLakeProvider } from '@xyo-network/xl1-protocol'
3
5
 
4
6
  import { HttpRpcTransport } from '../../transport/index.ts'
5
7
  import { XyoRunnerRpcSchemas, XyoViewerRpcSchemas } from '../../types/index.ts'
8
+ import { HttpXyoDataLake } from '../datalake/index.ts'
6
9
  import { JsonRpcXyoRunner } from '../runner/index.ts'
7
10
  import { MemoryXyoSigner } from '../signer/index.ts'
8
11
  import { JsonRpcXyoViewer } from '../viewer/index.ts'
@@ -11,17 +14,21 @@ import { XyoConnection } from './XyoConnection.ts'
11
14
  export interface RpcXyoProviderParams {
12
15
  account?: AccountInstance
13
16
  endpoint: string
17
+ storage?: string | XyoDataLakeProvider
14
18
  }
15
19
 
16
20
  export class HttpRpcXyoConnection extends XyoConnection {
17
21
  constructor(params: RpcXyoProviderParams) {
18
- const { account, endpoint } = params
22
+ const {
23
+ account, endpoint, storage: storageParam,
24
+ } = params
19
25
  const signer = isDefined(account) ? new MemoryXyoSigner(account) : undefined
20
26
  const transport = new HttpRpcTransport(endpoint, { ...XyoRunnerRpcSchemas, ...XyoViewerRpcSchemas })
21
27
  const runner = new JsonRpcXyoRunner(transport)
22
28
  const viewer = new JsonRpcXyoViewer(transport)
29
+ const storage = isDataLakeProvider(storageParam) ? storageParam : isString(storageParam) ? new HttpXyoDataLake(storageParam) : undefined
23
30
  super({
24
- signer, runner, viewer,
31
+ signer, runner, viewer, storage,
25
32
  })
26
33
  }
27
34
  }
@@ -41,6 +41,7 @@ export class XyoConnection implements XyoConnectionProvider {
41
41
  return this._runner
42
42
  }
43
43
 
44
+ /** @deprecated use signer from gateway instead */
44
45
  get signer(): XyoSigner | undefined {
45
46
  return this._signer
46
47
  }
@@ -68,6 +69,7 @@ export class XyoConnection implements XyoConnectionProvider {
68
69
  }))[0]
69
70
  }
70
71
 
72
+ /** @deprecated use addPayloadsToChain from gateway instead */
71
73
  async submitTransaction(
72
74
  elevatedPayloads: AllowedBlockPayload[],
73
75
  additionalPayloads: Payload[],
@@ -0,0 +1,38 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import { ObjectHasher } from '@xyo-network/hash'
3
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
4
+ import type { Payload } from '@xyo-network/payload-model'
5
+ import { isAnyPayload } from '@xyo-network/payload-model'
6
+ import {
7
+ type DataLakeData,
8
+ isHashPayload,
9
+ type XyoDataLakeProvider,
10
+ } from '@xyo-network/xl1-protocol'
11
+
12
+ export abstract class AbstractXyoDataLake implements XyoDataLakeProvider {
13
+ async fetch(hashes: Hash[], maxDepth: number = 10): Promise<DataLakeData[]> {
14
+ const results: DataLakeData[] = await this.get(hashes)
15
+ if (maxDepth > 0) {
16
+ const hashPayloads = results.filter(isHashPayload)
17
+ const otherPayloads = results.filter(item => !isHashPayload(item))
18
+ const found = await this.fetch(hashPayloads.map(item => item.hash), maxDepth - 1)
19
+ const foundHashes = await Promise.all(found.map(async item => isAnyPayload(item) ? await PayloadBuilder.hash(item) : ObjectHasher.hashBytes(item)))
20
+ const notFound = hashPayloads.filter(item => !foundHashes.includes(item.hash))
21
+ return [...otherPayloads, ...found, ...notFound]
22
+ }
23
+ return results
24
+ }
25
+
26
+ async trace(hash: Hash): Promise<[DataLakeData | undefined, Payload[]]> {
27
+ const [result] = await this.get([hash])
28
+ if (isHashPayload(result)) {
29
+ const [payload, route] = await this.trace(result.hash)
30
+ return [payload, [result, ...route]]
31
+ }
32
+ return [result, []]
33
+ }
34
+
35
+ abstract add(items: DataLakeData[]): Promise<DataLakeData[]>
36
+
37
+ abstract get(hashes: Hash[]): Promise<DataLakeData[]>
38
+ }
@@ -0,0 +1,26 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Hash } from '@xylabs/hex'
3
+ import type { ReadWriteArchivist } from '@xyo-network/archivist-model'
4
+ import { isAnyPayload } from '@xyo-network/payload-model'
5
+ import { type DataLakeData } from '@xyo-network/xl1-protocol'
6
+
7
+ import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts'
8
+
9
+ export class ArchivistXyoDataLake extends AbstractXyoDataLake {
10
+ private _archivist: ReadWriteArchivist
11
+
12
+ constructor(archivist: ReadWriteArchivist) {
13
+ super()
14
+ this._archivist = archivist
15
+ }
16
+
17
+ async add(items: DataLakeData[]): Promise<DataLakeData[]> {
18
+ const payloads = items.filter(isAnyPayload)
19
+ assertEx(payloads.length === items.length, () => 'Some items are not payloads')
20
+ return await this._archivist.insert(payloads)
21
+ }
22
+
23
+ async get(hashes: Hash[]): Promise<DataLakeData[]> {
24
+ return await this._archivist.get(hashes)
25
+ }
26
+ }
@@ -0,0 +1,105 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { AxiosJson } from '@xylabs/axios'
3
+ import { exists } from '@xylabs/exists'
4
+ import type { Hash } from '@xylabs/hex'
5
+ import type { Promisable } from '@xylabs/promise'
6
+ import { isArrayBuffer, isDefined } from '@xylabs/typeof'
7
+ import { isAnyPayload, type Payload } from '@xyo-network/payload-model'
8
+ import { type DataLakeData, isHashPayload } from '@xyo-network/xl1-protocol'
9
+ import { Axios } from 'axios'
10
+
11
+ import { AbstractXyoDataLake } from './AbstractXyoDataLake.ts'
12
+
13
+ export class HttpXyoDataLake extends AbstractXyoDataLake {
14
+ private _axiosGet: Axios
15
+ private _axiosInsertBlob: Axios
16
+ private _axiosInsertJson: AxiosJson
17
+ private _endpoint: string
18
+
19
+ constructor(endpoint: string) {
20
+ super()
21
+ this._endpoint = endpoint
22
+ this._axiosInsertJson = new AxiosJson({ baseURL: endpoint })
23
+ this._axiosInsertBlob = new Axios({ baseURL: endpoint, headers: { 'Content-Type': 'application/octet-stream', 'Accept': 'application/octet-stream' } })
24
+ this._axiosGet = new Axios({ baseURL: endpoint, headers: { 'Content-Type': 'application/json', 'Accept': 'application/octet-stream, application/json' } })
25
+ }
26
+
27
+ get endpoint(): string {
28
+ return this._endpoint
29
+ }
30
+
31
+ async add(items: DataLakeData[]): Promise<DataLakeData[]> {
32
+ const results: DataLakeData[] = []
33
+ for (const item of items) {
34
+ if (isAnyPayload(item)) {
35
+ const result = await this.addPayload(item)
36
+ if (isAnyPayload(result)) {
37
+ results.push(result)
38
+ } else if (isDefined(result)) {
39
+ assertEx(false, () => 'Expected result to be a Payload')
40
+ }
41
+ } else if (isArrayBuffer(item)) {
42
+ const result = await this.addArrayBuffer(item)
43
+ if (isAnyPayload(result)) {
44
+ results.push(result)
45
+ } else if (isDefined(result)) {
46
+ assertEx(false, () => 'Expected result to be a Payload')
47
+ }
48
+ }
49
+ }
50
+ return results
51
+ }
52
+
53
+ async get(hashes: Hash[]): Promise<DataLakeData[]> {
54
+ return (await Promise.all(hashes.map(async (hash) => {
55
+ return await this.getOne(hash)
56
+ }))).filter(exists)
57
+ }
58
+
59
+ protected async addArrayBuffer(item: ArrayBuffer): Promise<ArrayBuffer | undefined> {
60
+ const result = await this._axiosInsertBlob.post('/insert', item)
61
+ if (result.status < 200 || result.status >= 300) {
62
+ throw new Error(`Failed to add items [${result.status}]: ${result.statusText}`)
63
+ }
64
+ if (!isArrayBuffer(result.data)) {
65
+ throw new Error('Invalid response from server (expected a ArrayBuffer)')
66
+ }
67
+
68
+ return result.data
69
+ }
70
+
71
+ protected async addPayload(item: Payload): Promise<Payload | undefined> {
72
+ const result = await this._axiosInsertJson.post('/insert', item)
73
+ if (result.status < 200 || result.status >= 300) {
74
+ throw new Error(`Failed to add items [${result.status}]: ${result.statusText}`)
75
+ }
76
+ if (!isAnyPayload(result.data)) {
77
+ throw new Error('Invalid response from server (expected a Payload)')
78
+ }
79
+
80
+ return result.data
81
+ }
82
+
83
+ protected async fetchOne(hash: Hash, maxDepth: number = Number.MAX_SAFE_INTEGER): Promise<DataLakeData | undefined> {
84
+ if (maxDepth <= 0) {
85
+ return undefined
86
+ }
87
+ const result = await this.getOne(hash)
88
+ if (isHashPayload(result)) {
89
+ return await this.fetchOne(result.hash, maxDepth - 1)
90
+ }
91
+ return result
92
+ }
93
+
94
+ protected getOne(hash: Hash): Promisable<DataLakeData | undefined> {
95
+ return this._axiosGet.get(`/get/${hash}`).then((response) => {
96
+ if (response.status < 200 || response.status >= 300) {
97
+ throw new Error(`Failed to get item [${response.status}]: ${response.statusText}`)
98
+ }
99
+ if (!isAnyPayload(response.data)) {
100
+ throw new Error('Invalid response from server (expected a Payload)')
101
+ }
102
+ return response.data
103
+ })
104
+ }
105
+ }
@@ -0,0 +1,3 @@
1
+ export * from './AbstractXyoDataLake.ts'
2
+ export * from './ArchivistXyoDataLake.ts'
3
+ export * from './HttpXyoDataLake.ts'
@@ -0,0 +1,47 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import type { Hash } from '@xylabs/hex'
3
+ import type { Promisable } from '@xylabs/promise'
4
+ import { PayloadBuilder } from '@xyo-network/payload-builder'
5
+ import type { Payload } from '@xyo-network/payload-model'
6
+ import {
7
+ type AllowedBlockPayload,
8
+ type HydratedTransaction, type XyoConnectionProvider, type XyoGatewayProvider, type XyoSigner,
9
+ } from '@xyo-network/xl1-protocol'
10
+ import { buildUnsignedTransaction } from '@xyo-network/xl1-protocol-sdk'
11
+
12
+ export abstract class AbstractXyoGateway implements XyoGatewayProvider {
13
+ async addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[]): Promise<[Hash, HydratedTransaction]> {
14
+ const connection = await this.connection()
15
+ const viewer = assertEx(connection.viewer, () => 'No viewer available on connection')
16
+ const signer = await this.signer()
17
+ const chainId = await viewer.chainId()
18
+ const nbf = await viewer.currentBlockNumber()
19
+ const tx = await buildUnsignedTransaction(chainId, onChain, offChain, nbf, nbf + 1000, await signer.address())
20
+ const hash = await this.addTransactionToChain(tx)
21
+ return [hash, tx]
22
+ }
23
+
24
+ async addTransactionToChain(tx: HydratedTransaction): Promise<Hash> {
25
+ const connection = await this.connection()
26
+ const signer = await this.signer()
27
+ const runner = assertEx(connection.runner, () => 'No runner available on connection')
28
+ const signedTx = await signer.signTransaction(tx)
29
+ return await runner.broadcastTransaction(
30
+ [await PayloadBuilder.addStorageMeta(signedTx[0]),
31
+ await PayloadBuilder.addStorageMeta(signedTx[1])],
32
+ )
33
+ }
34
+
35
+ /** @deprecated use addPayloadsToChain instead */
36
+ async submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[]): Promise<HydratedTransaction> {
37
+ const connection = await this.connection()
38
+ // eslint-disable-next-line sonarjs/deprecation
39
+ assertEx(connection.submitTransaction, () => 'Active connection does not support transaction submission')
40
+ // eslint-disable-next-line sonarjs/deprecation
41
+ const tx = await connection.submitTransaction?.(elevatedPayloads, additionalPayloads)
42
+ return assertEx(tx, () => 'Transaction submission failed')
43
+ }
44
+
45
+ abstract connection(): Promisable<XyoConnectionProvider>
46
+ abstract signer(): Promisable<XyoSigner>
47
+ }