admin: updated dist files

This commit is contained in:
Richard Moore 2022-10-20 05:03:32 -04:00
parent e72a3cf078
commit 214b7ba217
170 changed files with 2011 additions and 889 deletions

@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.connect = exports.checkProvider = exports.getProvider = exports.getProviderNetworks = exports.providerNames = void 0;
const index_js_1 = require("../index.js");
;
const ethNetworks = ["default", "mainnet", "rinkeby", "ropsten", "goerli"];
const ethNetworks = ["default", "mainnet", "goerli"];
//const maticNetworks = [ "matic", "maticmum" ];
const ProviderCreators = [
{
@ -99,9 +99,16 @@ function getProviderNetworks(provider) {
exports.getProviderNetworks = getProviderNetworks;
function getProvider(provider, network) {
const creator = getCreator(provider);
try {
if (creator) {
return creator.create(network);
}
}
catch (error) {
if (!(0, index_js_1.isError)(error, "INVALID_ARGUMENT")) {
throw error;
}
}
return null;
}
exports.getProvider = getProvider;

@ -1 +1 @@
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":";;;AAAA,0CASqB;AAQpB,CAAC;AAEF,MAAM,WAAW,GAAG,CAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAE,CAAC;AAC7E,gDAAgD;AAEhD,MAAM,gBAAgB,GAA2B;IAC7C;QACI,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAS,OAAe;YAC5B,OAAO,IAAI,0BAAe,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;QAC5E,CAAC;KACJ;IACD;QACI,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAE,OAAO,EAAE,UAAU,CAAE,CAAC;QACrD,MAAM,EAAE,UAAS,OAAe;YAC5B,OAAO,IAAI,uBAAY,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;KACJ;IACD;QACI,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,CAAE,SAAS,EAAE,SAAS,CAAE;QAClC,MAAM,EAAE,UAAS,OAAe;YAC5B,OAAO,IAAI,6BAAkB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;KACJ;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAS,OAAe;YAC5B,OAAO,IAAI,4BAAiB,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC;QAChF,CAAC;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAS,OAAe;YAC5B,OAAO,IAAI,yBAAc,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;QAC3E,CAAC;KACJ;IACD;QACI,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAS,OAAe;YAC5B,OAAO,yBAAc,CAAC,oBAAoB,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;QAC5F,CAAC;KACJ;IACD;;;;;;;;;;;;;;MAcE;IACN;;;;;;;;;;;;;;;;MAgBE;CACD,CAAC;AAEW,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAElF,SAAS,UAAU,CAAC,QAAgB;IAChC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;IACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KAAE;IAClD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAgB;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,EAAE;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;KAAE;IACzC,OAAO,EAAG,CAAC;AACf,CAAC;AAJD,kDAIC;AAED,SAAgB,WAAW,CAAC,QAAgB,EAAE,OAAe;IACzD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,EAAE;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAAE;IAChD,OAAO,IAAI,CAAC;AAChB,CAAC;AAJD,kCAIC;AAED,SAAgB,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;AAC7B,CAAC;AAHD,sCAGC;AAED,SAAgB,OAAO,CAAC,OAAe;IACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,QAAQ,IAAI,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAyB,OAAQ,EAAE,CAAC,CAAC;KAAE;IAC/E,OAAO,QAAQ,CAAC;AACpB,CAAC;AAJD,0BAIC"}
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}

@ -1,20 +1,23 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const create_provider_js_1 = require("./create-provider.js");
const index_js_1 = require("../index.js");
/*
import assert from "assert";
import { connect } from "./create-provider.js";
import { Contract } from "../index.js";
describe("Test Contract", function() {
it("tests contract @TODO: expand", async function() {
const provider = (0, create_provider_js_1.connect)("mainnet");
const contract = new index_js_1.Contract("dai.tokens.ethers.eth", [
const provider = connect("mainnet");
const contract = new Contract("dai.tokens.ethers.eth", [
"function balanceOf(address) view returns (uint)"
], provider);
assert_1.default.equal(await contract.balanceOf("ricmoo.firefly.eth"), BigInt("6015089439794538201631"));
assert.equal(await contract.balanceOf("ricmoo.firefly.eth"), BigInt("6015089439794538201631"));
});
});
*/
/*
import { Typed } from "../abi/index.js";
import * as providers from "../providers/index.js";

@ -1 +1 @@
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,0CAAuC;AAGvC,QAAQ,CAAC,eAAe,EAAE;IACtB,EAAE,CAAC,8BAA8B,EAAE,KAAK;QACpC,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,uBAAuB,EAAE;YACnD,iDAAiD;SACpD,EAAE,QAAQ,CAAC,CAAC;QAEb,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;EAkBE;AACF;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}

@ -7,13 +7,13 @@ const assert_1 = __importDefault(require("assert"));
const create_provider_js_1 = require("./create-provider.js");
describe("Resolve ENS avatar", function () {
[
{ title: "data", name: "data-avatar.tests.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
{ title: "ipfs", name: "ipfs-avatar.tests.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
{ title: "url", name: "url-avatar.tests.eth", value: "https:/\/ethers.org/static/logo.png" },
{ title: "data", name: "data-avatar.tests.ethers.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
{ title: "ipfs", name: "ipfs-avatar.tests.ethers.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
{ title: "url", name: "url-avatar.tests.ethers.eth", value: "https:/\/ethers.org/static/logo.png" },
].forEach((test) => {
it(`Resolves avatar for ${test.title}`, async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
const avatar = await provider.getAvatar(test.name);
assert_1.default.equal(test.value, avatar, "avatar url");
});

@ -1 +1 @@
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,owCAAowC,EAAE;QAC7zC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,8EAA8E,EAAE;QACvI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC,EAAE;KAC/F,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,owCAAowC,EAAE;QACp0C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,8EAA8E,EAAE;QAC9I,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,qCAAqC,EAAE;KACtG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,gBAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

@ -16,11 +16,11 @@ describe("Test CCIP execution", function () {
]);
assert_1.default.equal(result, (0, index_js_1.keccak256)(check), "response is equal");
};
const address = "0xAe375B05A08204C809b3cA67C680765661998886";
const address = "0x6C5ed35574a9b4d163f75bBf0595F7540D8FCc2d";
const calldata = "0x1234";
it("testGet passes under normal operation", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testGet(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -31,7 +31,7 @@ describe("Test CCIP execution", function () {
});
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testGet(bytes callData = "0x1234")
const tx = {
to: address,
@ -41,13 +41,13 @@ describe("Test CCIP execution", function () {
const result = await provider.call(tx);
console.log(result);
}, (error) => {
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
});
});
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
provider.disableCcipRead = true;
// testGetFail(bytes callData = "0x1234")
const tx = {
@ -58,13 +58,13 @@ describe("Test CCIP execution", function () {
const result = await provider.call(tx);
console.log(result);
}, (error) => {
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData);
});
});
it("testGetFail should fail if all URLs 5xx", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testGetFail(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -81,7 +81,7 @@ describe("Test CCIP execution", function () {
});
it("testGetSenderFail should fail if sender does not match", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testGetSenderFail(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -94,13 +94,14 @@ describe("Test CCIP execution", function () {
const errorArgsJson = '["0x0000000000000000000000000000000000000000",["https://ethers.ricmoo.workers.dev/test-ccip-read/{sender}/{data}"],"0x1234","0xb1494be1","0x4d792065787472612064617461"]';
const offchainErrorData = "0x556f1830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
return ((0, index_js_1.isCallException)(error) && error.data === offchainErrorData &&
error.errorSignature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
JSON.stringify(error.errorArgs) === errorArgsJson);
error.revert &&
error.revert.signature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
JSON.stringify(error.revert.args) === errorArgsJson);
});
});
it("testGetMissing should fail if early URL 4xx", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testGetMissing(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -117,7 +118,7 @@ describe("Test CCIP execution", function () {
});
it("testGetFallback passes if any URL returns correctly", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testGetFallback(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -128,7 +129,7 @@ describe("Test CCIP execution", function () {
});
it("testPost passes under normal operation", async function () {
this.timeout(60000);
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
// testPost(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,

@ -1 +1 @@
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}

@ -24,7 +24,7 @@ function forEach(prefix, tests, func) {
continue;
}
// Prepare the testcase
(0, utils_js_1.retryIt)(`Foo ${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
(0, utils_js_1.retryIt)(`${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
// Create a provider
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
try {

File diff suppressed because one or more lines are too long

@ -0,0 +1,148 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const index_js_1 = require("../index.js");
const create_provider_js_1 = require("./create-provider.js");
describe("Tests Provider Errors", function () {
const panics = [
//{ code: 0x00, reason: "GENERIC_PANIC" },
{ code: 0x01, reason: "ASSERT_FALSE" },
{ code: 0x11, reason: "OVERFLOW" },
{ code: 0x12, reason: "DIVIDE_BY_ZERO" },
//{ code: 0x21, reason: "ENUM_RANGE_ERROR" },
//{ code: 0x22, reason: "BAD_STORAGE_DATA" },
{ code: 0x31, reason: "STACK_UNDERFLOW" },
{ code: 0x32, reason: "ARRAY_RANGE_ERROR" },
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
];
const cleanup = [];
after(function () {
for (const func of cleanup) {
func();
}
});
const testAddr = "0xF20Ba47c47a32fc2d9ad846fF06f2fa6e89eeC74";
const networkName = "goerli";
for (const { code, reason } of panics) {
for (const method of ["call", "estimateGas"]) {
for (const providerName of create_provider_js_1.providerNames) {
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
if (provider == null) {
continue;
}
// Shutdown socket-based provider, otherwise its socket will prevent
// this process from exiting
if (provider.destroy) {
cleanup.push(() => { provider.destroy(); });
}
it(`tests panic code: ${providerName}.${method}.${reason}`, async function () {
this.timeout(10000);
const data = (0, index_js_1.concat)([
(0, index_js_1.dataSlice)((0, index_js_1.id)("testPanic(uint256)"), 0, 4),
(0, index_js_1.zeroPadValue)((0, index_js_1.toArray)(code), 32)
]);
const tx = { to: testAddr, data };
try {
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
console.log(result);
assert_1.default.ok(false, "panic call did not throw");
}
catch (error) {
assert_1.default.ok((0, index_js_1.isCallException)(error), "isCallException");
// Check some basics
assert_1.default.equal(error.action, method, `error.action == ${method}`);
assert_1.default.equal(error.reason, `Panic due to ${reason}(${code})`, "error.reason");
// Check the transaciton
assert_1.default.equal(error.transaction.to, tx.to, `error.transaction.to`);
assert_1.default.equal(error.transaction.data, tx.data, `error.transaction.data`);
// We have no invocation data
assert_1.default.equal(error.invocation, null, `error.invocation != null`);
// Check the revert
assert_1.default.ok(error.revert != null, "error.revert == null");
assert_1.default.equal(error.revert.name, "Panic", `error.revert.name`);
assert_1.default.equal(error.revert.signature, "Panic(uint256)", `error.revert.signature`);
assert_1.default.equal(error.revert.args.length, 1, `error.revert.args.length`);
assert_1.default.equal(error.revert.args[0], code, `error.revert.args[0]`);
}
});
}
}
}
const customErrors = [
{
name: "CustomError1",
signature: "testCustomError1(bool,uint256,string)",
data: "0xdb7342480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
//data: "0x852d0c740000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000",
message: `execution reverted (unknown custom error)`,
reason: null,
revert: null,
},
{
name: "Error",
signature: "testErrorString(bool,string)",
data: "0xb206699b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
//data: "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000"
message: `execution reverted: "hello world"`,
reason: "hello world",
revert: {
signature: "Error(string)",
name: "Error",
args: ['hello world']
}
},
];
for (const { data, message, name, reason, revert } of customErrors) {
for (const method of ["call", "estimateGas"]) {
const tx = { to: testAddr, data };
for (const providerName of create_provider_js_1.providerNames) {
const provider = (0, create_provider_js_1.getProvider)(providerName, networkName);
if (provider == null) {
continue;
}
// Shutdown socket-based provider, otherwise its socket will prevent
// this process from exiting
if (provider.destroy) {
cleanup.push(() => { provider.destroy(); });
}
it(`tests custom errors: ${providerName}.${method}.${name}`, async function () {
this.timeout(10000);
try {
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
console.log(result);
assert_1.default.ok(false, "panic call did not throw");
}
catch (error) {
assert_1.default.ok((0, index_js_1.isCallException)(error), "isCallException");
// Check some basics
assert_1.default.equal(error.action, method, `error.action == ${method}`);
assert_1.default.ok(error.message.startsWith(message), "error.message == message");
if (reason) {
assert_1.default.equal(error.reason, reason, "error.reason");
}
else {
assert_1.default.ok(error.reason == null, "error.reason != null");
}
if (revert) {
assert_1.default.ok(error.revert != null, "error.revert == null");
assert_1.default.equal(error.revert.name, revert.name, "error.revert.name");
assert_1.default.equal(error.revert.signature, revert.signature, "error.revert.signature");
assert_1.default.equal(error.revert.args.length, revert.args.length, "error.revert.args.length");
for (let i = 0; i < revert.args.length; i++) {
assert_1.default.equal(error.revert.args[i], revert.args[i], `error.revert.args[${i}]`);
}
}
else {
assert_1.default.ok(error.revert == null, "error.revert != null");
}
}
});
}
}
}
});
//# sourceMappingURL=test-providers-errors.js.map

File diff suppressed because one or more lines are too long

@ -6,15 +6,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const create_provider_js_1 = require("./create-provider.js");
describe("Test EIP-2544 ENS wildcards", function () {
const provider = (0, create_provider_js_1.connect)("ropsten");
const provider = (0, create_provider_js_1.connect)("goerli");
it("Resolves recursively", async function () {
const resolver = await provider.getResolver("ricmoose.hatch.eth");
assert_1.default.ok(resolver, "failed to get resolver");
assert_1.default.equal(resolver.address, "0x8fc4C380c5d539aE631daF3Ca9182b40FB21D1ae", "address");
assert_1.default.equal(resolver.address, "0x15abA1fa74Bfdecd63A71218DC632d4328Db8168", "address");
assert_1.default.equal(await resolver.supportsWildcard(), true, "supportsWildcard()");
// Test pass-through avatar
assert_1.default.equal(await resolver.getAvatar(), "https:/\/static.ricmoo.com/uploads/profile-06cb9c3031c9.jpg", "getAvatar()");
assert_1.default.equal(await resolver.getAddress(), "0x4FaBE0A3a4DDd9968A7b4565184Ad0eFA7BE5411", "getAddress()");
assert_1.default.equal(await resolver.getAddress(), "0x4B711A377B1b3534749FBe5e59Bcf7F94d92EA98", "getAddress()");
});
});
//# sourceMappingURL=test-providers-wildcard.js.map

@ -1 +1 @@
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,SAAS,CAAC,CAAC;IAEpC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAE5B,6DAA+C;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,CAAC,CAAC;IAEnC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,gBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,gBAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

@ -1,5 +1,5 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.version = void 0;
exports.version = "6.0.0-beta-exports.4";
exports.version = "6.0.0-beta-exports.5";
//# sourceMappingURL=_version.js.map

@ -1,7 +1,7 @@
"use strict";
// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultAbiCoder = exports.AbiCoder = void 0;
exports.defaultAbiCoder = exports.getBuiltinCallException = exports.AbiCoder = void 0;
const index_js_1 = require("../utils/index.js");
const abstract_coder_js_1 = require("./coders/abstract-coder.js");
const address_js_1 = require("./coders/address.js");
@ -14,6 +14,8 @@ const number_js_1 = require("./coders/number.js");
const string_js_1 = require("./coders/string.js");
const tuple_js_1 = require("./coders/tuple.js");
const fragments_js_1 = require("./fragments.js");
const index_js_2 = require("../address/index.js");
const index_js_3 = require("../utils/index.js");
const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
class AbiCoder {
@ -76,5 +78,78 @@ class AbiCoder {
}
}
exports.AbiCoder = AbiCoder;
// https://docs.soliditylang.org/en/v0.8.17/control-structures.html
const PanicReasons = new Map();
PanicReasons.set(0x00, "GENERIC_PANIC");
PanicReasons.set(0x01, "ASSERT_FALSE");
PanicReasons.set(0x11, "OVERFLOW");
PanicReasons.set(0x12, "DIVIDE_BY_ZERO");
PanicReasons.set(0x21, "ENUM_RANGE_ERROR");
PanicReasons.set(0x22, "BAD_STORAGE_DATA");
PanicReasons.set(0x31, "STACK_UNDERFLOW");
PanicReasons.set(0x32, "ARRAY_RANGE_ERROR");
PanicReasons.set(0x41, "OUT_OF_MEMORY");
PanicReasons.set(0x51, "UNINITIALIZED_FUNCTION_CALL");
function getBuiltinCallException(action, tx, data) {
let message = "missing revert data";
let reason = null;
const invocation = null;
let revert = null;
if (data) {
message = "execution reverted";
const bytes = (0, index_js_3.getBytes)(data);
data = (0, index_js_3.hexlify)(data);
if (bytes.length % 32 !== 4) {
message += " (could not decode reason; invalid data length)";
}
else if ((0, index_js_3.hexlify)(bytes.slice(0, 4)) === "0x08c379a0") {
// Error(string)
try {
reason = exports.defaultAbiCoder.decode(["string"], bytes.slice(4))[0];
revert = {
signature: "Error(string)",
name: "Error",
args: [reason]
};
message += `: ${JSON.stringify(reason)}`;
}
catch (error) {
console.log(error);
message += " (could not decode reason; invalid data)";
}
}
else if ((0, index_js_3.hexlify)(bytes.slice(0, 4)) === "0x4e487b71") {
// Panic(uint256)
try {
const code = Number(exports.defaultAbiCoder.decode(["uint256"], bytes.slice(4))[0]);
revert = {
signature: "Panic(uint256)",
name: "Panic",
args: [code]
};
reason = `Panic due to ${PanicReasons.get(code) || "UNKNOWN"}(${code})`;
message += `: ${reason}`;
}
catch (error) {
console.log(error);
message += " (could not decode panic reason)";
}
}
else {
message += " (unknown custom error)";
}
}
const transaction = {
to: (tx.to ? (0, index_js_2.getAddress)(tx.to) : null),
data: (tx.data || "0x")
};
if (tx.from) {
transaction.from = (0, index_js_2.getAddress)(tx.from);
}
return (0, index_js_3.makeError)(message, "CALL_EXCEPTION", {
action, data, reason, transaction, invocation, revert
});
}
exports.getBuiltinCallException = getBuiltinCallException;
exports.defaultAbiCoder = new AbiCoder();
//# sourceMappingURL=abi-coder.js.map

File diff suppressed because one or more lines are too long

@ -498,7 +498,7 @@ class ParamType {
return value[param.name];
});
}
if (value.length !== this.components.length) {
if (result.length !== this.components.length) {
throw new Error("array is wrong length");
}
result.forEach((value, index) => {
@ -595,7 +595,7 @@ class ParamType {
});
return new ParamType(_guard, name, type, "array", indexed, null, arrayLength, arrayChildren);
}
if (type.substring(0, 5) === "tuple(" || type[0] === "(") {
if (type === "tuple" || type.substring(0, 5) === "tuple(" || type[0] === "(") {
const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;
const tuple = new ParamType(_guard, name, type, "tuple", indexed, comps, null, null);
// @TODO: use lexer to validate and normalize type

File diff suppressed because one or more lines are too long

@ -1,10 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Typed = exports.Result = exports.TransactionDescription = exports.LogDescription = exports.ErrorDescription = exports.Interface = exports.Indexed = exports.checkResultErrors = exports.StructFragment = exports.ParamType = exports.NamedFragment = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.encodeBytes32String = exports.decodeBytes32String = exports.defaultAbiCoder = exports.AbiCoder = void 0;
exports.Typed = exports.Result = exports.TransactionDescription = exports.LogDescription = exports.ErrorDescription = exports.Interface = exports.Indexed = exports.checkResultErrors = exports.StructFragment = exports.ParamType = exports.NamedFragment = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.encodeBytes32String = exports.decodeBytes32String = exports.getBuiltinCallException = exports.defaultAbiCoder = exports.AbiCoder = void 0;
//////
var abi_coder_js_1 = require("./abi-coder.js");
Object.defineProperty(exports, "AbiCoder", { enumerable: true, get: function () { return abi_coder_js_1.AbiCoder; } });
Object.defineProperty(exports, "defaultAbiCoder", { enumerable: true, get: function () { return abi_coder_js_1.defaultAbiCoder; } });
Object.defineProperty(exports, "getBuiltinCallException", { enumerable: true, get: function () { return abi_coder_js_1.getBuiltinCallException; } });
var bytes32_js_1 = require("./bytes32.js");
Object.defineProperty(exports, "decodeBytes32String", { enumerable: true, get: function () { return bytes32_js_1.decodeBytes32String; } });
Object.defineProperty(exports, "encodeBytes32String", { enumerable: true, get: function () { return bytes32_js_1.encodeBytes32String; } });

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":";;;AAGA,MAAM;AACN,+CAGwB;AAFpB,wGAAA,QAAQ,OAAA;AACR,+GAAA,eAAe,OAAA;AAGnB,2CAAwE;AAA/D,iHAAA,mBAAmB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAEjD,+CAGwB;AAFpB,mHAAA,mBAAmB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAC3D,gHAAA,gBAAgB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,yGAAA,SAAS,OAAA;AAAE,8GAAA,cAAc,OAAA;AAG9D,+CAMwB;AALpB,iHAAA,iBAAiB,OAAA;AACjB,uGAAA,OAAO,OAAA;AACP,yGAAA,SAAS,OAAA;AACT,gHAAA,gBAAgB,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AACxD,sGAAA,MAAM,OAAA;AAGV,uCAAmC;AAA1B,iGAAA,KAAK,OAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":";;;AAGA,MAAM;AACN,+CAIwB;AAHpB,wGAAA,QAAQ,OAAA;AACR,+GAAA,eAAe,OAAA;AACf,uHAAA,uBAAuB,OAAA;AAG3B,2CAAwE;AAA/D,iHAAA,mBAAmB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAEjD,+CAGwB;AAFpB,mHAAA,mBAAmB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAC3D,gHAAA,gBAAgB,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,yGAAA,SAAS,OAAA;AAAE,8GAAA,cAAc,OAAA;AAG9D,+CAMwB;AALpB,iHAAA,iBAAiB,OAAA;AACjB,uGAAA,OAAO,OAAA;AACP,yGAAA,SAAS,OAAA;AACT,gHAAA,gBAAgB,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AACxD,sGAAA,MAAM,OAAA;AAGV,uCAAmC;AAA1B,iGAAA,KAAK,OAAA"}

@ -578,65 +578,42 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
info: { method: fragment.name, signature: fragment.format() }
});
}
makeError(fragment, _data, tx) {
if (typeof (fragment) === "string") {
fragment = this.getFunction(fragment);
}
const data = (0, index_js_3.getBytes)(_data);
let args = undefined;
if (tx) {
try {
args = this.#abiCoder.decode(fragment.inputs, tx.data || "0x");
}
catch (error) {
console.log(error);
}
}
let errorArgs = undefined;
let errorName = undefined;
let errorSignature = undefined;
let reason = "unknown reason";
if (data.length === 0) {
reason = "missing error reason";
}
else if ((data.length % 32) === 4) {
makeError(_data, tx) {
const data = (0, index_js_3.getBytes)(_data, "data");
const error = (0, abi_coder_js_1.getBuiltinCallException)("call", tx, data);
// Not a built-in error; try finding a custom error
if (!error.message.match(/could not decode/)) {
const selector = (0, index_js_3.hexlify)(data.slice(0, 4));
const builtin = BuiltinErrors[selector];
if (builtin) {
error.message = "execution reverted (unknown custom error)";
try {
errorName = builtin.name;
errorSignature = builtin.signature;
errorArgs = this.#abiCoder.decode(builtin.inputs, data.slice(4));
reason = builtin.reason(...errorArgs);
}
catch (error) {
console.log(error); // @TODO: remove
}
}
else {
reason = "unknown custom error";
const ef = this.getError(selector);
try {
const error = this.getError(selector);
errorName = error.name;
errorSignature = error.format();
reason = `custom error: ${errorSignature}`;
try {
errorArgs = this.#abiCoder.decode(error.inputs, data.slice(4));
error.revert = {
name: ef.name,
signature: ef.format(),
args: this.#abiCoder.decode(ef.inputs, data.slice(4))
};
error.reason = error.revert.signature;
error.message = `execution reverted: ${error.reason}`;
}
catch (error) {
reason = `custom error: ${errorSignature} (coult not decode error data)`;
catch (e) {
error.message = `execution reverted (coult not decode custom error)`;
}
}
catch (error) {
console.log(error); // @TODO: remove
}
}
// Add the invocation, if available
const parsed = this.parseTransaction(tx);
if (parsed) {
error.invocation = {
method: parsed.name,
signature: parsed.signature,
args: parsed.args
};
}
return (0, index_js_3.makeError)("call revert exception", "CALL_EXCEPTION", {
data: (0, index_js_3.hexlify)(data), transaction: null,
method: fragment.name, signature: fragment.format(), args,
errorArgs, errorName, errorSignature, reason
});
return error;
}
/**
* Encodes the result data (e.g. from an ``eth_call``) for the

File diff suppressed because one or more lines are too long

@ -190,18 +190,18 @@ class WrappedMethod extends _WrappedMethodBase() {
operation: "call"
});
}
const fragment = this.getFragment(...args);
const tx = await this.populateTransaction(...args);
let result = "0x";
try {
result = await runner.call(tx);
}
catch (error) {
if ((0, index_js_4.isCallException)(error)) {
throw this._contract.interface.makeError(fragment, error.data, tx);
if ((0, index_js_4.isCallException)(error) && error.data) {
throw this._contract.interface.makeError(error.data, tx);
}
throw error;
}
const fragment = this.getFragment(...args);
return this._contract.interface.decodeFunctionResult(fragment, result);
}
}

File diff suppressed because one or more lines are too long

@ -1 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":";;AAeC,CAAC;AAiB4E,CAAC;AAkD9E,CAAC"}
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":";;AAeC,CAAC;AAoB4E,CAAC;AAkD9E,CAAC"}

@ -1,11 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.computeHmac = void 0;
const crypto_js_1 = require("./crypto.js");
const crypto_browser_js_1 = require("./crypto-browser.js");
const index_js_1 = require("../utils/index.js");
let locked = false;
const _computeHmac = function (algorithm, key, data) {
return "0x" + (0, crypto_js_1.createHmac)(algorithm, key).update(data).digest("hex");
return (0, crypto_browser_js_1.createHmac)(algorithm, key).update(data).digest();
};
let __computeHmac = _computeHmac;
function computeHmac(algorithm, _key, _data) {

@ -1 +1 @@
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AACzC,gDAAsD;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,IAAI,GAAG,IAAA,sBAAU,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,SAAgB,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,IAAA,kBAAO,EAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAJD,kCAIC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":";;;AAAA,2DAAiD;AACjD,gDAAsD;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,IAAA,8BAAU,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,SAAgB,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAA,mBAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,IAAA,kBAAO,EAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAJD,kCAIC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}

@ -47,18 +47,7 @@ class Signature {
return Signature.getChainId(v);
}
get yParity() {
if (this.v === 27) {
return 0;
}
return 1;
/*
// When v is 0 or 1 it is the recid directly
if (this.v.isZero()) { return 0; }
if (this.v.eq(1)) { return 1; }
// Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1
return this.v.and(1).isZero() ? 1: 0;
*/
return (this.v === 27) ? 0 : 1;
}
get yParityAndS() {
// The EIP-2098 compact representation
@ -103,9 +92,9 @@ class Signature {
r: this.r, s: this.s, v: this.v,
};
}
static create() {
return new Signature(_guard, index_js_1.ZeroHash, index_js_1.ZeroHash, 27);
}
//static create(): Signature {
// return new Signature(_guard, ZeroHash, ZeroHash, 27);
//}
// Get the chain ID from an EIP-155 v
static getChainId(v) {
const bv = (0, index_js_2.getBigInt)(v, "v");
@ -136,6 +125,9 @@ class Signature {
return (bv & BN_1) ? 27 : 28;
}
static from(sig) {
if (sig == null) {
return new Signature(_guard, index_js_1.ZeroHash, index_js_1.ZeroHash, 27);
}
const throwError = (message) => {
return (0, index_js_2.throwArgumentError)(message, "signature", sig);
};
@ -148,8 +140,8 @@ class Signature {
s[0] &= 0x7f;
return new Signature(_guard, r, (0, index_js_2.hexlify)(s), v);
}
if ((0, index_js_2.dataLength)(sig) !== 65) {
const r = (0, index_js_2.hexlify)(sig.slice(0, 32));
if (bytes.length === 65) {
const r = (0, index_js_2.hexlify)(bytes.slice(0, 32));
const s = bytes.slice(32, 64);
if (s[0] & 0x80) {
throwError("non-canonical s");

File diff suppressed because one or more lines are too long

@ -48,9 +48,7 @@ class SigningKey {
get publicKey() { return SigningKey.computePublicKey(this.#privateKey); }
get compressedPublicKey() { return SigningKey.computePublicKey(this.#privateKey, true); }
sign(digest) {
/* @TODO
logger.assertArgument(() => (dataLength(digest) === 32), "invalid digest length", "digest", digest);
*/
(0, index_js_1.assertArgument)((0, index_js_1.dataLength)(digest) === 32, "invalid digest length", "digest", digest);
const [sigDer, recid] = secp256k1.signSync((0, index_js_1.getBytesCopy)(digest), (0, index_js_1.getBytesCopy)(this.#privateKey), {
recovered: true,
canonical: true
@ -82,6 +80,7 @@ class SigningKey {
return (0, index_js_1.hexlify)(point.toRawBytes(compressed));
}
static recoverPublicKey(digest, signature) {
(0, index_js_1.assertArgument)((0, index_js_1.dataLength)(digest) === 32, "invalid digest length", "digest", digest);
const sig = signature_js_1.Signature.from(signature);
const der = secp256k1.Signature.fromCompact((0, index_js_1.getBytesCopy)((0, index_js_1.concat)([sig.r, sig.s]))).toDERRawBytes();
const pubKey = secp256k1.recoverPublicKey((0, index_js_1.getBytesCopy)(digest), der, sig.yParity);

@ -1 +1 @@
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}

@ -3,9 +3,9 @@
//
Object.defineProperty(exports, "__esModule", { value: true });
exports.scrypt = exports.pbkdf2 = exports.sha512 = exports.sha256 = exports.ripemd160 = exports.keccak256 = exports.randomBytes = exports.computeHmac = exports.EventLog = exports.ContractTransactionResponse = exports.ContractTransactionReceipt = exports.ContractEventPayload = exports.ContractFactory = exports.Contract = exports.BaseContract = exports.MessagePrefix = exports.EtherSymbol = exports.ZeroHash = exports.N = exports.MaxInt256 = exports.MinInt256 = exports.MaxUint256 = exports.WeiPerEther = exports.Two = exports.One = exports.Zero = exports.NegativeOne = exports.ZeroAddress = exports.getCreate2Address = exports.getCreateAddress = exports.getIcapAddress = exports.getAddress = exports.Typed = exports.TransactionDescription = exports.Result = exports.LogDescription = exports.Interface = exports.Indexed = exports.checkResultErrors = exports.ParamType = exports.FunctionFragment = exports.Fragment = exports.EventFragment = exports.ErrorFragment = exports.ConstructorFragment = exports.defaultAbiCoder = exports.AbiCoder = exports.encodeBytes32String = exports.decodeBytes32String = exports.version = void 0;
exports.assertPrivate = exports.assertNormalize = exports.assertArgumentCount = exports.assertArgument = exports.zeroPadValue = exports.zeroPadBytes = exports.stripZerosLeft = exports.isBytesLike = exports.isHexString = exports.hexlify = exports.getBytesCopy = exports.getBytes = exports.dataSlice = exports.dataLength = exports.concat = exports.encodeBase64 = exports.decodeBase64 = exports.encodeBase58 = exports.decodeBase58 = exports.Transaction = exports.recoverAddress = exports.computeAddress = exports.accessListify = exports.Network = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.AbstractProvider = exports.TypedDataEncoder = exports.solidityPackedSha256 = exports.solidityPackedKeccak256 = exports.solidityPacked = exports.hashMessage = exports.dnsEncode = exports.namehash = exports.isValidName = exports.id = exports.SigningKey = exports.Signature = exports.lock = exports.scryptSync = void 0;
exports.LangEn = exports.langEn = exports.Wordlist = exports.Wallet = exports.Mnemonic = exports.encryptKeystoreJson = exports.decryptKeystoreJson = exports.decryptKeystoreJsonSync = exports.isKeystoreJson = exports.decryptCrowdsaleJson = exports.isCrowdsaleJson = exports.HDNodeWalletManager = exports.HDNodeVoidWallet = exports.HDNodeWallet = exports.getAccountPath = exports.defaultPath = exports.encodeRlp = exports.decodeRlp = exports.Utf8ErrorFuncs = exports.toUtf8String = exports.toUtf8CodePoints = exports.toUtf8Bytes = exports._toEscapedUtf8String = exports.parseUnits = exports.formatUnits = exports.parseEther = exports.formatEther = exports.mask = exports.toTwos = exports.fromTwos = exports.toQuantity = exports.toNumber = exports.toHex = exports.toBigInt = exports.toArray = exports.getNumber = exports.getBigInt = exports.parseFixed = exports.formatFixed = exports.FixedNumber = exports.FixedFormat = exports.FetchCancelSignal = exports.FetchResponse = exports.FetchRequest = exports.getIpfsGatewayFunc = exports.isError = exports.isCallException = exports.throwError = exports.throwArgumentError = exports.makeError = void 0;
exports.WordlistOwlA = exports.WordlistOwl = exports.wordlists = void 0;
exports.assertNormalize = exports.assertArgumentCount = exports.assertArgument = exports.zeroPadValue = exports.zeroPadBytes = exports.stripZerosLeft = exports.isBytesLike = exports.isHexString = exports.hexlify = exports.getBytesCopy = exports.getBytes = exports.dataSlice = exports.dataLength = exports.concat = exports.encodeBase64 = exports.decodeBase64 = exports.encodeBase58 = exports.decodeBase58 = exports.Transaction = exports.recoverAddress = exports.computeAddress = exports.accessListify = exports.Network = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.BrowserProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.AbstractProvider = exports.TypedDataEncoder = exports.solidityPackedSha256 = exports.solidityPackedKeccak256 = exports.solidityPacked = exports.hashMessage = exports.dnsEncode = exports.namehash = exports.isValidName = exports.id = exports.SigningKey = exports.Signature = exports.lock = exports.scryptSync = void 0;
exports.langEn = exports.Wordlist = exports.Wallet = exports.Mnemonic = exports.encryptKeystoreJson = exports.decryptKeystoreJson = exports.decryptKeystoreJsonSync = exports.isKeystoreJson = exports.decryptCrowdsaleJson = exports.isCrowdsaleJson = exports.HDNodeWalletManager = exports.HDNodeVoidWallet = exports.HDNodeWallet = exports.getAccountPath = exports.defaultPath = exports.encodeRlp = exports.decodeRlp = exports.Utf8ErrorFuncs = exports.toUtf8String = exports.toUtf8CodePoints = exports.toUtf8Bytes = exports._toEscapedUtf8String = exports.parseUnits = exports.formatUnits = exports.parseEther = exports.formatEther = exports.mask = exports.toTwos = exports.fromTwos = exports.toQuantity = exports.toNumber = exports.toHex = exports.toBigInt = exports.toArray = exports.getNumber = exports.getBigInt = exports.parseFixed = exports.formatFixed = exports.FixedNumber = exports.FixedFormat = exports.FetchCancelSignal = exports.FetchResponse = exports.FetchRequest = exports.getIpfsGatewayFunc = exports.isError = exports.isCallException = exports.throwError = exports.throwArgumentError = exports.makeError = exports.assertPrivate = void 0;
exports.WordlistOwlA = exports.WordlistOwl = exports.wordlists = exports.LangEn = void 0;
var _version_js_1 = require("./_version.js");
Object.defineProperty(exports, "version", { enumerable: true, get: function () { return _version_js_1.version; } });
var index_js_1 = require("./abi/index.js");
@ -82,6 +82,7 @@ Object.defineProperty(exports, "FallbackProvider", { enumerable: true, get: func
Object.defineProperty(exports, "JsonRpcApiProvider", { enumerable: true, get: function () { return index_js_7.JsonRpcApiProvider; } });
Object.defineProperty(exports, "JsonRpcProvider", { enumerable: true, get: function () { return index_js_7.JsonRpcProvider; } });
Object.defineProperty(exports, "JsonRpcSigner", { enumerable: true, get: function () { return index_js_7.JsonRpcSigner; } });
Object.defineProperty(exports, "BrowserProvider", { enumerable: true, get: function () { return index_js_7.BrowserProvider; } });
Object.defineProperty(exports, "AlchemyProvider", { enumerable: true, get: function () { return index_js_7.AlchemyProvider; } });
Object.defineProperty(exports, "AnkrProvider", { enumerable: true, get: function () { return index_js_7.AnkrProvider; } });
Object.defineProperty(exports, "CloudflareProvider", { enumerable: true, get: function () { return index_js_7.CloudflareProvider; } });

@ -1 +1 @@
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}

@ -9,7 +9,8 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbstractProvider = exports.UnmanagedSubscriber = void 0;
const index_js_1 = require("../address/index.js");
const index_js_2 = require("../utils/index.js");
const index_js_2 = require("../transaction/index.js");
const index_js_3 = require("../utils/index.js");
const ens_resolver_js_1 = require("./ens-resolver.js");
const format_js_1 = require("./format.js");
const network_js_1 = require("./network.js");
@ -43,7 +44,7 @@ function getTag(prefix, value) {
}
class UnmanagedSubscriber {
name;
constructor(name) { (0, index_js_2.defineProperties)(this, { name }); }
constructor(name) { (0, index_js_3.defineProperties)(this, { name }); }
start() { }
stop() { }
pause(dropWhilePaused) { }
@ -76,7 +77,7 @@ async function getSubscription(_event, provider) {
}
}
}
if ((0, index_js_2.isHexString)(_event, 32)) {
if ((0, index_js_3.isHexString)(_event, 32)) {
const hash = _event.toLowerCase();
return { type: "transaction", tag: getTag("tx", { hash }), hash };
}
@ -102,7 +103,7 @@ async function getSubscription(_event, provider) {
const addresses = [];
const promises = [];
const addAddress = (addr) => {
if ((0, index_js_2.isHexString)(addr)) {
if ((0, index_js_3.isHexString)(addr)) {
addresses.push(addr);
}
else {
@ -124,7 +125,7 @@ async function getSubscription(_event, provider) {
}
return { filter, tag: getTag("event", filter), type: "event" };
}
return (0, index_js_2.throwArgumentError)("unknown ProviderEvent", "event", _event);
return (0, index_js_3.throwArgumentError)("unknown ProviderEvent", "event", _event);
}
function getTime() { return (new Date()).getTime(); }
class AbstractProvider {
@ -215,7 +216,7 @@ class AbstractProvider {
// value.status = response.statusCode;
// return value;
//});
const request = new index_js_2.FetchRequest(href);
const request = new index_js_3.FetchRequest(href);
if (url.indexOf("{data}") === -1) {
request.body = { data, sender };
}
@ -233,7 +234,7 @@ class AbstractProvider {
catch (error) { }
// 4xx indicates the result is not present; stop
if (resp.statusCode >= 400 && resp.statusCode < 500) {
return (0, index_js_2.throwError)(`response not found during CCIP fetch: ${errorMessage}`, "OFFCHAIN_FAULT", {
return (0, index_js_3.throwError)(`response not found during CCIP fetch: ${errorMessage}`, "OFFCHAIN_FAULT", {
reason: "404_MISSING_RESOURCE",
transaction: tx, info: { url, errorMessage }
});
@ -241,7 +242,7 @@ class AbstractProvider {
// 5xx indicates server issue; try the next url
errorMessages.push(errorMessage);
}
return (0, index_js_2.throwError)(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(", ")}`, "OFFCHAIN_FAULT", {
return (0, index_js_3.throwError)(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(", ")}`, "OFFCHAIN_FAULT", {
reason: "500_SERVER_ERROR",
transaction: tx, info: { urls, errorMessages }
});
@ -262,21 +263,21 @@ class AbstractProvider {
return new provider_js_1.TransactionResponse(tx, this);
}
_detectNetwork() {
return (0, index_js_2.throwError)("sub-classes must implement this", "UNSUPPORTED_OPERATION", {
return (0, index_js_3.throwError)("sub-classes must implement this", "UNSUPPORTED_OPERATION", {
operation: "_detectNetwork"
});
}
// Sub-classes should override this and handle PerformActionRequest requests, calling
// the super for any unhandled actions.
async _perform(req) {
return (0, index_js_2.throwError)(`unsupported method: ${req.method}`, "UNSUPPORTED_OPERATION", {
return (0, index_js_3.throwError)(`unsupported method: ${req.method}`, "UNSUPPORTED_OPERATION", {
operation: req.method,
info: req
});
}
// State
async getBlockNumber() {
const blockNumber = (0, index_js_2.getNumber)(await this.#perform({ method: "getBlockNumber" }), "%response");
const blockNumber = (0, index_js_3.getNumber)(await this.#perform({ method: "getBlockNumber" }), "%response");
if (this.#lastBlockNumber >= 0) {
this.#lastBlockNumber = blockNumber;
}
@ -298,22 +299,22 @@ class AbstractProvider {
case "finalized":
return blockTag;
}
if ((0, index_js_2.isHexString)(blockTag)) {
if ((0, index_js_2.dataLength)(blockTag) === 32) {
if ((0, index_js_3.isHexString)(blockTag)) {
if ((0, index_js_3.dataLength)(blockTag) === 32) {
return blockTag;
}
return (0, index_js_2.toQuantity)(blockTag);
return (0, index_js_3.toQuantity)(blockTag);
}
if (typeof (blockTag) === "number") {
if (blockTag >= 0) {
return (0, index_js_2.toQuantity)(blockTag);
return (0, index_js_3.toQuantity)(blockTag);
}
if (this.#lastBlockNumber >= 0) {
return (0, index_js_2.toQuantity)(this.#lastBlockNumber + blockTag);
return (0, index_js_3.toQuantity)(this.#lastBlockNumber + blockTag);
}
return this.getBlockNumber().then((b) => (0, index_js_2.toQuantity)(b + blockTag));
return this.getBlockNumber().then((b) => (0, index_js_3.toQuantity)(b + blockTag));
}
return (0, index_js_2.throwArgumentError)("invalid blockTag", "blockTag", blockTag);
return (0, index_js_3.throwArgumentError)("invalid blockTag", "blockTag", blockTag);
}
_getFilter(filter) {
// Create a canonical representation of the topics
@ -455,7 +456,7 @@ class AbstractProvider {
}
else {
// Otherwise, we do not allow changes to the underlying network
(0, index_js_2.throwError)(`network changed: ${expected.chainId} => ${actual.chainId} `, "NETWORK_ERROR", {
(0, index_js_3.throwError)(`network changed: ${expected.chainId} => ${actual.chainId} `, "NETWORK_ERROR", {
event: "changed"
});
}
@ -463,12 +464,12 @@ class AbstractProvider {
return expected.clone();
}
async getFeeData() {
const { block, gasPrice } = await (0, index_js_2.resolveProperties)({
const { block, gasPrice } = await (0, index_js_3.resolveProperties)({
block: this.getBlock("latest"),
gasPrice: ((async () => {
try {
const gasPrice = await this.#perform({ method: "getGasPrice" });
return (0, index_js_2.getBigInt)(gasPrice, "%response");
return (0, index_js_3.getBigInt)(gasPrice, "%response");
}
catch (error) { }
return null;
@ -494,13 +495,13 @@ class AbstractProvider {
if (isPromise(tx)) {
tx = await tx;
}
return (0, index_js_2.getBigInt)(await this.#perform({
return (0, index_js_3.getBigInt)(await this.#perform({
method: "estimateGas", transaction: tx
}), "%response");
}
async #call(tx, blockTag, attempt) {
if (attempt >= MAX_CCIP_REDIRECTS) {
(0, index_js_2.throwError)("CCIP read exceeded maximum redirections", "OFFCHAIN_FAULT", {
(0, index_js_3.throwError)("CCIP read exceeded maximum redirections", "OFFCHAIN_FAULT", {
reason: "TOO_MANY_REDIRECTS",
transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })
});
@ -508,43 +509,49 @@ class AbstractProvider {
// This came in as a PerformActionTransaction, so to/from are safe; we can cast
const transaction = (0, provider_js_1.copyRequest)(tx);
try {
return (0, index_js_2.hexlify)(await this._perform({ method: "call", transaction, blockTag }));
return (0, index_js_3.hexlify)(await this._perform({ method: "call", transaction, blockTag }));
}
catch (error) {
// CCIP Read OffchainLookup
if (!this.disableCcipRead && (0, index_js_2.isCallException)(error) && attempt >= 0 && blockTag === "latest" && transaction.to != null && (0, index_js_2.dataSlice)(error.data, 0, 4) === "0x556f1830") {
if (!this.disableCcipRead && (0, index_js_3.isCallException)(error) && error.data && attempt >= 0 && blockTag === "latest" && transaction.to != null && (0, index_js_3.dataSlice)(error.data, 0, 4) === "0x556f1830") {
const data = error.data;
const txSender = await (0, index_js_1.resolveAddress)(transaction.to, this);
// Parse the CCIP Read Arguments
let ccipArgs;
try {
ccipArgs = parseOffchainLookup((0, index_js_2.dataSlice)(error.data, 4));
ccipArgs = parseOffchainLookup((0, index_js_3.dataSlice)(error.data, 4));
}
catch (error) {
return (0, index_js_2.throwError)(error.message, "OFFCHAIN_FAULT", {
return (0, index_js_3.throwError)(error.message, "OFFCHAIN_FAULT", {
reason: "BAD_DATA",
transaction, info: { data }
});
}
// Check the sender of the OffchainLookup matches the transaction
if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {
return (0, index_js_2.throwError)("CCIP Read sender mismatch", "CALL_EXCEPTION", {
data, transaction,
errorSignature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
errorName: "OffchainLookup",
errorArgs: ccipArgs.errorArgs
return (0, index_js_3.throwError)("CCIP Read sender mismatch", "CALL_EXCEPTION", {
action: "call",
data,
reason: "OffchainLookup",
transaction: transaction,
invocation: null,
revert: {
signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
name: "OffchainLookup",
args: ccipArgs.errorArgs
}
});
}
const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);
if (ccipResult == null) {
return (0, index_js_2.throwError)("CCIP Read failed to fetch data", "OFFCHAIN_FAULT", {
return (0, index_js_3.throwError)("CCIP Read failed to fetch data", "OFFCHAIN_FAULT", {
reason: "FETCH_FAILED",
transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }
});
}
return this.#call({
to: txSender,
data: (0, index_js_2.concat)([
data: (0, index_js_3.concat)([
ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])
]),
}, blockTag, attempt + 1);
@ -553,14 +560,14 @@ class AbstractProvider {
}
}
async #checkNetwork(promise) {
const { value } = await (0, index_js_2.resolveProperties)({
const { value } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
value: promise
});
return value;
}
async call(_tx) {
const { tx, blockTag } = await (0, index_js_2.resolveProperties)({
const { tx, blockTag } = await (0, index_js_3.resolveProperties)({
tx: this._getTransactionRequest(_tx),
blockTag: this._getBlockTag(_tx.blockTag)
});
@ -576,26 +583,37 @@ class AbstractProvider {
return await this.#checkNetwork(this.#perform(Object.assign(request, { address, blockTag })));
}
async getBalance(address, blockTag) {
return (0, index_js_2.getBigInt)(await this.#getAccountValue({ method: "getBalance" }, address, blockTag), "%response");
return (0, index_js_3.getBigInt)(await this.#getAccountValue({ method: "getBalance" }, address, blockTag), "%response");
}
async getTransactionCount(address, blockTag) {
return (0, index_js_2.getNumber)(await this.#getAccountValue({ method: "getTransactionCount" }, address, blockTag), "%response");
return (0, index_js_3.getNumber)(await this.#getAccountValue({ method: "getTransactionCount" }, address, blockTag), "%response");
}
async getCode(address, blockTag) {
return (0, index_js_2.hexlify)(await this.#getAccountValue({ method: "getCode" }, address, blockTag));
return (0, index_js_3.hexlify)(await this.#getAccountValue({ method: "getCode" }, address, blockTag));
}
async getStorage(address, _position, blockTag) {
const position = (0, index_js_2.getBigInt)(_position, "position");
return (0, index_js_2.hexlify)(await this.#getAccountValue({ method: "getStorage", position }, address, blockTag));
const position = (0, index_js_3.getBigInt)(_position, "position");
return (0, index_js_3.hexlify)(await this.#getAccountValue({ method: "getStorage", position }, address, blockTag));
}
// Write
async broadcastTransaction(signedTx) {
throw new Error();
return {};
const { blockNumber, hash, network } = await (0, index_js_3.resolveProperties)({
blockNumber: this.getBlockNumber(),
hash: this._perform({
method: "broadcastTransaction",
signedTransaction: signedTx
}),
network: this.getNetwork()
});
const tx = index_js_2.Transaction.from(signedTx);
if (tx.hash !== hash) {
throw new Error("@TODO: the returned hash did not match");
}
return this._wrapTransactionResponse(tx, network).replaceableTransaction(blockNumber);
}
async #getBlock(block, includeTransactions) {
// @TODO: Add CustomBlockPlugin check
if ((0, index_js_2.isHexString)(block, 32)) {
if ((0, index_js_3.isHexString)(block, 32)) {
return await this.#perform({
method: "getBlock", blockHash: block, includeTransactions
});
@ -610,7 +628,7 @@ class AbstractProvider {
}
// Queries
async getBlock(block) {
const { network, params } = await (0, index_js_2.resolveProperties)({
const { network, params } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
params: this.#getBlock(block, false)
});
@ -620,7 +638,7 @@ class AbstractProvider {
return this._wrapBlock((0, format_js_1.formatBlock)(params), network);
}
async getBlockWithTransactions(block) {
const { network, params } = await (0, index_js_2.resolveProperties)({
const { network, params } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
params: this.#getBlock(block, true)
});
@ -630,7 +648,7 @@ class AbstractProvider {
return this._wrapBlockWithTransactions((0, format_js_1.formatBlockWithTransactions)(params), network);
}
async getTransaction(hash) {
const { network, params } = await (0, index_js_2.resolveProperties)({
const { network, params } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
params: this.#perform({ method: "getTransaction", hash })
});
@ -640,7 +658,7 @@ class AbstractProvider {
return this._wrapTransactionResponse((0, format_js_1.formatTransactionResponse)(params), network);
}
async getTransactionReceipt(hash) {
const { network, params } = await (0, index_js_2.resolveProperties)({
const { network, params } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
params: this.#perform({ method: "getTransactionReceipt", hash })
});
@ -659,14 +677,14 @@ class AbstractProvider {
return this._wrapTransactionReceipt((0, format_js_1.formatTransactionReceipt)(params), network);
}
async getTransactionResult(hash) {
const { result } = await (0, index_js_2.resolveProperties)({
const { result } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
result: this.#perform({ method: "getTransactionResult", hash })
});
if (result == null) {
return null;
}
return (0, index_js_2.hexlify)(result);
return (0, index_js_3.hexlify)(result);
}
// Bloom-filter Queries
async getLogs(_filter) {
@ -674,7 +692,7 @@ class AbstractProvider {
if (isPromise(filter)) {
filter = await filter;
}
const { network, params } = await (0, index_js_2.resolveProperties)({
const { network, params } = await (0, index_js_3.resolveProperties)({
network: this.getNetwork(),
params: this.#perform({ method: "getLogs", filter })
});
@ -682,7 +700,7 @@ class AbstractProvider {
}
// ENS
_getProvider(chainId) {
return (0, index_js_2.throwError)("provider cannot connect to target network", "UNSUPPORTED_OPERATION", {
return (0, index_js_3.throwError)("provider cannot connect to target network", "UNSUPPORTED_OPERATION", {
operation: "_getProvider()"
});
}
@ -697,7 +715,7 @@ class AbstractProvider {
return null;
}
async resolveName(name) {
if ((0, index_js_2.isHexString)(name, 20)) {
if ((0, index_js_3.isHexString)(name, 20)) {
return name;
}
//if (typeof(name) === "string") {
@ -753,7 +771,7 @@ class AbstractProvider {
}
timer = null;
this.off("block", listener);
reject((0, index_js_2.makeError)("timeout", "TIMEOUT", { reason: "timeout" }));
reject((0, index_js_3.makeError)("timeout", "TIMEOUT", { reason: "timeout" }));
}, timeout);
}
listener(await this.getBlockNumber());
@ -883,7 +901,7 @@ class AbstractProvider {
;
const count = sub.listeners.length;
sub.listeners = sub.listeners.filter(({ listener, once }) => {
const payload = new index_js_2.EventPayload(this, (once ? null : listener), event);
const payload = new index_js_3.EventPayload(this, (once ? null : listener), event);
try {
listener.call(this, ...args, payload);
}
@ -993,7 +1011,7 @@ class AbstractProvider {
if (this.#pausedState == !!dropWhilePaused) {
return;
}
return (0, index_js_2.throwError)("cannot change pause type; resume first", "UNSUPPORTED_OPERATION", {
return (0, index_js_3.throwError)("cannot change pause type; resume first", "UNSUPPORTED_OPERATION", {
operation: "pause"
});
}
@ -1032,7 +1050,7 @@ function _parseString(result, start) {
try {
const bytes = _parseBytes(result, start);
if (bytes) {
return (0, index_js_2.toUtf8String)(bytes);
return (0, index_js_3.toUtf8String)(bytes);
}
}
catch (error) { }
@ -1043,15 +1061,15 @@ function _parseBytes(result, start) {
return null;
}
try {
const offset = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(result, start, start + 32));
const length = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(result, offset, offset + 32));
return (0, index_js_2.dataSlice)(result, offset + 32, offset + 32 + length);
const offset = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(result, start, start + 32));
const length = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(result, offset, offset + 32));
return (0, index_js_3.dataSlice)(result, offset + 32, offset + 32 + length);
}
catch (error) { }
return null;
}
function numPad(value) {
const result = (0, index_js_2.toArray)(value);
const result = (0, index_js_3.toArray)(value);
if (result.length > 32) {
throw new Error("internal; should not happen");
}
@ -1078,7 +1096,7 @@ function encodeBytes(datas) {
byteCount += 32;
}
for (let i = 0; i < datas.length; i++) {
const data = (0, index_js_2.getBytes)(datas[i]);
const data = (0, index_js_3.getBytes)(datas[i]);
// Update the bytes offset
result[i] = numPad(byteCount);
// The length and padded value of data
@ -1086,27 +1104,27 @@ function encodeBytes(datas) {
result.push(bytesPad(data));
byteCount += 32 + Math.ceil(data.length / 32) * 32;
}
return (0, index_js_2.concat)(result);
return (0, index_js_3.concat)(result);
}
const zeros = "0x0000000000000000000000000000000000000000000000000000000000000000";
function parseOffchainLookup(data) {
const result = {
sender: "", urls: [], calldata: "", selector: "", extraData: "", errorArgs: []
};
if ((0, index_js_2.dataLength)(data) < 5 * 32) {
if ((0, index_js_3.dataLength)(data) < 5 * 32) {
throw new Error("insufficient OffchainLookup data");
}
const sender = (0, index_js_2.dataSlice)(data, 0, 32);
if ((0, index_js_2.dataSlice)(sender, 0, 12) !== (0, index_js_2.dataSlice)(zeros, 0, 12)) {
const sender = (0, index_js_3.dataSlice)(data, 0, 32);
if ((0, index_js_3.dataSlice)(sender, 0, 12) !== (0, index_js_3.dataSlice)(zeros, 0, 12)) {
throw new Error("corrupt OffchainLookup sender");
}
result.sender = (0, index_js_2.dataSlice)(sender, 12);
result.sender = (0, index_js_3.dataSlice)(sender, 12);
// Read the URLs from the response
try {
const urls = [];
const urlsOffset = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(data, 32, 64));
const urlsLength = (0, index_js_2.getNumber)((0, index_js_2.dataSlice)(data, urlsOffset, urlsOffset + 32));
const urlsData = (0, index_js_2.dataSlice)(data, urlsOffset + 32);
const urlsOffset = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(data, 32, 64));
const urlsLength = (0, index_js_3.getNumber)((0, index_js_3.dataSlice)(data, urlsOffset, urlsOffset + 32));
const urlsData = (0, index_js_3.dataSlice)(data, urlsOffset + 32);
for (let u = 0; u < urlsLength; u++) {
const url = _parseString(urlsData, u * 32);
if (url == null) {
@ -1131,10 +1149,10 @@ function parseOffchainLookup(data) {
throw new Error("corrupt OffchainLookup calldata");
}
// Get the callbackSelector (bytes4)
if ((0, index_js_2.dataSlice)(data, 100, 128) !== (0, index_js_2.dataSlice)(zeros, 0, 28)) {
if ((0, index_js_3.dataSlice)(data, 100, 128) !== (0, index_js_3.dataSlice)(zeros, 0, 28)) {
throw new Error("corrupt OffchainLookup callbaackSelector");
}
result.selector = (0, index_js_2.dataSlice)(data, 96, 100);
result.selector = (0, index_js_3.dataSlice)(data, 96, 100);
// Get the extra data to send back to the contract as context
try {
const extraData = _parseBytes(data, 128);

File diff suppressed because one or more lines are too long

@ -41,14 +41,14 @@ class AbstractSigner {
return address;
});
}
return pop;
return { pop: await (0, index_js_2.resolveProperties)(pop), provider };
}
async populateCall(tx) {
const pop = await this.#populate("populateCall", tx);
const { pop } = await this.#populate("populateCall", tx);
return pop;
}
async populateTransaction(tx) {
const pop = await this.#populate("populateTransaction", tx);
const { pop, provider } = await this.#populate("populateTransaction", tx);
if (pop.nonce == null) {
pop.nonce = await this.getNonce("pending");
}
@ -66,10 +66,95 @@ class AbstractSigner {
else {
pop.chainId = network.chainId;
}
// Do not allow mixing pre-eip-1559 and eip-1559 properties
const hasEip1559 = (pop.maxFeePerGas != null || pop.maxPriorityFeePerGas != null);
if (pop.gasPrice != null && (pop.type === 2 || hasEip1559)) {
(0, index_js_2.throwArgumentError)("eip-1559 transaction do not support gasPrice", "tx", tx);
}
else if ((pop.type === 0 || pop.type === 1) && hasEip1559) {
(0, index_js_2.throwArgumentError)("pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas", "tx", tx);
}
if ((pop.type === 2 || pop.type == null) && (pop.maxFeePerGas != null && pop.maxPriorityFeePerGas != null)) {
// Fully-formed EIP-1559 transaction (skip getFeeData)
pop.type = 2;
}
else if (pop.type === 0 || pop.type === 1) {
// Explicit Legacy or EIP-2930 transaction
// We need to get fee data to determine things
const feeData = await provider.getFeeData();
if (feeData.gasPrice == null) {
(0, index_js_2.throwError)("network does not support gasPrice", "UNSUPPORTED_OPERATION", {
operation: "getGasPrice"
});
}
// Populate missing gasPrice
if (pop.gasPrice == null) {
pop.gasPrice = feeData.gasPrice;
}
}
else {
// We need to get fee data to determine things
const feeData = await provider.getFeeData();
if (pop.type == null) {
// We need to auto-detect the intended type of this transaction...
if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {
// The network supports EIP-1559!
// Upgrade transaction from null to eip-1559
pop.type = 2;
if (pop.gasPrice != null) {
// Using legacy gasPrice property on an eip-1559 network,
// so use gasPrice as both fee properties
const gasPrice = pop.gasPrice;
delete pop.gasPrice;
pop.maxFeePerGas = gasPrice;
pop.maxPriorityFeePerGas = gasPrice;
}
else {
// Populate missing fee data
if (pop.maxFeePerGas == null) {
pop.maxFeePerGas = feeData.maxFeePerGas;
}
if (pop.maxPriorityFeePerGas == null) {
pop.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;
}
}
}
else if (feeData.gasPrice != null) {
// Network doesn't support EIP-1559...
// ...but they are trying to use EIP-1559 properties
if (hasEip1559) {
(0, index_js_2.throwError)("network does not support EIP-1559", "UNSUPPORTED_OPERATION", {
operation: "populateTransaction"
});
}
// Populate missing fee data
if (pop.gasPrice == null) {
pop.gasPrice = feeData.gasPrice;
}
// Explicitly set untyped transaction to legacy
// @TODO: Maybe this shold allow type 1?
pop.type = 0;
}
else {
// getFeeData has failed us.
(0, index_js_2.throwError)("failed to get consistent fee data", "UNSUPPORTED_OPERATION", {
operation: "signer.getFeeData"
});
}
}
else if (pop.type === 2) {
// Explicitly using EIP-1559
// Populate missing fee data
if (pop.maxFeePerGas == null) {
pop.maxFeePerGas = feeData.maxFeePerGas;
}
if (pop.maxPriorityFeePerGas == null) {
pop.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;
}
}
}
//@TOOD: Don't await all over the place; save them up for
// the end for better batching
//@TODO: Copy type logic from AbstractSigner in v5
// Test how many batches is actually sent for sending a tx; compare before/after
return await (0, index_js_2.resolveProperties)(pop);
}
async estimateGas(tx) {
@ -84,7 +169,8 @@ class AbstractSigner {
}
async sendTransaction(tx) {
const provider = this.#checkProvider("sendTransaction");
const txObj = index_js_1.Transaction.from(await this.populateTransaction(tx));
const pop = await this.populateTransaction(tx);
const txObj = index_js_1.Transaction.from(pop);
return await provider.broadcastTransaction(await this.signTransaction(txObj));
}
}

File diff suppressed because one or more lines are too long

@ -1,81 +0,0 @@
"use strict";
/**
* Exports the same Network as "./network.js" except with common
* networks injected registered.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Network = exports.injectCommonNetworks = void 0;
const plugins_network_js_1 = require("./plugins-network.js");
const provider_etherscan_base_js_1 = require("./provider-etherscan-base.js");
const network_js_1 = require("./network.js");
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return network_js_1.Network; } });
// See: https://chainlist.org
function injectCommonNetworks() {
/// Register popular Ethereum networks
function registerEth(name, chainId, options) {
const func = function () {
const network = new network_js_1.Network(name, chainId);
// We use 0 to disable ENS
if (options.ensNetwork != null) {
network.attachPlugin(new plugins_network_js_1.EnsPlugin(null, options.ensNetwork));
}
if (options.priorityFee) {
// network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));
}
if (options.etherscan) {
const { url, apiKey } = options.etherscan;
network.attachPlugin(new provider_etherscan_base_js_1.EtherscanPlugin(url, apiKey));
}
network.attachPlugin(new plugins_network_js_1.GasCostPlugin());
return network;
};
// Register the network by name and chain ID
network_js_1.Network.register(name, func);
network_js_1.Network.register(chainId, func);
if (options.altNames) {
options.altNames.forEach((name) => {
network_js_1.Network.register(name, func);
});
}
}
registerEth("mainnet", 1, { ensNetwork: 1, altNames: ["homestead"] });
registerEth("ropsten", 3, { ensNetwork: 3 });
registerEth("rinkeby", 4, { ensNetwork: 4 });
registerEth("goerli", 5, { ensNetwork: 5 });
registerEth("kovan", 42, { ensNetwork: 42 });
registerEth("classic", 61, {});
registerEth("classicKotti", 6, {});
registerEth("xdai", 100, { ensNetwork: 1 });
// Polygon has a 35 gwei maxPriorityFee requirement
registerEth("matic", 137, {
ensNetwork: 1,
// priorityFee: 35000000000,
etherscan: {
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
url: "https:/\/api.polygonscan.com/"
}
});
registerEth("maticMumbai", 80001, {
// priorityFee: 35000000000,
etherscan: {
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
url: "https:/\/api-testnet.polygonscan.com/"
}
});
registerEth("bnb", 56, {
ensNetwork: 1,
etherscan: {
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
url: "http:/\/api.bscscan.com"
}
});
registerEth("bnbt", 97, {
etherscan: {
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
url: "http:/\/api-testnet.bscscan.com"
}
});
}
exports.injectCommonNetworks = injectCommonNetworks;
injectCommonNetworks();
//# sourceMappingURL=common-networks.js.map

@ -1 +0,0 @@
{"version":3,"file":"common-networks.js","sourceRoot":"","sources":["../../src.ts/providers/common-networks.ts"],"names":[],"mappings":"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"}

@ -2,31 +2,31 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnsResolver = exports.BasicMulticoinProviderPlugin = exports.MulticoinProviderPlugin = void 0;
const index_js_1 = require("../address/index.js");
const hashes_js_1 = require("../constants/hashes.js");
const index_js_2 = require("../hash/index.js");
const index_js_3 = require("../utils/index.js");
const index_js_2 = require("../constants/index.js");
const index_js_3 = require("../hash/index.js");
const index_js_4 = require("../utils/index.js");
const BN_1 = BigInt(1);
const Empty = new Uint8Array([]);
function parseBytes(result, start) {
if (result === "0x") {
return null;
}
const offset = (0, index_js_3.toNumber)((0, index_js_3.dataSlice)(result, start, start + 32));
const length = (0, index_js_3.toNumber)((0, index_js_3.dataSlice)(result, offset, offset + 32));
return (0, index_js_3.dataSlice)(result, offset + 32, offset + 32 + length);
const offset = (0, index_js_4.toNumber)((0, index_js_4.dataSlice)(result, start, start + 32));
const length = (0, index_js_4.toNumber)((0, index_js_4.dataSlice)(result, offset, offset + 32));
return (0, index_js_4.dataSlice)(result, offset + 32, offset + 32 + length);
}
function parseString(result, start) {
try {
const bytes = parseBytes(result, start);
if (bytes != null) {
return (0, index_js_3.toUtf8String)(bytes);
return (0, index_js_4.toUtf8String)(bytes);
}
}
catch (error) { }
return null;
}
function numPad(value) {
const result = (0, index_js_3.toArray)(value);
const result = (0, index_js_4.toArray)(value);
if (result.length > 32) {
throw new Error("internal; should not happen");
}
@ -52,7 +52,7 @@ function encodeBytes(datas) {
byteCount += 32;
}
for (let i = 0; i < datas.length; i++) {
const data = (0, index_js_3.getBytes)(datas[i]);
const data = (0, index_js_4.getBytes)(datas[i]);
// Update the bytes offset
result[i] = numPad(byteCount);
// The length and padded value of data
@ -60,11 +60,11 @@ function encodeBytes(datas) {
result.push(bytesPad(data));
byteCount += 32 + Math.ceil(data.length / 32) * 32;
}
return (0, index_js_3.concat)(result);
return (0, index_js_4.concat)(result);
}
function callAddress(value) {
if (value.length !== 66 || (0, index_js_3.dataSlice)(value, 0, 12) !== "0x000000000000000000000000") {
(0, index_js_3.throwArgumentError)("invalid call address", "value", value);
if (value.length !== 66 || (0, index_js_4.dataSlice)(value, 0, 12) !== "0x000000000000000000000000") {
(0, index_js_4.throwArgumentError)("invalid call address", "value", value);
}
return (0, index_js_1.getAddress)("0x" + value.substring(26));
}
@ -78,7 +78,7 @@ function getIpfsLink(link) {
link = link.substring(7);
}
else {
(0, index_js_3.throwArgumentError)("unsupported IPFS format", "link", link);
(0, index_js_4.throwArgumentError)("unsupported IPFS format", "link", link);
}
return `https:/\/gateway.ipfs.io/ipfs/${link}`;
}
@ -87,7 +87,7 @@ function getIpfsLink(link) {
class MulticoinProviderPlugin {
name;
constructor(name) {
(0, index_js_3.defineProperties)(this, { name });
(0, index_js_4.defineProperties)(this, { name });
}
validate(proivder) {
return this;
@ -124,7 +124,7 @@ class EnsResolver {
// For EIP-2544 names, the ancestor that provided the resolver
#supports2544;
constructor(provider, address, name) {
(0, index_js_3.defineProperties)(this, { provider, address, name });
(0, index_js_4.defineProperties)(this, { provider, address, name });
this.#supports2544 = null;
}
async supportsWildcard() {
@ -134,7 +134,7 @@ class EnsResolver {
to: this.address,
data: "0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000"
}).then((result) => {
return ((0, index_js_3.getBigInt)(result) === BN_1);
return ((0, index_js_4.getBigInt)(result) === BN_1);
}).catch((error) => {
if (error.code === "CALL_EXCEPTION") {
return false;
@ -148,9 +148,10 @@ class EnsResolver {
}
async _fetch(selector, parameters = "0x") {
// e.g. keccak256("addr(bytes32,uint256)")
const addrData = (0, index_js_3.concat)([selector, (0, index_js_2.namehash)(this.name), parameters]);
const addrData = (0, index_js_4.concat)([selector, (0, index_js_3.namehash)(this.name), parameters]);
const tx = {
to: this.address,
from: index_js_2.ZeroAddress,
enableCcipRead: true,
data: addrData
};
@ -159,13 +160,14 @@ class EnsResolver {
if (await this.supportsWildcard()) {
wrapped = true;
// selector("resolve(bytes,bytes)")
tx.data = (0, index_js_3.concat)(["0x9061b923", encodeBytes([(0, index_js_2.dnsEncode)(this.name), addrData])]);
tx.data = (0, index_js_4.concat)(["0x9061b923", encodeBytes([(0, index_js_3.dnsEncode)(this.name), addrData])]);
}
try {
let data = await this.provider.call(tx);
if (((0, index_js_3.getBytes)(data).length % 32) === 4) {
return (0, index_js_3.throwError)("resolver threw error", "CALL_EXCEPTION", {
transaction: tx, data
if (((0, index_js_4.getBytes)(data).length % 32) === 4) {
return (0, index_js_4.throwError)("execution reverted during JSON-RPC call (could not parse reason; invalid data length)", "CALL_EXCEPTION", {
action: "call", data, reason: null, transaction: tx,
invocation: null, revert: null
});
}
if (wrapped) {
@ -186,7 +188,7 @@ class EnsResolver {
// keccak256("addr(bytes32)")
const result = await this._fetch("0x3b3b57de");
// No address
if (result == null || result === "0x" || result === hashes_js_1.ZeroHash) {
if (result == null || result === "0x" || result === index_js_2.ZeroHash) {
return null;
}
return callAddress(result);
@ -222,22 +224,22 @@ class EnsResolver {
if (address != null) {
return address;
}
return (0, index_js_3.throwError)(`invalid coin data`, "UNSUPPORTED_OPERATION", {
return (0, index_js_4.throwError)(`invalid coin data`, "UNSUPPORTED_OPERATION", {
operation: `getAddress(${coinType})`,
info: { coinType, data }
});
}
async getText(key) {
// The key encoded as parameter to fetchBytes
let keyBytes = (0, index_js_3.toUtf8Bytes)(key);
let keyBytes = (0, index_js_4.toUtf8Bytes)(key);
// The nodehash consumes the first slot, so the string pointer targets
// offset 64, with the length at offset 64 and data starting at offset 96
const calldata = (0, index_js_3.getBytes)((0, index_js_3.concat)([numPad(64), numPad(keyBytes.length), keyBytes]));
const calldata = (0, index_js_4.getBytes)((0, index_js_4.concat)([numPad(64), numPad(keyBytes.length), keyBytes]));
const hexBytes = parseBytes((await this._fetch("0x59d1d43c", bytesPad(calldata))) || "0x", 0);
if (hexBytes == null || hexBytes === "0x") {
return null;
}
return (0, index_js_3.toUtf8String)(hexBytes);
return (0, index_js_4.toUtf8String)(hexBytes);
}
async getContentHash() {
// keccak256("contenthash()")
@ -252,7 +254,7 @@ class EnsResolver {
const scheme = (ipfs[1] === "e3010170") ? "ipfs" : "ipns";
const length = parseInt(ipfs[4], 16);
if (ipfs[5].length === length * 2) {
return `${scheme}:/\/${(0, index_js_3.encodeBase58)("0x" + ipfs[2])}`;
return `${scheme}:/\/${(0, index_js_4.encodeBase58)("0x" + ipfs[2])}`;
}
}
// Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)
@ -260,7 +262,7 @@ class EnsResolver {
if (swarm && swarm[1].length === 64) {
return `bzz:/\/${swarm[1]}`;
}
return (0, index_js_3.throwError)(`invalid or unsupported content hash data`, "UNSUPPORTED_OPERATION", {
return (0, index_js_4.throwError)(`invalid or unsupported content hash data`, "UNSUPPORTED_OPERATION", {
operation: "getContentHash()",
info: { data: hexBytes }
});
@ -318,7 +320,7 @@ class EnsResolver {
if (scheme === "erc721") {
// ownerOf(uint256 tokenId)
const tokenOwner = callAddress(await this.provider.call({
to: addr, data: (0, index_js_3.concat)(["0x6352211e", tokenId])
to: addr, data: (0, index_js_4.concat)(["0x6352211e", tokenId])
}));
if (owner !== tokenOwner) {
linkage.push({ type: "!owner", value: tokenOwner });
@ -328,8 +330,8 @@ class EnsResolver {
}
else if (scheme === "erc1155") {
// balanceOf(address owner, uint256 tokenId)
const balance = (0, index_js_3.getBigInt)(await this.provider.call({
to: addr, data: (0, index_js_3.concat)(["0x00fdd58e", (0, index_js_3.zeroPadValue)(owner, 32), tokenId])
const balance = (0, index_js_4.getBigInt)(await this.provider.call({
to: addr, data: (0, index_js_4.concat)(["0x00fdd58e", (0, index_js_4.zeroPadValue)(owner, 32), tokenId])
}));
if (!balance) {
linkage.push({ type: "!balance", value: "0" });
@ -340,7 +342,7 @@ class EnsResolver {
// Call the token contract for the metadata URL
const tx = {
to: comps[0],
data: (0, index_js_3.concat)([selector, tokenId])
data: (0, index_js_4.concat)([selector, tokenId])
};
let metadataUrl = parseString(await this.provider.call(tx), 0);
if (metadataUrl == null) {
@ -350,7 +352,7 @@ class EnsResolver {
linkage.push({ type: "metadata-url-base", value: metadataUrl });
// ERC-1155 allows a generic {id} in the URL
if (scheme === "erc1155") {
metadataUrl = metadataUrl.replace("{id}", (0, index_js_3.hexlify)(tokenId).substring(2));
metadataUrl = metadataUrl.replace("{id}", (0, index_js_4.hexlify)(tokenId).substring(2));
linkage.push({ type: "metadata-url-expanded", value: metadataUrl });
}
// Transform IPFS metadata links
@ -360,7 +362,7 @@ class EnsResolver {
linkage.push({ type: "metadata-url", value: metadataUrl });
// Get the token metadata
let metadata = {};
const response = await (new index_js_3.FetchRequest(metadataUrl)).send();
const response = await (new index_js_4.FetchRequest(metadataUrl)).send();
response.assertOk();
try {
metadata = response.bodyJson;
@ -372,7 +374,7 @@ class EnsResolver {
catch (error) {
const bytes = response.body;
if (bytes) {
linkage.push({ type: "!metadata", value: (0, index_js_3.hexlify)(bytes) });
linkage.push({ type: "!metadata", value: (0, index_js_4.hexlify)(bytes) });
}
throw error;
}
@ -418,7 +420,7 @@ class EnsResolver {
const ensPlugin = network.getPlugin("org.ethers.network-plugins.ens");
// No ENS...
if (!ensPlugin) {
return (0, index_js_3.throwError)("network does not support ENS", "UNSUPPORTED_OPERATION", {
return (0, index_js_4.throwError)("network does not support ENS", "UNSUPPORTED_OPERATION", {
operation: "getResolver", info: { network: network.name }
});
}
@ -426,11 +428,11 @@ class EnsResolver {
// keccak256("resolver(bytes32)")
const addrData = await provider.call({
to: ensPlugin.address,
data: (0, index_js_3.concat)(["0x0178b8bf", (0, index_js_2.namehash)(name)]),
data: (0, index_js_4.concat)(["0x0178b8bf", (0, index_js_3.namehash)(name)]),
enableCcipRead: true
});
const addr = callAddress(addrData);
if (addr === (0, index_js_3.dataSlice)(hashes_js_1.ZeroHash, 0, 20)) {
if (addr === (0, index_js_4.dataSlice)(index_js_2.ZeroHash, 0, 20)) {
return null;
}
return addr;

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
"use strict";
/////
Object.defineProperty(exports, "__esModule", { value: true });
exports.SocketEventSubscriber = exports.SocketPendingSubscriber = exports.SocketBlockSubscriber = exports.SocketSubscriber = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.EtherscanPlugin = exports.BaseEtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.copyRequest = exports.TransactionResponse = exports.TransactionReceipt = exports.Log = exports.FeeData = exports.Block = exports.EnsPlugin = exports.GasCostPlugin = exports.NetworkPlugin = exports.Network = exports.WrappedSigner = exports.VoidSigner = exports.AbstractSigner = exports.UnmanagedSubscriber = exports.AbstractProvider = void 0;
exports.SocketEventSubscriber = exports.SocketPendingSubscriber = exports.SocketBlockSubscriber = exports.SocketSubscriber = exports.WebSocketProvider = exports.SocketProvider = exports.IpcSocketProvider = exports.InfuraProvider = exports.EtherscanProvider = exports.EtherscanPlugin = exports.BaseEtherscanProvider = exports.CloudflareProvider = exports.AnkrProvider = exports.AlchemyProvider = exports.BrowserProvider = exports.JsonRpcSigner = exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.FallbackProvider = exports.copyRequest = exports.TransactionResponse = exports.TransactionReceipt = exports.Log = exports.FeeData = exports.Block = exports.EnsPlugin = exports.GasCostPlugin = exports.NetworkPlugin = exports.Network = exports.WrappedSigner = exports.VoidSigner = exports.AbstractSigner = exports.UnmanagedSubscriber = exports.AbstractProvider = void 0;
var abstract_provider_js_1 = require("./abstract-provider.js");
Object.defineProperty(exports, "AbstractProvider", { enumerable: true, get: function () { return abstract_provider_js_1.AbstractProvider; } });
Object.defineProperty(exports, "UnmanagedSubscriber", { enumerable: true, get: function () { return abstract_provider_js_1.UnmanagedSubscriber; } });
@ -18,8 +18,8 @@ export { getDefaultProvider } from "./default-provider.js";
export { EnsResolver } from "./ens-resolver.js";
*/
var common_networks_js_1 = require("./common-networks.js");
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return common_networks_js_1.Network; } });
var network_js_1 = require("./network.js");
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return network_js_1.Network; } });
var plugins_network_js_1 = require("./plugins-network.js");
Object.defineProperty(exports, "NetworkPlugin", { enumerable: true, get: function () { return plugins_network_js_1.NetworkPlugin; } });
Object.defineProperty(exports, "GasCostPlugin", { enumerable: true, get: function () { return plugins_network_js_1.GasCostPlugin; } });
@ -37,6 +37,8 @@ var provider_jsonrpc_js_1 = require("./provider-jsonrpc.js");
Object.defineProperty(exports, "JsonRpcApiProvider", { enumerable: true, get: function () { return provider_jsonrpc_js_1.JsonRpcApiProvider; } });
Object.defineProperty(exports, "JsonRpcProvider", { enumerable: true, get: function () { return provider_jsonrpc_js_1.JsonRpcProvider; } });
Object.defineProperty(exports, "JsonRpcSigner", { enumerable: true, get: function () { return provider_jsonrpc_js_1.JsonRpcSigner; } });
var provider_browser_js_1 = require("./provider-browser.js");
Object.defineProperty(exports, "BrowserProvider", { enumerable: true, get: function () { return provider_browser_js_1.BrowserProvider; } });
var provider_alchemy_js_1 = require("./provider-alchemy.js");
Object.defineProperty(exports, "AlchemyProvider", { enumerable: true, get: function () { return provider_alchemy_js_1.AlchemyProvider; } });
var provider_ankr_js_1 = require("./provider-ankr.js");

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/providers/index.ts"],"names":[],"mappings":";AAGA,KAAK;;;AAEL,+DAEgC;AAD5B,wHAAA,gBAAgB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAGzC,2DAI8B;AAH1B,oHAAA,cAAc,OAAA;AACd,gHAAA,UAAU,OAAA;AACV,mHAAA,aAAa,OAAA;AAEjB;;;;;;;;EAQE;AAEF,2DAA+C;AAAtC,6GAAA,OAAO,OAAA;AAEhB,2DAO8B;AAN1B,mHAAA,aAAa,OAAA;AACb,mHAAA,aAAa,OAAA;AACb,+GAAA,SAAS,OAAA;AAMb,6CASuB;AARnB,oGAAA,KAAK,OAAA;AACL,sGAAA,OAAO,OAAA;AACP,kGAAA,GAAG,OAAA;AACH,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AAEnB,0GAAA,WAAW,OAAA;AAIf,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AACzB,6DAA0F;AAAjF,yHAAA,kBAAkB,OAAA;AAAE,sHAAA,eAAe,OAAA;AAAE,oHAAA,aAAa,OAAA;AAE3D,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AACxB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AACrB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,2EAAsF;AAA7E,mIAAA,qBAAqB,OAAA;AAAE,6HAAA,eAAe,OAAA;AAC/C,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,wDAAwD;AAExD,mEAA4D,CAAC,YAAY;AAChE,kGADA,yCAAiB,OACA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAE1B,2DAG8B;AAF1B,sHAAA,gBAAgB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAChE,2HAAA,qBAAqB,OAAA"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/providers/index.ts"],"names":[],"mappings":";AAGA,KAAK;;;AAEL,+DAEgC;AAD5B,wHAAA,gBAAgB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAGzC,2DAI8B;AAH1B,oHAAA,cAAc,OAAA;AACd,gHAAA,UAAU,OAAA;AACV,mHAAA,aAAa,OAAA;AAEjB;;;;;;;;EAQE;AAEF,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAEhB,2DAO8B;AAN1B,mHAAA,aAAa,OAAA;AACb,mHAAA,aAAa,OAAA;AACb,+GAAA,SAAS,OAAA;AAMb,6CASuB;AARnB,oGAAA,KAAK,OAAA;AACL,sGAAA,OAAO,OAAA;AACP,kGAAA,GAAG,OAAA;AACH,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AAEnB,0GAAA,WAAW,OAAA;AAIf,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AACzB,6DAA0F;AAAjF,yHAAA,kBAAkB,OAAA;AAAE,sHAAA,eAAe,OAAA;AAAE,oHAAA,aAAa,OAAA;AAE3D,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AAExB,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AACxB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AACrB,mEAA8D;AAArD,4HAAA,kBAAkB,OAAA;AAC3B,2EAAsF;AAA7E,mIAAA,qBAAqB,OAAA;AAAE,6HAAA,eAAe,OAAA;AAC/C,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,wDAAwD;AAExD,mEAA4D,CAAC,YAAY;AAChE,kGADA,yCAAiB,OACA;AAC1B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,iEAA4D;AAAnD,0HAAA,iBAAiB,OAAA;AAE1B,2DAG8B;AAF1B,sHAAA,gBAAgB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AAAE,6HAAA,uBAAuB,OAAA;AAChE,2HAAA,qBAAqB,OAAA"}

@ -132,6 +132,7 @@ class Network {
* Returns a new Network for the %%network%% name or chainId.
*/
static from(network) {
injectCommonNetworks();
// Default network
if (network == null) {
return Network.from("mainnet");
@ -189,4 +190,78 @@ class Network {
}
}
exports.Network = Network;
// See: https://chainlist.org
let injected = false;
function injectCommonNetworks() {
if (injected) {
return;
}
injected = true;
/// Register popular Ethereum networks
function registerEth(name, chainId, options) {
const func = function () {
const network = new Network(name, chainId);
// We use 0 to disable ENS
if (options.ensNetwork != null) {
network.attachPlugin(new plugins_network_js_1.EnsPlugin(null, options.ensNetwork));
}
if (options.priorityFee) {
// network.attachPlugin(new MaxPriorityFeePlugin(options.priorityFee));
}
/*
if (options.etherscan) {
const { url, apiKey } = options.etherscan;
network.attachPlugin(new EtherscanPlugin(url, apiKey));
}
*/
network.attachPlugin(new plugins_network_js_1.GasCostPlugin());
return network;
};
// Register the network by name and chain ID
Network.register(name, func);
Network.register(chainId, func);
if (options.altNames) {
options.altNames.forEach((name) => {
Network.register(name, func);
});
}
}
registerEth("mainnet", 1, { ensNetwork: 1, altNames: ["homestead"] });
registerEth("ropsten", 3, { ensNetwork: 3 });
registerEth("rinkeby", 4, { ensNetwork: 4 });
registerEth("goerli", 5, { ensNetwork: 5 });
registerEth("kovan", 42, { ensNetwork: 42 });
registerEth("classic", 61, {});
registerEth("classicKotti", 6, {});
registerEth("xdai", 100, { ensNetwork: 1 });
// Polygon has a 35 gwei maxPriorityFee requirement
registerEth("matic", 137, {
ensNetwork: 1,
// priorityFee: 35000000000,
etherscan: {
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
url: "https:/\/api.polygonscan.com/"
}
});
registerEth("maticMumbai", 80001, {
// priorityFee: 35000000000,
etherscan: {
apiKey: "W6T8DJW654GNTQ34EFEYYP3EZD9DD27CT7",
url: "https:/\/api-testnet.polygonscan.com/"
}
});
registerEth("bnb", 56, {
ensNetwork: 1,
etherscan: {
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
url: "http:/\/api.bscscan.com"
}
});
registerEth("bnbt", 97, {
etherscan: {
apiKey: "EVTS3CU31AATZV72YQ55TPGXGMVIFUQ9M9",
url: "http:/\/api-testnet.bscscan.com"
}
});
}
//# sourceMappingURL=network.js.map

File diff suppressed because one or more lines are too long

@ -10,26 +10,20 @@ function getHost(name) {
switch (name) {
case "mainnet":
return "eth-mainnet.alchemyapi.io";
case "ropsten":
return "eth-ropsten.alchemyapi.io";
case "rinkeby":
return "eth-rinkeby.alchemyapi.io";
case "goerli":
return "eth-goerli.alchemyapi.io";
case "kovan":
return "eth-kovan.alchemyapi.io";
return "eth-goerli.g.alchemy.com";
case "arbitrum":
return "arb-mainnet.g.alchemy.com";
case "arbitrum-goerli":
return "arb-goerli.g.alchemy.com";
case "matic":
return "polygon-mainnet.g.alchemy.com";
case "maticmum":
return "polygon-mumbai.g.alchemy.com";
case "arbitrum":
return "arb-mainnet.g.alchemy.com";
case "arbitrum-rinkeby":
return "arb-rinkeby.g.alchemy.com";
case "optimism":
return "opt-mainnet.g.alchemy.com";
case "optimism-kovan":
return "opt-kovan.g.alchemy.com";
case "optimism-goerli":
return "opt-goerli.g.alchemy.com";
}
return (0, index_js_1.throwArgumentError)("unsupported network", "network", name);
}
@ -54,8 +48,11 @@ class AlchemyProvider extends provider_jsonrpc_js_1.JsonRpcProvider {
async _perform(req) {
// https://docs.alchemy.com/reference/trace-transaction
if (req.method === "getTransactionResult") {
const trace = await this.send("trace_transaction", [req.hash]);
if (trace == null) {
const { trace, tx } = await (0, index_js_1.resolveProperties)({
trace: this.send("trace_transaction", [req.hash]),
tx: this.getTransaction(req.hash)
});
if (trace == null || tx == null) {
return null;
}
let data;
@ -68,7 +65,12 @@ class AlchemyProvider extends provider_jsonrpc_js_1.JsonRpcProvider {
if (data) {
if (error) {
(0, index_js_1.throwError)("an error occurred during transaction executions", "CALL_EXCEPTION", {
data
action: "getTransactionResult",
data,
reason: null,
transaction: tx,
invocation: null,
revert: null // @TODO
});
}
return data;

@ -1 +1 @@
{"version":3,"file":"provider-alchemy.js","sourceRoot":"","sources":["../../src.ts/providers/provider-alchemy.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"provider-alchemy.js","sourceRoot":"","sources":["../../src.ts/providers/provider-alchemy.ts"],"names":[],"mappings":";;;AACA,gDAG2B;AAE3B,iDAAqD;AACrD,6CAAuC;AACvC,+DAAwD;AAOxD,MAAM,aAAa,GAAG,kCAAkC,CAAA;AAExD,SAAS,OAAO,CAAC,IAAY;IACzB,QAAO,IAAI,EAAE;QACT,KAAK,SAAS;YACV,OAAO,2BAA2B,CAAC;QACvC,KAAK,QAAQ;YACT,OAAO,0BAA0B,CAAC;QAEtC,KAAK,UAAU;YACX,OAAO,2BAA2B,CAAC;QACvC,KAAK,iBAAiB;YAClB,OAAO,0BAA0B,CAAC;QACtC,KAAK,OAAO;YACR,OAAO,+BAA+B,CAAC;QAC3C,KAAK,UAAU;YACX,OAAO,8BAA8B,CAAC;QAC1C,KAAK,UAAU;YACX,OAAO,2BAA2B,CAAC;QACvC,KAAK,iBAAiB;YAClB,OAAO,0BAA0B,CAAC;KACzC;IAED,OAAO,IAAA,6BAAkB,EAAC,qBAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAa,eAAgB,SAAQ,qCAAe;IACvC,MAAM,CAAU;IAEzB,YAAY,WAAuB,SAAS,EAAE,MAAsB;QAChE,MAAM,OAAO,GAAG,oBAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,MAAM,GAAG,aAAa,CAAC;SAAE;QAE/C,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,IAAA,2BAAgB,EAAkB,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,YAAY,CAAC,OAAe;QACxB,IAAI;YACA,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACpD;QAAC,OAAO,KAAK,EAAE,GAAG;QACnB,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAyB;QAEpC,uDAAuD;QACvD,IAAI,GAAG,CAAC,MAAM,KAAK,sBAAsB,EAAE;YACvC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,MAAM,IAAA,4BAAiB,EAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAE,GAAG,CAAC,IAAI,CAAE,CAAC;gBACnD,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;aACpC,CAAC,CAAC;YACH,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;aAAE;YAEjD,IAAI,IAAwB,CAAC;YAC7B,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI;gBACA,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC9B,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;aAC3C;YAAC,OAAO,KAAK,EAAE,GAAG;YAEnB,IAAI,IAAI,EAAE;gBACN,IAAI,KAAK,EAAE;oBACP,IAAA,qBAAU,EAAC,iDAAiD,EAAE,gBAAgB,EAAE;wBAC5E,MAAM,EAAE,sBAAsB;wBAC9B,IAAI;wBACJ,MAAM,EAAE,IAAI;wBACZ,WAAW,EAAE,EAAE;wBACf,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;iBACN;gBACD,OAAO,IAAI,CAAC;aACf;YAED,OAAO,IAAA,qBAAU,EAAC,8BAA8B,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACnF;QAED,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,mBAAmB;QACf,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,MAAe;QAC/C,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,MAAM,GAAG,aAAa,CAAC;SAAE;QAE/C,MAAM,OAAO,GAAG,IAAI,uBAAY,CAAC,YAAa,OAAO,CAAC,OAAO,CAAC,IAAI,CAAE,OAAQ,MAAO,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QAEzB,IAAI,MAAM,KAAK,aAAa,EAAE;YAC1B,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACrD,IAAA,kCAAmB,EAAC,SAAS,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC;YAChB,CAAC,CAAA;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AA5ED,0CA4EC"}

@ -0,0 +1,90 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BrowserProvider = void 0;
const index_js_1 = require("../utils/index.js");
const provider_jsonrpc_js_1 = require("./provider-jsonrpc.js");
;
class BrowserProvider extends provider_jsonrpc_js_1.JsonRpcApiPollingProvider {
#request;
constructor(ethereum, network) {
super(network, { batchMaxCount: 1 });
this.#request = async (method, params) => {
const payload = { method, params };
this.emit("debug", { action: "sendEip1193Request", payload });
try {
const result = await ethereum.request(payload);
this.emit("debug", { action: "receiveEip1193Result", result });
return result;
}
catch (e) {
const error = new Error(e.message);
error.code = e.code;
error.data = e.data;
error.payload = payload;
this.emit("debug", { action: "receiveEip1193Error", error });
throw error;
}
};
}
async send(method, params) {
await this._start();
return await super.send(method, params);
}
async _send(payload) {
(0, index_js_1.assertArgument)(!Array.isArray(payload), "EIP-1193 does not support batch request", "payload", payload);
try {
const result = await this.#request(payload.method, payload.params || []);
return [{ id: payload.id, result }];
}
catch (e) {
return [{
id: payload.id,
error: { code: e.code, data: e.data, message: e.message }
}];
}
}
getRpcError(payload, error) {
error = JSON.parse(JSON.stringify(error));
// EIP-1193 gives us some machine-readable error codes, so rewrite
// them into
switch (error.error.code || -1) {
case 4001:
error.error.message = `ethers-user-denied: ${error.error.message}`;
break;
case 4200:
error.error.message = `ethers-unsupported: ${error.error.message}`;
break;
}
return super.getRpcError(payload, error);
}
async hasSigner(address) {
if (address == null) {
address = 0;
}
const accounts = await this.send("eth_accounts", []);
if (typeof (address) === "number") {
return (accounts.length > address);
}
address = address.toLowerCase();
return accounts.filter((a) => (a.toLowerCase() === address)).length !== 0;
}
async getSigner(address) {
if (address == null) {
address = 0;
}
if (!(await this.hasSigner(address))) {
try {
//const resp =
await this.#request("eth_requestAccounts", []);
//console.log("RESP", resp);
}
catch (error) {
const payload = error.payload;
throw this.getRpcError(payload, { id: payload.id, error });
}
}
return await super.getSigner(address);
}
}
exports.BrowserProvider = BrowserProvider;
//# sourceMappingURL=provider-browser.js.map

@ -0,0 +1 @@
{"version":3,"file":"provider-browser.js","sourceRoot":"","sources":["../../src.ts/providers/provider-browser.ts"],"names":[],"mappings":"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"}

@ -1,8 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseEtherscanProvider = exports.EtherscanPlugin = void 0;
const index_js_1 = require("../transaction/index.js");
const index_js_2 = require("../utils/index.js");
const index_js_1 = require("../abi/index.js");
const index_js_2 = require("../transaction/index.js");
const index_js_3 = require("../utils/index.js");
const abstract_provider_js_1 = require("./abstract-provider.js");
const network_js_1 = require("./network.js");
const plugins_network_js_1 = require("./plugins-network.js");
@ -15,7 +16,7 @@ class EtherscanPlugin extends plugins_network_js_1.NetworkPlugin {
constructor(baseUrl, communityApiKey) {
super(EtherscanPluginId);
//if (communityApiKey == null) { communityApiKey = null; }
(0, index_js_2.defineProperties)(this, { baseUrl, communityApiKey });
(0, index_js_3.defineProperties)(this, { baseUrl, communityApiKey });
}
clone() {
return new EtherscanPlugin(this.baseUrl, this.communityApiKey);
@ -34,7 +35,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
if (apiKey == null && this.#plugin) {
apiKey = this.#plugin.communityApiKey;
}
(0, index_js_2.defineProperties)(this, { apiKey, network });
(0, index_js_3.defineProperties)(this, { apiKey, network });
// Test that the network is supported by Etherscan
this.getBaseUrl();
}
@ -45,17 +46,25 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
switch (this.network.name) {
case "mainnet":
return "https:/\/api.etherscan.io";
case "ropsten":
return "https:/\/api-ropsten.etherscan.io";
case "rinkeby":
return "https:/\/api-rinkeby.etherscan.io";
case "kovan":
return "https:/\/api-kovan.etherscan.io";
case "goerli":
return "https:/\/api-goerli.etherscan.io";
case "sepolia":
return "https:/\/api-sepolia.etherscan.io";
case "arbitrum":
return "https:/\/api.arbiscan.io";
case "arbitrum-goerli":
return "https:/\/api-goerli.arbiscan.io";
case "matic":
return "https:/\/api.polygonscan.com";
case "maticmum":
return "https:/\/api-testnet.polygonscan.com";
case "optimism":
return "https:/\/api-optimistic.etherscan.io";
case "optimism-goerli":
return "https:/\/api-goerli-optimistic.etherscan.io";
default:
}
return (0, index_js_2.throwArgumentError)("unsupported network", "network", this.network);
return (0, index_js_3.throwArgumentError)("unsupported network", "network", this.network);
}
getUrl(module, params) {
const query = Object.keys(params).reduce((accum, key) => {
@ -84,7 +93,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
const url = (post ? this.getPostUrl() : this.getUrl(module, params));
const payload = (post ? this.getPostData(module, params) : null);
this.emit("debug", { action: "sendRequest", id, url, payload: payload });
const request = new index_js_2.FetchRequest(url);
const request = new index_js_3.FetchRequest(url);
request.setThrottleParams({ slotInterval: 1000 });
request.retryFunc = (req, resp, attempt) => {
if (this.isCommunityResource()) {
@ -93,7 +102,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
return Promise.resolve(true);
};
request.processFunc = async (request, response) => {
const result = response.hasBody() ? JSON.parse((0, index_js_2.toUtf8String)(response.body)) : {};
const result = response.hasBody() ? JSON.parse((0, index_js_3.toUtf8String)(response.body)) : {};
const throttle = ((typeof (result.result) === "string") ? result.result : "").toLowerCase().indexOf("rate limit") >= 0;
if (module === "proxy") {
// This JSON response indicates we are being throttled
@ -125,7 +134,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
this.emit("debug", { action: "receiveError", id, error: "missing body", reason: "null body" });
throw new Error();
}
const result = JSON.parse((0, index_js_2.toUtf8String)(response.body));
const result = JSON.parse((0, index_js_3.toUtf8String)(response.body));
if (module === "proxy") {
if (result.jsonrpc != "2.0") {
this.emit("debug", { action: "receiveError", id, result, reason: "invalid JSON-RPC" });
@ -179,21 +188,28 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
}
// Quantity-types require no leading zero, unless 0
if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {
value = (0, index_js_2.toQuantity)((0, index_js_2.hexlify)(value));
value = (0, index_js_3.toQuantity)((0, index_js_3.hexlify)(value));
}
else if (key === "accessList") {
value = "[" + (0, index_js_1.accessListify)(value).map((set) => {
value = "[" + (0, index_js_2.accessListify)(value).map((set) => {
return `{address:"${set.address}",storageKeys:["${set.storageKeys.join('","')}"]}`;
}).join(",") + "]";
}
else {
value = (0, index_js_2.hexlify)(value);
value = (0, index_js_3.hexlify)(value);
}
result[key] = value;
}
return result;
}
_checkError(req, error, transaction) {
if (req.method === "call" || req.method === "estimateGas") {
if (error.message.match(/execution reverted/i)) {
const e = (0, index_js_1.getBuiltinCallException)(req.method, req.transaction, error.data);
e.info = { request: req, error };
throw e;
}
}
/*
let body = "";
if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {
@ -315,7 +331,7 @@ class BaseEtherscanProvider extends abstract_provider_js_1.AbstractProvider {
boolean: (req.includeTransactions ? "true" : "false")
});
}
return (0, index_js_2.throwError)("getBlock by blockHash not supported by Etherscan", "UNSUPPORTED_OPERATION", {
return (0, index_js_3.throwError)("getBlock by blockHash not supported by Etherscan", "UNSUPPORTED_OPERATION", {
operation: "getBlock(blockHash)"
});
case "getTransaction":

File diff suppressed because one or more lines are too long

@ -11,26 +11,22 @@ function getHost(name) {
switch (name) {
case "mainnet":
return "mainnet.infura.io";
case "ropsten":
return "ropsten.infura.io";
case "rinkeby":
return "rinkeby.infura.io";
case "kovan":
return "kovan.infura.io";
case "goerli":
return "goerli.infura.io";
case "sepolia":
return "sepolia.infura.io";
case "arbitrum":
return "arbitrum-mainnet.infura.io";
case "arbitrum-goerli":
return "arbitrum-goerli.infura.io";
case "matic":
return "polygon-mainnet.infura.io";
case "maticmum":
return "polygon-mumbai.infura.io";
case "optimism":
return "optimism-mainnet.infura.io";
case "optimism-kovan":
return "optimism-kovan.infura.io";
case "arbitrum":
return "arbitrum-mainnet.infura.io";
case "arbitrum-rinkeby":
return "arbitrum-rinkeby.infura.io";
case "optimism-goerli":
return "optimism-goerli.infura.io";
}
return (0, index_js_1.throwArgumentError)("unsupported network", "network", name);
}

@ -1 +1 @@
{"version":3,"file":"provider-infura.js","sourceRoot":"","sources":["../../src.ts/providers/provider-infura.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"provider-infura.js","sourceRoot":"","sources":["../../src.ts/providers/provider-infura.ts"],"names":[],"mappings":"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"}

@ -2,12 +2,13 @@
// @TODO:
// - Add the batching API
Object.defineProperty(exports, "__esModule", { value: true });
exports.JsonRpcProvider = exports.JsonRpcApiProvider = exports.JsonRpcSigner = void 0;
exports.JsonRpcProvider = exports.JsonRpcApiPollingProvider = exports.JsonRpcApiProvider = exports.JsonRpcSigner = void 0;
// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false
const index_js_1 = require("../address/index.js");
const index_js_2 = require("../hash/index.js");
const index_js_3 = require("../transaction/index.js");
const index_js_4 = require("../utils/index.js");
const index_js_1 = require("../abi/index.js");
const index_js_2 = require("../address/index.js");
const index_js_3 = require("../hash/index.js");
const index_js_4 = require("../transaction/index.js");
const index_js_5 = require("../utils/index.js");
const abstract_provider_js_1 = require("./abstract-provider.js");
const abstract_signer_js_1 = require("./abstract-signer.js");
const network_js_1 = require("./network.js");
@ -57,10 +58,10 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
address;
constructor(provider, address) {
super(provider);
(0, index_js_4.defineProperties)(this, { address });
(0, index_js_5.defineProperties)(this, { address });
}
connect(provider) {
return (0, index_js_4.throwError)("cannot reconnect JsonRpcSigner", "UNSUPPORTED_OPERATION", {
return (0, index_js_5.throwError)("cannot reconnect JsonRpcSigner", "UNSUPPORTED_OPERATION", {
operation: "signer.connect"
});
}
@ -80,9 +81,9 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
if (tx.from) {
const _from = tx.from;
promises.push((async () => {
const from = await (0, index_js_1.resolveAddress)(_from, this.provider);
const from = await (0, index_js_2.resolveAddress)(_from, this.provider);
if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {
(0, index_js_4.throwArgumentError)("from address mismatch", "transaction", _tx);
(0, index_js_5.throwArgumentError)("from address mismatch", "transaction", _tx);
}
tx.from = from;
})());
@ -102,7 +103,7 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
if (tx.to != null) {
const _to = tx.to;
promises.push((async () => {
tx.to = await (0, index_js_1.resolveAddress)(_to, this.provider);
tx.to = await (0, index_js_2.resolveAddress)(_to, this.provider);
})());
}
// Wait until all of our properties are filled in
@ -139,9 +140,9 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
const tx = deepCopy(_tx);
// Make sure the from matches the sender
if (tx.from) {
const from = await (0, index_js_1.resolveAddress)(tx.from, this.provider);
const from = await (0, index_js_2.resolveAddress)(tx.from, this.provider);
if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {
return (0, index_js_4.throwArgumentError)("from address mismatch", "transaction", _tx);
return (0, index_js_5.throwArgumentError)("from address mismatch", "transaction", _tx);
}
tx.from = from;
}
@ -149,27 +150,27 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
tx.from = this.address;
}
const hexTx = this.provider.getRpcTransaction(tx);
return await this.provider.send("eth_sign_Transaction", [hexTx]);
return await this.provider.send("eth_signTransaction", [hexTx]);
}
async signMessage(_message) {
const message = ((typeof (_message) === "string") ? (0, index_js_4.toUtf8Bytes)(_message) : _message);
const message = ((typeof (_message) === "string") ? (0, index_js_5.toUtf8Bytes)(_message) : _message);
return await this.provider.send("personal_sign", [
(0, index_js_4.hexlify)(message), this.address.toLowerCase()
(0, index_js_5.hexlify)(message), this.address.toLowerCase()
]);
}
async signTypedData(domain, types, _value) {
const value = deepCopy(_value);
// Populate any ENS names (in-place)
const populated = await index_js_2.TypedDataEncoder.resolveNames(domain, types, value, async (value) => {
const address = await (0, index_js_1.resolveAddress)(value);
const populated = await index_js_3.TypedDataEncoder.resolveNames(domain, types, value, async (value) => {
const address = await (0, index_js_2.resolveAddress)(value);
if (address == null) {
return (0, index_js_4.throwArgumentError)("TypedData does not support null address", "value", value);
return (0, index_js_5.throwArgumentError)("TypedData does not support null address", "value", value);
}
return address;
});
return await this.provider.send("eth_signTypedData_v4", [
this.address.toLowerCase(),
JSON.stringify(index_js_2.TypedDataEncoder.getPayload(populated.domain, types, populated.value))
JSON.stringify(index_js_3.TypedDataEncoder.getPayload(populated.domain, types, populated.value))
]);
}
async unlock(password) {
@ -179,9 +180,9 @@ class JsonRpcSigner extends abstract_signer_js_1.AbstractSigner {
}
// https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign
async _legacySignMessage(_message) {
const message = ((typeof (_message) === "string") ? (0, index_js_4.toUtf8Bytes)(_message) : _message);
const message = ((typeof (_message) === "string") ? (0, index_js_5.toUtf8Bytes)(_message) : _message);
return await this.provider.send("eth_sign", [
this.address.toLowerCase(), (0, index_js_4.hexlify)(message)
this.address.toLowerCase(), (0, index_js_5.hexlify)(message)
]);
}
}
@ -281,7 +282,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
const staticNetwork = this._getOption("staticNetwork");
if (staticNetwork) {
if (staticNetwork !== network) {
(0, index_js_4.throwArgumentError)("staticNetwork MUST match network object", "options", options);
(0, index_js_5.throwArgumentError)("staticNetwork MUST match network object", "options", options);
}
this.#network = staticNetwork;
}
@ -300,7 +301,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
*/
get _network() {
if (!this.#network) {
(0, index_js_4.throwError)("network is not available yet", "NETWORK_ERROR");
(0, index_js_5.throwError)("network is not available yet", "NETWORK_ERROR");
}
return this.#network;
}
@ -310,7 +311,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
* Sub-classes **MUST** override this.
*/
_send(payload) {
return (0, index_js_4.throwError)("sub-classes must override _send", "UNSUPPORTED_OPERATION", {
return (0, index_js_5.throwError)("sub-classes must override _send", "UNSUPPORTED_OPERATION", {
operation: "jsonRpcApiProvider._send"
});
}
@ -325,7 +326,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
// is fair), so we delete type if it is 0 and a non-EIP-1559 network
if (req.method === "call" || req.method === "estimateGas") {
let tx = req.transaction;
if (tx && tx.type != null && (0, index_js_4.getBigInt)(tx.type)) {
if (tx && tx.type != null && (0, index_js_5.getBigInt)(tx.type)) {
// If there are no EIP-1559 properties, it might be non-EIP-a559
if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {
const feeData = await this.getFeeData();
@ -357,7 +358,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
}
// If we are ready, use ``send``, which enabled requests to be batched
if (this.ready) {
return network_js_1.Network.from((0, index_js_4.getBigInt)(await this.send("eth_chainId", [])));
return network_js_1.Network.from((0, index_js_5.getBigInt)(await this.send("eth_chainId", [])));
}
// We are not ready yet; use the primitive _send
const payload = {
@ -374,7 +375,7 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
}
this.emit("debug", { action: "receiveRpcResult", result });
if ("result" in result) {
return network_js_1.Network.from((0, index_js_4.getBigInt)(result.result));
return network_js_1.Network.from((0, index_js_5.getBigInt)(result.result));
}
throw this.getRpcError(payload, result);
}
@ -458,18 +459,18 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
if (key === "gasLimit") {
dstKey = "gas";
}
result[dstKey] = (0, index_js_4.toQuantity)((0, index_js_4.getBigInt)(tx[key], `tx.${key}`));
result[dstKey] = (0, index_js_5.toQuantity)((0, index_js_5.getBigInt)(tx[key], `tx.${key}`));
});
// Make sure addresses and data are lowercase
["from", "to", "data"].forEach((key) => {
if (tx[key] == null) {
return;
}
result[key] = (0, index_js_4.hexlify)(tx[key]);
result[key] = (0, index_js_5.hexlify)(tx[key]);
});
// Normalize the access list object
if (tx.accessList) {
result["accessList"] = (0, index_js_3.accessListify)(tx.accessList);
result["accessList"] = (0, index_js_4.accessListify)(tx.accessList);
}
return result;
}
@ -568,53 +569,128 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
* that different nodes return, coercing them into a machine-readable
* standardized error.
*/
getRpcError(payload, error) {
getRpcError(payload, _error) {
const { method } = payload;
if (method === "eth_call") {
const transaction = (payload.params[0]);
const { error } = _error;
if (method === "eth_call" || method === "eth_estimateGas") {
const result = spelunkData(error);
const e = (0, index_js_1.getBuiltinCallException)((method === "eth_call") ? "call" : "estimateGas", (payload.params[0]), (result ? result.data : null));
e.info = { error, payload };
return e;
/*
let message = "missing revert data during JSON-RPC call";
const action = <"call" | "estimateGas" | "unknown">(({ eth_call: "call", eth_estimateGas: "estimateGas" })[method] || "unknown");
let data: null | string = null;
let reason: null | string = null;
const transaction = <{ from: string, to: string, data: string }>((<any>payload).params[0]);
const invocation = null;
let revert: null | { signature: string, name: string, args: Array<any> } = null;
if (result) {
// @TODO: Extract errorSignature, errorName, errorArgs, reason if
// it is Error(string) or Panic(uint25)
return (0, index_js_4.makeError)("execution reverted during JSON-RPC call", "CALL_EXCEPTION", {
data: result.data,
transaction
});
message = "execution reverted during JSON-RPC call";
data = result.data;
let bytes = getBytes(data);
if (bytes.length % 32 !== 4) {
message += " (could not parse reason; invalid data length)";
} else if (data.substring(0, 10) === "0x08c379a0") {
// Error(string)
try {
if (bytes.length < 68) { throw new Error("bad length"); }
bytes = bytes.slice(4);
const pointer = getNumber(hexlify(bytes.slice(0, 32)));
bytes = bytes.slice(pointer);
if (bytes.length < 32) { throw new Error("overrun"); }
const length = getNumber(hexlify(bytes.slice(0, 32)));
bytes = bytes.slice(32);
if (bytes.length < length) { throw new Error("overrun"); }
reason = toUtf8String(bytes.slice(0, length));
revert = {
signature: "Error(string)",
name: "Error",
args: [ reason ]
};
message += `: ${ JSON.stringify(reason) }`;
} catch (error) {
console.log(error);
message += " (could not parse reason; invalid data length)";
}
return (0, index_js_4.makeError)("missing revert data during JSON-RPC call", "CALL_EXCEPTION", {
data: "0x", transaction, info: { error }
});
} else if (data.substring(0, 10) === "0x4e487b71") {
// Panic(uint256)
try {
if (bytes.length !== 36) { throw new Error("bad length"); }
const arg = getNumber(hexlify(bytes.slice(4)));
revert = {
signature: "Panic(uint256)",
name: "Panic",
args: [ arg ]
};
reason = `Panic due to ${ PanicReasons.get(Number(arg)) || "UNKNOWN" }(${ arg })`;
message += `: ${ reason }`;
} catch (error) {
console.log(error);
message += " (could not parse panic reason)";
}
}
}
return makeError(message, "CALL_EXCEPTION", {
action, data, reason, transaction, invocation, revert,
info: { payload, error }
});
*/
}
// Only estimateGas and call can return arbitrary contract-defined text, so now we
// we can process text safely.
const message = JSON.stringify(spelunkMessage(error));
if (method === "eth_estimateGas") {
const transaction = (payload.params[0]);
if (message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {
return (0, index_js_4.makeError)("cannot estimate gas; transaction may fail or may require manual gas limit", "UNPREDICTABLE_GAS_LIMIT", {
transaction
if (typeof (error.message) === "string" && error.message.match(/user denied|ethers-user-denied/i)) {
const actionMap = {
eth_sign: "signMessage",
personal_sign: "signMessage",
eth_signTypedData_v4: "signTypedData",
eth_signTransaction: "signTransaction",
eth_sendTransaction: "sendTransaction",
eth_requestAccounts: "requestAccess",
wallet_requestAccounts: "requestAccess",
};
return (0, index_js_5.makeError)(`user rejected action`, "ACTION_REJECTED", {
action: (actionMap[method] || "unknown"),
reason: "rejected",
info: { payload, error }
});
}
}
if (method === "eth_sendRawTransaction" || method === "eth_sendTransaction") {
const transaction = (payload.params[0]);
if (message.match(/insufficient funds|base fee exceeds gas limit/)) {
return (0, index_js_4.makeError)("insufficient funds for intrinsic transaction cost", "INSUFFICIENT_FUNDS", {
return (0, index_js_5.makeError)("insufficient funds for intrinsic transaction cost", "INSUFFICIENT_FUNDS", {
transaction
});
}
if (message.match(/nonce/) && message.match(/too low/)) {
return (0, index_js_4.makeError)("nonce has already been used", "NONCE_EXPIRED", { transaction });
return (0, index_js_5.makeError)("nonce has already been used", "NONCE_EXPIRED", { transaction });
}
// "replacement transaction underpriced"
if (message.match(/replacement transaction/) && message.match(/underpriced/)) {
return (0, index_js_4.makeError)("replacement fee too low", "REPLACEMENT_UNDERPRICED", { transaction });
return (0, index_js_5.makeError)("replacement fee too low", "REPLACEMENT_UNDERPRICED", { transaction });
}
if (message.match(/only replay-protected/)) {
return (0, index_js_4.makeError)("legacy pre-eip-155 transactions not supported", "UNSUPPORTED_OPERATION", {
return (0, index_js_5.makeError)("legacy pre-eip-155 transactions not supported", "UNSUPPORTED_OPERATION", {
operation: method, info: { transaction }
});
}
}
return (0, index_js_4.makeError)("could not coalesce error", "UNKNOWN_ERROR", { error });
if (message.match(/the method .* does not exist/i)) {
return (0, index_js_5.makeError)("unsupported operation", "UNSUPPORTED_OPERATION", {
operation: payload.method
});
}
return (0, index_js_5.makeError)("could not coalesce error", "UNKNOWN_ERROR", { error });
}
/**
* Requests the %%method%% with %%params%% via the JSON-RPC protocol
@ -659,19 +735,19 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
// Account index
if (typeof (address) === "number") {
const accounts = (await accountsPromise);
if (address > accounts.length) {
if (address >= accounts.length) {
throw new Error("no such account");
}
return new JsonRpcSigner(this, accounts[address]);
}
const { accounts } = await (0, index_js_4.resolveProperties)({
const { accounts } = await (0, index_js_5.resolveProperties)({
network: this.getNetwork(),
accounts: accountsPromise
});
// Account address
address = (0, index_js_1.getAddress)(address);
address = (0, index_js_2.getAddress)(address);
for (const account of accounts) {
if ((0, index_js_1.getAddress)(account) === account) {
if ((0, index_js_2.getAddress)(account) === account) {
return new JsonRpcSigner(this, account);
}
}
@ -679,6 +755,36 @@ class JsonRpcApiProvider extends abstract_provider_js_1.AbstractProvider {
}
}
exports.JsonRpcApiProvider = JsonRpcApiProvider;
class JsonRpcApiPollingProvider extends JsonRpcApiProvider {
#pollingInterval;
constructor(network, options) {
super(network, options);
this.#pollingInterval = 4000;
}
_getSubscriber(sub) {
const subscriber = super._getSubscriber(sub);
if (isPollable(subscriber)) {
subscriber.pollingInterval = this.#pollingInterval;
}
return subscriber;
}
/**
* The polling interval (default: 4000 ms)
*/
get pollingInterval() { return this.#pollingInterval; }
set pollingInterval(value) {
if (!Number.isInteger(value) || value < 0) {
throw new Error("invalid interval");
}
this.#pollingInterval = value;
this._forEachSubscriber((sub) => {
if (isPollable(sub)) {
sub.pollingInterval = this.#pollingInterval;
}
});
}
}
exports.JsonRpcApiPollingProvider = JsonRpcApiPollingProvider;
/**
* The JsonRpcProvider is one of the most common Providers,
* which performs all operations over HTTP (or HTTPS) requests.
@ -687,21 +793,19 @@ exports.JsonRpcApiProvider = JsonRpcApiProvider;
* number; when it advances, all block-base events are then checked
* for updates.
*/
class JsonRpcProvider extends JsonRpcApiProvider {
class JsonRpcProvider extends JsonRpcApiPollingProvider {
#connect;
#pollingInterval;
constructor(url, network, options) {
if (url == null) {
url = "http:/\/localhost:8545";
}
super(network, options);
if (typeof (url) === "string") {
this.#connect = new index_js_4.FetchRequest(url);
this.#connect = new index_js_5.FetchRequest(url);
}
else {
this.#connect = url.clone();
}
this.#pollingInterval = 4000;
}
_getConnection() {
return this.#connect.clone();
@ -725,21 +829,6 @@ class JsonRpcProvider extends JsonRpcApiProvider {
}
return resp;
}
/**
* The polling interval (default: 4000 ms)
*/
get pollingInterval() { return this.#pollingInterval; }
set pollingInterval(value) {
if (!Number.isInteger(value) || value < 0) {
throw new Error("invalid interval");
}
this.#pollingInterval = value;
this._forEachSubscriber((sub) => {
if (isPollable(sub)) {
sub.pollingInterval = this.#pollingInterval;
}
});
}
}
exports.JsonRpcProvider = JsonRpcProvider;
function spelunkData(value) {
@ -747,7 +836,7 @@ function spelunkData(value) {
return null;
}
// These *are* the droids we're looking for.
if (typeof (value.message) === "string" && value.message.match("reverted") && (0, index_js_4.isHexString)(value.data)) {
if (typeof (value.message) === "string" && value.message.match("reverted") && (0, index_js_5.isHexString)(value.data)) {
return { message: value.message, data: value.data };
}
// Spelunk further...

File diff suppressed because one or more lines are too long

@ -55,14 +55,14 @@ function copyRequest(req) {
result.data = (0, index_js_1.hexlify)(req.data);
}
const bigIntKeys = "chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value".split(/,/);
for (const key in bigIntKeys) {
for (const key of bigIntKeys) {
if (!(key in req) || req[key] == null) {
continue;
}
result[key] = (0, index_js_1.getBigInt)(req[key], `request.${key}`);
}
const numberKeys = "type,nonce".split(/,/);
for (const key in numberKeys) {
for (const key of numberKeys) {
if (!(key in req) || req[key] == null) {
continue;
}

@ -4,8 +4,14 @@ exports.recoverAddress = exports.computeAddress = void 0;
const index_js_1 = require("../address/index.js");
const index_js_2 = require("../crypto/index.js");
function computeAddress(key) {
const publicKey = index_js_2.SigningKey.computePublicKey(key, false);
return (0, index_js_1.getAddress)((0, index_js_2.keccak256)("0x" + publicKey.substring(4)).substring(26));
let pubkey;
if (typeof (key) === "string") {
pubkey = index_js_2.SigningKey.computePublicKey(key, false);
}
else {
pubkey = key.publicKey;
}
return (0, index_js_1.getAddress)((0, index_js_2.keccak256)("0x" + pubkey.substring(4)).substring(26));
}
exports.computeAddress = computeAddress;
function recoverAddress(digest, signature) {

@ -1 +1 @@
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src.ts/transaction/address.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,iDAA2D;AAM3D,SAAgB,cAAc,CAAC,GAAW;IACtC,MAAM,SAAS,GAAG,qBAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1D,OAAO,IAAA,qBAAU,EAAC,IAAA,oBAAS,EAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAHD,wCAGC;AAED,SAAgB,cAAc,CAAC,MAAiB,EAAE,SAAwB;IACtE,OAAO,cAAc,CAAC,qBAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC"}
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src.ts/transaction/address.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,iDAA2D;AAK3D,SAAgB,cAAc,CAAC,GAAwB;IACnD,IAAI,MAAc,CAAC;IACnB,IAAI,OAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;QAC1B,MAAM,GAAG,qBAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACpD;SAAM;QACH,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;KAC1B;IACD,OAAO,IAAA,qBAAU,EAAC,IAAA,oBAAS,EAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AARD,wCAQC;AAED,SAAgB,cAAc,CAAC,MAAiB,EAAE,SAAwB;IACtE,OAAO,cAAc,CAAC,qBAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC"}

@ -374,7 +374,7 @@ class Transaction {
}
get hash() {
if (this.signature == null) {
throw new Error("cannot hash unsigned transaction; maybe you meant .unsignedHash");
return null;
}
return (0, index_js_2.keccak256)(this.serialized);
}
@ -385,12 +385,13 @@ class Transaction {
if (this.signature == null) {
return null;
}
return (0, address_js_1.recoverAddress)(this.unsignedSerialized, this.signature);
return (0, address_js_1.recoverAddress)(this.unsignedHash, this.signature);
}
get fromPublicKey() {
if (this.signature == null) {
return null;
}
throw new Error("@TODO");
// use ecrecover
return "";
}
@ -509,6 +510,29 @@ class Transaction {
isFrozen() {
return Object.isFrozen(this.#props);
}
toJSON() {
const s = (v) => {
if (v == null) {
return null;
}
return v.toString();
};
return {
type: this.type,
to: this.to,
from: this.from,
data: this.data,
nonce: this.nonce,
gasLimit: s(this.gasLimit),
gasPrice: s(this.gasPrice),
maxPriorityFeePerGas: s(this.maxPriorityFeePerGas),
maxFeePerGas: s(this.maxFeePerGas),
value: s(this.value),
chainId: s(this.chainId),
sig: this.signature ? this.signature.toJSON() : null,
accessList: this.accessList
};
}
static from(tx) {
if (typeof (tx) === "string") {
const payload = (0, index_js_3.getBytes)(tx);

File diff suppressed because one or more lines are too long

@ -1 +1 @@
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src.ts/utils/errors.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src.ts/utils/errors.ts"],"names":[],"mappings":";;;AAAA,gDAAyC;AAEzC,mDAAiD;AAWjD,mDAAmD;AACnD,MAAM,iBAAiB,GAAyD,EAAG,CAAC;AACpF,iBAAiB,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAC/C,iBAAiB,CAAC,aAAa,GAAG,UAAU,CAAC;AAC7C,iBAAiB,CAAC,cAAc,GAAG,UAAU,CAAC;AAkO9C;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,OAAO,CAAqD,KAAU,EAAE,IAAO;IAC3F,OAAO,CAAC,KAAK,IAAkB,KAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACzD,CAAC;AAFD,0BAEC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAU;IACtC,OAAO,OAAO,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC5C,CAAC;AAFD,0CAEC;AAED;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAqD,OAAe,EAAE,IAAO,EAAE,IAAmB;IACvH;QACI,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,IAAI,EAAE;YACN,IAAI,SAAS,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,0CAA2C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,CAAC,CAAC;aACvF;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACpB,MAAM,KAAK,GAAQ,CAAC,IAAI,CAAqB,GAAG,CAAC,CAAC,CAAC;gBACnD,IAAI;oBACA,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;iBACnD;gBAAC,OAAO,KAAK,EAAE;oBACZ,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,+BAA+B,CAAC,CAAC;iBACvD;aACJ;SACJ;QACD,OAAO,CAAC,IAAI,CAAC,QAAS,IAAK,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,WAAY,qBAAQ,EAAE,CAAC,CAAC;QAErC,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;SAC9C;KACJ;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAChD,MAAM,KAAK,GAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,IAAA,8BAAc,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAEpC,IAAI,IAAI,EAAE;QACN,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAA,8BAAc,EAAC,KAAK,EAAW,GAAG,EAAO,CAAC,IAAI,CAAqB,GAAG,CAAC,CAAC,CAAC,CAAC;SAC7E;KACJ;IAED,OAAU,KAAK,CAAC;AACpB,CAAC;AAnCD,8BAmCC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAqD,OAAe,EAAE,IAAO,EAAE,IAAmB;IACxH,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAFD,gCAEC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAe,EAAE,IAAY,EAAE,KAAU;IACxE,OAAO,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE;QAC3C,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,KAAK;KACf,CAAC,CAAC;AACP,CAAC;AALD,gDAKC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,KAAc,EAAE,OAAe,EAAE,IAAY,EAAE,KAAc;IACxF,IAAI,CAAC,KAAK,EAAE;QAAE,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAAE;AAC7D,CAAC;AAFD,wCAEC;AAED,SAAgB,mBAAmB,CAAC,KAAa,EAAE,aAAqB,EAAE,UAAkB,EAAE;IAC1F,IAAI,OAAO,EAAE;QAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;KAAE;IAE1C,IAAI,KAAK,GAAG,aAAa,EAAE;QACvB,UAAU,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,EAAE;YACzD,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,aAAa;SAC/B,CAAC,CAAC;KACN;IAED,IAAI,KAAK,GAAG,aAAa,EAAE;QACvB,UAAU,CAAC,oBAAoB,GAAG,OAAO,EAAE,qBAAqB,EAAE;YAC9D,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,aAAa;SAC/B,CAAC,CAAC;KACN;AACL,CAAC;AAhBD,kDAgBC;AAED,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IAC1E,IAAI;QACA,6BAA6B;QAC7B,qBAAqB;QACrB,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SAAE;QAAA,CAAC;QACnE,oBAAoB;QAEpB,IAAI,IAAI,KAAK,KAAK,EAAE;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YAClD,qBAAqB;YACrB,IAAI,KAAK,KAAK,QAAQ,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;aAAE;YACrD,oBAAoB;SACvB;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpB;IAAC,OAAM,KAAK,EAAE,GAAG;IAElB,OAAO,KAAK,CAAC;AACjB,CAAC,EAAiB,EAAE,CAAC,CAAC;AAEtB;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAY;IACxC,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACtC,UAAU,CAAC,6CAA6C,EAAE,uBAAuB,EAAE;YAC/E,SAAS,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;SAC1D,CAAC,CAAC;KACN;AACL,CAAC;AAND,0CAMC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,UAAe,EAAE,KAAU,EAAE,YAAoB,EAAE;IAC7E,IAAI,UAAU,KAAK,KAAK,EAAE;QACtB,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC;QAC1C,IAAI,SAAS,EAAE;YACX,MAAM,IAAI,GAAG,CAAC;YACd,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;SAChC;QACD,UAAU,CAAC,4BAA6B,MAAO,eAAe,EAAE,uBAAuB,EAAE;YACrF,SAAS;SACZ,CAAC,CAAC;KACN;AACL,CAAC;AAXD,sCAWC"}

@ -22,15 +22,21 @@ class BaseWallet extends index_js_3.AbstractSigner {
connect(provider) {
return new BaseWallet(this.#signingKey, provider);
}
async signTransaction(_tx) {
async signTransaction(tx) {
// Replace any Addressable or ENS name with an address
const tx = Object.assign({}, _tx, await (0, index_js_5.resolveProperties)({
to: (_tx.to ? (0, index_js_1.resolveAddress)(_tx.to, this.provider) : undefined),
from: (_tx.from ? (0, index_js_1.resolveAddress)(_tx.from, this.provider) : undefined)
}));
const { to, from } = await (0, index_js_5.resolveProperties)({
to: (tx.to ? (0, index_js_1.resolveAddress)(tx.to, this.provider) : undefined),
from: (tx.from ? (0, index_js_1.resolveAddress)(tx.from, this.provider) : undefined)
});
if (to != null) {
tx.to = to;
}
if (from != null) {
tx.from = from;
}
if (tx.from != null) {
if ((0, index_js_1.getAddress)(tx.from) !== this.address) {
(0, index_js_5.throwArgumentError)("transaction from address mismatch", "tx.from", _tx.from);
if ((0, index_js_1.getAddress)((tx.from)) !== this.address) {
(0, index_js_5.throwArgumentError)("transaction from address mismatch", "tx.from", tx.from);
}
delete tx.from;
}
@ -42,6 +48,11 @@ class BaseWallet extends index_js_3.AbstractSigner {
async signMessage(message) {
return this.signingKey.sign((0, index_js_2.hashMessage)(message)).serialized;
}
// @TODO: Add a secialized signTx and signTyped sync that enforces
// all parameters are known?
signMessageSync(message) {
return this.signingKey.sign((0, index_js_2.hashMessage)(message)).serialized;
}
async signTypedData(domain, types, value) {
// Populate any ENS names
const populated = await index_js_2.TypedDataEncoder.resolveNames(domain, types, value, async (name) => {

@ -1 +1 @@
{"version":3,"file":"base-wallet.js","sourceRoot":"","sources":["../../src.ts/wallet/base-wallet.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"base-wallet.js","sourceRoot":"","sources":["../../src.ts/wallet/base-wallet.ts"],"names":[],"mappings":"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"}

@ -1,9 +1,9 @@
import { AlchemyProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider,
// PocketProvider,
// FallbackProvider,
} from "../index.js";
isError, } from "../index.js";
;
const ethNetworks = ["default", "mainnet", "rinkeby", "ropsten", "goerli"];
const ethNetworks = ["default", "mainnet", "goerli"];
//const maticNetworks = [ "matic", "maticmum" ];
const ProviderCreators = [
{
@ -98,9 +98,16 @@ export function getProviderNetworks(provider) {
}
export function getProvider(provider, network) {
const creator = getCreator(provider);
try {
if (creator) {
return creator.create(network);
}
}
catch (error) {
if (!isError(error, "INVALID_ARGUMENT")) {
throw error;
}
}
return null;
}
export function checkProvider(provider, network) {

@ -1 +1 @@
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src.ts/_tests/create-provider.ts"],"names":[],"mappings":"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"}

@ -1,15 +1,23 @@
"use strict";
/*
import assert from "assert";
import { connect } from "./create-provider.js";
import { Contract } from "../index.js";
describe("Test Contract", function() {
it("tests contract @TODO: expand", async function() {
const provider = connect("mainnet");
const contract = new Contract("dai.tokens.ethers.eth", [
"function balanceOf(address) view returns (uint)"
], provider);
assert.equal(await contract.balanceOf("ricmoo.firefly.eth"), BigInt("6015089439794538201631"));
});
});
*/
/*
import { Typed } from "../abi/index.js";
import * as providers from "../providers/index.js";

@ -1 +1 @@
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,QAAQ,CAAC,eAAe,EAAE;IACtB,EAAE,CAAC,8BAA8B,EAAE,KAAK;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,uBAAuB,EAAE;YACnD,iDAAiD;SACpD,EAAE,QAAQ,CAAC,CAAC;QAEb,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}
{"version":3,"file":"test-contract.js","sourceRoot":"","sources":["../../src.ts/_tests/test-contract.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;EAkBE;AACF;;;;;;;EAOE;AACF,4DAA4D;AAC5D,4DAA4D;AAE5D;;;;EAIE;AAEF,QAAQ;AACR;;;;;;;;;;;;;EAaE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDE;AACF;;;;;;;;;;EAUE"}

@ -2,13 +2,13 @@ import assert from "assert";
import { connect } from "./create-provider.js";
describe("Resolve ENS avatar", function () {
[
{ title: "data", name: "data-avatar.tests.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
{ title: "ipfs", name: "ipfs-avatar.tests.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
{ title: "url", name: "url-avatar.tests.eth", value: "https:/\/ethers.org/static/logo.png" },
{ title: "data", name: "data-avatar.tests.ethers.eth", value: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAMAAACeL25MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUQ4NTEyNUIyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUQ4NTEyNUMyOEIwMTFFQzg0NTBDNTU2RDk1NTA5NzgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg1MTI1OTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg1MTI1QTI4QjAxMUVDODQ1MEM1NTZEOTU1MDk3OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkbM0uMAAAAGUExURQAA/wAAAHtivz4AAAAOSURBVHjaYmDABAABBgAAFAABaEkyYwAAAABJRU5ErkJggg==" },
{ title: "ipfs", name: "ipfs-avatar.tests.ethers.eth", value: "https:/\/gateway.ipfs.io/ipfs/QmQsQgpda6JAYkFoeVcj5iPbwV3xRcvaiXv3bhp1VuYUqw" },
{ title: "url", name: "url-avatar.tests.ethers.eth", value: "https:/\/ethers.org/static/logo.png" },
].forEach((test) => {
it(`Resolves avatar for ${test.title}`, async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
const avatar = await provider.getAvatar(test.name);
assert.equal(test.value, avatar, "avatar url");
});

@ -1 +1 @@
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,owCAAowC,EAAE;QAC7zC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,8EAA8E,EAAE;QACvI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qCAAqC,EAAE;KAC/F,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
{"version":3,"file":"test-providers-avatar.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,oBAAoB,EAAE;IAC3B;QACI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,owCAAowC,EAAE;QACp0C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,8EAA8E,EAAE;QAC9I,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,qCAAqC,EAAE;KACtG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;QACI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4IAA4I,EAAE;QACpM,iHAAiH;KAC5G,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,EAAE,CAAC,uBAAwB,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

@ -11,11 +11,11 @@ describe("Test CCIP execution", function () {
]);
assert.equal(result, keccak256(check), "response is equal");
};
const address = "0xAe375B05A08204C809b3cA67C680765661998886";
const address = "0x6C5ed35574a9b4d163f75bBf0595F7540D8FCc2d";
const calldata = "0x1234";
it("testGet passes under normal operation", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testGet(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -26,7 +26,7 @@ describe("Test CCIP execution", function () {
});
it("testGet should fail with CCIP not explicitly enabled by overrides", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testGet(bytes callData = "0x1234")
const tx = {
to: address,
@ -36,13 +36,13 @@ describe("Test CCIP execution", function () {
const result = await provider.call(tx);
console.log(result);
}, (error) => {
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
return (isCallException(error) && error.data === offchainErrorData);
});
});
it("testGet should fail with CCIP explicitly disabled on provider", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
provider.disableCcipRead = true;
// testGetFail(bytes callData = "0x1234")
const tx = {
@ -53,13 +53,13 @@ describe("Test CCIP execution", function () {
const result = await provider.call(tx);
console.log(result);
}, (error) => {
const offchainErrorData = "0x556f1830000000000000000000000000ae375b05a08204c809b3ca67c68076566199888600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
const offchainErrorData = "0x556f18300000000000000000000000006c5ed35574a9b4d163f75bbf0595f7540d8fcc2d00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
return (isCallException(error) && error.data === offchainErrorData);
});
});
it("testGetFail should fail if all URLs 5xx", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testGetFail(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -76,7 +76,7 @@ describe("Test CCIP execution", function () {
});
it("testGetSenderFail should fail if sender does not match", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testGetSenderFail(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -89,13 +89,14 @@ describe("Test CCIP execution", function () {
const errorArgsJson = '["0x0000000000000000000000000000000000000000",["https://ethers.ricmoo.workers.dev/test-ccip-read/{sender}/{data}"],"0x1234","0xb1494be1","0x4d792065787472612064617461"]';
const offchainErrorData = "0x556f1830000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000140b1494be100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004068747470733a2f2f6574686572732e7269636d6f6f2e776f726b6572732e6465762f746573742d636369702d726561642f7b73656e6465727d2f7b646174617d00000000000000000000000000000000000000000000000000000000000000021234000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4d79206578747261206461746100000000000000000000000000000000000000";
return (isCallException(error) && error.data === offchainErrorData &&
error.errorSignature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
JSON.stringify(error.errorArgs) === errorArgsJson);
error.revert &&
error.revert.signature === "OffchainLookup(address,string[],bytes,bytes4,bytes)" &&
JSON.stringify(error.revert.args) === errorArgsJson);
});
});
it("testGetMissing should fail if early URL 4xx", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testGetMissing(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -112,7 +113,7 @@ describe("Test CCIP execution", function () {
});
it("testGetFallback passes if any URL returns correctly", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testGetFallback(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,
@ -123,7 +124,7 @@ describe("Test CCIP execution", function () {
});
it("testPost passes under normal operation", async function () {
this.timeout(60000);
const provider = connect("ropsten");
const provider = connect("goerli");
// testPost(bytes callData = "0x1234")
const tx = {
to: address, enableCcipRead: true,

@ -1 +1 @@
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"test-providers-ccip.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-ccip.ts"],"names":[],"mappings":"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"}

@ -19,7 +19,7 @@ function forEach(prefix, tests, func) {
continue;
}
// Prepare the testcase
retryIt(`Foo ${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
retryIt(`${prefix}: ${providerName}:${networkName}.${test.test}`, async function () {
// Create a provider
const provider = getProvider(providerName, networkName);
try {

File diff suppressed because one or more lines are too long

@ -0,0 +1,143 @@
import assert from "assert";
import { concat, dataSlice, id, toArray, zeroPadValue, isCallException } from "../index.js";
import { getProvider, providerNames } from "./create-provider.js";
describe("Tests Provider Errors", function () {
const panics = [
//{ code: 0x00, reason: "GENERIC_PANIC" },
{ code: 0x01, reason: "ASSERT_FALSE" },
{ code: 0x11, reason: "OVERFLOW" },
{ code: 0x12, reason: "DIVIDE_BY_ZERO" },
//{ code: 0x21, reason: "ENUM_RANGE_ERROR" },
//{ code: 0x22, reason: "BAD_STORAGE_DATA" },
{ code: 0x31, reason: "STACK_UNDERFLOW" },
{ code: 0x32, reason: "ARRAY_RANGE_ERROR" },
//{ code: 0x41, reason: "OUT_OF_MEMORY" },
//{ code: 0x51, reason: "UNINITIALIZED_FUNCTION_CALL" },
];
const cleanup = [];
after(function () {
for (const func of cleanup) {
func();
}
});
const testAddr = "0xF20Ba47c47a32fc2d9ad846fF06f2fa6e89eeC74";
const networkName = "goerli";
for (const { code, reason } of panics) {
for (const method of ["call", "estimateGas"]) {
for (const providerName of providerNames) {
const provider = getProvider(providerName, networkName);
if (provider == null) {
continue;
}
// Shutdown socket-based provider, otherwise its socket will prevent
// this process from exiting
if (provider.destroy) {
cleanup.push(() => { provider.destroy(); });
}
it(`tests panic code: ${providerName}.${method}.${reason}`, async function () {
this.timeout(10000);
const data = concat([
dataSlice(id("testPanic(uint256)"), 0, 4),
zeroPadValue(toArray(code), 32)
]);
const tx = { to: testAddr, data };
try {
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
console.log(result);
assert.ok(false, "panic call did not throw");
}
catch (error) {
assert.ok(isCallException(error), "isCallException");
// Check some basics
assert.equal(error.action, method, `error.action == ${method}`);
assert.equal(error.reason, `Panic due to ${reason}(${code})`, "error.reason");
// Check the transaciton
assert.equal(error.transaction.to, tx.to, `error.transaction.to`);
assert.equal(error.transaction.data, tx.data, `error.transaction.data`);
// We have no invocation data
assert.equal(error.invocation, null, `error.invocation != null`);
// Check the revert
assert.ok(error.revert != null, "error.revert == null");
assert.equal(error.revert.name, "Panic", `error.revert.name`);
assert.equal(error.revert.signature, "Panic(uint256)", `error.revert.signature`);
assert.equal(error.revert.args.length, 1, `error.revert.args.length`);
assert.equal(error.revert.args[0], code, `error.revert.args[0]`);
}
});
}
}
}
const customErrors = [
{
name: "CustomError1",
signature: "testCustomError1(bool,uint256,string)",
data: "0xdb7342480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
//data: "0x852d0c740000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000",
message: `execution reverted (unknown custom error)`,
reason: null,
revert: null,
},
{
name: "Error",
signature: "testErrorString(bool,string)",
data: "0xb206699b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000",
//data: "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20576f726c64000000000000000000000000000000000000000000"
message: `execution reverted: "hello world"`,
reason: "hello world",
revert: {
signature: "Error(string)",
name: "Error",
args: ['hello world']
}
},
];
for (const { data, message, name, reason, revert } of customErrors) {
for (const method of ["call", "estimateGas"]) {
const tx = { to: testAddr, data };
for (const providerName of providerNames) {
const provider = getProvider(providerName, networkName);
if (provider == null) {
continue;
}
// Shutdown socket-based provider, otherwise its socket will prevent
// this process from exiting
if (provider.destroy) {
cleanup.push(() => { provider.destroy(); });
}
it(`tests custom errors: ${providerName}.${method}.${name}`, async function () {
this.timeout(10000);
try {
const result = await (method === "call" ? provider.call(tx) : provider.estimateGas(tx));
console.log(result);
assert.ok(false, "panic call did not throw");
}
catch (error) {
assert.ok(isCallException(error), "isCallException");
// Check some basics
assert.equal(error.action, method, `error.action == ${method}`);
assert.ok(error.message.startsWith(message), "error.message == message");
if (reason) {
assert.equal(error.reason, reason, "error.reason");
}
else {
assert.ok(error.reason == null, "error.reason != null");
}
if (revert) {
assert.ok(error.revert != null, "error.revert == null");
assert.equal(error.revert.name, revert.name, "error.revert.name");
assert.equal(error.revert.signature, revert.signature, "error.revert.signature");
assert.equal(error.revert.args.length, revert.args.length, "error.revert.args.length");
for (let i = 0; i < revert.args.length; i++) {
assert.equal(error.revert.args[i], revert.args[i], `error.revert.args[${i}]`);
}
}
else {
assert.ok(error.revert == null, "error.revert != null");
}
}
});
}
}
}
});
//# sourceMappingURL=test-providers-errors.js.map

File diff suppressed because one or more lines are too long

@ -1,15 +1,15 @@
import assert from "assert";
import { connect } from "./create-provider.js";
describe("Test EIP-2544 ENS wildcards", function () {
const provider = connect("ropsten");
const provider = connect("goerli");
it("Resolves recursively", async function () {
const resolver = await provider.getResolver("ricmoose.hatch.eth");
assert.ok(resolver, "failed to get resolver");
assert.equal(resolver.address, "0x8fc4C380c5d539aE631daF3Ca9182b40FB21D1ae", "address");
assert.equal(resolver.address, "0x15abA1fa74Bfdecd63A71218DC632d4328Db8168", "address");
assert.equal(await resolver.supportsWildcard(), true, "supportsWildcard()");
// Test pass-through avatar
assert.equal(await resolver.getAvatar(), "https:/\/static.ricmoo.com/uploads/profile-06cb9c3031c9.jpg", "getAvatar()");
assert.equal(await resolver.getAddress(), "0x4FaBE0A3a4DDd9968A7b4565184Ad0eFA7BE5411", "getAddress()");
assert.equal(await resolver.getAddress(), "0x4B711A377B1b3534749FBe5e59Bcf7F94d92EA98", "getAddress()");
});
});
//# sourceMappingURL=test-providers-wildcard.js.map

@ -1 +1 @@
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
{"version":3,"file":"test-providers-wildcard.js","sourceRoot":"","sources":["../../src.ts/_tests/test-providers-wildcard.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,QAAQ,CAAC,6BAA6B,EAAE;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,EAAE,CAAC,sBAAsB,EAAE,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE9C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,6DAA6D,EAAE,aAAa,CAAC,CAAC;QAEvH,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,4CAA4C,EAAE,cAAc,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

@ -1,2 +1,2 @@
export const version = "6.0.0-beta-exports.4";
export const version = "6.0.0-beta-exports.5";
//# sourceMappingURL=_version.js.map

@ -11,6 +11,8 @@ import { NumberCoder } from "./coders/number.js";
import { StringCoder } from "./coders/string.js";
import { TupleCoder } from "./coders/tuple.js";
import { ParamType } from "./fragments.js";
import { getAddress } from "../address/index.js";
import { getBytes, hexlify, makeError } from "../utils/index.js";
const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
export class AbiCoder {
@ -72,5 +74,77 @@ export class AbiCoder {
return coder.decode(new Reader(data, loose));
}
}
// https://docs.soliditylang.org/en/v0.8.17/control-structures.html
const PanicReasons = new Map();
PanicReasons.set(0x00, "GENERIC_PANIC");
PanicReasons.set(0x01, "ASSERT_FALSE");
PanicReasons.set(0x11, "OVERFLOW");
PanicReasons.set(0x12, "DIVIDE_BY_ZERO");
PanicReasons.set(0x21, "ENUM_RANGE_ERROR");
PanicReasons.set(0x22, "BAD_STORAGE_DATA");
PanicReasons.set(0x31, "STACK_UNDERFLOW");
PanicReasons.set(0x32, "ARRAY_RANGE_ERROR");
PanicReasons.set(0x41, "OUT_OF_MEMORY");
PanicReasons.set(0x51, "UNINITIALIZED_FUNCTION_CALL");
export function getBuiltinCallException(action, tx, data) {
let message = "missing revert data";
let reason = null;
const invocation = null;
let revert = null;
if (data) {
message = "execution reverted";
const bytes = getBytes(data);
data = hexlify(data);
if (bytes.length % 32 !== 4) {
message += " (could not decode reason; invalid data length)";
}
else if (hexlify(bytes.slice(0, 4)) === "0x08c379a0") {
// Error(string)
try {
reason = defaultAbiCoder.decode(["string"], bytes.slice(4))[0];
revert = {
signature: "Error(string)",
name: "Error",
args: [reason]
};
message += `: ${JSON.stringify(reason)}`;
}
catch (error) {
console.log(error);
message += " (could not decode reason; invalid data)";
}
}
else if (hexlify(bytes.slice(0, 4)) === "0x4e487b71") {
// Panic(uint256)
try {
const code = Number(defaultAbiCoder.decode(["uint256"], bytes.slice(4))[0]);
revert = {
signature: "Panic(uint256)",
name: "Panic",
args: [code]
};
reason = `Panic due to ${PanicReasons.get(code) || "UNKNOWN"}(${code})`;
message += `: ${reason}`;
}
catch (error) {
console.log(error);
message += " (could not decode panic reason)";
}
}
else {
message += " (unknown custom error)";
}
}
const transaction = {
to: (tx.to ? getAddress(tx.to) : null),
data: (tx.data || "0x")
};
if (tx.from) {
transaction.from = getAddress(tx.from);
}
return makeError(message, "CALL_EXCEPTION", {
action, data, reason, transaction, invocation, revert
});
}
export const defaultAbiCoder = new AbiCoder();
//# sourceMappingURL=abi-coder.js.map

File diff suppressed because one or more lines are too long

@ -495,7 +495,7 @@ export class ParamType {
return value[param.name];
});
}
if (value.length !== this.components.length) {
if (result.length !== this.components.length) {
throw new Error("array is wrong length");
}
result.forEach((value, index) => {
@ -592,7 +592,7 @@ export class ParamType {
});
return new ParamType(_guard, name, type, "array", indexed, null, arrayLength, arrayChildren);
}
if (type.substring(0, 5) === "tuple(" || type[0] === "(") {
if (type === "tuple" || type.substring(0, 5) === "tuple(" || type[0] === "(") {
const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;
const tuple = new ParamType(_guard, name, type, "tuple", indexed, comps, null, null);
// @TODO: use lexer to validate and normalize type

File diff suppressed because one or more lines are too long

@ -1,5 +1,5 @@
//////
export { AbiCoder, defaultAbiCoder } from "./abi-coder.js";
export { AbiCoder, defaultAbiCoder, getBuiltinCallException } from "./abi-coder.js";
export { decodeBytes32String, encodeBytes32String } from "./bytes32.js";
export { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, NamedFragment, ParamType, StructFragment, } from "./fragments.js";
export { checkResultErrors, Indexed, Interface, ErrorDescription, LogDescription, TransactionDescription, Result } from "./interface.js";

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":"AAGA,MAAM;AACN,OAAO,EACH,QAAQ,EACR,eAAe,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAC3D,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAC7D,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EACxD,MAAM,EACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src.ts/abi/index.ts"],"names":[],"mappings":"AAGA,MAAM;AACN,OAAO,EACH,QAAQ,EACR,eAAe,EACf,uBAAuB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EACH,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAC3D,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAC7D,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACH,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EACxD,MAAM,EACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}

@ -1,7 +1,7 @@
import { keccak256 } from "../crypto/index.js";
import { id } from "../hash/index.js";
import { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadValue, isHexString, defineProperties, throwArgumentError, toHex, throwError, makeError } from "../utils/index.js";
import { defaultAbiCoder } from "./abi-coder.js";
import { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadValue, isHexString, defineProperties, throwArgumentError, toHex, throwError } from "../utils/index.js";
import { defaultAbiCoder, getBuiltinCallException } from "./abi-coder.js";
import { checkResultErrors, Result } from "./coders/abstract-coder.js";
import { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from "./fragments.js";
import { Typed } from "./typed.js";
@ -570,65 +570,42 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
info: { method: fragment.name, signature: fragment.format() }
});
}
makeError(fragment, _data, tx) {
if (typeof (fragment) === "string") {
fragment = this.getFunction(fragment);
}
const data = getBytes(_data);
let args = undefined;
if (tx) {
try {
args = this.#abiCoder.decode(fragment.inputs, tx.data || "0x");
}
catch (error) {
console.log(error);
}
}
let errorArgs = undefined;
let errorName = undefined;
let errorSignature = undefined;
let reason = "unknown reason";
if (data.length === 0) {
reason = "missing error reason";
}
else if ((data.length % 32) === 4) {
makeError(_data, tx) {
const data = getBytes(_data, "data");
const error = getBuiltinCallException("call", tx, data);
// Not a built-in error; try finding a custom error
if (!error.message.match(/could not decode/)) {
const selector = hexlify(data.slice(0, 4));
const builtin = BuiltinErrors[selector];
if (builtin) {
error.message = "execution reverted (unknown custom error)";
try {
errorName = builtin.name;
errorSignature = builtin.signature;
errorArgs = this.#abiCoder.decode(builtin.inputs, data.slice(4));
reason = builtin.reason(...errorArgs);
}
catch (error) {
console.log(error); // @TODO: remove
}
}
else {
reason = "unknown custom error";
const ef = this.getError(selector);
try {
const error = this.getError(selector);
errorName = error.name;
errorSignature = error.format();
reason = `custom error: ${errorSignature}`;
try {
errorArgs = this.#abiCoder.decode(error.inputs, data.slice(4));
error.revert = {
name: ef.name,
signature: ef.format(),
args: this.#abiCoder.decode(ef.inputs, data.slice(4))
};
error.reason = error.revert.signature;
error.message = `execution reverted: ${error.reason}`;
}
catch (error) {
reason = `custom error: ${errorSignature} (coult not decode error data)`;
catch (e) {
error.message = `execution reverted (coult not decode custom error)`;
}
}
catch (error) {
console.log(error); // @TODO: remove
}
}
// Add the invocation, if available
const parsed = this.parseTransaction(tx);
if (parsed) {
error.invocation = {
method: parsed.name,
signature: parsed.signature,
args: parsed.args
};
}
return makeError("call revert exception", "CALL_EXCEPTION", {
data: hexlify(data), transaction: null,
method: fragment.name, signature: fragment.format(), args,
errorArgs, errorName, errorSignature, reason
});
return error;
}
/**
* Encodes the result data (e.g. from an ``eth_call``) for the

File diff suppressed because one or more lines are too long

@ -185,18 +185,18 @@ class WrappedMethod extends _WrappedMethodBase() {
operation: "call"
});
}
const fragment = this.getFragment(...args);
const tx = await this.populateTransaction(...args);
let result = "0x";
try {
result = await runner.call(tx);
}
catch (error) {
if (isCallException(error)) {
throw this._contract.interface.makeError(fragment, error.data, tx);
if (isCallException(error) && error.data) {
throw this._contract.interface.makeError(error.data, tx);
}
throw error;
}
const fragment = this.getFragment(...args);
return this._contract.interface.decodeFunctionResult(fragment, result);
}
}

File diff suppressed because one or more lines are too long

@ -1 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":"AAeC,CAAC;AAiB4E,CAAC;AAkD9E,CAAC"}
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src.ts/contract/types.ts"],"names":[],"mappings":"AAeC,CAAC;AAoB4E,CAAC;AAkD9E,CAAC"}

@ -1,8 +1,8 @@
import { createHmac } from "./crypto.js";
import { createHmac } from "./crypto-browser.js";
import { getBytes, hexlify } from "../utils/index.js";
let locked = false;
const _computeHmac = function (algorithm, key, data) {
return "0x" + createHmac(algorithm, key).update(data).digest("hex");
return createHmac(algorithm, key).update(data).digest();
};
let __computeHmac = _computeHmac;
export function computeHmac(algorithm, _key, _data) {

@ -1 +1 @@
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src.ts/crypto/hmac.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKtD,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,YAAY,GAAG,UAAS,SAA8B,EAAE,GAAe,EAAE,IAAgB;IAC3F,OAAO,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5D,CAAC,CAAA;AAED,IAAI,aAAa,GAAG,YAAY,CAAC;AAEjC,MAAM,UAAU,WAAW,CAAC,SAA8B,EAAE,IAAe,EAAE,KAAgB;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AACD,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC;AAC7B,WAAW,CAAC,IAAI,GAAI,cAAa,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,WAAW,CAAC,QAAQ,GAAG,UAAS,IAAsF;IAClH,IAAI,MAAM,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAAE;IACzD,aAAa,GAAG,IAAI,CAAC;AACzB,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC"}

@ -44,18 +44,7 @@ export class Signature {
return Signature.getChainId(v);
}
get yParity() {
if (this.v === 27) {
return 0;
}
return 1;
/*
// When v is 0 or 1 it is the recid directly
if (this.v.isZero()) { return 0; }
if (this.v.eq(1)) { return 1; }
// Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1
return this.v.and(1).isZero() ? 1: 0;
*/
return (this.v === 27) ? 0 : 1;
}
get yParityAndS() {
// The EIP-2098 compact representation
@ -100,9 +89,9 @@ export class Signature {
r: this.r, s: this.s, v: this.v,
};
}
static create() {
return new Signature(_guard, ZeroHash, ZeroHash, 27);
}
//static create(): Signature {
// return new Signature(_guard, ZeroHash, ZeroHash, 27);
//}
// Get the chain ID from an EIP-155 v
static getChainId(v) {
const bv = getBigInt(v, "v");
@ -133,6 +122,9 @@ export class Signature {
return (bv & BN_1) ? 27 : 28;
}
static from(sig) {
if (sig == null) {
return new Signature(_guard, ZeroHash, ZeroHash, 27);
}
const throwError = (message) => {
return throwArgumentError(message, "signature", sig);
};
@ -145,8 +137,8 @@ export class Signature {
s[0] &= 0x7f;
return new Signature(_guard, r, hexlify(s), v);
}
if (dataLength(sig) !== 65) {
const r = hexlify(sig.slice(0, 32));
if (bytes.length === 65) {
const r = hexlify(bytes.slice(0, 32));
const s = bytes.slice(32, 64);
if (s[0] & 0x80) {
throwError("non-canonical s");

File diff suppressed because one or more lines are too long

@ -1,5 +1,5 @@
import * as secp256k1 from "@noble/secp256k1";
import { concat, getBytes, getBytesCopy, hexlify, toHex, throwArgumentError } from "../utils/index.js";
import { concat, dataLength, getBytes, getBytesCopy, hexlify, toHex, assertArgument, throwArgumentError } from "../utils/index.js";
import { computeHmac } from "./hmac.js";
import { Signature } from "./signature.js";
//const N = BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");
@ -22,9 +22,7 @@ export class SigningKey {
get publicKey() { return SigningKey.computePublicKey(this.#privateKey); }
get compressedPublicKey() { return SigningKey.computePublicKey(this.#privateKey, true); }
sign(digest) {
/* @TODO
logger.assertArgument(() => (dataLength(digest) === 32), "invalid digest length", "digest", digest);
*/
assertArgument(dataLength(digest) === 32, "invalid digest length", "digest", digest);
const [sigDer, recid] = secp256k1.signSync(getBytesCopy(digest), getBytesCopy(this.#privateKey), {
recovered: true,
canonical: true
@ -56,6 +54,7 @@ export class SigningKey {
return hexlify(point.toRawBytes(compressed));
}
static recoverPublicKey(digest, signature) {
assertArgument(dataLength(digest) === 32, "invalid digest length", "digest", digest);
const sig = Signature.from(signature);
const der = secp256k1.Signature.fromCompact(getBytesCopy(concat([sig.r, sig.s]))).toDERRawBytes();
const pubKey = secp256k1.recoverPublicKey(getBytesCopy(digest), der, sig.yParity);

@ -1 +1 @@
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACH,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EACrE,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAO3C,yFAAyF;AAEzF,4BAA4B;AAC5B,SAAS,CAAC,KAAK,CAAC,cAAc,GAAG,UAAS,GAAe,EAAE,GAAG,QAA2B;IACrF,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,CAAA;AAED,MAAM,OAAO,UAAU;IACnB,WAAW,CAAS;IAEpB,YAAY,UAAqB;QAC7B;;;;;UAKE;QACF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,IAAI,SAAS,KAAa,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,mBAAmB,KAAa,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjG,IAAI,CAAC,MAAiB;QAClB;;UAEE;QAEF,MAAM,CAAE,MAAM,EAAE,KAAK,CAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC/F,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO,SAAS,CAAC,IAAI,CAAC;YAClB,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,CAAC,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,KAAgB;QAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,GAAc,EAAE,UAAoB;QACxD,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;SAC1B;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACd,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAClB,KAAK,GAAG,GAAG,CAAC;SACf;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,MAAiB,EAAE,SAAwB;QAC/D,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEpG,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAClF,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;SAAE;QAE/C,OAAO,kBAAkB,CAAC,8BAA8B,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,EAAa,EAAE,EAAa,EAAE,UAAoB;QAChE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACpD,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCE"}
{"version":3,"file":"signing-key.js","sourceRoot":"","sources":["../../src.ts/crypto/signing-key.ts"],"names":[],"mappings":"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"}

@ -7,7 +7,7 @@ export { ZeroAddress, NegativeOne, Zero, One, Two, WeiPerEther, MaxUint256, MinI
export { BaseContract, Contract, ContractFactory, ContractEventPayload, ContractTransactionReceipt, ContractTransactionResponse, EventLog, } from "./contract/index.js";
export { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync, lock, Signature, SigningKey } from "./crypto/index.js";
export { id, isValidName, namehash, dnsEncode, hashMessage, solidityPacked, solidityPackedKeccak256, solidityPackedSha256, TypedDataEncoder } from "./hash/index.js";
export { AbstractProvider, FallbackProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, AlchemyProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider,
export { AbstractProvider, FallbackProvider, JsonRpcApiProvider, JsonRpcProvider, JsonRpcSigner, BrowserProvider, AlchemyProvider, AnkrProvider, CloudflareProvider, EtherscanProvider, InfuraProvider,
//PocketProvider } from "./provider-pocket.js";
IpcSocketProvider, SocketProvider, WebSocketProvider, Network } from "./providers/index.js";
export { accessListify, computeAddress, recoverAddress, Transaction } from "./transaction/index.js";

@ -1 +1 @@
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"ethers.js","sourceRoot":"","sources":["../src.ts/ethers.ts"],"names":[],"mappings":"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"}

@ -6,6 +6,7 @@
// migrate the listener to the static event. We also need to maintain a map
// of Signer/ENS name to address so we can sync respond to listenerCount.
import { resolveAddress } from "../address/index.js";
import { Transaction } from "../transaction/index.js";
import { concat, dataLength, dataSlice, hexlify, isHexString, getBigInt, getBytes, getNumber, isCallException, makeError, throwError, throwArgumentError, FetchRequest, toArray, toQuantity, defineProperties, EventPayload, resolveProperties, toUtf8String } from "../utils/index.js";
import { EnsResolver } from "./ens-resolver.js";
import { formatBlock, formatBlockWithTransactions, formatLog, formatTransactionReceipt, formatTransactionResponse } from "./format.js";
@ -508,7 +509,7 @@ export class AbstractProvider {
}
catch (error) {
// CCIP Read OffchainLookup
if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === "latest" && transaction.to != null && dataSlice(error.data, 0, 4) === "0x556f1830") {
if (!this.disableCcipRead && isCallException(error) && error.data && attempt >= 0 && blockTag === "latest" && transaction.to != null && dataSlice(error.data, 0, 4) === "0x556f1830") {
const data = error.data;
const txSender = await resolveAddress(transaction.to, this);
// Parse the CCIP Read Arguments
@ -525,10 +526,16 @@ export class AbstractProvider {
// Check the sender of the OffchainLookup matches the transaction
if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {
return throwError("CCIP Read sender mismatch", "CALL_EXCEPTION", {
data, transaction,
errorSignature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
errorName: "OffchainLookup",
errorArgs: ccipArgs.errorArgs
action: "call",
data,
reason: "OffchainLookup",
transaction: transaction,
invocation: null,
revert: {
signature: "OffchainLookup(address,string[],bytes,bytes4,bytes)",
name: "OffchainLookup",
args: ccipArgs.errorArgs
}
});
}
const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);
@ -586,8 +593,19 @@ export class AbstractProvider {
}
// Write
async broadcastTransaction(signedTx) {
throw new Error();
return {};
const { blockNumber, hash, network } = await resolveProperties({
blockNumber: this.getBlockNumber(),
hash: this._perform({
method: "broadcastTransaction",
signedTransaction: signedTx
}),
network: this.getNetwork()
});
const tx = Transaction.from(signedTx);
if (tx.hash !== hash) {
throw new Error("@TODO: the returned hash did not match");
}
return this._wrapTransactionResponse(tx, network).replaceableTransaction(blockNumber);
}
async #getBlock(block, includeTransactions) {
// @TODO: Add CustomBlockPlugin check

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More