Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit ed013f8

Browse files
authored
token-group-js: Update to tp3 (#6665)
1 parent 7368c1f commit ed013f8

File tree

6 files changed

+112
-21
lines changed

6 files changed

+112
-21
lines changed

pnpm-lock.yaml

Lines changed: 85 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token-group/js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"@solana/web3.js": "^1.91.7"
4848
},
4949
"dependencies": {
50-
"@solana/codecs": "2.0.0-preview.2",
50+
"@solana/codecs": "2.0.0-preview.3",
5151
"@solana/spl-type-length-value": "0.1.0"
5252
},
5353
"devDependencies": {

token-group/js/src/instruction.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
import type { Encoder } from '@solana/codecs';
22
import type { PublicKey } from '@solana/web3.js';
3-
import { getBytesEncoder, getStructEncoder, getTupleEncoder, getU32Encoder, mapEncoder } from '@solana/codecs';
3+
import {
4+
fixEncoderSize,
5+
getBytesEncoder,
6+
getStructEncoder,
7+
getTupleEncoder,
8+
getU32Encoder,
9+
transformEncoder,
10+
} from '@solana/codecs';
411
import { splDiscriminate } from '@solana/spl-type-length-value';
512
import { SystemProgram, TransactionInstruction } from '@solana/web3.js';
613

714
function getInstructionEncoder<T extends object>(discriminator: Uint8Array, dataEncoder: Encoder<T>): Encoder<T> {
8-
return mapEncoder(getTupleEncoder([getBytesEncoder(), dataEncoder]), (data: T): [Uint8Array, T] => [
15+
return transformEncoder(getTupleEncoder([getBytesEncoder(), dataEncoder]), (data: T): [Uint8Array, T] => [
916
discriminator,
1017
data,
1118
]);
1219
}
1320

1421
function getPublicKeyEncoder(): Encoder<PublicKey> {
15-
return mapEncoder(getBytesEncoder({ size: 32 }), (publicKey: PublicKey) => publicKey.toBytes());
22+
return transformEncoder(fixEncoderSize(getBytesEncoder(), 32), (publicKey: PublicKey) => publicKey.toBytes());
1623
}
1724

1825
export interface InitializeGroupInstruction {

token-group/js/src/state/tokenGroup.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { PublicKey } from '@solana/web3.js';
2-
import { getBytesCodec, getStructCodec, getU32Codec } from '@solana/codecs';
2+
import type { ReadonlyUint8Array } from '@solana/codecs';
3+
import { fixCodecSize, getBytesCodec, getStructCodec, getU32Codec } from '@solana/codecs';
34

45
const tokenGroupCodec = getStructCodec([
5-
['updateAuthority', getBytesCodec({ size: 32 })],
6-
['mint', getBytesCodec({ size: 32 })],
6+
['updateAuthority', fixCodecSize(getBytesCodec(), 32)],
7+
['mint', fixCodecSize(getBytesCodec(), 32)],
78
['size', getU32Codec()],
89
['maxSize', getU32Codec()],
910
]);
@@ -22,7 +23,7 @@ export interface TokenGroup {
2223
}
2324

2425
// Checks if all elements in the array are 0
25-
function isNonePubkey(buffer: Uint8Array): boolean {
26+
function isNonePubkey(buffer: ReadonlyUint8Array): boolean {
2627
for (let i = 0; i < buffer.length; i++) {
2728
if (buffer[i] !== 0) {
2829
return false;
@@ -32,7 +33,7 @@ function isNonePubkey(buffer: Uint8Array): boolean {
3233
}
3334

3435
// Pack TokenGroup into byte slab
35-
export function packTokenGroup(group: TokenGroup): Uint8Array {
36+
export function packTokenGroup(group: TokenGroup): ReadonlyUint8Array {
3637
// If no updateAuthority given, set it to the None/Zero PublicKey for encoding
3738
const updateAuthority = group.updateAuthority ?? PublicKey.default;
3839
return tokenGroupCodec.encode({
@@ -44,7 +45,7 @@ export function packTokenGroup(group: TokenGroup): Uint8Array {
4445
}
4546

4647
// unpack byte slab into TokenGroup
47-
export function unpackTokenGroup(buffer: Buffer | Uint8Array): TokenGroup {
48+
export function unpackTokenGroup(buffer: Buffer | Uint8Array | ReadonlyUint8Array): TokenGroup {
4849
const data = tokenGroupCodec.decode(buffer);
4950

5051
return isNonePubkey(data.updateAuthority)

token-group/js/src/state/tokenGroupMember.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { PublicKey } from '@solana/web3.js';
2-
import { getBytesCodec, getStructCodec, getU32Codec } from '@solana/codecs';
2+
import type { ReadonlyUint8Array } from '@solana/codecs';
3+
import { fixCodecSize, getBytesCodec, getStructCodec, getU32Codec } from '@solana/codecs';
34

45
const tokenGroupMemberCodec = getStructCodec([
5-
['mint', getBytesCodec({ size: 32 })],
6-
['group', getBytesCodec({ size: 32 })],
6+
['mint', fixCodecSize(getBytesCodec(), 32)],
7+
['group', fixCodecSize(getBytesCodec(), 32)],
78
['memberNumber', getU32Codec()],
89
]);
910

@@ -19,7 +20,7 @@ export interface TokenGroupMember {
1920
}
2021

2122
// Pack TokenGroupMember into byte slab
22-
export function packTokenGroupMember(member: TokenGroupMember): Uint8Array {
23+
export function packTokenGroupMember(member: TokenGroupMember): ReadonlyUint8Array {
2324
return tokenGroupMemberCodec.encode({
2425
mint: member.mint.toBuffer(),
2526
group: member.group.toBuffer(),
@@ -28,7 +29,7 @@ export function packTokenGroupMember(member: TokenGroupMember): Uint8Array {
2829
}
2930

3031
// unpack byte slab into TokenGroupMember
31-
export function unpackTokenGroupMember(buffer: Buffer | Uint8Array): TokenGroupMember {
32+
export function unpackTokenGroupMember(buffer: Buffer | Uint8Array | ReadonlyUint8Array): TokenGroupMember {
3233
const data = tokenGroupMemberCodec.decode(buffer);
3334
return {
3435
mint: new PublicKey(data.mint),

token-group/js/test/instruction.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'chai';
22
import type { Decoder } from '@solana/codecs';
3-
import { getBytesDecoder, getStructDecoder, getU32Decoder } from '@solana/codecs';
3+
import { fixDecoderSize, getBytesDecoder, getStructDecoder, getU32Decoder } from '@solana/codecs';
44
import { splDiscriminate } from '@solana/spl-type-length-value';
55
import { PublicKey, type TransactionInstruction } from '@solana/web3.js';
66

@@ -42,7 +42,7 @@ describe('Token Group Instructions', () => {
4242
}),
4343
splDiscriminate('spl_token_group_interface:initialize_token_group'),
4444
getStructDecoder([
45-
['updateAuthority', getBytesDecoder({ size: 32 })],
45+
['updateAuthority', fixDecoderSize(getBytesDecoder(), 32)],
4646
['maxSize', getU32Decoder()],
4747
]),
4848
{ updateAuthority: Uint8Array.from(updateAuthority.toBuffer()), maxSize }
@@ -72,7 +72,7 @@ describe('Token Group Instructions', () => {
7272
newAuthority: PublicKey.default,
7373
}),
7474
splDiscriminate('spl_token_group_interface:update_authority'),
75-
getStructDecoder([['newAuthority', getBytesDecoder({ size: 32 })]]),
75+
getStructDecoder([['newAuthority', fixDecoderSize(getBytesDecoder(), 32)]]),
7676
{ newAuthority: Uint8Array.from(PublicKey.default.toBuffer()) }
7777
);
7878
});

0 commit comments

Comments
 (0)