ox 1.8.1 → 1.8.4
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/CHANGELOG.md +53 -0
- package/dist/core/Frame.d.ts +23 -20
- package/dist/core/Frame.d.ts.map +1 -1
- package/dist/core/Frame.js +28 -23
- package/dist/core/Frame.js.map +1 -1
- package/dist/core/FrameReceipt.d.ts +23 -14
- package/dist/core/FrameReceipt.d.ts.map +1 -1
- package/dist/core/FrameReceipt.js +15 -11
- package/dist/core/FrameReceipt.js.map +1 -1
- package/dist/core/FrameRequest.d.ts +50 -0
- package/dist/core/FrameRequest.d.ts.map +1 -0
- package/dist/core/FrameRequest.js +59 -0
- package/dist/core/FrameRequest.js.map +1 -0
- package/dist/core/FrameSignature.d.ts +17 -16
- package/dist/core/FrameSignature.d.ts.map +1 -1
- package/dist/core/FrameSignature.js +38 -21
- package/dist/core/FrameSignature.js.map +1 -1
- package/dist/core/Siwe.d.ts.map +1 -1
- package/dist/core/Siwe.js +3 -3
- package/dist/core/Siwe.js.map +1 -1
- package/dist/core/Transaction.d.ts +7 -4
- package/dist/core/Transaction.d.ts.map +1 -1
- package/dist/core/Transaction.js +8 -0
- package/dist/core/Transaction.js.map +1 -1
- package/dist/core/TransactionRequest.d.ts +8 -5
- package/dist/core/TransactionRequest.d.ts.map +1 -1
- package/dist/core/TransactionRequest.js +11 -3
- package/dist/core/TransactionRequest.js.map +1 -1
- package/dist/core/TxEnvelope.d.ts +4 -2
- package/dist/core/TxEnvelope.d.ts.map +1 -1
- package/dist/core/TxEnvelope.js +11 -2
- package/dist/core/TxEnvelope.js.map +1 -1
- package/dist/core/TxEnvelopeEip8141.d.ts +22 -11
- package/dist/core/TxEnvelopeEip8141.d.ts.map +1 -1
- package/dist/core/TxEnvelopeEip8141.js +45 -16
- package/dist/core/TxEnvelopeEip8141.js.map +1 -1
- package/dist/core/internal/frameNonce.d.ts +10 -0
- package/dist/core/internal/frameNonce.d.ts.map +1 -0
- package/dist/core/internal/frameNonce.js +45 -0
- package/dist/core/internal/frameNonce.js.map +1 -0
- package/dist/core/internal/rpcSchemas/eth.d.ts +16 -4
- package/dist/core/internal/rpcSchemas/eth.d.ts.map +1 -1
- package/dist/index.d.ts +21 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/zod/Block.d.ts +52 -37
- package/dist/zod/Block.d.ts.map +1 -1
- package/dist/zod/Frame.d.ts +14 -14
- package/dist/zod/Frame.js +5 -5
- package/dist/zod/Frame.js.map +1 -1
- package/dist/zod/FrameReceipt.d.ts +42 -2
- package/dist/zod/FrameReceipt.d.ts.map +1 -1
- package/dist/zod/FrameReceipt.js +11 -1
- package/dist/zod/FrameReceipt.js.map +1 -1
- package/dist/zod/FrameRequest.d.ts +40 -0
- package/dist/zod/FrameRequest.d.ts.map +1 -0
- package/dist/zod/FrameRequest.js +37 -0
- package/dist/zod/FrameRequest.js.map +1 -0
- package/dist/zod/FrameSignature.d.ts +21 -13
- package/dist/zod/FrameSignature.d.ts.map +1 -1
- package/dist/zod/FrameSignature.js +10 -7
- package/dist/zod/FrameSignature.js.map +1 -1
- package/dist/zod/RpcSchema.d.ts +470 -265
- package/dist/zod/RpcSchema.d.ts.map +1 -1
- package/dist/zod/Transaction.d.ts +104 -74
- package/dist/zod/Transaction.d.ts.map +1 -1
- package/dist/zod/Transaction.js +22 -15
- package/dist/zod/Transaction.js.map +1 -1
- package/dist/zod/TransactionEnvelope.d.ts +60 -34
- package/dist/zod/TransactionEnvelope.d.ts.map +1 -1
- package/dist/zod/TransactionReceipt.d.ts +42 -2
- package/dist/zod/TransactionReceipt.d.ts.map +1 -1
- package/dist/zod/TransactionRequest.d.ts +31 -21
- package/dist/zod/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/TransactionRequest.js +10 -4
- package/dist/zod/TransactionRequest.js.map +1 -1
- package/dist/zod/TxEnvelopeEip8141.d.ts +44 -25
- package/dist/zod/TxEnvelopeEip8141.d.ts.map +1 -1
- package/dist/zod/TxEnvelopeEip8141.js +2 -0
- package/dist/zod/TxEnvelopeEip8141.js.map +1 -1
- package/dist/zod/internal/Frame.d.ts +8 -0
- package/dist/zod/internal/Frame.d.ts.map +1 -1
- package/dist/zod/internal/Frame.js +29 -0
- package/dist/zod/internal/Frame.js.map +1 -1
- package/dist/zod/internal/rpcSchemas/Eth.d.ts +472 -267
- package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
- package/dist/zod/internal/rpcSchemas/Eth.js +9 -0
- package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
- package/dist/zod/internal/rpcSchemas/Wallet.d.ts +51 -21
- package/dist/zod/internal/rpcSchemas/Wallet.d.ts.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +68 -48
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +52 -37
- package/dist/zod/tempo/Transaction.d.ts.map +1 -1
- package/dist/zod/z.d.ts +1 -0
- package/dist/zod/z.d.ts.map +1 -1
- package/dist/zod/z.js +1 -0
- package/dist/zod/z.js.map +1 -1
- package/package.json +11 -1
- package/src/core/Frame.ts +41 -33
- package/src/core/FrameReceipt.ts +30 -16
- package/src/core/FrameRequest.ts +78 -0
- package/src/core/FrameSignature.ts +64 -34
- package/src/core/Siwe.ts +21 -13
- package/src/core/Transaction.ts +52 -24
- package/src/core/TransactionRequest.ts +21 -7
- package/src/core/TxEnvelope.ts +16 -3
- package/src/core/TxEnvelopeEip8141.ts +69 -21
- package/src/core/_test/AbiConstructor.test.ts +2 -0
- package/src/core/_test/Frame.test-d.ts +16 -7
- package/src/core/_test/Frame.test.ts +52 -24
- package/src/core/_test/FrameReceipt.test.ts +15 -9
- package/src/core/_test/FrameRequest.test-d.ts +16 -0
- package/src/core/_test/FrameRequest.test.ts +41 -0
- package/src/core/_test/FrameRpc.test.ts +131 -0
- package/src/core/_test/FrameSignature.test-d.ts +20 -0
- package/src/core/_test/FrameSignature.test.ts +132 -11
- package/src/core/_test/RpcSchema.test-d.ts +45 -0
- package/src/core/_test/Siwe.test.ts +147 -0
- package/src/core/_test/TransactionEnvelope.test-d.ts +27 -0
- package/src/core/_test/TransactionEnvelope.test.ts +27 -1
- package/src/core/_test/TransactionReceipt.test.ts +32 -6
- package/src/core/_test/TransactionRequest.test-d.ts +10 -1
- package/src/core/_test/TransactionRequest.test.ts +31 -2
- package/src/core/_test/TxEnvelopeEip8141.test-d.ts +29 -2
- package/src/core/_test/TxEnvelopeEip8141.test.ts +548 -55
- package/src/core/_test/index.test.ts +1 -0
- package/src/core/internal/frameNonce.ts +61 -0
- package/src/core/internal/rpcSchemas/eth.ts +13 -4
- package/src/index.ts +22 -5
- package/src/version.ts +1 -1
- package/src/zod/Frame.ts +5 -5
- package/src/zod/FrameReceipt.ts +11 -1
- package/src/zod/FrameRequest.ts +46 -0
- package/src/zod/FrameSignature.ts +10 -7
- package/src/zod/Transaction.ts +46 -27
- package/src/zod/TransactionRequest.ts +33 -18
- package/src/zod/TxEnvelopeEip8141.ts +2 -0
- package/src/zod/_test/Frame.test.ts +13 -11
- package/src/zod/_test/FrameReceipt.test.ts +11 -4
- package/src/zod/_test/FrameRequest.test-d.ts +15 -0
- package/src/zod/_test/FrameRequest.test.ts +44 -0
- package/src/zod/_test/FrameSignature.test.ts +73 -9
- package/src/zod/_test/RpcSchema.test.ts +106 -0
- package/src/zod/_test/TransactionRequest.test.ts +61 -0
- package/src/zod/_test/TxEnvelopeEip8141.nonce.test.ts +174 -0
- package/src/zod/_test/TxEnvelopeEip8141.test-d.ts +29 -0
- package/src/zod/_test/TxEnvelopeEip8141.test.ts +3 -3
- package/src/zod/internal/Frame.ts +45 -0
- package/src/zod/internal/rpcSchemas/Eth.ts +20 -0
- package/src/zod/z.ts +1 -0
|
@@ -469,6 +469,7 @@ describe('frame receipts', () => {
|
|
|
469
469
|
frameReceipts: [
|
|
470
470
|
{
|
|
471
471
|
executionGasUsed: '0x20000000000001',
|
|
472
|
+
gasUsed: '0x20000000000003',
|
|
472
473
|
logs: [
|
|
473
474
|
{
|
|
474
475
|
address: '0x1111111111111111111111111111111111111111',
|
|
@@ -477,10 +478,22 @@ describe('frame receipts', () => {
|
|
|
477
478
|
},
|
|
478
479
|
],
|
|
479
480
|
stateGasUsed: '0x2',
|
|
480
|
-
status:
|
|
481
|
+
status: '0x1',
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
executionGasUsed: '0x3',
|
|
485
|
+
gasUsed: '0x3',
|
|
486
|
+
logs: [],
|
|
487
|
+
stateGasUsed: '0x0',
|
|
488
|
+
status: '0x0',
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
executionGasUsed: '0x0',
|
|
492
|
+
gasUsed: '0x0',
|
|
493
|
+
logs: [],
|
|
494
|
+
stateGasUsed: '0x0',
|
|
495
|
+
status: '0x2',
|
|
481
496
|
},
|
|
482
|
-
{ executionGasUsed: '0x3', logs: [], stateGasUsed: '0x0', status: 0 },
|
|
483
|
-
{ executionGasUsed: '0x0', logs: [], stateGasUsed: '0x0', status: 2 },
|
|
484
497
|
],
|
|
485
498
|
from: '0x1111111111111111111111111111111111111111',
|
|
486
499
|
gasUsed: '0x20000000000001',
|
|
@@ -498,13 +511,26 @@ describe('frame receipts', () => {
|
|
|
498
511
|
expect(receipt.payer).toBe(rpc.payer)
|
|
499
512
|
expect(receipt.frameReceipts).toEqual([
|
|
500
513
|
{
|
|
501
|
-
|
|
514
|
+
executionGasUsed: 9007199254740993n,
|
|
515
|
+
gasUsed: 9007199254740995n,
|
|
502
516
|
logs: rpc.frameReceipts[0]!.logs,
|
|
503
517
|
stateGasUsed: 2n,
|
|
504
518
|
status: 'success',
|
|
505
519
|
},
|
|
506
|
-
{
|
|
507
|
-
|
|
520
|
+
{
|
|
521
|
+
executionGasUsed: 3n,
|
|
522
|
+
gasUsed: 3n,
|
|
523
|
+
logs: [],
|
|
524
|
+
stateGasUsed: 0n,
|
|
525
|
+
status: 'reverted',
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
executionGasUsed: 0n,
|
|
529
|
+
gasUsed: 0n,
|
|
530
|
+
logs: [],
|
|
531
|
+
stateGasUsed: 0n,
|
|
532
|
+
status: 'skipped',
|
|
533
|
+
},
|
|
508
534
|
])
|
|
509
535
|
expect(TransactionReceipt.toRpc(receipt)).toMatchObject(rpc)
|
|
510
536
|
expect(
|
|
@@ -139,7 +139,16 @@ describe('frame generics', () => {
|
|
|
139
139
|
|
|
140
140
|
test('RPC types', () => {
|
|
141
141
|
expectTypeOf<TransactionRequest.Rpc['frames']>().toEqualTypeOf<
|
|
142
|
-
readonly
|
|
142
|
+
| readonly {
|
|
143
|
+
mode: `0x${string}`
|
|
144
|
+
flags?: `0x${string}` | undefined
|
|
145
|
+
data?: `0x${string}` | undefined
|
|
146
|
+
executionGas?: `0x${string}` | undefined
|
|
147
|
+
stateGas?: `0x${string}` | undefined
|
|
148
|
+
target?: `0x${string}` | null | undefined
|
|
149
|
+
value?: `0x${string}` | undefined
|
|
150
|
+
}[]
|
|
151
|
+
| undefined
|
|
143
152
|
>()
|
|
144
153
|
expectTypeOf<TransactionRequest.Rpc['signatures']>().toEqualTypeOf<
|
|
145
154
|
readonly FrameSignature.Rpc[] | undefined
|
|
@@ -13,6 +13,21 @@ import { kzg } from '../../../test/kzg.js'
|
|
|
13
13
|
import { anvilMainnet } from '../../../test/prool.js'
|
|
14
14
|
|
|
15
15
|
describe('toRpc', () => {
|
|
16
|
+
test('preserves nonce keys without type or frames', () => {
|
|
17
|
+
const request = { nonceKeys: [1n, 2n], nonce: 0n }
|
|
18
|
+
const rpc = TransactionRequest.toRpc(request)
|
|
19
|
+
expect(rpc).toMatchInlineSnapshot(`
|
|
20
|
+
{
|
|
21
|
+
"nonce": "0x0",
|
|
22
|
+
"nonceKeys": [
|
|
23
|
+
"0x1",
|
|
24
|
+
"0x2",
|
|
25
|
+
],
|
|
26
|
+
}
|
|
27
|
+
`)
|
|
28
|
+
expect(TransactionRequest.fromRpc(rpc)).toEqual(request)
|
|
29
|
+
})
|
|
30
|
+
|
|
16
31
|
test('default', () => {
|
|
17
32
|
const request = TransactionRequest.toRpc({
|
|
18
33
|
to: '0x0000000000000000000000000000000000000000',
|
|
@@ -439,6 +454,19 @@ test('exports', () => {
|
|
|
439
454
|
})
|
|
440
455
|
|
|
441
456
|
describe('frame transactions', () => {
|
|
457
|
+
test('requires frames when nonce keys select a frame envelope', () => {
|
|
458
|
+
expect(() =>
|
|
459
|
+
TransactionRequest.toEnvelope({
|
|
460
|
+
chainId: 1,
|
|
461
|
+
from: '0x1111111111111111111111111111111111111111',
|
|
462
|
+
nonceKeys: [1n],
|
|
463
|
+
nonce: 0n,
|
|
464
|
+
}),
|
|
465
|
+
).toThrowErrorMatchingInlineSnapshot(
|
|
466
|
+
'[Quantity.MissingFieldError: Missing required field `frames` on `TransactionRequest`.]',
|
|
467
|
+
)
|
|
468
|
+
})
|
|
469
|
+
|
|
442
470
|
test('derives frame blob sidecars and replaces stale hashes', () => {
|
|
443
471
|
const blobs = Blobs.from('0xdeadbeef')
|
|
444
472
|
const request = {
|
|
@@ -466,7 +494,7 @@ describe('frame transactions', () => {
|
|
|
466
494
|
test('round-trips frame requests and envelopes', () => {
|
|
467
495
|
const envelope = TxEnvelopeEip8141.from({
|
|
468
496
|
chainId: 8141,
|
|
469
|
-
frames: [Frame.from({
|
|
497
|
+
frames: [Frame.from({ executionGas: 50_000n, mode: 'verify' })],
|
|
470
498
|
sender: '0x1111111111111111111111111111111111111111',
|
|
471
499
|
signatures: [FrameSignature.from('0xaabb')],
|
|
472
500
|
})
|
|
@@ -474,8 +502,9 @@ describe('frame transactions', () => {
|
|
|
474
502
|
const rpc = TransactionRequest.toRpc(request)
|
|
475
503
|
expect(rpc.chainId).toBe('0x1fcd')
|
|
476
504
|
expect(rpc.type).toBe('0x6')
|
|
505
|
+
expect(rpc.frames?.[0]?.executionGas).toBe('0xc350')
|
|
477
506
|
expect(rpc.signatures).toEqual([
|
|
478
|
-
{ msg: '0x', scheme:
|
|
507
|
+
{ msg: '0x', scheme: '0x0', signature: '0xaabb' },
|
|
479
508
|
])
|
|
480
509
|
const decoded = TransactionRequest.fromRpc(rpc)
|
|
481
510
|
expect(decoded.chainId).toBe(8141)
|
|
@@ -4,12 +4,12 @@ import { expectTypeOf, test } from 'vp/test'
|
|
|
4
4
|
test('default', () => {
|
|
5
5
|
const envelope = TxEnvelopeEip8141.from({
|
|
6
6
|
chainId: 1,
|
|
7
|
-
frames: [{
|
|
7
|
+
frames: [{ executionGas: 50000n }],
|
|
8
8
|
sender: '0x1111111111111111111111111111111111111111',
|
|
9
9
|
})
|
|
10
10
|
expectTypeOf(envelope).toEqualTypeOf<{
|
|
11
11
|
readonly chainId: 1
|
|
12
|
-
readonly frames: readonly [{ readonly
|
|
12
|
+
readonly frames: readonly [{ readonly executionGas: 50000n }]
|
|
13
13
|
readonly sender: '0x1111111111111111111111111111111111111111'
|
|
14
14
|
readonly type: 'eip8141'
|
|
15
15
|
}>()
|
|
@@ -42,3 +42,30 @@ test('unsigned signature', () => {
|
|
|
42
42
|
}>()
|
|
43
43
|
expectTypeOf(envelope).toMatchTypeOf<TxEnvelopeEip8141.TxEnvelopeEip8141>()
|
|
44
44
|
})
|
|
45
|
+
|
|
46
|
+
test('keyed nonce literals and numberish RPC input', () => {
|
|
47
|
+
const envelope = TxEnvelopeEip8141.from({
|
|
48
|
+
chainId: 1,
|
|
49
|
+
frames: [{}],
|
|
50
|
+
sender: '0x1111111111111111111111111111111111111111',
|
|
51
|
+
nonceKeys: [1n, 2n],
|
|
52
|
+
nonce: 3n,
|
|
53
|
+
})
|
|
54
|
+
expectTypeOf(envelope.nonceKeys).toEqualTypeOf<readonly [1n, 2n]>()
|
|
55
|
+
expectTypeOf(envelope.nonce).toEqualTypeOf<3n>()
|
|
56
|
+
expectTypeOf(TxEnvelopeEip8141.toRpc(envelope).nonceKeys).toEqualTypeOf<
|
|
57
|
+
readonly `0x${string}`[] | undefined
|
|
58
|
+
>()
|
|
59
|
+
expectTypeOf(
|
|
60
|
+
TxEnvelopeEip8141.toRpc({
|
|
61
|
+
...envelope,
|
|
62
|
+
nonceKeys: ['0x1', 2],
|
|
63
|
+
nonce: '0x3',
|
|
64
|
+
}),
|
|
65
|
+
).toEqualTypeOf<TxEnvelopeEip8141.Rpc>()
|
|
66
|
+
// @ts-expect-error decoded nonce keys are bigint
|
|
67
|
+
TxEnvelopeEip8141.from({ ...envelope, nonceKeys: [1] })
|
|
68
|
+
expectTypeOf<keyof TxEnvelopeEip8141.Rpc>()
|
|
69
|
+
.exclude<'nonceSeq'>()
|
|
70
|
+
.toEqualTypeOf<keyof TxEnvelopeEip8141.Rpc>()
|
|
71
|
+
})
|