@marinade.finance/bankrun-utils 2.4.16 → 4.0.0

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/README.md CHANGED
@@ -6,3 +6,23 @@ Utilities to work with Bankrun Solana testing library
6
6
 
7
7
  * https://github.com/kevinheavey/solana-bankrun
8
8
  * https://github.com/kevinheavey/anchor-bankrun
9
+
10
+ ### Dependencies
11
+
12
+ Library defines set of `peerDependencies` that are required to be directly installed by dependent program.
13
+
14
+
15
+ ```sh
16
+ pnpm add @solana/web3.js@1
17
+ pnpm add @marinade.finance/web3js-1x@latest
18
+ pnpm add solana-bankrun@0.2.0
19
+ pnpm add anchor-bankrun@0.2.0
20
+ pnpm add class-transformer@latest
21
+ ```
22
+
23
+ ### Installation
24
+
25
+ ```sh
26
+ # see Dependencies
27
+ pnpm add -D @marinade.finance/bankrun-utils@latest
28
+ ```
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@marinade.finance/bankrun-utils",
3
+ "version": "4.0.0",
4
+ "description": "Bankrun test library utilities",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git@github.com:marinade-finance/typescript-common.git"
8
+ },
9
+ "main": "dist/src/index.js",
10
+ "types": "dist/src/index.d.ts",
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "keywords": [
15
+ "solana",
16
+ "marinade.finance",
17
+ "staking",
18
+ "blockchain",
19
+ "testing"
20
+ ],
21
+ "files": [
22
+ "dist/",
23
+ "!dist/src/__tests__",
24
+ "README.md"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc --build",
28
+ "test": "pnpm jest --config ../../jest.config.js --testPathPattern=\"$(pwd)\""
29
+ },
30
+ "devDependencies": {
31
+ "@solana/web3.js": "1.98.4",
32
+ "@marinade.finance/web3js-1x": "workspace:*",
33
+ "solana-bankrun": "0.2.0",
34
+ "anchor-bankrun": "0.2.0",
35
+ "class-transformer": "0.5.1"
36
+ },
37
+ "peerDependencies": {
38
+ "@solana/web3.js": "^1.98.4",
39
+ "@marinade.finance/web3js-1x": "workspace:*",
40
+ "solana-bankrun": "^0.2.0",
41
+ "anchor-bankrun": "^0.2.0",
42
+ "class-transformer": "^0.5.1"
43
+ },
44
+ "engines": {
45
+ "node": ">=16"
46
+ }
47
+ }
@@ -1,5 +1,5 @@
1
- import { PublicKey } from '@solana/web3.js';
2
- import { BankrunProvider } from 'anchor-bankrun';
1
+ import type { PublicKey } from '@solana/web3.js';
2
+ import type { BankrunProvider } from 'anchor-bankrun';
3
3
  export declare function assertNotExist(provider: BankrunProvider, account: PublicKey): Promise<void>;
4
4
  export declare const MINIMUM_SLOTS_PER_EPOCH: bigint;
5
5
  export declare function warpToEpoch(provider: BankrunProvider, epoch: number | bigint): void;
@@ -9,3 +9,4 @@ export declare function warpToNextEpoch(provider: BankrunProvider): Promise<void
9
9
  export declare function currentSlot(provider: BankrunProvider): Promise<bigint>;
10
10
  export declare function warpOffsetSlot(provider: BankrunProvider, plusSlots: number | bigint): Promise<void>;
11
11
  export declare function warpToNextSlot(provider: BankrunProvider): Promise<void>;
12
+ //# sourceMappingURL=bankrun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bankrun.d.ts","sourceRoot":"","sources":["../../src/bankrun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,SAAS,iBAInB;AAGD,eAAO,MAAM,uBAAuB,QAAa,CAAA;AAEjD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,QAa5E;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,MAAM,GAAG,MAAM,iBAI5B;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,eAAe,iBAE9D;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5E;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,MAAM,GAAG,MAAM,iBAI3B;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,eAAe,iBAE7D"}
@@ -1,14 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.warpToNextSlot = exports.warpOffsetSlot = exports.currentSlot = exports.warpToNextEpoch = exports.warpOffsetEpoch = exports.currentEpoch = exports.warpToEpoch = exports.MINIMUM_SLOTS_PER_EPOCH = exports.assertNotExist = void 0;
3
+ exports.MINIMUM_SLOTS_PER_EPOCH = void 0;
4
+ exports.assertNotExist = assertNotExist;
5
+ exports.warpToEpoch = warpToEpoch;
6
+ exports.currentEpoch = currentEpoch;
7
+ exports.warpOffsetEpoch = warpOffsetEpoch;
8
+ exports.warpToNextEpoch = warpToNextEpoch;
9
+ exports.currentSlot = currentSlot;
10
+ exports.warpOffsetSlot = warpOffsetSlot;
11
+ exports.warpToNextSlot = warpToNextSlot;
4
12
  async function assertNotExist(provider, account) {
5
13
  const accountInfo = await provider.context.banksClient.getAccount(account);
6
14
  expect(accountInfo).toBeNull();
7
15
  }
8
- exports.assertNotExist = assertNotExist;
9
- // https://github.com/solana-labs/solana/blob/v1.17.7/sdk/program/src/epoch_schedule.rs#L29C1-L29C45
10
16
  exports.MINIMUM_SLOTS_PER_EPOCH = BigInt(32);
11
- // https://github.com/solana-labs/solana/blob/v1.17.7/sdk/program/src/epoch_schedule.rs#L167
12
17
  function warpToEpoch(provider, epoch) {
13
18
  const epochBigInt = BigInt(epoch);
14
19
  const { slotsPerEpoch, firstNormalEpoch, firstNormalSlot } = provider.context.genesisConfig.epochSchedule;
@@ -23,31 +28,24 @@ function warpToEpoch(provider, epoch) {
23
28
  }
24
29
  provider.context.warpToSlot(warpToSlot);
25
30
  }
26
- exports.warpToEpoch = warpToEpoch;
27
31
  async function currentEpoch(provider) {
28
32
  return (await provider.context.banksClient.getClock()).epoch;
29
33
  }
30
- exports.currentEpoch = currentEpoch;
31
34
  async function warpOffsetEpoch(provider, plusEpochs) {
32
35
  const nextEpoch = (await currentEpoch(provider)) + BigInt(plusEpochs);
33
36
  warpToEpoch(provider, nextEpoch);
34
37
  }
35
- exports.warpOffsetEpoch = warpOffsetEpoch;
36
38
  async function warpToNextEpoch(provider) {
37
39
  await warpOffsetEpoch(provider, 1);
38
40
  }
39
- exports.warpToNextEpoch = warpToNextEpoch;
40
41
  async function currentSlot(provider) {
41
42
  return (await provider.context.banksClient.getClock()).slot;
42
43
  }
43
- exports.currentSlot = currentSlot;
44
44
  async function warpOffsetSlot(provider, plusSlots) {
45
45
  const nextSlot = (await currentSlot(provider)) + BigInt(plusSlots);
46
46
  provider.context.warpToSlot(nextSlot);
47
47
  }
48
- exports.warpOffsetSlot = warpOffsetSlot;
49
48
  async function warpToNextSlot(provider) {
50
49
  await warpOffsetSlot(provider, 1);
51
50
  }
52
- exports.warpToNextSlot = warpToNextSlot;
53
51
  //# sourceMappingURL=bankrun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bankrun.js","sourceRoot":"","sources":["../../src/bankrun.ts"],"names":[],"mappings":";;;AAGA,wCAMC;AAKD,kCAaC;AAED,oCAEC;AAED,0CAMC;AAED,0CAEC;AAED,kCAEC;AAED,wCAMC;AAED,wCAEC;AAxDM,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,OAAkB;IAElB,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1E,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;AAChC,CAAC;AAGY,QAAA,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AAEjD,SAAgB,WAAW,CAAC,QAAyB,EAAE,KAAsB;IAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,GACxD,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAA;IAC9C,IAAI,UAAkB,CAAA;IACtB,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAAC;QACpC,UAAU;YACR,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,+BAAuB,CAAA;IACpE,CAAC;SAAM,CAAC;QACN,UAAU;YACR,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,aAAa,GAAG,eAAe,CAAA;IACtE,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AACzC,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,QAAyB;IAC1D,OAAO,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAA;AAC9D,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,QAAyB,EACzB,UAA2B;IAE3B,MAAM,SAAS,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IACrE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAClC,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,QAAyB;IAC7D,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;AACpC,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,QAAyB;IACzD,OAAO,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAA;AAC7D,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,SAA0B;IAE1B,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAClE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,QAAyB;IAC5D,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;AACnC,CAAC"}
@@ -1,7 +1,8 @@
1
- import { ExtendedProvider, Wallet } from '@marinade.finance/web3js-common';
2
- import { Keypair, PublicKey, Signer, Transaction, TransactionInstruction, TransactionInstructionCtorFields } from '@solana/web3.js';
1
+ import { Keypair, Transaction } from '@solana/web3.js';
3
2
  import { BankrunProvider } from 'anchor-bankrun';
4
- import { BanksTransactionMeta } from 'solana-bankrun';
3
+ import type { ExtendedProvider, Wallet } from '@marinade.finance/web3js-1x';
4
+ import type { PublicKey, Signer, TransactionInstruction, TransactionInstructionCtorFields } from '@solana/web3.js';
5
+ import type { BanksTransactionMeta } from 'solana-bankrun';
5
6
  export declare class BankrunExtendedProvider extends BankrunProvider implements ExtendedProvider {
6
7
  sendIx(signers: (Wallet | Signer | Keypair)[], ...ixes: (Transaction | TransactionInstruction | TransactionInstructionCtorFields)[]): Promise<void>;
7
8
  get walletPubkey(): PublicKey;
@@ -9,3 +10,4 @@ export declare class BankrunExtendedProvider extends BankrunProvider implements
9
10
  export declare function bankrunTransaction(provider: BankrunProvider): Promise<Transaction>;
10
11
  export declare function bankrunExecuteIx(provider: BankrunProvider, signers: (Wallet | Signer | Keypair)[], ...ixes: (Transaction | TransactionInstruction | TransactionInstructionCtorFields)[]): Promise<BanksTransactionMeta>;
11
12
  export declare function bankrunExecute(provider: BankrunProvider, signers: (Wallet | Signer | Keypair)[], tx: Transaction): Promise<BanksTransactionMeta>;
13
+ //# sourceMappingURL=extendedProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendedProvider.d.ts","sourceRoot":"","sources":["../../src/extendedProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAE1D,qBAAa,uBACX,SAAQ,eACR,YAAW,gBAAgB;IAErB,MAAM,CACV,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,EACtC,GAAG,IAAI,EAAE,CACL,WAAW,GACX,sBAAsB,GACtB,gCAAgC,CACnC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IAMhB,IAAI,YAAY,IAAI,SAAS,CAE5B;CACF;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,WAAW,CAAC,CAUtB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,EACtC,GAAG,IAAI,EAAE,CACL,WAAW,GACX,sBAAsB,GACtB,gCAAgC,CACnC,EAAE,GACF,OAAO,CAAC,oBAAoB,CAAC,CAI/B;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,EACtC,EAAE,EAAE,WAAW,GACd,OAAO,CAAC,oBAAoB,CAAC,CAc/B"}
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bankrunExecute = exports.bankrunExecuteIx = exports.bankrunTransaction = exports.BankrunExtendedProvider = void 0;
4
- const web3js_common_1 = require("@marinade.finance/web3js-common");
3
+ exports.BankrunExtendedProvider = void 0;
4
+ exports.bankrunTransaction = bankrunTransaction;
5
+ exports.bankrunExecuteIx = bankrunExecuteIx;
6
+ exports.bankrunExecute = bankrunExecute;
7
+ const web3js_1x_1 = require("@marinade.finance/web3js-1x");
5
8
  const web3_js_1 = require("@solana/web3.js");
6
9
  const anchor_bankrun_1 = require("anchor-bankrun");
7
10
  class BankrunExtendedProvider extends anchor_bankrun_1.BankrunProvider {
@@ -24,26 +27,24 @@ async function bankrunTransaction(provider) {
24
27
  lastValidBlockHeight,
25
28
  });
26
29
  }
27
- exports.bankrunTransaction = bankrunTransaction;
28
30
  async function bankrunExecuteIx(provider, signers, ...ixes) {
29
31
  const tx = await bankrunTransaction(provider);
30
32
  tx.add(...ixes);
31
33
  return await bankrunExecute(provider, signers, tx);
32
34
  }
33
- exports.bankrunExecuteIx = bankrunExecuteIx;
34
35
  async function bankrunExecute(provider, signers, tx) {
35
36
  for (const signer of signers) {
36
- if ((0, web3js_common_1.instanceOfWallet)(signer)) {
37
+ if ((0, web3js_1x_1.instanceOfWallet)(signer)) {
37
38
  await signer.signTransaction(tx);
38
39
  }
39
40
  else if (signer instanceof web3_js_1.Keypair || 'secretKey' in signer) {
40
41
  tx.partialSign(signer);
41
42
  }
42
43
  else {
43
- throw new Error('bankrunExecute: provided signer parameter is not a signer: ' + signer);
44
+ throw new Error('bankrunExecute: provided signer parameter is not a signer: ' +
45
+ String(signer));
44
46
  }
45
47
  }
46
48
  return await provider.context.banksClient.processTransaction(tx);
47
49
  }
48
- exports.bankrunExecute = bankrunExecute;
49
50
  //# sourceMappingURL=extendedProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendedProvider.js","sourceRoot":"","sources":["../../src/extendedProvider.ts"],"names":[],"mappings":";;;AAqCA,gDAYC;AAED,4CAYC;AAED,wCAkBC;AAjFD,2DAA8D;AAC9D,6CAAsD;AACtD,mDAAgD;AAWhD,MAAa,uBACX,SAAQ,gCAAe;IAGvB,KAAK,CAAC,MAAM,CACV,OAAsC,EACtC,GAAG,IAIA;QAEH,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACzC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QACf,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;IAC9B,CAAC;CACF;AApBD,0DAoBC;AAEM,KAAK,UAAU,kBAAkB,CACtC,QAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAA;IAClE,MAAM,oBAAoB,GAAG,CAC3B,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC7B,CAAA;IACX,OAAO,IAAI,qBAAW,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;QACnC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa;QACzC,oBAAoB;KACrB,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,QAAyB,EACzB,OAAsC,EACtC,GAAG,IAIA;IAEH,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC7C,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,OAAO,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;AACpD,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,OAAsC,EACtC,EAAe;IAEf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAA,4BAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAClC,CAAC;aAAM,IAAI,MAAM,YAAY,iBAAO,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC9D,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,6DAA6D;gBAC3D,MAAM,CAAC,MAAM,CAAC,CACjB,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;AAClE,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './extendedProvider';
2
2
  export * from './testInit';
3
3
  export * from './bankrun';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
@@ -13,7 +13,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
- exports.__esModule = true;
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./extendedProvider"), exports);
18
18
  __exportStar(require("./testInit"), exports);
19
19
  __exportStar(require("./bankrun"), exports);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,6CAA0B;AAC1B,4CAAyB"}
@@ -0,0 +1,37 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import { AccountInfoBytes, AddedAccount, AddedProgram } from 'solana-bankrun';
3
+ import 'reflect-metadata';
4
+ import { BankrunExtendedProvider } from './extendedProvider';
5
+ export declare class JsonAccountData {
6
+ lamports: number;
7
+ data: string[];
8
+ owner: PublicKey;
9
+ executable: boolean;
10
+ rentEpoch: number;
11
+ }
12
+ export declare class JsonAccount {
13
+ pubkey: PublicKey;
14
+ account: JsonAccountData;
15
+ }
16
+ export declare function toAccountInfoBytes(jsonAccount: JsonAccount): AccountInfoBytes;
17
+ export declare function loadAccountsFromDirectory(directory: string): AddedAccount[];
18
+ export declare function loadAccountFromJson(jsonPath: string): AddedAccount;
19
+ export type ProgramInputData = {
20
+ name: string;
21
+ path?: string;
22
+ pubkey: PublicKey;
23
+ };
24
+ export declare function loadPrograms(programs: ProgramInputData[]): AddedProgram[];
25
+ export declare function testInit({ accountDirs, accounts, programs, }: {
26
+ accountDirs?: string[];
27
+ accounts?: {
28
+ pubkey?: PublicKey;
29
+ path: string;
30
+ }[];
31
+ programs?: {
32
+ name: string;
33
+ path?: string;
34
+ pubkey: PublicKey;
35
+ }[];
36
+ }): Promise<BankrunExtendedProvider>;
37
+ //# sourceMappingURL=testInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testInit.d.ts","sourceRoot":"","sources":["../../src/testInit.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EAEb,MAAM,gBAAgB,CAAA;AACvB,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAK5D,qBAAa,eAAe;IAG1B,QAAQ,EAAG,MAAM,CAAA;IAGjB,IAAI,EAAG,MAAM,EAAE,CAAA;IAIf,KAAK,EAAG,SAAS,CAAA;IAIjB,UAAU,EAAG,OAAO,CAAA;IAIpB,SAAS,EAAG,MAAM,CAAA;CACnB;AACD,qBAAa,WAAW;IAGtB,MAAM,EAAG,SAAS,CAAA;IAIlB,OAAO,EAAG,eAAe,CAAA;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,CAS7E;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAW3E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAQlE;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,CAmEzE;AAsCD,wBAAsB,QAAQ,CAAC,EAC7B,WAAW,EACX,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACjD,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,EAAE,CAAA;CAChE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4BnC"}
@@ -5,18 +5,27 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
8
14
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.testInit = exports.calculateRentExemption = exports.loadPrograms = exports.loadAccountFromJson = exports.loadAccountsFromDirectory = exports.toAccountInfoBytes = exports.JsonAccount = exports.JsonAccountData = void 0;
15
+ exports.JsonAccount = exports.JsonAccountData = void 0;
16
+ exports.toAccountInfoBytes = toAccountInfoBytes;
17
+ exports.loadAccountsFromDirectory = loadAccountsFromDirectory;
18
+ exports.loadAccountFromJson = loadAccountFromJson;
19
+ exports.loadPrograms = loadPrograms;
20
+ exports.testInit = testInit;
21
+ const assert_1 = __importDefault(require("assert"));
22
+ const fs_1 = require("fs");
23
+ const path_1 = require("path");
10
24
  const web3_js_1 = require("@solana/web3.js");
25
+ const class_transformer_1 = require("class-transformer");
11
26
  const solana_bankrun_1 = require("solana-bankrun");
12
27
  require("reflect-metadata");
13
- const class_transformer_1 = require("class-transformer");
14
- const fs_1 = require("fs");
15
- const path_1 = require("path");
16
28
  const extendedProvider_1 = require("./extendedProvider");
17
- // note: VsCode error:
18
- // https://github.com/microsoft/TypeScript/issues/52396#issuecomment-1409152884
19
- // https://bobbyhadz.com/blog/typescript-experimental-support-for-decorators-warning#solve-the-error-in-visual-studio-code
20
29
  class JsonAccountData {
21
30
  lamports;
22
31
  data;
@@ -27,22 +36,27 @@ class JsonAccountData {
27
36
  exports.JsonAccountData = JsonAccountData;
28
37
  __decorate([
29
38
  (0, class_transformer_1.Expose)(),
30
- (0, class_transformer_1.Transform)(({ value }) => Number(value))
39
+ (0, class_transformer_1.Transform)(({ value }) => Number(value)),
40
+ __metadata("design:type", Number)
31
41
  ], JsonAccountData.prototype, "lamports", void 0);
32
42
  __decorate([
33
- (0, class_transformer_1.Expose)()
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", Array)
34
45
  ], JsonAccountData.prototype, "data", void 0);
35
46
  __decorate([
36
47
  (0, class_transformer_1.Expose)(),
37
- (0, class_transformer_1.Transform)(({ value }) => new web3_js_1.PublicKey(value))
48
+ (0, class_transformer_1.Transform)(({ value }) => new web3_js_1.PublicKey(value)),
49
+ __metadata("design:type", web3_js_1.PublicKey)
38
50
  ], JsonAccountData.prototype, "owner", void 0);
39
51
  __decorate([
40
52
  (0, class_transformer_1.Expose)(),
41
- (0, class_transformer_1.Transform)(({ value }) => Boolean(value))
53
+ (0, class_transformer_1.Transform)(({ value }) => Boolean(value)),
54
+ __metadata("design:type", Boolean)
42
55
  ], JsonAccountData.prototype, "executable", void 0);
43
56
  __decorate([
44
57
  (0, class_transformer_1.Expose)(),
45
- (0, class_transformer_1.Transform)(({ value }) => Number(value))
58
+ (0, class_transformer_1.Transform)(({ value }) => Number(value)),
59
+ __metadata("design:type", Number)
46
60
  ], JsonAccountData.prototype, "rentEpoch", void 0);
47
61
  class JsonAccount {
48
62
  pubkey;
@@ -51,11 +65,13 @@ class JsonAccount {
51
65
  exports.JsonAccount = JsonAccount;
52
66
  __decorate([
53
67
  (0, class_transformer_1.Expose)(),
54
- (0, class_transformer_1.Transform)(({ value }) => new web3_js_1.PublicKey(value))
68
+ (0, class_transformer_1.Transform)(({ value }) => new web3_js_1.PublicKey(value)),
69
+ __metadata("design:type", web3_js_1.PublicKey)
55
70
  ], JsonAccount.prototype, "pubkey", void 0);
56
71
  __decorate([
57
72
  (0, class_transformer_1.Expose)(),
58
- (0, class_transformer_1.Type)(() => JsonAccountData)
73
+ (0, class_transformer_1.Type)(() => JsonAccountData),
74
+ __metadata("design:type", JsonAccountData)
59
75
  ], JsonAccount.prototype, "account", void 0);
60
76
  function toAccountInfoBytes(jsonAccount) {
61
77
  const dataField = jsonAccount.account.data;
@@ -67,7 +83,6 @@ function toAccountInfoBytes(jsonAccount) {
67
83
  rentEpoch: jsonAccount.account.rentEpoch,
68
84
  };
69
85
  }
70
- exports.toAccountInfoBytes = toAccountInfoBytes;
71
86
  function loadAccountsFromDirectory(directory) {
72
87
  const accounts = [];
73
88
  for (const jsonFile of (0, fs_1.readdirSync)(directory, {
@@ -80,7 +95,6 @@ function loadAccountsFromDirectory(directory) {
80
95
  }
81
96
  return accounts;
82
97
  }
83
- exports.loadAccountsFromDirectory = loadAccountsFromDirectory;
84
98
  function loadAccountFromJson(jsonPath) {
85
99
  const fileBuffer = (0, fs_1.readFileSync)(jsonPath);
86
100
  const parsedData = JSON.parse(fileBuffer.toString());
@@ -90,12 +104,10 @@ function loadAccountFromJson(jsonPath) {
90
104
  info: toAccountInfoBytes(jsonAccount),
91
105
  };
92
106
  }
93
- exports.loadAccountFromJson = loadAccountFromJson;
94
107
  function loadPrograms(programs) {
95
108
  const addedPrograms = [];
96
109
  let hookDeleteDir = false;
97
110
  const hookDeleteProgramNames = [];
98
- // programs that should be loaded just by name based on the rules of the solana-test-program
99
111
  programs
100
112
  .filter(p => p.path === undefined)
101
113
  .forEach(p => {
@@ -104,26 +116,23 @@ function loadPrograms(programs) {
104
116
  programId: p.pubkey,
105
117
  });
106
118
  });
107
- // programs that provided the path would be copied to the fixtures directory where
108
- // the solana-test-program looks for the program data
109
- // see: https://github.com/solana-labs/solana/blob/v1.18.14/program-test/src/lib.rs#L428
110
119
  const fixturesPath = (0, path_1.join)(process.cwd(), 'tests', 'fixtures');
111
120
  if (!(0, fs_1.existsSync)(fixturesPath)) {
112
121
  (0, fs_1.mkdirSync)(fixturesPath, { recursive: true });
113
122
  hookDeleteDir = true;
114
123
  }
115
- for (const { pubkey, path, name } of programs.filter(p => p.path !== undefined)) {
116
- const programPath = path;
124
+ for (const { pubkey, path: programPath, name } of programs.filter(p => p.path !== undefined)) {
125
+ (0, assert_1.default)(programPath !== undefined);
117
126
  if (!(0, fs_1.existsSync)(programPath)) {
118
127
  console.error(`bankrun startup: program ${pubkey.toBase58()} at path ${programPath} does not exist cannot be loaded`);
119
128
  continue;
120
129
  }
121
130
  const fixturesProgramSoPath = (0, path_1.join)(fixturesPath, `${name}.so`);
122
131
  if ((0, fs_1.existsSync)(fixturesProgramSoPath)) {
123
- console.log(`bankrun startup: skipping to upload the program ${pubkey.toBase58()} from path ${path} to ${fixturesProgramSoPath} as it already exists`);
132
+ console.log(`bankrun startup: skipping to upload the program ${pubkey.toBase58()} from path ${programPath} to ${fixturesProgramSoPath} as it already exists`);
124
133
  }
125
134
  else {
126
- console.debug('bankrun startup: copying program', fixturesProgramSoPath, 'to', fixturesProgramSoPath);
135
+ console.debug('bankrun startup: copying program', programPath, 'to', fixturesProgramSoPath);
127
136
  (0, fs_1.cpSync)(programPath, fixturesProgramSoPath);
128
137
  hookDeleteProgramNames.push(fixturesProgramSoPath);
129
138
  }
@@ -132,7 +141,6 @@ function loadPrograms(programs) {
132
141
  programId: pubkey,
133
142
  });
134
143
  }
135
- // TODO: exit hooks somehow does not work in jest
136
144
  registerCleanup(() => {
137
145
  hookDeleteProgramNames.forEach(p => {
138
146
  console.log('Deleting program file', p);
@@ -147,53 +155,17 @@ function loadPrograms(programs) {
147
155
  });
148
156
  return addedPrograms;
149
157
  }
150
- exports.loadPrograms = loadPrograms;
151
- function registerCleanup(
152
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
153
- exitHandler) {
154
- // do something when app is closing
158
+ function registerCleanup(exitHandler) {
155
159
  process.on('exit', exitHandler.bind(null, { cleanup: true }));
156
160
  process.on('beforeExit', exitHandler.bind(null, { cleanup: true }));
157
161
  process.on('disconnect', exitHandler.bind(null, { cleanup: true }));
158
162
  process.on('terminate', exitHandler.bind(null, { cleanup: true }));
159
- // catches ctrl+c event
160
163
  process.on('SIGINT', exitHandler.bind(null, { exit: true }));
161
164
  process.on('SIGQUIT', exitHandler.bind(null, { exit: true }));
162
- // catches "kill pid" (for example: nodemon restart)
163
165
  process.on('SIGUSR1', exitHandler.bind(null, { exit: true }));
164
166
  process.on('SIGUSR2', exitHandler.bind(null, { exit: true }));
165
- // catches uncaught exceptions
166
167
  process.on('uncaughtException', exitHandler.bind(null, { exit: true }));
167
168
  }
168
- /*
169
- * This is a bit of assumption. The base data is taken from `solana rent` calls.
170
- * Cannot find the real code of the getMinimumBalanceForRentExemption function.
171
- *
172
- * solana rent -um 0
173
- * > Rent-exempt minimum: 0.00089088 SOL
174
- * solana rent -um 1
175
- * > Rent-exempt minimum: 0.00089784 SOL
176
- */
177
- function calculateRentExemption(dataSize) {
178
- const basePaymentLamports = 890880;
179
- const perByteLamports = 6960;
180
- return basePaymentLamports + perByteLamports * dataSize;
181
- }
182
- exports.calculateRentExemption = calculateRentExemption;
183
- /**
184
- * Initializing the test with bankrun.
185
- *
186
- * @param accountDirs - expecting directory paths with '.json' files with account data within
187
- * @param accounts - expecting JSON files provided with account data (one may override the pubkey of the account)
188
- * @param programs - expecting the program data to be loaded, the program data is taken based on the provided name which has to be aligned with filename with suffix '.so'
189
- * this came from how the solana-test-program loads the program data, on top of that it's possible to define path
190
- * and some copy operation is done further.
191
- * The 'name' and 'pubkey' is required as it's the way how the program is loaded in solana-test-program.
192
- * The 'pubkey' is the pubkey the program will be registered at.
193
- * The 'name' is used as target filename that is searched or 'path' copied to.
194
- * The 'path' is optional and when provided the file is copied to place where the solana-test-program looks for the program data.
195
- * see: https://github.com/solana-labs/solana/blob/v1.18.14/program-test/src/lib.rs#L428
196
- */
197
169
  async function testInit({ accountDirs, accounts, programs, }) {
198
170
  let additionalAccounts = [];
199
171
  let additionalPrograms = [];
@@ -204,7 +176,6 @@ async function testInit({ accountDirs, accounts, programs, }) {
204
176
  additionalAccounts.push(...accounts.flatMap(acc => {
205
177
  const accountData = loadAccountFromJson(acc.path);
206
178
  if (acc.pubkey !== undefined) {
207
- // rewriting the address when passed in
208
179
  accountData.address = acc.pubkey;
209
180
  }
210
181
  return accountData;
@@ -216,5 +187,4 @@ async function testInit({ accountDirs, accounts, programs, }) {
216
187
  const context = await (0, solana_bankrun_1.startAnchor)('./', additionalPrograms, additionalAccounts);
217
188
  return new extendedProvider_1.BankrunExtendedProvider(context);
218
189
  }
219
- exports.testInit = testInit;
220
190
  //# sourceMappingURL=testInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testInit.js","sourceRoot":"","sources":["../../src/testInit.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,44 +1,47 @@
1
1
  {
2
2
  "name": "@marinade.finance/bankrun-utils",
3
- "version": "2.4.16",
4
- "description": "Bankrun library utilities",
3
+ "version": "4.0.0",
4
+ "description": "Bankrun test library utilities",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "git@github.com:marinade-finance/marinade-ts-cli.git"
7
+ "url": "git@github.com:marinade-finance/typescript-common.git"
8
8
  },
9
+ "main": "dist/src/index.js",
10
+ "types": "dist/src/index.d.ts",
9
11
  "publishConfig": {
10
12
  "access": "public"
11
13
  },
12
14
  "keywords": [
13
15
  "solana",
14
16
  "marinade.finance",
17
+ "staking",
15
18
  "blockchain",
16
- "bankrun"
19
+ "testing"
17
20
  ],
18
- "author": "Marinade Finance",
19
- "license": "ISC",
20
- "main": "src/index",
21
21
  "files": [
22
- "src"
22
+ "dist/",
23
+ "!dist/src/__tests__",
24
+ "README.md"
23
25
  ],
24
26
  "devDependencies": {
25
- "@solana/web3.js": "1.98.2",
26
- "@marinade.finance/web3js-common": "2.4.16",
27
+ "@solana/web3.js": "1.98.4",
27
28
  "solana-bankrun": "0.2.0",
28
29
  "anchor-bankrun": "0.2.0",
29
- "class-transformer": "0.5.1"
30
+ "class-transformer": "0.5.1",
31
+ "@marinade.finance/web3js-1x": "4.0.0"
30
32
  },
31
33
  "peerDependencies": {
32
- "@solana/web3.js": "1.98.2",
33
- "@marinade.finance/web3js-common": "2.4.16",
34
- "solana-bankrun": "0.2.0",
35
- "anchor-bankrun": "0.2.0",
36
- "class-transformer": "0.5.1"
34
+ "@solana/web3.js": "^1.98.4",
35
+ "solana-bankrun": "^0.2.0",
36
+ "anchor-bankrun": "^0.2.0",
37
+ "class-transformer": "^0.5.1",
38
+ "@marinade.finance/web3js-1x": "4.0.0"
37
39
  },
38
40
  "engines": {
39
- "node": ">=16.0.0"
41
+ "node": ">=16"
40
42
  },
41
43
  "scripts": {
42
- "test": "echo \"Error: no test specified, go to project root\" && exit 1"
44
+ "build": "tsc --build",
45
+ "test": "pnpm jest --config ../../jest.config.js --testPathPattern=\"$(pwd)\""
43
46
  }
44
47
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"bankrun.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/bankrun.ts"],"names":[],"mappings":";;;AAGO,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,OAAkB;IAElB,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC1E,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;AAChC,CAAC;AAND,wCAMC;AAED,oGAAoG;AACvF,QAAA,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACjD,4FAA4F;AAC5F,SAAgB,WAAW,CAAC,QAAyB,EAAE,KAAsB;IAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,GACxD,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAA;IAC9C,IAAI,UAAkB,CAAA;IACtB,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAAC;QACpC,UAAU;YACR,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,+BAAuB,CAAA;IACpE,CAAC;SAAM,CAAC;QACN,UAAU;YACR,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,aAAa,GAAG,eAAe,CAAA;IACtE,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AACzC,CAAC;AAbD,kCAaC;AAEM,KAAK,UAAU,YAAY,CAAC,QAAyB;IAC1D,OAAO,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAA;AAC9D,CAAC;AAFD,oCAEC;AAEM,KAAK,UAAU,eAAe,CACnC,QAAyB,EACzB,UAA2B;IAE3B,MAAM,SAAS,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IACrE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAClC,CAAC;AAND,0CAMC;AAEM,KAAK,UAAU,eAAe,CAAC,QAAyB;IAC7D,MAAM,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;AACpC,CAAC;AAFD,0CAEC;AAEM,KAAK,UAAU,WAAW,CAAC,QAAyB;IACzD,OAAO,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAA;AAC7D,CAAC;AAFD,kCAEC;AAEM,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,SAA0B;IAE1B,MAAM,QAAQ,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAClE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC;AAND,wCAMC;AAEM,KAAK,UAAU,cAAc,CAAC,QAAyB;IAC5D,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;AACnC,CAAC;AAFD,wCAEC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extendedProvider.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/extendedProvider.ts"],"names":[],"mappings":";;;AAAA,mEAIwC;AACxC,6CAOwB;AACxB,mDAAgD;AAGhD,MAAa,uBACX,SAAQ,gCAAe;IAGvB,KAAK,CAAC,MAAM,CACV,OAAsC,EACtC,GAAG,IAIA;QAEH,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACzC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QACf,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;IAC9B,CAAC;CACF;AApBD,0DAoBC;AAEM,KAAK,UAAU,kBAAkB,CACtC,QAAyB;IAEzB,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAA;IAClE,MAAM,oBAAoB,GAAG,CAC3B,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC7B,CAAA;IACX,OAAO,IAAI,qBAAW,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;QACnC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa;QACzC,oBAAoB;KACrB,CAAC,CAAA;AACJ,CAAC;AAZD,gDAYC;AAEM,KAAK,UAAU,gBAAgB,CACpC,QAAyB,EACzB,OAAsC,EACtC,GAAG,IAIA;IAEH,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAC7C,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,OAAO,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;AACpD,CAAC;AAZD,4CAYC;AAEM,KAAK,UAAU,cAAc,CAClC,QAAyB,EACzB,OAAsC,EACtC,EAAe;IAEf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAA,gCAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAClC,CAAC;aAAM,IAAI,MAAM,YAAY,iBAAO,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC9D,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,6DAA6D,GAAG,MAAM,CACvE,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;AAClE,CAAC;AAjBD,wCAiBC"}
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,6CAA0B;AAC1B,4CAAyB"}
package/src/testInit.d.ts DELETED
@@ -1,51 +0,0 @@
1
- import { PublicKey } from '@solana/web3.js';
2
- import { AccountInfoBytes, AddedAccount, AddedProgram } from 'solana-bankrun';
3
- import 'reflect-metadata';
4
- import { BankrunExtendedProvider } from './extendedProvider';
5
- export declare class JsonAccountData {
6
- lamports: number;
7
- data: string[];
8
- owner: PublicKey;
9
- executable: boolean;
10
- rentEpoch: number;
11
- }
12
- export declare class JsonAccount {
13
- pubkey: PublicKey;
14
- account: JsonAccountData;
15
- }
16
- export declare function toAccountInfoBytes(jsonAccount: JsonAccount): AccountInfoBytes;
17
- export declare function loadAccountsFromDirectory(directory: string): AddedAccount[];
18
- export declare function loadAccountFromJson(jsonPath: string): AddedAccount;
19
- export type ProgramInputData = {
20
- name: string;
21
- path?: string;
22
- pubkey: PublicKey;
23
- };
24
- export declare function loadPrograms(programs: ProgramInputData[]): AddedProgram[];
25
- export declare function calculateRentExemption(dataSize: number): number;
26
- /**
27
- * Initializing the test with bankrun.
28
- *
29
- * @param accountDirs - expecting directory paths with '.json' files with account data within
30
- * @param accounts - expecting JSON files provided with account data (one may override the pubkey of the account)
31
- * @param programs - expecting the program data to be loaded, the program data is taken based on the provided name which has to be aligned with filename with suffix '.so'
32
- * this came from how the solana-test-program loads the program data, on top of that it's possible to define path
33
- * and some copy operation is done further.
34
- * The 'name' and 'pubkey' is required as it's the way how the program is loaded in solana-test-program.
35
- * The 'pubkey' is the pubkey the program will be registered at.
36
- * The 'name' is used as target filename that is searched or 'path' copied to.
37
- * The 'path' is optional and when provided the file is copied to place where the solana-test-program looks for the program data.
38
- * see: https://github.com/solana-labs/solana/blob/v1.18.14/program-test/src/lib.rs#L428
39
- */
40
- export declare function testInit({ accountDirs, accounts, programs, }: {
41
- accountDirs?: string[];
42
- accounts?: {
43
- pubkey?: PublicKey;
44
- path: string;
45
- }[];
46
- programs?: {
47
- name: string;
48
- path?: string;
49
- pubkey: PublicKey;
50
- }[];
51
- }): Promise<BankrunExtendedProvider>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"testInit.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/testInit.ts"],"names":[],"mappings":"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"}