Skip to content

Commit d43493e

Browse files
authored
Fix type definition of Anchor discriminators (#30)
1 parent 5794385 commit d43493e

File tree

12 files changed

+43
-15
lines changed

12 files changed

+43
-15
lines changed

.changeset/honest-days-smell.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@kinobi-so/nodes-from-anchor": patch
3+
---
4+
5+
Fix type definition of Anchor discriminators

packages/nodes-from-anchor/src/v00/AccountNode.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
camelCase,
77
DiscriminatorNode,
88
fieldDiscriminatorNode,
9+
fixedSizeTypeNode,
910
pdaLinkNode,
1011
structFieldTypeNode,
1112
StructTypeNode,
@@ -34,7 +35,7 @@ export function accountNodeFromAnchorV00(
3435
defaultValue: getAnchorAccountDiscriminatorV00(idlName),
3536
defaultValueStrategy: 'omitted',
3637
name: 'discriminator',
37-
type: bytesTypeNode(),
38+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
3839
});
3940
data = structTypeNode([discriminator, ...data.fields]);
4041
discriminators = [fieldDiscriminatorNode('discriminator')];

packages/nodes-from-anchor/src/v00/InstructionNode.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
camelCase,
44
DiscriminatorNode,
55
fieldDiscriminatorNode,
6+
fixedSizeTypeNode,
67
instructionArgumentNode,
78
InstructionNode,
89
instructionNode,
@@ -36,7 +37,7 @@ export function instructionNodeFromAnchorV00(idl: IdlV00Instruction, origin?: 'a
3637
defaultValue: getAnchorInstructionDiscriminatorV00(idlName),
3738
defaultValueStrategy: 'omitted',
3839
name: 'discriminator',
39-
type: bytesTypeNode(),
40+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
4041
});
4142
dataArguments = [discriminatorField, ...dataArguments];
4243
discriminators = [fieldDiscriminatorNode('discriminator')];

packages/nodes-from-anchor/src/v01/AccountNode.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
bytesTypeNode,
77
camelCase,
88
fieldDiscriminatorNode,
9+
fixedSizeTypeNode,
910
structFieldTypeNode,
1011
structTypeNode,
1112
} from '@kinobi-so/nodes';
@@ -33,7 +34,7 @@ export function accountNodeFromAnchorV01(idl: IdlV01Account, types: IdlV01TypeDe
3334
defaultValue: getAnchorDiscriminatorV01(idl.discriminator),
3435
defaultValueStrategy: 'omitted',
3536
name: 'discriminator',
36-
type: bytesTypeNode(),
37+
type: fixedSizeTypeNode(bytesTypeNode(), idl.discriminator.length),
3738
});
3839

3940
return accountNode({

packages/nodes-from-anchor/src/v01/InstructionNode.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
bytesTypeNode,
33
camelCase,
44
fieldDiscriminatorNode,
5+
fixedSizeTypeNode,
56
instructionArgumentNode,
67
InstructionNode,
78
instructionNode,
@@ -20,7 +21,7 @@ export function instructionNodeFromAnchorV01(idl: IdlV01Instruction): Instructio
2021
defaultValue: getAnchorDiscriminatorV01(idl.discriminator),
2122
defaultValueStrategy: 'omitted',
2223
name: 'discriminator',
23-
type: bytesTypeNode(),
24+
type: fixedSizeTypeNode(bytesTypeNode(), idl.discriminator.length),
2425
});
2526
dataArguments = [discriminatorField, ...dataArguments];
2627
const discriminators = [fieldDiscriminatorNode('discriminator')];

packages/nodes-from-anchor/src/v01/PdaNode.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
bytesTypeNode,
44
camelCase,
55
constantPdaSeedNode,
6+
fixedSizeTypeNode,
67
PdaNode,
78
pdaNode,
89
PdaSeedNode,
@@ -17,7 +18,10 @@ export function pdaNodeFromAnchorV01(idl: IdlV01InstructionAccount): PdaNode {
1718
const seeds = idl.pda?.seeds.map((seed): PdaSeedNode => {
1819
switch (seed.kind) {
1920
case 'const':
20-
return constantPdaSeedNode(bytesTypeNode(), getAnchorDiscriminatorV01(seed.value));
21+
return constantPdaSeedNode(
22+
fixedSizeTypeNode(bytesTypeNode(), seed.value.length),
23+
getAnchorDiscriminatorV01(seed.value),
24+
);
2125
case 'account':
2226
return variablePdaSeedNode(seed.path, publicKeyTypeNode());
2327
case 'arg':

packages/nodes-from-anchor/test/v00/AccountNode.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
bytesTypeNode,
44
bytesValueNode,
55
fieldDiscriminatorNode,
6+
fixedSizeTypeNode,
67
numberTypeNode,
78
structFieldTypeNode,
89
structTypeNode,
@@ -49,7 +50,7 @@ test('it creates account nodes with anchor discriminators', () => {
4950
defaultValue: bytesValueNode('base16', 'f61c0657fb2d322a'),
5051
defaultValueStrategy: 'omitted',
5152
name: 'discriminator',
52-
type: bytesTypeNode(),
53+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
5354
}),
5455
]),
5556
discriminators: [fieldDiscriminatorNode('discriminator')],

packages/nodes-from-anchor/test/v00/InstructionNode.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
bytesTypeNode,
33
bytesValueNode,
44
fieldDiscriminatorNode,
5+
fixedSizeTypeNode,
56
instructionAccountNode,
67
instructionArgumentNode,
78
instructionNode,
@@ -44,7 +45,7 @@ test('it creates instruction nodes with anchor discriminators', () => {
4445
defaultValue: bytesValueNode('base16', 'c3f1b80e7f9b4435'),
4546
defaultValueStrategy: 'omitted',
4647
name: 'discriminator',
47-
type: bytesTypeNode(),
48+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
4849
}),
4950
],
5051
discriminators: [fieldDiscriminatorNode('discriminator')],

packages/nodes-from-anchor/test/v01/AccountNode.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
accountNode,
33
bytesTypeNode,
44
fieldDiscriminatorNode,
5+
fixedSizeTypeNode,
56
numberTypeNode,
67
structFieldTypeNode,
78
structTypeNode,
@@ -40,7 +41,7 @@ test('it creates account nodes with anchor discriminators', () => {
4041
defaultValue: getAnchorDiscriminatorV01([246, 28, 6, 87, 251, 45, 50, 42]),
4142
defaultValueStrategy: 'omitted',
4243
name: 'discriminator',
43-
type: bytesTypeNode(),
44+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
4445
}),
4546
structFieldTypeNode({
4647
name: 'name',

packages/nodes-from-anchor/test/v01/InstructionNode.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
bytesTypeNode,
33
fieldDiscriminatorNode,
4+
fixedSizeTypeNode,
45
instructionAccountNode,
56
instructionArgumentNode,
67
instructionNode,
@@ -26,7 +27,7 @@ test('it creates instruction nodes', () => {
2627
defaultValue: getAnchorDiscriminatorV01([246, 28, 6, 87, 251, 45, 50, 42]),
2728
defaultValueStrategy: 'omitted',
2829
name: 'discriminator',
29-
type: bytesTypeNode(),
30+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
3031
}),
3132
instructionArgumentNode({ name: 'amount', type: numberTypeNode('u8') }),
3233
],
@@ -51,7 +52,7 @@ test('it creates instruction nodes with anchor discriminators', () => {
5152
defaultValue: getAnchorDiscriminatorV01([246, 28, 6, 87, 251, 45, 50, 42]),
5253
defaultValueStrategy: 'omitted',
5354
name: 'discriminator',
54-
type: bytesTypeNode(),
55+
type: fixedSizeTypeNode(bytesTypeNode(), 8),
5556
}),
5657
],
5758
discriminators: [fieldDiscriminatorNode('discriminator')],

0 commit comments

Comments
 (0)