Skip to content

Commit

Permalink
feat: support Anchor 0.24
Browse files Browse the repository at this point in the history
  • Loading branch information
macalinao committed Apr 15, 2022
1 parent c20d4b5 commit 002c1de
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 43 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"@babel/core": "^7.17.9",
"@babel/preset-env": "^7.16.11",
"@babel/preset-typescript": "^7.16.7",
"@project-serum/anchor": "^0.22.1",
"@project-serum/anchor": "^0.24.2",
"@rushstack/eslint-patch": "^1.1.3",
"@saberhq/eslint-config": "*",
"@saberhq/eslint-config-react": "*",
Expand Down
4 changes: 2 additions & 2 deletions packages/anchor-contrib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
"prepublishOnly": "npm run build"
},
"peerDependencies": {
"@project-serum/anchor": "^0.22 || ^0.23",
"@project-serum/anchor": "^0.22 || ^0.23 || ^0.24",
"@solana/web3.js": "^1.37",
"bn.js": "^4 || ^5"
},
"devDependencies": {
"@project-serum/anchor": "^0.22.1",
"@project-serum/anchor": "^0.24.2",
"@solana/web3.js": "^1.37.2",
"@types/lodash.camelcase": "^4.3.6",
"@types/lodash.mapvalues": "^4.6.6",
Expand Down
67 changes: 56 additions & 11 deletions packages/anchor-contrib/src/utils/provider.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,68 @@
import { Provider as AnchorProvider } from "@project-serum/anchor";
import type { Provider as IAnchorProvider } from "@project-serum/anchor";
import * as anchor from "@project-serum/anchor";
import type {
Provider as SaberProvider,
ReadonlyProvider as ReadonlySaberProvider,
Wallet,
} from "@saberhq/solana-contrib";
import { SolanaProvider } from "@saberhq/solana-contrib";
import {
SolanaProvider,
SolanaReadonlyProvider,
} from "@saberhq/solana-contrib";
import type { ConfirmOptions, Connection } from "@solana/web3.js";

export interface AnchorProvider extends IAnchorProvider {
wallet: Wallet;
opts: ConfirmOptions;
}

/**
* Class used to create new {@link AnchorProvider}s.
*/
export const AnchorProviderClass: AnchorProviderCtor &
typeof anchor.AnchorProvider =
"AnchorProvider" in anchor
? anchor.AnchorProvider
: (
anchor as unknown as {
Provider: AnchorProviderCtor & typeof anchor.AnchorProvider;
}
).Provider;

/**
* Constructor for an Anchor provider.
*/
export type AnchorProviderCtor = new (
connection: Connection,
wallet: Wallet,
opts: ConfirmOptions
) => AnchorProvider;

/**
* Create a new Anchor provider.
*
* @param connection
* @param wallet
* @param opts
* @returns
*/
export const buildAnchorProvider = (
connection: Connection,
wallet: Wallet,
opts: ConfirmOptions
) => {
return new AnchorProviderClass(connection, wallet, opts);
};

/**
* Creates a readonly Saber Provider from an Anchor provider.
* @param anchorProvider The Anchor provider.
* @returns
*/
export const makeReadonlySaberProvider = (
anchorProvider: AnchorProvider
anchorProvider: IAnchorProvider
): ReadonlySaberProvider => {
return SolanaProvider.load({
connection: anchorProvider.connection,
wallet: anchorProvider.wallet,
opts: anchorProvider.opts,
});
return new SolanaReadonlyProvider(anchorProvider.connection);
};

/**
Expand All @@ -26,9 +71,9 @@ export const makeReadonlySaberProvider = (
* @returns
*/
export const makeSaberProvider = (
anchorProvider: AnchorProvider
anchorProvider: anchor.AnchorProvider
): SaberProvider => {
return SolanaProvider.load({
return SolanaProvider.init({
connection: anchorProvider.connection,
wallet: anchorProvider.wallet,
opts: anchorProvider.opts,
Expand All @@ -43,7 +88,7 @@ export const makeSaberProvider = (
export const makeAnchorProvider = (
saberProvider: ReadonlySaberProvider
): AnchorProvider => {
return new AnchorProvider(
return buildAnchorProvider(
saberProvider.connection,
saberProvider.wallet,
saberProvider.opts
Expand Down
2 changes: 1 addition & 1 deletion packages/chai-solana/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"jsbi": "*"
},
"devDependencies": {
"@project-serum/anchor": "^0.22.1",
"@project-serum/anchor": "^0.24.2",
"@solana/web3.js": "^1.37.2",
"bn.js": "^5.2.0",
"jsbi": "^4.2.1"
Expand Down
4 changes: 2 additions & 2 deletions packages/chai-solana/src/debugAccountOwners.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Provider as AnchorProvider } from "@project-serum/anchor";
import { AnchorProviderClass } from "@saberhq/anchor-contrib";
import { printAccountOwners } from "@saberhq/solana-contrib";

/**
Expand Down Expand Up @@ -39,5 +39,5 @@ import { printAccountOwners } from "@saberhq/solana-contrib";
* intended for debugging purposes only.
*/
export function debugAccountOwners(plainObj: object): Promise<void> {
return printAccountOwners(AnchorProvider.env().connection, plainObj);
return printAccountOwners(AnchorProviderClass.env().connection, plainObj);
}
35 changes: 9 additions & 26 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3490,12 +3490,12 @@ __metadata:
languageName: node
linkType: hard

"@project-serum/anchor@npm:^0.22.1":
version: 0.22.1
resolution: "@project-serum/anchor@npm:0.22.1"
"@project-serum/anchor@npm:^0.24.2":
version: 0.24.2
resolution: "@project-serum/anchor@npm:0.24.2"
dependencies:
"@project-serum/borsh": ^0.2.5
"@solana/web3.js": ^1.17.0
"@solana/web3.js": ^1.36.0
base64-js: ^1.5.1
bn.js: ^5.1.2
bs58: ^4.0.1
Expand All @@ -3504,12 +3504,11 @@ __metadata:
cross-fetch: ^3.1.5
crypto-hash: ^1.3.0
eventemitter3: ^4.0.7
find: ^0.3.0
js-sha256: ^0.9.0
pako: ^2.0.3
snake-case: ^3.0.4
toml: ^3.0.0
checksum: d4af90220b94e7de68b74693066e03e6b0d917e8eb86d58fcb623c553b3864165c000ea83d69aa301e135569a745e4fa36a76c784473b7c05d032bae18230496
checksum: feceab2997ec742d7864c9c5d8daf605becb8465b39b77ae67d3e69940645a3c257f2d9aefd1aef3287dcc4b572594fff5923681dbc386e7d13a28fa49666054
languageName: node
linkType: hard

Expand Down Expand Up @@ -3560,7 +3559,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@saberhq/anchor-contrib@workspace:packages/anchor-contrib"
dependencies:
"@project-serum/anchor": ^0.22.1
"@project-serum/anchor": ^0.24.2
"@saberhq/solana-contrib": ^1.12.60
"@solana/web3.js": ^1.37.2
"@types/lodash.camelcase": ^4.3.6
Expand All @@ -3571,7 +3570,7 @@ __metadata:
lodash.mapvalues: ^4.6.0
tslib: ^2.3.1
peerDependencies:
"@project-serum/anchor": ^0.22 || ^0.23
"@project-serum/anchor": ^0.22 || ^0.23 || ^0.24
"@solana/web3.js": ^1.37
bn.js: ^4 || ^5
languageName: unknown
Expand All @@ -3581,7 +3580,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@saberhq/chai-solana@workspace:packages/chai-solana"
dependencies:
"@project-serum/anchor": ^0.22.1
"@project-serum/anchor": ^0.24.2
"@saberhq/anchor-contrib": ^1.12.60
"@saberhq/solana-contrib": ^1.12.60
"@saberhq/token-utils": ^1.12.60
Expand Down Expand Up @@ -3642,7 +3641,7 @@ __metadata:
"@babel/core": ^7.17.9
"@babel/preset-env": ^7.16.11
"@babel/preset-typescript": ^7.16.7
"@project-serum/anchor": ^0.22.1
"@project-serum/anchor": ^0.24.2
"@rushstack/eslint-patch": ^1.1.3
"@saberhq/eslint-config": "*"
"@saberhq/eslint-config-react": "*"
Expand Down Expand Up @@ -8562,15 +8561,6 @@ __metadata:
languageName: node
linkType: hard

"find@npm:^0.3.0":
version: 0.3.0
resolution: "find@npm:0.3.0"
dependencies:
traverse-chain: ~0.1.0
checksum: 1cc321b24e13b11e088e2c951edef125faefdbd6ecab34d92c22a2d121af4a99b2feaee7712ad9ab38226da793702ab59a6c8a6343db63a0ab3901589241ec8c
languageName: node
linkType: hard

"flat-cache@npm:^3.0.4":
version: 3.0.4
resolution: "flat-cache@npm:3.0.4"
Expand Down Expand Up @@ -14583,13 +14573,6 @@ resolve@^2.0.0-next.3:
languageName: node
linkType: hard

"traverse-chain@npm:~0.1.0":
version: 0.1.0
resolution: "traverse-chain@npm:0.1.0"
checksum: dea79231a429a3dd80a829ff83e8914b6d0032d55dd0971f69d5273e95155869fca400dd9e22f0d91c3b0dda9668aaeeb694f525d7e5a55ca7f695cc149088a2
languageName: node
linkType: hard

"treeify@npm:^1.1.0":
version: 1.1.0
resolution: "treeify@npm:1.1.0"
Expand Down

0 comments on commit 002c1de

Please sign in to comment.