@marinade.finance/bankrun-utils 2.4.9 → 2.4.10
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/package.json +5 -5
- package/src/bankrun.js +120 -23
- package/src/bankrun.js.map +1 -1
- package/src/extendedProvider.js +164 -37
- package/src/extendedProvider.js.map +1 -1
- package/src/index.js +1 -1
- package/src/testInit.js +158 -88
- package/src/testInit.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marinade.finance/bankrun-utils",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.10",
|
|
4
4
|
"description": "Bankrun library utilities",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
"src"
|
|
23
23
|
],
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@solana/web3.js": "^1.
|
|
26
|
-
"@marinade.finance/web3js-common": "2.4.
|
|
25
|
+
"@solana/web3.js": "^1.98.0",
|
|
26
|
+
"@marinade.finance/web3js-common": "2.4.10",
|
|
27
27
|
"solana-bankrun": "^0.2.0",
|
|
28
28
|
"anchor-bankrun": "^0.2.0",
|
|
29
29
|
"class-transformer": "^0.5.1"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@solana/web3.js": "^1.
|
|
33
|
-
"@marinade.finance/web3js-common": "2.4.
|
|
32
|
+
"@solana/web3.js": "^1.98.0",
|
|
33
|
+
"@marinade.finance/web3js-common": "2.4.10",
|
|
34
34
|
"solana-bankrun": "^0.2.0",
|
|
35
35
|
"anchor-bankrun": "^0.2.0",
|
|
36
36
|
"class-transformer": "^0.5.1"
|
package/src/bankrun.js
CHANGED
|
@@ -1,21 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.__esModule = true;
|
|
3
39
|
exports.warpToNextSlot = exports.warpOffsetSlot = exports.currentSlot = exports.warpToNextEpoch = exports.warpOffsetEpoch = exports.currentEpoch = exports.warpToEpoch = exports.MINIMUM_SLOTS_PER_EPOCH = exports.assertNotExist = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
40
|
+
function assertNotExist(provider, account) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
+
var accountInfo;
|
|
43
|
+
return __generator(this, function (_a) {
|
|
44
|
+
switch (_a.label) {
|
|
45
|
+
case 0: return [4 /*yield*/, provider.context.banksClient.getAccount(account)];
|
|
46
|
+
case 1:
|
|
47
|
+
accountInfo = _a.sent();
|
|
48
|
+
expect(accountInfo).toBeNull();
|
|
49
|
+
return [2 /*return*/];
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
7
53
|
}
|
|
8
54
|
exports.assertNotExist = assertNotExist;
|
|
9
55
|
// https://github.com/solana-labs/solana/blob/v1.17.7/sdk/program/src/epoch_schedule.rs#L29C1-L29C45
|
|
10
56
|
exports.MINIMUM_SLOTS_PER_EPOCH = BigInt(32);
|
|
11
57
|
// https://github.com/solana-labs/solana/blob/v1.17.7/sdk/program/src/epoch_schedule.rs#L167
|
|
12
58
|
function warpToEpoch(provider, epoch) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
59
|
+
var epochBigInt = BigInt(epoch);
|
|
60
|
+
var _a = provider.context.genesisConfig.epochSchedule, slotsPerEpoch = _a.slotsPerEpoch, firstNormalEpoch = _a.firstNormalEpoch, firstNormalSlot = _a.firstNormalSlot;
|
|
61
|
+
var warpToSlot;
|
|
16
62
|
if (epochBigInt <= firstNormalEpoch) {
|
|
17
63
|
warpToSlot =
|
|
18
|
-
(BigInt(2)
|
|
64
|
+
(Math.pow(BigInt(2), epochBigInt) - BigInt(1)) * exports.MINIMUM_SLOTS_PER_EPOCH;
|
|
19
65
|
}
|
|
20
66
|
else {
|
|
21
67
|
warpToSlot =
|
|
@@ -24,31 +70,82 @@ function warpToEpoch(provider, epoch) {
|
|
|
24
70
|
provider.context.warpToSlot(warpToSlot);
|
|
25
71
|
}
|
|
26
72
|
exports.warpToEpoch = warpToEpoch;
|
|
27
|
-
|
|
28
|
-
return (
|
|
73
|
+
function currentEpoch(provider) {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
75
|
+
return __generator(this, function (_a) {
|
|
76
|
+
switch (_a.label) {
|
|
77
|
+
case 0: return [4 /*yield*/, provider.context.banksClient.getClock()];
|
|
78
|
+
case 1: return [2 /*return*/, (_a.sent()).epoch];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
29
82
|
}
|
|
30
83
|
exports.currentEpoch = currentEpoch;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
84
|
+
function warpOffsetEpoch(provider, plusEpochs) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
86
|
+
var nextEpoch;
|
|
87
|
+
return __generator(this, function (_a) {
|
|
88
|
+
switch (_a.label) {
|
|
89
|
+
case 0: return [4 /*yield*/, currentEpoch(provider)];
|
|
90
|
+
case 1:
|
|
91
|
+
nextEpoch = (_a.sent()) + BigInt(plusEpochs);
|
|
92
|
+
warpToEpoch(provider, nextEpoch);
|
|
93
|
+
return [2 /*return*/];
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
34
97
|
}
|
|
35
98
|
exports.warpOffsetEpoch = warpOffsetEpoch;
|
|
36
|
-
|
|
37
|
-
|
|
99
|
+
function warpToNextEpoch(provider) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
101
|
+
return __generator(this, function (_a) {
|
|
102
|
+
switch (_a.label) {
|
|
103
|
+
case 0: return [4 /*yield*/, warpOffsetEpoch(provider, 1)];
|
|
104
|
+
case 1:
|
|
105
|
+
_a.sent();
|
|
106
|
+
return [2 /*return*/];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
38
110
|
}
|
|
39
111
|
exports.warpToNextEpoch = warpToNextEpoch;
|
|
40
|
-
|
|
41
|
-
return (
|
|
112
|
+
function currentSlot(provider) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
+
return __generator(this, function (_a) {
|
|
115
|
+
switch (_a.label) {
|
|
116
|
+
case 0: return [4 /*yield*/, provider.context.banksClient.getClock()];
|
|
117
|
+
case 1: return [2 /*return*/, (_a.sent()).slot];
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
42
121
|
}
|
|
43
122
|
exports.currentSlot = currentSlot;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
123
|
+
function warpOffsetSlot(provider, plusSlots) {
|
|
124
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
125
|
+
var nextSlot;
|
|
126
|
+
return __generator(this, function (_a) {
|
|
127
|
+
switch (_a.label) {
|
|
128
|
+
case 0: return [4 /*yield*/, currentSlot(provider)];
|
|
129
|
+
case 1:
|
|
130
|
+
nextSlot = (_a.sent()) + BigInt(plusSlots);
|
|
131
|
+
provider.context.warpToSlot(nextSlot);
|
|
132
|
+
return [2 /*return*/];
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
48
136
|
}
|
|
49
137
|
exports.warpOffsetSlot = warpOffsetSlot;
|
|
50
|
-
|
|
51
|
-
|
|
138
|
+
function warpToNextSlot(provider) {
|
|
139
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
140
|
+
return __generator(this, function (_a) {
|
|
141
|
+
switch (_a.label) {
|
|
142
|
+
case 0: return [4 /*yield*/, warpOffsetSlot(provider, 1)];
|
|
143
|
+
case 1:
|
|
144
|
+
_a.sent();
|
|
145
|
+
return [2 /*return*/];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
});
|
|
52
149
|
}
|
|
53
150
|
exports.warpToNextSlot = warpToNextSlot;
|
|
54
151
|
//# sourceMappingURL=bankrun.js.map
|
package/src/bankrun.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bankrun.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/bankrun.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bankrun.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/bankrun.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAAsB,cAAc,CAClC,QAAyB,EACzB,OAAkB;;;;;wBAEE,qBAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAA;;oBAApE,WAAW,GAAG,SAAsD;oBAC1E,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;;;;;CAC/B;AAND,wCAMC;AAED,oGAAoG;AACvF,QAAA,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;AACjD,4FAA4F;AAC5F,SAAgB,WAAW,CAAC,QAAyB,EAAE,KAAsB;IAC3E,IAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3B,IAAA,KACJ,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,EADtC,aAAa,mBAAA,EAAE,gBAAgB,sBAAA,EAAE,eAAe,qBACV,CAAA;IAC9C,IAAI,UAAkB,CAAA;IACtB,IAAI,WAAW,IAAI,gBAAgB,EAAE;QACnC,UAAU;YACR,CAAC,SAAA,MAAM,CAAC,CAAC,CAAC,EAAI,WAAW,CAAA,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,+BAAuB,CAAA;KACnE;SAAM;QACL,UAAU;YACR,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,aAAa,GAAG,eAAe,CAAA;KACrE;IACD,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AACzC,CAAC;AAbD,kCAaC;AAED,SAAsB,YAAY,CAAC,QAAyB;;;;wBAClD,qBAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAA;wBAArD,sBAAO,CAAC,SAA6C,CAAC,CAAC,KAAK,EAAA;;;;CAC7D;AAFD,oCAEC;AAED,SAAsB,eAAe,CACnC,QAAyB,EACzB,UAA2B;;;;;wBAER,qBAAM,YAAY,CAAC,QAAQ,CAAC,EAAA;;oBAAzC,SAAS,GAAG,CAAC,SAA4B,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;oBACrE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;;;;;CACjC;AAND,0CAMC;AAED,SAAsB,eAAe,CAAC,QAAyB;;;;wBAC7D,qBAAM,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAA;;oBAAlC,SAAkC,CAAA;;;;;CACnC;AAFD,0CAEC;AAED,SAAsB,WAAW,CAAC,QAAyB;;;;wBACjD,qBAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAA;wBAArD,sBAAO,CAAC,SAA6C,CAAC,CAAC,IAAI,EAAA;;;;CAC5D;AAFD,kCAEC;AAED,SAAsB,cAAc,CAClC,QAAyB,EACzB,SAA0B;;;;;wBAER,qBAAM,WAAW,CAAC,QAAQ,CAAC,EAAA;;oBAAvC,QAAQ,GAAG,CAAC,SAA2B,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;oBAClE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;;;;;CACtC;AAND,wCAMC;AAED,SAAsB,cAAc,CAAC,QAAyB;;;;wBAC5D,qBAAM,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAA;;oBAAjC,SAAiC,CAAA;;;;;CAClC;AAFD,wCAEC"}
|
package/src/extendedProvider.js
CHANGED
|
@@ -1,49 +1,176 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (_) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
12
51
|
}
|
|
13
|
-
|
|
14
|
-
|
|
52
|
+
};
|
|
53
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
54
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
55
|
+
if (ar || !(i in from)) {
|
|
56
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
57
|
+
ar[i] = from[i];
|
|
58
|
+
}
|
|
15
59
|
}
|
|
16
|
-
|
|
60
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
61
|
+
};
|
|
62
|
+
exports.__esModule = true;
|
|
63
|
+
exports.bankrunExecute = exports.bankrunExecuteIx = exports.bankrunTransaction = exports.BankrunExtendedProvider = void 0;
|
|
64
|
+
var web3js_common_1 = require("@marinade.finance/web3js-common");
|
|
65
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
66
|
+
var anchor_bankrun_1 = require("anchor-bankrun");
|
|
67
|
+
var BankrunExtendedProvider = /** @class */ (function (_super) {
|
|
68
|
+
__extends(BankrunExtendedProvider, _super);
|
|
69
|
+
function BankrunExtendedProvider() {
|
|
70
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
71
|
+
}
|
|
72
|
+
BankrunExtendedProvider.prototype.sendIx = function (signers) {
|
|
73
|
+
var ixes = [];
|
|
74
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
75
|
+
ixes[_i - 1] = arguments[_i];
|
|
76
|
+
}
|
|
77
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
78
|
+
var tx;
|
|
79
|
+
return __generator(this, function (_a) {
|
|
80
|
+
switch (_a.label) {
|
|
81
|
+
case 0: return [4 /*yield*/, bankrunTransaction(this)];
|
|
82
|
+
case 1:
|
|
83
|
+
tx = _a.sent();
|
|
84
|
+
tx.add.apply(tx, ixes);
|
|
85
|
+
return [4 /*yield*/, bankrunExecute(this, __spreadArray([this.wallet], signers, true), tx)];
|
|
86
|
+
case 2:
|
|
87
|
+
_a.sent();
|
|
88
|
+
return [2 /*return*/];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
Object.defineProperty(BankrunExtendedProvider.prototype, "walletPubkey", {
|
|
94
|
+
get: function () {
|
|
95
|
+
return this.wallet.publicKey;
|
|
96
|
+
},
|
|
97
|
+
enumerable: false,
|
|
98
|
+
configurable: true
|
|
99
|
+
});
|
|
100
|
+
return BankrunExtendedProvider;
|
|
101
|
+
}(anchor_bankrun_1.BankrunProvider));
|
|
17
102
|
exports.BankrunExtendedProvider = BankrunExtendedProvider;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
103
|
+
function bankrunTransaction(provider) {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
105
|
+
var bh, lastValidBlockHeight;
|
|
106
|
+
return __generator(this, function (_a) {
|
|
107
|
+
switch (_a.label) {
|
|
108
|
+
case 0: return [4 /*yield*/, provider.context.banksClient.getLatestBlockhash()];
|
|
109
|
+
case 1:
|
|
110
|
+
bh = _a.sent();
|
|
111
|
+
lastValidBlockHeight = (bh === null ? Number.MAX_VALUE : bh[1]);
|
|
112
|
+
return [2 /*return*/, new web3_js_1.Transaction({
|
|
113
|
+
feePayer: provider.wallet.publicKey,
|
|
114
|
+
blockhash: provider.context.lastBlockhash,
|
|
115
|
+
lastValidBlockHeight: lastValidBlockHeight
|
|
116
|
+
})];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
25
119
|
});
|
|
26
120
|
}
|
|
27
121
|
exports.bankrunTransaction = bankrunTransaction;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
122
|
+
function bankrunExecuteIx(provider, signers) {
|
|
123
|
+
var ixes = [];
|
|
124
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
|
125
|
+
ixes[_i - 2] = arguments[_i];
|
|
126
|
+
}
|
|
127
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
128
|
+
var tx;
|
|
129
|
+
return __generator(this, function (_a) {
|
|
130
|
+
switch (_a.label) {
|
|
131
|
+
case 0: return [4 /*yield*/, bankrunTransaction(provider)];
|
|
132
|
+
case 1:
|
|
133
|
+
tx = _a.sent();
|
|
134
|
+
tx.add.apply(tx, ixes);
|
|
135
|
+
return [4 /*yield*/, bankrunExecute(provider, signers, tx)];
|
|
136
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
});
|
|
32
140
|
}
|
|
33
141
|
exports.bankrunExecuteIx = bankrunExecuteIx;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
142
|
+
function bankrunExecute(provider, signers, tx) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
144
|
+
var _i, signers_1, signer;
|
|
145
|
+
return __generator(this, function (_a) {
|
|
146
|
+
switch (_a.label) {
|
|
147
|
+
case 0:
|
|
148
|
+
_i = 0, signers_1 = signers;
|
|
149
|
+
_a.label = 1;
|
|
150
|
+
case 1:
|
|
151
|
+
if (!(_i < signers_1.length)) return [3 /*break*/, 5];
|
|
152
|
+
signer = signers_1[_i];
|
|
153
|
+
if (!(0, web3js_common_1.instanceOfWallet)(signer)) return [3 /*break*/, 3];
|
|
154
|
+
return [4 /*yield*/, signer.signTransaction(tx)];
|
|
155
|
+
case 2:
|
|
156
|
+
_a.sent();
|
|
157
|
+
return [3 /*break*/, 4];
|
|
158
|
+
case 3:
|
|
159
|
+
if (signer instanceof web3_js_1.Keypair || 'secretKey' in signer) {
|
|
160
|
+
tx.partialSign(signer);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
throw new Error('bankrunExecute: provided signer parameter is not a signer: ' + signer);
|
|
164
|
+
}
|
|
165
|
+
_a.label = 4;
|
|
166
|
+
case 4:
|
|
167
|
+
_i++;
|
|
168
|
+
return [3 /*break*/, 1];
|
|
169
|
+
case 5: return [4 /*yield*/, provider.context.banksClient.processTransaction(tx)];
|
|
170
|
+
case 6: return [2 /*return*/, _a.sent()];
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
});
|
|
47
174
|
}
|
|
48
175
|
exports.bankrunExecute = bankrunExecute;
|
|
49
176
|
//# sourceMappingURL=extendedProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendedProvider.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/extendedProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extendedProvider.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/extendedProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAIwC;AACxC,2CAOwB;AACxB,iDAAgD;AAGhD;IACU,2CAAe;IADzB;;IAoBA,CAAC;IAhBO,wCAAM,GAAZ,UACE,OAAsC;QACtC,cAIG;aAJH,UAIG,EAJH,qBAIG,EAJH,IAIG;YAJH,6BAIG;;;;;;4BAEQ,qBAAM,kBAAkB,CAAC,IAAI,CAAC,EAAA;;wBAAnC,EAAE,GAAG,SAA8B;wBACzC,EAAE,CAAC,GAAG,OAAN,EAAE,EAAQ,IAAI,EAAC;wBACf,qBAAM,cAAc,CAAC,IAAI,iBAAG,IAAI,CAAC,MAAM,GAAK,OAAO,SAAG,EAAE,CAAC,EAAA;;wBAAzD,SAAyD,CAAA;;;;;KAC1D;IAED,sBAAI,iDAAY;aAAhB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;QAC9B,CAAC;;;OAAA;IACH,8BAAC;AAAD,CAAC,AApBD,CACU,gCAAe,GAmBxB;AApBY,0DAAuB;AAsBpC,SAAsB,kBAAkB,CACtC,QAAyB;;;;;wBAEd,qBAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,EAAA;;oBAA5D,EAAE,GAAG,SAAuD;oBAC5D,oBAAoB,GAAG,CAC3B,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAC7B,CAAA;oBACX,sBAAO,IAAI,qBAAW,CAAC;4BACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;4BACnC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa;4BACzC,oBAAoB,sBAAA;yBACrB,CAAC,EAAA;;;;CACH;AAZD,gDAYC;AAED,SAAsB,gBAAgB,CACpC,QAAyB,EACzB,OAAsC;IACtC,cAIG;SAJH,UAIG,EAJH,qBAIG,EAJH,IAIG;QAJH,6BAIG;;;;;;wBAEQ,qBAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAA;;oBAAvC,EAAE,GAAG,SAAkC;oBAC7C,EAAE,CAAC,GAAG,OAAN,EAAE,EAAQ,IAAI,EAAC;oBACR,qBAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,EAAA;wBAAlD,sBAAO,SAA2C,EAAA;;;;CACnD;AAZD,4CAYC;AAED,SAAsB,cAAc,CAClC,QAAyB,EACzB,OAAsC,EACtC,EAAe;;;;;;0BAEa,EAAP,mBAAO;;;yBAAP,CAAA,qBAAO,CAAA;oBAAjB,MAAM;yBACX,IAAA,gCAAgB,EAAC,MAAM,CAAC,EAAxB,wBAAwB;oBAC1B,qBAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,EAAA;;oBAAhC,SAAgC,CAAA;;;oBAC3B,IAAI,MAAM,YAAY,iBAAO,IAAI,WAAW,IAAI,MAAM,EAAE;wBAC7D,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;qBACvB;yBAAM;wBACL,MAAM,IAAI,KAAK,CACb,6DAA6D,GAAG,MAAM,CACvE,CAAA;qBACF;;;oBATkB,IAAO,CAAA;;wBAWrB,qBAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAA;wBAAhE,sBAAO,SAAyD,EAAA;;;;CACjE;AAjBD,wCAiBC"}
|
package/src/index.js
CHANGED
|
@@ -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
|
-
|
|
16
|
+
exports.__esModule = true;
|
|
17
17
|
__exportStar(require("./extendedProvider"), exports);
|
|
18
18
|
__exportStar(require("./testInit"), exports);
|
|
19
19
|
__exportStar(require("./bankrun"), exports);
|
package/src/testInit.js
CHANGED
|
@@ -5,115 +5,174 @@ 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
|
-
|
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
18
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
19
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
20
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
21
|
+
function step(op) {
|
|
22
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
23
|
+
while (_) try {
|
|
24
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
25
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
26
|
+
switch (op[0]) {
|
|
27
|
+
case 0: case 1: t = op; break;
|
|
28
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
29
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
30
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
31
|
+
default:
|
|
32
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
33
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
34
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
35
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
36
|
+
if (t[2]) _.ops.pop();
|
|
37
|
+
_.trys.pop(); continue;
|
|
38
|
+
}
|
|
39
|
+
op = body.call(thisArg, _);
|
|
40
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
41
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.__esModule = true;
|
|
9
45
|
exports.testInit = exports.calculateRentExemption = exports.loadPrograms = exports.loadAccountFromJson = exports.loadAccountsFromDirectory = exports.toAccountInfoBytes = exports.JsonAccount = exports.JsonAccountData = void 0;
|
|
10
|
-
|
|
11
|
-
|
|
46
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
47
|
+
var solana_bankrun_1 = require("solana-bankrun");
|
|
12
48
|
require("reflect-metadata");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
49
|
+
var class_transformer_1 = require("class-transformer");
|
|
50
|
+
var fs_1 = require("fs");
|
|
51
|
+
var path_1 = require("path");
|
|
52
|
+
var extendedProvider_1 = require("./extendedProvider");
|
|
17
53
|
// note: VsCode error:
|
|
18
54
|
// https://github.com/microsoft/TypeScript/issues/52396#issuecomment-1409152884
|
|
19
55
|
// https://bobbyhadz.com/blog/typescript-experimental-support-for-decorators-warning#solve-the-error-in-visual-studio-code
|
|
20
|
-
|
|
21
|
-
|
|
56
|
+
var JsonAccountData = /** @class */ (function () {
|
|
57
|
+
function JsonAccountData() {
|
|
58
|
+
}
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, class_transformer_1.Expose)(),
|
|
61
|
+
(0, class_transformer_1.Transform)(function (_a) {
|
|
62
|
+
var value = _a.value;
|
|
63
|
+
return Number(value);
|
|
64
|
+
})
|
|
65
|
+
], JsonAccountData.prototype, "lamports");
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, class_transformer_1.Expose)()
|
|
68
|
+
], JsonAccountData.prototype, "data");
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, class_transformer_1.Expose)(),
|
|
71
|
+
(0, class_transformer_1.Transform)(function (_a) {
|
|
72
|
+
var value = _a.value;
|
|
73
|
+
return new web3_js_1.PublicKey(value);
|
|
74
|
+
})
|
|
75
|
+
], JsonAccountData.prototype, "owner");
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, class_transformer_1.Expose)(),
|
|
78
|
+
(0, class_transformer_1.Transform)(function (_a) {
|
|
79
|
+
var value = _a.value;
|
|
80
|
+
return Boolean(value);
|
|
81
|
+
})
|
|
82
|
+
], JsonAccountData.prototype, "executable");
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, class_transformer_1.Expose)(),
|
|
85
|
+
(0, class_transformer_1.Transform)(function (_a) {
|
|
86
|
+
var value = _a.value;
|
|
87
|
+
return Number(value);
|
|
88
|
+
})
|
|
89
|
+
], JsonAccountData.prototype, "rentEpoch");
|
|
90
|
+
return JsonAccountData;
|
|
91
|
+
}());
|
|
22
92
|
exports.JsonAccountData = JsonAccountData;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(0, class_transformer_1.Expose)(),
|
|
40
|
-
(0, class_transformer_1.Transform)(({ value }) => Number(value))
|
|
41
|
-
], JsonAccountData.prototype, "rentEpoch", void 0);
|
|
42
|
-
class JsonAccount {
|
|
43
|
-
}
|
|
93
|
+
var JsonAccount = /** @class */ (function () {
|
|
94
|
+
function JsonAccount() {
|
|
95
|
+
}
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, class_transformer_1.Expose)(),
|
|
98
|
+
(0, class_transformer_1.Transform)(function (_a) {
|
|
99
|
+
var value = _a.value;
|
|
100
|
+
return new web3_js_1.PublicKey(value);
|
|
101
|
+
})
|
|
102
|
+
], JsonAccount.prototype, "pubkey");
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, class_transformer_1.Expose)(),
|
|
105
|
+
(0, class_transformer_1.Type)(function () { return JsonAccountData; })
|
|
106
|
+
], JsonAccount.prototype, "account");
|
|
107
|
+
return JsonAccount;
|
|
108
|
+
}());
|
|
44
109
|
exports.JsonAccount = JsonAccount;
|
|
45
|
-
__decorate([
|
|
46
|
-
(0, class_transformer_1.Expose)(),
|
|
47
|
-
(0, class_transformer_1.Transform)(({ value }) => new web3_js_1.PublicKey(value))
|
|
48
|
-
], JsonAccount.prototype, "pubkey", void 0);
|
|
49
|
-
__decorate([
|
|
50
|
-
(0, class_transformer_1.Expose)(),
|
|
51
|
-
(0, class_transformer_1.Type)(() => JsonAccountData)
|
|
52
|
-
], JsonAccount.prototype, "account", void 0);
|
|
53
110
|
function toAccountInfoBytes(jsonAccount) {
|
|
54
|
-
|
|
111
|
+
var dataField = jsonAccount.account.data;
|
|
55
112
|
return {
|
|
56
113
|
executable: jsonAccount.account.executable,
|
|
57
114
|
owner: jsonAccount.account.owner,
|
|
58
115
|
lamports: jsonAccount.account.lamports,
|
|
59
116
|
data: Buffer.from(dataField[0], dataField[1]),
|
|
60
|
-
rentEpoch: jsonAccount.account.rentEpoch
|
|
117
|
+
rentEpoch: jsonAccount.account.rentEpoch
|
|
61
118
|
};
|
|
62
119
|
}
|
|
63
120
|
exports.toAccountInfoBytes = toAccountInfoBytes;
|
|
64
121
|
function loadAccountsFromDirectory(directory) {
|
|
65
|
-
|
|
66
|
-
for (
|
|
122
|
+
var accounts = [];
|
|
123
|
+
for (var _i = 0, _a = (0, fs_1.readdirSync)(directory, {
|
|
67
124
|
recursive: true,
|
|
68
|
-
encoding: null
|
|
69
|
-
}).filter(f
|
|
70
|
-
|
|
71
|
-
|
|
125
|
+
encoding: null
|
|
126
|
+
}).filter(function (f) { return f.endsWith('.json'); }); _i < _a.length; _i++) {
|
|
127
|
+
var jsonFile = _a[_i];
|
|
128
|
+
var jsonPath = (0, path_1.join)(directory, jsonFile);
|
|
129
|
+
var loadedAccount = loadAccountFromJson(jsonPath);
|
|
72
130
|
accounts.push(loadedAccount);
|
|
73
131
|
}
|
|
74
132
|
return accounts;
|
|
75
133
|
}
|
|
76
134
|
exports.loadAccountsFromDirectory = loadAccountsFromDirectory;
|
|
77
135
|
function loadAccountFromJson(jsonPath) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
136
|
+
var fileBuffer = (0, fs_1.readFileSync)(jsonPath);
|
|
137
|
+
var parsedData = JSON.parse(fileBuffer.toString());
|
|
138
|
+
var jsonAccount = (0, class_transformer_1.plainToInstance)(JsonAccount, parsedData);
|
|
81
139
|
return {
|
|
82
140
|
address: jsonAccount.pubkey,
|
|
83
|
-
info: toAccountInfoBytes(jsonAccount)
|
|
141
|
+
info: toAccountInfoBytes(jsonAccount)
|
|
84
142
|
};
|
|
85
143
|
}
|
|
86
144
|
exports.loadAccountFromJson = loadAccountFromJson;
|
|
87
145
|
function loadPrograms(programs) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
146
|
+
var addedPrograms = [];
|
|
147
|
+
var hookDeleteDir = false;
|
|
148
|
+
var hookDeleteProgramNames = [];
|
|
91
149
|
// programs that should be loaded just by name based on the rules of the solana-test-program
|
|
92
150
|
programs
|
|
93
|
-
.filter(p
|
|
94
|
-
.forEach(p
|
|
151
|
+
.filter(function (p) { return p.path === undefined; })
|
|
152
|
+
.forEach(function (p) {
|
|
95
153
|
addedPrograms.push({
|
|
96
154
|
name: p.name,
|
|
97
|
-
programId: p.pubkey
|
|
155
|
+
programId: p.pubkey
|
|
98
156
|
});
|
|
99
157
|
});
|
|
100
158
|
// programs that provided the path would be copied to the fixtures directory where
|
|
101
159
|
// the solana-test-program looks for the program data
|
|
102
160
|
// see: https://github.com/solana-labs/solana/blob/v1.18.14/program-test/src/lib.rs#L428
|
|
103
|
-
|
|
161
|
+
var fixturesPath = (0, path_1.join)(process.cwd(), 'tests', 'fixtures');
|
|
104
162
|
if (!(0, fs_1.existsSync)(fixturesPath)) {
|
|
105
163
|
(0, fs_1.mkdirSync)(fixturesPath, { recursive: true });
|
|
106
164
|
hookDeleteDir = true;
|
|
107
165
|
}
|
|
108
|
-
for (
|
|
109
|
-
|
|
166
|
+
for (var _i = 0, _a = programs.filter(function (p) { return p.path !== undefined; }); _i < _a.length; _i++) {
|
|
167
|
+
var _b = _a[_i], pubkey = _b.pubkey, path = _b.path, name_1 = _b.name;
|
|
168
|
+
var programPath = path;
|
|
110
169
|
if (!(0, fs_1.existsSync)(programPath)) {
|
|
111
|
-
console.error(
|
|
170
|
+
console.error("bankrun startup: program ".concat(pubkey.toBase58(), " at path ").concat(programPath, " does not exist cannot be loaded"));
|
|
112
171
|
continue;
|
|
113
172
|
}
|
|
114
|
-
|
|
173
|
+
var fixturesProgramSoPath = (0, path_1.join)(fixturesPath, "".concat(name_1, ".so"));
|
|
115
174
|
if ((0, fs_1.existsSync)(fixturesProgramSoPath)) {
|
|
116
|
-
console.log(
|
|
175
|
+
console.log("bankrun startup: skipping to upload the program ".concat(pubkey.toBase58(), " from path ").concat(path, " to ").concat(fixturesProgramSoPath, " as it already exists"));
|
|
117
176
|
}
|
|
118
177
|
else {
|
|
119
178
|
console.debug('bankrun startup: copying program', fixturesProgramSoPath, 'to', fixturesProgramSoPath);
|
|
@@ -121,13 +180,13 @@ function loadPrograms(programs) {
|
|
|
121
180
|
hookDeleteProgramNames.push(fixturesProgramSoPath);
|
|
122
181
|
}
|
|
123
182
|
addedPrograms.push({
|
|
124
|
-
name,
|
|
125
|
-
programId: pubkey
|
|
183
|
+
name: name_1,
|
|
184
|
+
programId: pubkey
|
|
126
185
|
});
|
|
127
186
|
}
|
|
128
187
|
// TODO: exit hooks somehow does not work in jest
|
|
129
|
-
registerCleanup(()
|
|
130
|
-
hookDeleteProgramNames.forEach(p
|
|
188
|
+
registerCleanup(function () {
|
|
189
|
+
hookDeleteProgramNames.forEach(function (p) {
|
|
131
190
|
console.log('Deleting program file', p);
|
|
132
191
|
(0, fs_1.rmSync)(p);
|
|
133
192
|
});
|
|
@@ -168,8 +227,8 @@ exitHandler) {
|
|
|
168
227
|
* > Rent-exempt minimum: 0.00089784 SOL
|
|
169
228
|
*/
|
|
170
229
|
function calculateRentExemption(dataSize) {
|
|
171
|
-
|
|
172
|
-
|
|
230
|
+
var basePaymentLamports = 890880;
|
|
231
|
+
var perByteLamports = 6960;
|
|
173
232
|
return basePaymentLamports + perByteLamports * dataSize;
|
|
174
233
|
}
|
|
175
234
|
exports.calculateRentExemption = calculateRentExemption;
|
|
@@ -187,27 +246,38 @@ exports.calculateRentExemption = calculateRentExemption;
|
|
|
187
246
|
* The 'path' is optional and when provided the file is copied to place where the solana-test-program looks for the program data.
|
|
188
247
|
* see: https://github.com/solana-labs/solana/blob/v1.18.14/program-test/src/lib.rs#L428
|
|
189
248
|
*/
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
249
|
+
function testInit(_a) {
|
|
250
|
+
var accountDirs = _a.accountDirs, accounts = _a.accounts, programs = _a.programs;
|
|
251
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
252
|
+
var additionalAccounts, additionalPrograms, context;
|
|
253
|
+
return __generator(this, function (_b) {
|
|
254
|
+
switch (_b.label) {
|
|
255
|
+
case 0:
|
|
256
|
+
additionalAccounts = [];
|
|
257
|
+
additionalPrograms = [];
|
|
258
|
+
if (accountDirs !== undefined) {
|
|
259
|
+
additionalAccounts = accountDirs.flatMap(loadAccountsFromDirectory);
|
|
260
|
+
}
|
|
261
|
+
if (accounts !== undefined) {
|
|
262
|
+
additionalAccounts.push.apply(additionalAccounts, accounts.flatMap(function (acc) {
|
|
263
|
+
var accountData = loadAccountFromJson(acc.path);
|
|
264
|
+
if (acc.pubkey !== undefined) {
|
|
265
|
+
// rewriting the address when passed in
|
|
266
|
+
accountData.address = acc.pubkey;
|
|
267
|
+
}
|
|
268
|
+
return accountData;
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
if (programs !== undefined) {
|
|
272
|
+
additionalPrograms = loadPrograms(programs);
|
|
273
|
+
}
|
|
274
|
+
return [4 /*yield*/, (0, solana_bankrun_1.startAnchor)('./', additionalPrograms, additionalAccounts)];
|
|
275
|
+
case 1:
|
|
276
|
+
context = _b.sent();
|
|
277
|
+
return [2 /*return*/, new extendedProvider_1.BankrunExtendedProvider(context)];
|
|
202
278
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
206
|
-
if (programs !== undefined) {
|
|
207
|
-
additionalPrograms = loadPrograms(programs);
|
|
208
|
-
}
|
|
209
|
-
const context = await (0, solana_bankrun_1.startAnchor)('./', additionalPrograms, additionalAccounts);
|
|
210
|
-
return new extendedProvider_1.BankrunExtendedProvider(context);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
211
281
|
}
|
|
212
282
|
exports.testInit = testInit;
|
|
213
283
|
//# sourceMappingURL=testInit.js.map
|
package/src/testInit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testInit.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/testInit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testInit.js","sourceRoot":"","sources":["../../../../../packages/lib/bankrun-utils/src/testInit.ts"],"names":[],"mappings":"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"}
|