@muritavo/testing-toolkit 0.4.2 → 0.5.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.
Files changed (39) hide show
  1. package/dist/client/blockchain.d.ts +2 -1
  2. package/dist/client/blockchain.js +104 -68
  3. package/dist/client/blockchain.js.map +1 -1
  4. package/dist/client/emulator.js +0 -1
  5. package/dist/client/emulator.js.map +1 -1
  6. package/dist/native/blockchain.d.ts +11 -2
  7. package/dist/native/blockchain.js +230 -33
  8. package/dist/native/blockchain.js.map +1 -1
  9. package/dist/native/emulator.d.ts +13 -0
  10. package/dist/native/emulator.js +45 -12
  11. package/dist/native/emulator.js.map +1 -1
  12. package/dist/src/client/blockchain.d.ts +13 -0
  13. package/dist/src/client/blockchain.js +149 -0
  14. package/dist/src/client/blockchain.js.map +1 -0
  15. package/dist/src/client/emulator.d.ts +65 -0
  16. package/dist/src/client/emulator.js +250 -0
  17. package/dist/src/client/emulator.js.map +1 -0
  18. package/dist/src/client/utility.d.ts +7 -0
  19. package/dist/src/client/utility.js +39 -0
  20. package/dist/src/client/utility.js.map +1 -0
  21. package/dist/src/native/blockchain.d.ts +50 -0
  22. package/dist/src/native/blockchain.js +649 -0
  23. package/dist/src/native/blockchain.js.map +1 -0
  24. package/dist/src/native/consts.d.ts +5 -0
  25. package/dist/src/native/consts.js +9 -0
  26. package/dist/src/native/consts.js.map +1 -0
  27. package/dist/src/native/emulator.d.ts +49 -0
  28. package/dist/src/native/emulator.js +274 -0
  29. package/dist/src/native/emulator.js.map +1 -0
  30. package/dist/src/types/contract.d.ts +79 -0
  31. package/dist/src/types/contract.js +31 -0
  32. package/dist/src/types/contract.js.map +1 -0
  33. package/dist/src/utility/index.d.ts +1 -0
  34. package/dist/src/utility/index.js +12 -0
  35. package/dist/src/utility/index.js.map +1 -0
  36. package/dist/test/hardhat-configs/hardhat-with-graphql/hardhat.config.d.ts +42 -0
  37. package/dist/test/hardhat-configs/hardhat-with-graphql/hardhat.config.js +76 -0
  38. package/dist/test/hardhat-configs/hardhat-with-graphql/hardhat.config.js.map +1 -0
  39. package/package.json +5 -2
@@ -69,6 +69,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
70
70
  }
71
71
  };
72
+ var __rest = (this && this.__rest) || function (s, e) {
73
+ var t = {};
74
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
75
+ t[p] = s[p];
76
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
77
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
78
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
79
+ t[p[i]] = s[p[i]];
80
+ }
81
+ return t;
82
+ };
72
83
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
73
84
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
74
85
  if (ar || !(i in from)) {
@@ -82,7 +93,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
82
93
  return (mod && mod.__esModule) ? mod : { "default": mod };
83
94
  };
84
95
  Object.defineProperty(exports, "__esModule", { value: true });
85
- exports.stopBlockchain = exports.deployGraph = exports.deployContract = exports.deriveWallet = exports.startBlockchain = exports.blockchainLogger = void 0;
96
+ exports.impersonateAccount = exports.stopBlockchain = exports.deployGraph = exports.deployContract = exports.deriveWallet = exports.startBlockchain = exports.bindToBlockchain = exports.blockchainLogger = void 0;
86
97
  var debug_1 = __importDefault(require("debug"));
87
98
  var blockchain_1 = require("../client/blockchain");
88
99
  var child_process_1 = require("child_process");
@@ -92,20 +103,151 @@ var path_1 = require("path");
92
103
  var ethers_1 = require("ethers");
93
104
  exports.blockchainLogger = (0, debug_1.default)("@muritavo/testing-toolkit/blockchain");
94
105
  var instance;
106
+ function bindToBlockchain(_a) {
107
+ return __awaiter(this, arguments, void 0, function (_b) {
108
+ var _c, ethers, other, projectConfig, prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _d, _e, _f, e_1, accounts;
109
+ var _g;
110
+ var projectFolder = _b.projectFolder, graphqlProject = _b.graphqlProject, hardhatConfigImportPromiseFactory = _b.hardhatConfigImportPromiseFactory, port = _b.port, deployTags = _b.deployTags;
111
+ return __generator(this, function (_h) {
112
+ switch (_h.label) {
113
+ case 0: return [4 /*yield*/, initHardhat(projectFolder)];
114
+ case 1:
115
+ _c = _h.sent(), ethers = _c.ethers, other = __rest(_c, ["ethers"]);
116
+ return [4 /*yield*/, hardhatConfigImportPromiseFactory()];
117
+ case 2:
118
+ projectConfig = _h.sent();
119
+ if (!instance) return [3 /*break*/, 15];
120
+ prevFork = projectConfig.networks.hardhat.forking;
121
+ (0, exports.blockchainLogger)(prevFork ? "Reseting blockchain fork" : "No previous fork, skipping reset");
122
+ if (!prevFork) return [3 /*break*/, 14];
123
+ _h.label = 3;
124
+ case 3:
125
+ _h.trys.push([3, 13, , 14]);
126
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
127
+ case 4:
128
+ blockNumberBeforeReset = _h.sent();
129
+ if (!(prevFork.blockNumber === blockNumberBeforeReset)) return [3 /*break*/, 5];
130
+ (0, exports.blockchainLogger)("Skipping hardhat reset as there was no mined blocks", "Current block is ".concat(blockNumberBeforeReset));
131
+ return [3 /*break*/, 10];
132
+ case 5:
133
+ (0, exports.blockchainLogger)("Previous block number ".concat(blockNumberBeforeReset));
134
+ /** This will clear any logs/changes made during testing */
135
+ return [4 /*yield*/, ethers.provider.send("hardhat_reset", [
136
+ {
137
+ forking: {
138
+ jsonRpcUrl: prevFork.url,
139
+ blockNumber: prevFork.blockNumber,
140
+ },
141
+ },
142
+ ])];
143
+ case 6:
144
+ /** This will clear any logs/changes made during testing */
145
+ _h.sent();
146
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
147
+ case 7:
148
+ blockNumberAfterReset = _h.sent();
149
+ (0, exports.blockchainLogger)("Reset back to block number ".concat(blockNumberAfterReset));
150
+ advanceBlockNumbersBy = blockNumberBeforeReset - blockNumberAfterReset;
151
+ /**
152
+ * When using graph-node, it refuses to reprocess previous blocks
153
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
154
+ *
155
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
156
+ * */
157
+ return [4 /*yield*/, ethers.provider.send("hardhat_mine", [
158
+ "0x".concat(advanceBlockNumbersBy.toString(16)),
159
+ ])];
160
+ case 8:
161
+ /**
162
+ * When using graph-node, it refuses to reprocess previous blocks
163
+ * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
164
+ *
165
+ * That's why, after the reset, we "skip" blocks back to the latest block, and continue testing from there
166
+ * */
167
+ _h.sent();
168
+ _d = exports.blockchainLogger;
169
+ _f = (_e = "Reset hardhat state (#".concat(blockNumberBeforeReset, " to #").concat(blockNumberAfterReset, ") and now it's at block ")).concat;
170
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
171
+ case 9:
172
+ _d.apply(void 0, [_f.apply(_e, [_h.sent()])]);
173
+ _h.label = 10;
174
+ case 10:
175
+ (0, exports.blockchainLogger)("Hardhat has hardhat-deploy (".concat(String(other.deployments), ") and deploy tags ").concat(deployTags));
176
+ if (!other.deployments) return [3 /*break*/, 12];
177
+ return [4 /*yield*/, other.deployments.run(deployTags)];
178
+ case 11:
179
+ _h.sent();
180
+ _h.label = 12;
181
+ case 12: return [3 /*break*/, 14];
182
+ case 13:
183
+ e_1 = _h.sent();
184
+ (0, exports.blockchainLogger)("Error when trying to reset fork", e_1);
185
+ return [3 /*break*/, 14];
186
+ case 14: return [2 /*return*/, instance.addresses];
187
+ case 15:
188
+ if (projectFolder)
189
+ (0, exports.blockchainLogger)("Starting blockchain server at \"".concat(projectFolder, "\""));
190
+ if (graphqlProject) {
191
+ (0, child_process_1.execSync)("docker compose up --detach", {
192
+ cwd: graphqlProject,
193
+ stdio: "ignore",
194
+ });
195
+ process.on("SIGINT", function () {
196
+ (0, child_process_1.execSync)("docker compose down", {
197
+ cwd: graphqlProject,
198
+ stdio: "ignore",
199
+ });
200
+ });
201
+ }
202
+ accounts = new Array(30).fill(undefined).reduce(function (res, _, idx) {
203
+ var _a;
204
+ var account = deriveWallet(idx, {
205
+ ethers: ethers,
206
+ config: projectConfig,
207
+ });
208
+ return __assign(__assign({}, res), (_a = {}, _a[account.address] = {
209
+ secretKey: account.key,
210
+ }, _a));
211
+ }, {});
212
+ _g = {
213
+ rootFolder: projectFolder,
214
+ contracts: {},
215
+ addresses: accounts,
216
+ port: port,
217
+ graphqlProject: graphqlProject
218
+ };
219
+ return [4 /*yield*/, ethers.provider.getBlockNumber()];
220
+ case 16:
221
+ instance = (_g.initialBlock = _h.sent(),
222
+ _g.network = other.network,
223
+ _g.ethers = ethers,
224
+ _g);
225
+ // setPort(port);
226
+ return [2 /*return*/, accounts];
227
+ }
228
+ });
229
+ });
230
+ }
231
+ exports.bindToBlockchain = bindToBlockchain;
95
232
  function startBlockchain(_a) {
96
233
  return __awaiter(this, arguments, void 0, function (_b) {
97
- var prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _c, _d, _e, serverInstance, hardhatServer, accounts;
234
+ var prevFork, blockNumberBeforeReset, blockNumberAfterReset, advanceBlockNumbersBy, _c, _d, _e, e_2, serverInstance, hardhatServer, accounts;
98
235
  var _this = this;
99
236
  var projectFolder = _b.projectRootFolder, _f = _b.port, port = _f === void 0 ? 8545 : _f, graphqlProject = _b.graphqlProject;
100
237
  return __generator(this, function (_g) {
101
238
  switch (_g.label) {
102
239
  case 0:
103
- if (!instance) return [3 /*break*/, 7];
240
+ if (!instance) return [3 /*break*/, 9];
104
241
  prevFork = instance.process.config.networks.hardhat.forking;
105
- if (!prevFork) return [3 /*break*/, 6];
106
- return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
242
+ (0, exports.blockchainLogger)(prevFork ? "Reseting blockchain fork" : "No previous fork, skipping reset");
243
+ if (!prevFork) return [3 /*break*/, 8];
244
+ _g.label = 1;
107
245
  case 1:
246
+ _g.trys.push([1, 7, , 8]);
247
+ return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
248
+ case 2:
108
249
  blockNumberBeforeReset = _g.sent();
250
+ (0, exports.blockchainLogger)("Previous block number ".concat(blockNumberBeforeReset));
109
251
  /** This will clear any logs/changes made during testing */
110
252
  return [4 /*yield*/, instance.process.network.provider.request({
111
253
  method: "hardhat_reset",
@@ -118,12 +260,13 @@ function startBlockchain(_a) {
118
260
  },
119
261
  ],
120
262
  })];
121
- case 2:
263
+ case 3:
122
264
  /** This will clear any logs/changes made during testing */
123
265
  _g.sent();
124
266
  return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
125
- case 3:
267
+ case 4:
126
268
  blockNumberAfterReset = _g.sent();
269
+ (0, exports.blockchainLogger)("Reset back to block number ".concat(blockNumberAfterReset));
127
270
  advanceBlockNumbersBy = blockNumberBeforeReset - blockNumberAfterReset;
128
271
  /**
129
272
  * When using graph-node, it refuses to reprocess previous blocks
@@ -135,7 +278,7 @@ function startBlockchain(_a) {
135
278
  method: "hardhat_mine",
136
279
  params: ["0x".concat(advanceBlockNumbersBy.toString(16))],
137
280
  })];
138
- case 4:
281
+ case 5:
139
282
  /**
140
283
  * When using graph-node, it refuses to reprocess previous blocks
141
284
  * So in a cenario where we republish a graph after this reset, it doesn't read the new logs
@@ -146,11 +289,15 @@ function startBlockchain(_a) {
146
289
  _c = exports.blockchainLogger;
147
290
  _e = (_d = "Reset hardhat state (#".concat(blockNumberBeforeReset, " to #").concat(blockNumberAfterReset, ") and now it's at block ")).concat;
148
291
  return [4 /*yield*/, instance.process.ethers.provider.getBlockNumber()];
149
- case 5:
292
+ case 6:
150
293
  _c.apply(void 0, [_e.apply(_d, [_g.sent()])]);
151
- _g.label = 6;
152
- case 6: return [2 /*return*/, instance.addresses];
294
+ return [3 /*break*/, 8];
153
295
  case 7:
296
+ e_2 = _g.sent();
297
+ (0, exports.blockchainLogger)("Error when trying to reset fork", e_2);
298
+ return [3 /*break*/, 8];
299
+ case 8: return [2 /*return*/, instance.addresses];
300
+ case 9:
154
301
  if (projectFolder)
155
302
  (0, exports.blockchainLogger)("Starting blockchain server at \"".concat(projectFolder, "\""));
156
303
  if (graphqlProject) {
@@ -166,7 +313,7 @@ function startBlockchain(_a) {
166
313
  });
167
314
  }
168
315
  return [4 /*yield*/, initHardhat(projectFolder)];
169
- case 8:
316
+ case 10:
170
317
  serverInstance = _g.sent();
171
318
  return [4 /*yield*/, new Promise(function (r, rej) {
172
319
  var timeoutId = setTimeout(function () {
@@ -185,7 +332,7 @@ function startBlockchain(_a) {
185
332
  noDeploy: true,
186
333
  });
187
334
  })];
188
- case 9:
335
+ case 11:
189
336
  _g.sent();
190
337
  accounts = new Array(serverInstance.config.networks.hardhat.accounts.count)
191
338
  .fill(undefined)
@@ -204,6 +351,8 @@ function startBlockchain(_a) {
204
351
  port: port,
205
352
  graphqlProject: graphqlProject,
206
353
  hardhatServer: hardhatServer,
354
+ network: serverInstance.network,
355
+ ethers: serverInstance.ethers,
207
356
  };
208
357
  (0, blockchain_1.setPort)(port);
209
358
  return [2 /*return*/, accounts];
@@ -213,10 +362,12 @@ function startBlockchain(_a) {
213
362
  }
214
363
  exports.startBlockchain = startBlockchain;
215
364
  function deriveWallet(index, hardhat) {
365
+ var _a;
216
366
  if (index === void 0) { index = 0; }
217
367
  var ethers = hardhat.ethers;
218
368
  var accounts = hardhat.config.networks.hardhat.accounts;
219
- var wallet = ethers.HDNodeWallet.fromMnemonic(ethers.Mnemonic.fromPhrase(accounts.mnemonic), accounts.path + "/".concat(index));
369
+ var accountPath = (_a = accounts.path) !== null && _a !== void 0 ? _a : "m/44'/60'/0'/0";
370
+ var wallet = ethers.HDNodeWallet.fromMnemonic(ethers.Mnemonic.fromPhrase(accounts.mnemonic), accountPath + "/".concat(index));
220
371
  return {
221
372
  key: wallet.privateKey,
222
373
  address: wallet.address,
@@ -225,7 +376,7 @@ function deriveWallet(index, hardhat) {
225
376
  exports.deriveWallet = deriveWallet;
226
377
  function initHardhat(dir) {
227
378
  return __awaiter(this, void 0, void 0, function () {
228
- var startingDir, hardhat, _a, e_1;
379
+ var startingDir, hardhat, _a, ret, eth, e_3;
229
380
  var _this = this;
230
381
  return __generator(this, function (_b) {
231
382
  switch (_b.label) {
@@ -240,9 +391,17 @@ function initHardhat(dir) {
240
391
  switch (_a.label) {
241
392
  case 0:
242
393
  if (!require) return [3 /*break*/, 1];
394
+ require("hardhat/register");
395
+ return [3 /*break*/, 3];
396
+ case 1: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat/register")); })];
397
+ case 2:
398
+ (_a.sent()).default;
399
+ _a.label = 3;
400
+ case 3:
401
+ if (!require) return [3 /*break*/, 4];
243
402
  return [2 /*return*/, require("hardhat")];
244
- case 1: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat")); })];
245
- case 2: return [2 /*return*/, (_a.sent()).default];
403
+ case 4: return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("hardhat")); })];
404
+ case 5: return [2 /*return*/, (_a.sent()).default];
246
405
  }
247
406
  });
248
407
  }); })()];
@@ -263,11 +422,15 @@ function initHardhat(dir) {
263
422
  case 3:
264
423
  _a.taskNames = (_b.sent());
265
424
  process.chdir(startingDir);
266
- return [2 /*return*/, hardhat];
425
+ ret = hardhat;
426
+ eth = ret.ethers;
427
+ ret.ethers.provider = new eth.JsonRpcProvider("http://".concat("127.0.0.1", ":").concat(8545), undefined, { pollingInterval: 10 });
428
+ ret.network.provider = ret.ethers.provider;
429
+ return [2 /*return*/, ret];
267
430
  case 4:
268
- e_1 = _b.sent();
431
+ e_3 = _b.sent();
269
432
  process.chdir(startingDir);
270
- throw e_1;
433
+ throw e_3;
271
434
  case 5: return [2 /*return*/];
272
435
  }
273
436
  });
@@ -275,7 +438,7 @@ function initHardhat(dir) {
275
438
  }
276
439
  function deployContract(_a) {
277
440
  return __awaiter(this, arguments, void 0, function (_b) {
278
- var getContract, ethers, owner, Factory, lock_1, connection, initializationKey_1, e_2;
441
+ var getContract, ethers, owner, Factory, lock_1, connection, initializationKey_1, e_4;
279
442
  var _c, _d;
280
443
  var _this = this;
281
444
  var contractAbi = _b.contractAbi, contractName = _b.contractName, args = _b.args;
@@ -367,9 +530,9 @@ function deployContract(_a) {
367
530
  _d)];
368
531
  case 16: return [3 /*break*/, 18];
369
532
  case 17:
370
- e_2 = _e.sent();
371
- (0, exports.blockchainLogger)("Something has gone wrong", e_2);
372
- throw e_2;
533
+ e_4 = _e.sent();
534
+ (0, exports.blockchainLogger)("Something has gone wrong", e_4);
535
+ throw e_4;
373
536
  case 18: return [2 /*return*/];
374
537
  }
375
538
  });
@@ -389,9 +552,14 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
389
552
  subgraphYml.schema.file = relativeToAbsolutePath(subgraphYml.schema.file);
390
553
  for (var _i = 0, _a = subgraphYml.dataSources; _i < _a.length; _i++) {
391
554
  var dataSource = _a[_i];
555
+ /** If we don't have the address for said source, we remove the source from the deployed graph */
556
+ if (!contractAddresses[dataSource.source.abi]) {
557
+ (0, exports.blockchainLogger)("Address for the contract \"".concat(dataSource.source.abi, "\" wasn't provided. Removing this data source from graph."));
558
+ subgraphYml.dataSources[subgraphYml.dataSources.indexOf(dataSource)] =
559
+ undefined;
560
+ continue;
561
+ }
392
562
  dataSource.network = networkName;
393
- if (!contractAddresses[dataSource.source.abi])
394
- throw new Error("Please, provide the address for the contract \"".concat(dataSource.source.abi, "\" deployed on the local hardhat node"));
395
563
  dataSource.source.address = contractAddresses[dataSource.source.abi];
396
564
  if (instance.process.config.networks.hardhat.forking)
397
565
  dataSource.source.startBlock = currentBlock;
@@ -401,6 +569,7 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
401
569
  abi.file = relativeToAbsolutePath(abi.file);
402
570
  }
403
571
  }
572
+ subgraphYml.dataSources = subgraphYml.dataSources.filter(Boolean);
404
573
  var graphManifestPath = (0, path_1.resolve)(graphManifestCacheDir, "subgraph.yaml");
405
574
  if (!(0, fs_1.existsSync)(graphManifestCacheDir))
406
575
  (0, fs_1.mkdirSync)(graphManifestCacheDir, { recursive: true });
@@ -450,7 +619,7 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
450
619
  localhostGraphManifest = generateGraphManifest();
451
620
  (0, exports.blockchainLogger)("Trying to deploy graph");
452
621
  return [4 /*yield*/, new Promise(function (res, rej) {
453
- (0, child_process_1.exec)("graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 ".concat(graphName, " ").concat(localhostGraphManifest, " -l v0.0.1"), {
622
+ (0, child_process_1.exec)("graph deploy --node http://localhost:8020/ --ipfs http://localhost:5031 ".concat(graphName, " ").concat(localhostGraphManifest, " -l v0.0.1"), {
454
623
  cwd: graphPath,
455
624
  env: {
456
625
  PATH: "".concat(process.env.PATH),
@@ -476,25 +645,29 @@ function deployGraph(graphPath, contractAddresses, graphName, networkName) {
476
645
  exports.deployGraph = deployGraph;
477
646
  function stopBlockchain() {
478
647
  return __awaiter(this, void 0, void 0, function () {
479
- var e_3;
648
+ var e_5;
480
649
  return __generator(this, function (_a) {
481
650
  switch (_a.label) {
482
651
  case 0:
652
+ (0, exports.blockchainLogger)("Closing blockchain infrastructure.", "Has blockchain instance:", String(!!instance));
483
653
  if (!instance) return [3 /*break*/, 5];
484
654
  _a.label = 1;
485
655
  case 1:
486
656
  _a.trys.push([1, 3, , 4]);
487
- return [4 /*yield*/, instance.hardhatServer.close()];
488
- case 2:
489
- _a.sent();
490
- if (instance.graphqlProject)
657
+ (0, exports.blockchainLogger)("Closing hardhat server");
658
+ if (instance.graphqlProject) {
659
+ (0, exports.blockchainLogger)("Ending graphql docker container");
491
660
  (0, child_process_1.execSync)("docker compose down", {
492
661
  cwd: instance.graphqlProject,
493
662
  stdio: "ignore",
494
663
  });
664
+ }
665
+ return [4 /*yield*/, instance.hardhatServer.close()];
666
+ case 2:
667
+ _a.sent();
495
668
  return [3 /*break*/, 4];
496
669
  case 3:
497
- e_3 = _a.sent();
670
+ e_5 = _a.sent();
498
671
  return [3 /*break*/, 4];
499
672
  case 4:
500
673
  instance = null;
@@ -505,4 +678,28 @@ function stopBlockchain() {
505
678
  });
506
679
  }
507
680
  exports.stopBlockchain = stopBlockchain;
681
+ function impersonateAccount(account) {
682
+ return __awaiter(this, void 0, void 0, function () {
683
+ var signers, lastSigner;
684
+ return __generator(this, function (_a) {
685
+ switch (_a.label) {
686
+ case 0: return [4 /*yield*/, instance.network.provider.send("hardhat_impersonateAccount", [account])];
687
+ case 1:
688
+ _a.sent();
689
+ return [4 /*yield*/, instance.ethers.getSigners()];
690
+ case 2:
691
+ signers = _a.sent();
692
+ lastSigner = signers.at(-1);
693
+ return [4 /*yield*/, lastSigner.sendTransaction({
694
+ to: account,
695
+ value: "10000000000000000000",
696
+ })];
697
+ case 3:
698
+ _a.sent();
699
+ return [2 /*return*/];
700
+ }
701
+ });
702
+ });
703
+ }
704
+ exports.impersonateAccount = impersonateAccount;
508
705
  //# sourceMappingURL=blockchain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../src/native/blockchain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../src/native/blockchain.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,18 @@
1
+ /// <reference types="node" />
2
+ import { ChildProcess } from "child_process";
1
3
  /**
2
4
  * Kills the emulator that was started by this module instance
3
5
  *
4
6
  * @returns A promise that resolves when the emulator is succesfully killed
5
7
  */
6
8
  export declare function killEmulator(): Promise<any>;
9
+ export declare function registerEmulator({ databaseToImport, projectId, suiteId, process, tenantId, }: {
10
+ suiteId: string;
11
+ projectId: string;
12
+ databaseToImport: string;
13
+ tenantId?: string;
14
+ process?: ChildProcess;
15
+ }): Promise<void>;
7
16
  /**
8
17
  * With this you can start an firebase emulator
9
18
  * @param args Check property typings for details
@@ -18,6 +27,10 @@ export declare function startEmulator(args: {
18
27
  UIPort: number;
19
28
  /** An optional flag to indicate when a new emulator instance should be created */
20
29
  suiteId?: string;
30
+ /** Tenant aware auth */
31
+ tenantId?: string;
32
+ /** The starting directory */
33
+ startAtCwd?: string;
21
34
  ports: number[];
22
35
  shouldSaveData: boolean;
23
36
  only: ("functions" | "hosting" | "firestore" | "storage" | "auth")[] | string[];
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.invokeAuthAdmin = exports.startEmulator = exports.killEmulator = void 0;
42
+ exports.invokeAuthAdmin = exports.startEmulator = exports.registerEmulator = exports.killEmulator = void 0;
43
43
  var node_fetch_1 = __importDefault(require("node-fetch"));
44
44
  var child_process_1 = require("child_process");
45
45
  var kill_port_1 = __importDefault(require("kill-port"));
@@ -85,6 +85,22 @@ function killEmulator() {
85
85
  });
86
86
  }
87
87
  exports.killEmulator = killEmulator;
88
+ function registerEmulator(_a) {
89
+ return __awaiter(this, arguments, void 0, function (_b) {
90
+ var databaseToImport = _b.databaseToImport, projectId = _b.projectId, suiteId = _b.suiteId, process = _b.process, tenantId = _b.tenantId;
91
+ return __generator(this, function (_c) {
92
+ spawnResult = {
93
+ id: suiteId,
94
+ project: projectId,
95
+ database: databaseToImport,
96
+ tenant: tenantId,
97
+ process: process,
98
+ };
99
+ return [2 /*return*/];
100
+ });
101
+ });
102
+ }
103
+ exports.registerEmulator = registerEmulator;
88
104
  /**
89
105
  * With this you can start an firebase emulator
90
106
  * @param args Check property typings for details
@@ -99,7 +115,7 @@ function startEmulator(args_1) {
99
115
  switch (_a.label) {
100
116
  case 0:
101
117
  suiteId = args.suiteId || args.databaseToImport || "default";
102
- log("Spawning emulator process");
118
+ log("Spawning emulator process with args", args);
103
119
  if (!(suiteId === (spawnResult === null || spawnResult === void 0 ? void 0 : spawnResult.id))) return [3 /*break*/, 1];
104
120
  log("Emulator with suite id ".concat(suiteId, " already running"));
105
121
  return [2 /*return*/, null];
@@ -108,16 +124,20 @@ function startEmulator(args_1) {
108
124
  _a.sent();
109
125
  _a.label = 3;
110
126
  case 3:
111
- spawnResult = {
112
- id: suiteId,
113
- project: args.projectId,
114
- database: args.databaseToImport,
127
+ /** Clears node options so ts-loader is not ovewritten by cypress */
128
+ delete process.env.NODE_OPTIONS;
129
+ log("Spawning emulator with env", process.env);
130
+ registerEmulator({
131
+ suiteId: suiteId,
132
+ projectId: args.projectId,
133
+ databaseToImport: args.databaseToImport,
134
+ tenantId: args.tenantId,
115
135
  process: (0, child_process_1.spawn)("firebase emulators:start -P ".concat(args.projectId, " ").concat(args.databaseToImport ? "--import ".concat(args.databaseToImport) : "", " ").concat(args.shouldSaveData ? "--export-on-exit" : "", " ").concat(args.only.length ? "--only=".concat(args.only.join(",")) : ""), {
116
- cwd: undefined,
136
+ cwd: args.startAtCwd,
117
137
  env: process.env,
118
138
  shell: true,
119
139
  }),
120
- };
140
+ });
121
141
  /**
122
142
  * This script exists so we can start an emulator from inside cypress
123
143
  */
@@ -207,7 +227,7 @@ function startEmulator(args_1) {
207
227
  exports.startEmulator = startEmulator;
208
228
  function invokeAuthAdmin(_a) {
209
229
  return __awaiter(this, arguments, void 0, function (_b) {
210
- var app, func;
230
+ var app, func, result, e_2;
211
231
  var projectId = _b.projectId, port = _b.port, functionName = _b.functionName, params = _b.params;
212
232
  return __generator(this, function (_c) {
213
233
  switch (_c.label) {
@@ -215,10 +235,17 @@ function invokeAuthAdmin(_a) {
215
235
  case 1:
216
236
  app = _c.sent();
217
237
  func = app[functionName];
218
- return [4 /*yield*/, func.bind(app).apply(void 0, params)];
238
+ _c.label = 2;
219
239
  case 2:
220
- _c.sent();
240
+ _c.trys.push([2, 4, , 5]);
241
+ return [4 /*yield*/, func.bind(app).apply(void 0, params)];
242
+ case 3:
243
+ result = _c.sent();
244
+ return [2 /*return*/, result || null];
245
+ case 4:
246
+ e_2 = _c.sent();
221
247
  return [2 /*return*/, null];
248
+ case 5: return [2 /*return*/];
222
249
  }
223
250
  });
224
251
  });
@@ -234,7 +261,13 @@ function _getAuthAdminInstance(projectId, authPort) {
234
261
  process.env.FIREBASE_AUTH_EMULATOR_HOST = "".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(authPort);
235
262
  adminApp[projectId] =
236
263
  adminApp[projectId] || initializeApp({ projectId: projectId }, projectId);
237
- return [2 /*return*/, getAuth(adminApp[projectId])];
264
+ if (spawnResult.tenant)
265
+ return [2 /*return*/, getAuth(adminApp[projectId])
266
+ .tenantManager()
267
+ .authForTenant(spawnResult.tenant)];
268
+ else
269
+ return [2 /*return*/, getAuth(adminApp[projectId])];
270
+ return [2 /*return*/];
238
271
  });
239
272
  });
240
273
  }