@xyo-network/xl1-rpc 1.7.11 → 1.7.12

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 (61) hide show
  1. package/README.md +539 -261
  2. package/dist/neutral/engine/rpcMethodHandlersFromSigner.d.ts.map +1 -1
  3. package/dist/neutral/index.mjs +206 -91
  4. package/dist/neutral/index.mjs.map +1 -1
  5. package/dist/neutral/provider/host/Abstract.d.ts +13 -0
  6. package/dist/neutral/provider/host/Abstract.d.ts.map +1 -0
  7. package/dist/neutral/provider/host/JsonRpcXyoGateway.d.ts +2 -11
  8. package/dist/neutral/provider/host/JsonRpcXyoGateway.d.ts.map +1 -1
  9. package/dist/neutral/provider/host/MemoryXyoGateway.d.ts +22 -0
  10. package/dist/neutral/provider/host/MemoryXyoGateway.d.ts.map +1 -0
  11. package/dist/neutral/provider/host/PermissionsStore.d.ts +8 -0
  12. package/dist/neutral/provider/host/PermissionsStore.d.ts.map +1 -0
  13. package/dist/neutral/provider/host/getPermissionsStoreFromTransport.d.ts +5 -0
  14. package/dist/neutral/provider/host/getPermissionsStoreFromTransport.d.ts.map +1 -0
  15. package/dist/neutral/provider/host/index.d.ts +3 -0
  16. package/dist/neutral/provider/host/index.d.ts.map +1 -1
  17. package/dist/neutral/provider/provider/XyoConnection.d.ts +6 -9
  18. package/dist/neutral/provider/provider/XyoConnection.d.ts.map +1 -1
  19. package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts +9 -2
  20. package/dist/neutral/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
  21. package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts +3 -1
  22. package/dist/neutral/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
  23. package/dist/neutral/transport/HttpRpcTransport.d.ts.map +1 -1
  24. package/dist/neutral/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
  25. package/dist/node/engine/rpcMethodHandlersFromSigner.d.ts.map +1 -1
  26. package/dist/node/index-node.mjs +208 -93
  27. package/dist/node/index-node.mjs.map +1 -1
  28. package/dist/node/provider/host/Abstract.d.ts +13 -0
  29. package/dist/node/provider/host/Abstract.d.ts.map +1 -0
  30. package/dist/node/provider/host/JsonRpcXyoGateway.d.ts +2 -11
  31. package/dist/node/provider/host/JsonRpcXyoGateway.d.ts.map +1 -1
  32. package/dist/node/provider/host/MemoryXyoGateway.d.ts +22 -0
  33. package/dist/node/provider/host/MemoryXyoGateway.d.ts.map +1 -0
  34. package/dist/node/provider/host/PermissionsStore.d.ts +8 -0
  35. package/dist/node/provider/host/PermissionsStore.d.ts.map +1 -0
  36. package/dist/node/provider/host/getPermissionsStoreFromTransport.d.ts +5 -0
  37. package/dist/node/provider/host/getPermissionsStoreFromTransport.d.ts.map +1 -0
  38. package/dist/node/provider/host/index.d.ts +3 -0
  39. package/dist/node/provider/host/index.d.ts.map +1 -1
  40. package/dist/node/provider/provider/XyoConnection.d.ts +6 -9
  41. package/dist/node/provider/provider/XyoConnection.d.ts.map +1 -1
  42. package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts +9 -2
  43. package/dist/node/provider/signer/JsonRpcXyoSigner.d.ts.map +1 -1
  44. package/dist/node/provider/signer/MemoryXyoSigner.d.ts +3 -1
  45. package/dist/node/provider/signer/MemoryXyoSigner.d.ts.map +1 -1
  46. package/dist/node/transport/HttpRpcTransport.d.ts.map +1 -1
  47. package/dist/node/types/schema/XyoSignerRpcSchemas.d.ts.map +1 -1
  48. package/package.json +26 -25
  49. package/src/engine/rpcMethodHandlersFromSigner.ts +1 -0
  50. package/src/provider/host/Abstract.ts +30 -0
  51. package/src/provider/host/JsonRpcXyoGateway.ts +2 -28
  52. package/src/provider/host/MemoryXyoGateway.ts +84 -0
  53. package/src/provider/host/PermissionsStore.ts +8 -0
  54. package/src/provider/host/getPermissionsStoreFromTransport.ts +13 -0
  55. package/src/provider/host/index.ts +3 -0
  56. package/src/provider/provider/XyoConnection.ts +20 -10
  57. package/src/provider/signer/JsonRpcXyoSigner.ts +13 -2
  58. package/src/provider/signer/MemoryXyoSigner.ts +6 -1
  59. package/src/provider/signer/spec/RpcEngineXyoSigner.spec.ts +2 -2
  60. package/src/transport/HttpRpcTransport.ts +25 -16
  61. package/src/types/schema/XyoSignerRpcSchemas.ts +14 -1
@@ -2,7 +2,8 @@ import type {
2
2
  JsonRpcFailure, JsonRpcRequest, JsonRpcSuccess,
3
3
  } from '@metamask/utils'
4
4
  import { AxiosJson } from '@xylabs/axios'
5
- import { isUndefinedOrNull } from '@xylabs/typeof'
5
+ import { isError, isUndefinedOrNull } from '@xylabs/typeof'
6
+ import { isAxiosError } from 'axios'
6
7
  import { v4 } from 'uuid'
7
8
  import type { z } from 'zod'
8
9
 
@@ -37,24 +38,32 @@ export class HttpRpcTransport<T extends RpcSchemaMap = RpcSchemaMap> implements
37
38
  method: TMethod,
38
39
  params?: z.infer<TSchemas[TMethod]['params']['to']>,
39
40
  ): Promise<z.infer<TSchemas[TMethod]['result']['from']>> {
40
- const id = v4()
41
- const body: JsonRpcRequest = {
42
- jsonrpc,
43
- id,
44
- method: method as string,
45
- }
41
+ try {
42
+ const id = v4()
43
+ const body: JsonRpcRequest = {
44
+ jsonrpc,
45
+ id,
46
+ method: method as string,
47
+ }
46
48
 
47
- if (params) {
48
- body.params = schemas[method].params.to.parse(params)
49
- }
49
+ if (params) {
50
+ body.params = schemas[method].params.to.parse(params)
51
+ }
50
52
 
51
- const res = await new AxiosJson().post(url, body)
53
+ const res = await new AxiosJson().post(url, body)
52
54
 
53
- const json = res.data
54
- if (isUndefinedOrNull(json) || (json as Partial<JsonRpcFailure>).error) {
55
- throw new Error((json as JsonRpcFailure).error.message)
56
- }
55
+ const json = res.data
56
+ if (isUndefinedOrNull(json) || (json as Partial<JsonRpcFailure>).error) {
57
+ throw new Error((json as JsonRpcFailure).error.message)
58
+ }
57
59
 
58
- return schemas[method].result.from.parse((json as JsonRpcSuccess).result)
60
+ return schemas[method].result.from.parse((json as JsonRpcSuccess).result)
61
+ } catch (ex) {
62
+ let message = isError(ex) ? ex.message : String(ex)
63
+ if (isAxiosError(ex)) {
64
+ message = `Http error occurred [${ex.status}|${ex.code ?? '<unknown>'}]: ${ex.message}`
65
+ }
66
+ throw new Error(`Error occurred while calling RPC method ${String(method)}: ${message}`)
67
+ }
59
68
  }
60
69
  }
@@ -2,7 +2,10 @@ import { z } from 'zod'
2
2
 
3
3
  import type { XyoSignerRpcMethodName } from '../XyoSignerRpc.ts'
4
4
  import {
5
- AddressFromStringSchema, AddressToStringSchema, PayloadSchema, SignedTransactionBoundWitnessSchema, TransactionFeesFromStingSchema,
5
+ AddressFromStringSchema, AddressToStringSchema,
6
+ HydratedTransactionSchema,
7
+ PayloadSchema, SignedHydratedTransactionSchema, SignedTransactionBoundWitnessSchema,
8
+ TransactionFeesFromStingSchema,
6
9
  TransactionFeesToStingSchema,
7
10
  } from './common/index.ts'
8
11
  import type { RpcSchemaMap } from './RpcSchemaMap.ts'
@@ -44,4 +47,14 @@ export const XyoSignerRpcSchemas: RpcSchemaMap<XyoSignerRpcMethodName> = {
44
47
  from: SignedTransactionBoundWitnessSchema,
45
48
  },
46
49
  },
50
+ xyoSigner_signTransaction: {
51
+ params: {
52
+ to: z.tuple([HydratedTransactionSchema]),
53
+ from: z.tuple([HydratedTransactionSchema]),
54
+ },
55
+ result: {
56
+ to: SignedHydratedTransactionSchema,
57
+ from: SignedHydratedTransactionSchema,
58
+ },
59
+ },
47
60
  }