@xyo-network/xl1-rpc 1.15.25 → 1.15.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/index.mjs +7 -4
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/provider/gateway/Abstract.d.ts +2 -2
- package/dist/neutral/provider/gateway/Abstract.d.ts.map +1 -1
- package/dist/node/index-node.mjs +7 -4
- package/dist/node/index-node.mjs.map +1 -1
- package/dist/node/provider/gateway/Abstract.d.ts +2 -2
- package/dist/node/provider/gateway/Abstract.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/provider/gateway/Abstract.ts +15 -4
- package/src/provider/gateway/spec/MemoryXyoGateway.spec.ts +34 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/hex';
|
|
2
2
|
import type { Promisable } from '@xylabs/promise';
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model';
|
|
4
|
-
import type { AllowedBlockPayload, SignedHydratedTransaction, XyoConnection, XyoGatewayProvider, XyoSigner } from '@xyo-network/xl1-protocol';
|
|
4
|
+
import type { AllowedBlockPayload, SignedHydratedTransaction, TransactionOptions, XyoConnection, XyoGatewayProvider, XyoSigner } from '@xyo-network/xl1-protocol';
|
|
5
5
|
export declare abstract class AbstractXyoGateway implements XyoGatewayProvider {
|
|
6
|
-
addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[]): Promise<[Hash, SignedHydratedTransaction]>;
|
|
6
|
+
addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[], options?: TransactionOptions): Promise<[Hash, SignedHydratedTransaction]>;
|
|
7
7
|
addTransactionToChain(tx: SignedHydratedTransaction): Promise<Hash>;
|
|
8
8
|
/** @deprecated use addPayloadsToChain instead */
|
|
9
9
|
submitTransaction(elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[]): Promise<SignedHydratedTransaction>;
|
|
@@ -1 +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;
|
|
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;AAGjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAC7C,MAAM,2BAA2B,CAAA;AAGlC,8BAAsB,kBAAmB,YAAW,kBAAkB;IAC9D,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAyBjJ,qBAAqB,CAAC,EAAE,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,iDAAiD;IAC3C,iBAAiB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC;IASnI,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;IAChD,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC;CACzC"}
|
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.15.
|
|
4
|
+
"version": "1.15.26",
|
|
5
5
|
"description": "XYO Layer One API",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"@xyo-network/payload-builder": "~5.1.15",
|
|
76
76
|
"@xyo-network/payload-model": "~5.1.15",
|
|
77
77
|
"@xyo-network/xl1-protocol": "~1.12.95",
|
|
78
|
-
"@xyo-network/xl1-protocol-sdk": "~1.15.
|
|
79
|
-
"@xyo-network/xl1-wrappers": "~1.15.
|
|
78
|
+
"@xyo-network/xl1-protocol-sdk": "~1.15.26",
|
|
79
|
+
"@xyo-network/xl1-wrappers": "~1.15.26",
|
|
80
80
|
"axios": "~1.13.1",
|
|
81
81
|
"uuid": "~13.0.0",
|
|
82
82
|
"zod": "~4.1.12"
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"@xylabs/tsconfig": "~7.1.8",
|
|
90
90
|
"@xylabs/vitest-extended": "~5.0.17",
|
|
91
91
|
"@xyo-network/account": "~5.1.15",
|
|
92
|
-
"@xyo-network/chain-protocol": "~1.15.
|
|
92
|
+
"@xyo-network/chain-protocol": "~1.15.26",
|
|
93
93
|
"@xyo-network/wallet": "~5.1.15",
|
|
94
94
|
"dotenv": "~17.2.3",
|
|
95
95
|
"eslint": "^9.39.0",
|
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
import { assertEx } from '@xylabs/assert'
|
|
2
2
|
import type { Hash } from '@xylabs/hex'
|
|
3
3
|
import type { Promisable } from '@xylabs/promise'
|
|
4
|
+
import { isDefined } from '@xylabs/typeof'
|
|
4
5
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
5
6
|
import type { Payload } from '@xyo-network/payload-model'
|
|
6
7
|
import type {
|
|
7
8
|
AllowedBlockPayload,
|
|
8
9
|
SignedHydratedTransaction,
|
|
10
|
+
TransactionOptions,
|
|
9
11
|
XyoConnection, XyoGatewayProvider, XyoSigner,
|
|
10
12
|
} from '@xyo-network/xl1-protocol'
|
|
11
13
|
import { buildUnsignedTransaction } from '@xyo-network/xl1-protocol-sdk'
|
|
12
14
|
|
|
13
15
|
export abstract class AbstractXyoGateway implements XyoGatewayProvider {
|
|
14
|
-
async addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[]): Promise<[Hash, SignedHydratedTransaction]> {
|
|
16
|
+
async addPayloadsToChain(onChain: AllowedBlockPayload[], offChain: Payload[], options?: TransactionOptions): Promise<[Hash, SignedHydratedTransaction]> {
|
|
17
|
+
// Get chain providers
|
|
15
18
|
const connection = await this.connection()
|
|
16
19
|
const viewer = assertEx(connection.viewer, () => 'No viewer available on connection')
|
|
17
20
|
const signer = await this.signer()
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
+
|
|
22
|
+
// Resolve transaction options
|
|
23
|
+
const {
|
|
24
|
+
nbf, exp, chain, fees,
|
|
25
|
+
} = options ?? {}
|
|
26
|
+
const resolvedChainId = isDefined(chain) ? chain : await viewer.chainId()
|
|
27
|
+
const resolvedNbf = isDefined(nbf) ? nbf : await viewer?.currentBlockNumber()
|
|
28
|
+
const resolvedExp = isDefined(exp) ? exp : resolvedNbf + 10
|
|
29
|
+
|
|
30
|
+
// Build, sign, and broadcast the transaction
|
|
31
|
+
const tx = await buildUnsignedTransaction(resolvedChainId, onChain, offChain, resolvedNbf, resolvedExp, await signer.address(), fees)
|
|
21
32
|
const runner = assertEx(connection.runner, () => 'No runner available on connection')
|
|
22
33
|
const signedTx = await signer.signTransaction(tx)
|
|
23
34
|
const hash = await runner.broadcastTransaction(
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
import { isAddress, isHash } from '@xylabs/hex'
|
|
1
2
|
import { Account } from '@xyo-network/account'
|
|
2
3
|
import type { AccountInstance } from '@xyo-network/account-model'
|
|
4
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
3
5
|
import type { Payload } from '@xyo-network/payload-model'
|
|
4
|
-
import type {
|
|
6
|
+
import type {
|
|
7
|
+
AllowedBlockPayload, ChainId, SignedHydratedTransaction,
|
|
8
|
+
} from '@xyo-network/xl1-protocol'
|
|
5
9
|
import { buildUnsignedTransaction } from '@xyo-network/xl1-protocol-sdk'
|
|
6
10
|
import {
|
|
7
11
|
beforeEach, describe, expect, it,
|
|
12
|
+
vi,
|
|
8
13
|
} from 'vitest'
|
|
9
14
|
|
|
10
15
|
import { HttpRpcXyoConnection } from '../../connection/index.ts'
|
|
@@ -57,4 +62,32 @@ describe('MemoryXyoGateway', () => {
|
|
|
57
62
|
}
|
|
58
63
|
})
|
|
59
64
|
})
|
|
65
|
+
describe('addPayloadsToChain', () => {
|
|
66
|
+
it('should add payloads to the chain', async () => {
|
|
67
|
+
const mockRunner = vi.spyOn(connection.runner!, 'broadcastTransaction').mockImplementation(async (tx: SignedHydratedTransaction) => {
|
|
68
|
+
return await PayloadBuilder.hash(tx[0])
|
|
69
|
+
})
|
|
70
|
+
const chainId = (await Account.random()).address
|
|
71
|
+
const mockSigner = vi.spyOn(signer, 'signTransaction')
|
|
72
|
+
const elevatedPayloads: AllowedBlockPayload[] = []
|
|
73
|
+
const additionalPayloads: Payload[] = []
|
|
74
|
+
const result = await sut.addPayloadsToChain(elevatedPayloads, additionalPayloads, {
|
|
75
|
+
nbf: 0,
|
|
76
|
+
exp: 1000,
|
|
77
|
+
chain: chainId,
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
// Verify mocks were called
|
|
81
|
+
expect(mockRunner).toHaveBeenCalled()
|
|
82
|
+
expect(mockSigner).toHaveBeenCalled()
|
|
83
|
+
|
|
84
|
+
// Verify result
|
|
85
|
+
expect(result).toBeDefined()
|
|
86
|
+
expect(result.length).toBe(2)
|
|
87
|
+
expect(isHash(result[0])).toBe(true)
|
|
88
|
+
expect(result[1][0].nbf).toBe(0)
|
|
89
|
+
expect(result[1][0].exp).toBe(1000)
|
|
90
|
+
expect(result[1][0].chain).toBe(chainId)
|
|
91
|
+
})
|
|
92
|
+
})
|
|
60
93
|
})
|