admin: updated dist files

This commit is contained in:
Richard Moore 2023-07-24 00:06:04 -04:00
parent ac2f5e563b
commit bcc4d8c870
34 changed files with 348 additions and 121 deletions

@ -3,6 +3,17 @@ Change Log
This change log is maintained by `src.ts/_admin/update-changelog.ts` but may also be manually updated.
ethers/v6.6.5 (2023-07-24 00:04)
--------------------------------
- Reflect symbols in the Contract Proxy to target ([#4048](https://github.com/ethers-io/ethers.js/issues/4048); [ac2f5e5](https://github.com/ethers-io/ethers.js/commit/ac2f5e563b8ec0e91a931470eb6ea58b0c01fb3d)).
- Allow arrays of address for indexed filter topics ([#4259](https://github.com/ethers-io/ethers.js/issues/4259); [93af87c](https://github.com/ethers-io/ethers.js/commit/93af87c447eeb77090e29bd940612603b3f74026)).
- Fixed filter encoding for bytesX ([#4244](https://github.com/ethers-io/ethers.js/issues/4244); [fa3a883](https://github.com/ethers-io/ethers.js/commit/fa3a883ff7c88611ce766f58bdd4b8ac90814470)).
- Fix JSON formatting for tuple arrays ([#4237](https://github.com/ethers-io/ethers.js/issues/4237); [a8bc49b](https://github.com/ethers-io/ethers.js/commit/a8bc49bdcf07a51b35f38cf209db27e116cc1a59)).
- Better error messages when parsing fragment strings ([#4246](https://github.com/ethers-io/ethers.js/issues/4246); [e36b6c3](https://github.com/ethers-io/ethers.js/commit/e36b6c35b7bc777c9adbe0055b32b31a13185240)).
- Include the missing fragment key and args when no matching Contract method or event is present ([#3809](https://github.com/ethers-io/ethers.js/issues/3809); [450a176](https://github.com/ethers-io/ethers.js/commit/450a176ee25f88a2ddb9ff23b153ef70bf1dc546)).
- Prevent a single malformed event from preventing other Contract logs; reported on Discord ([b1375f4](https://github.com/ethers-io/ethers.js/commit/b1375f4e4463b856855ebc684b45945455ac082e)).
ethers/v6.6.4 (2023-07-16 00:35)
--------------------------------

77
dist/ethers.js vendored

@ -3,7 +3,7 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
/**
* The current version of Ethers.
*/
const version = "6.6.4";
const version = "6.6.5";
/**
* Property helper functions.
@ -10446,9 +10446,16 @@ class ParamType {
format = "sighash";
}
if (format === "json") {
let result = {
const name = this.name || undefined; // @TODO: Make this "" (minor bump)
if (this.isArray()) {
const result = JSON.parse(this.arrayChildren.format("json"));
result.name = name;
result.type += `[${(this.arrayLength < 0 ? "" : String(this.arrayLength))}]`;
return JSON.stringify(result);
}
const result = {
type: ((this.baseType === "tuple") ? "tuple" : this.type),
name: (this.name || undefined)
name
};
if (typeof (this.indexed) === "boolean") {
result.indexed = this.indexed;
@ -10626,8 +10633,13 @@ class ParamType {
return obj;
}
if (typeof (obj) === "string") {
try {
return ParamType.from(lex(obj), allowIndexed);
}
catch (error) {
assertArgument(false, "invalid param type", "obj", obj);
}
}
else if (obj instanceof TokenString) {
let type = "", baseType = "";
let comps = null;
@ -10946,8 +10958,13 @@ class EventFragment extends NamedFragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return EventFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid event fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("event", obj);
const inputs = consumeParams(obj, true);
@ -11014,8 +11031,13 @@ class ConstructorFragment extends Fragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return ConstructorFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid constuctor fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
consumeKeywords(obj, setify(["constructor"]));
const inputs = consumeParams(obj);
@ -11066,8 +11088,13 @@ class FallbackFragment extends Fragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return FallbackFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid fallback fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const errorObj = obj.toString();
const topIsValid = obj.peekKeyword(setify(["fallback", "receive"]));
@ -11213,8 +11240,13 @@ class FunctionFragment extends NamedFragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return FunctionFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid function fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("function", obj);
const inputs = consumeParams(obj);
@ -11278,8 +11310,13 @@ class StructFragment extends NamedFragment {
*/
static from(obj) {
if (typeof (obj) === "string") {
try {
return StructFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid struct fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("struct", obj);
const inputs = consumeParams(obj);
@ -12394,15 +12431,17 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
if (param.type === "bool" && typeof (value) === "boolean") {
value = (value ? "0x01" : "0x00");
}
if (param.type.match(/^u?int/)) {
value = toBeHex(value);
else if (param.type.match(/^u?int/)) {
value = toBeHex(value); // @TODO: Should this toTwos??
}
else if (param.type.match(/^bytes/)) {
value = zeroPadBytes(value, 32);
}
else if (param.type === "address") {
// Check addresses are valid
if (param.type === "address") {
this.#abiCoder.encode(["address"], [value]);
}
return zeroPadValue(hexlify(value), 32);
//@TOOD should probably be return toHex(value, 32)
};
values.forEach((value, index) => {
const param = fragment.inputs[index];
@ -13994,6 +14033,9 @@ class PreparedTopicFilter {
}
return param.walkAsync(args[index], (type, value) => {
if (type === "address") {
if (Array.isArray(value)) {
return Promise.all(value.map((v) => resolveAddress(v, resolver)));
}
return resolveAddress(value, resolver);
}
return value;
@ -14123,7 +14165,8 @@ function buildWrappedMethod(contract, key) {
const getFragment = function (...args) {
const fragment = contract.interface.getFunction(key, args);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -14203,7 +14246,8 @@ function buildWrappedMethod(contract, key) {
get: () => {
const fragment = contract.interface.getFunction(key);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -14214,7 +14258,8 @@ function buildWrappedEvent(contract, key) {
const getFragment = function (...args) {
const fragment = contract.interface.getEvent(key, args);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -14233,7 +14278,8 @@ function buildWrappedEvent(contract, key) {
get: () => {
const fragment = contract.interface.getEvent(key);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -14549,7 +14595,7 @@ class BaseContract {
// Return a Proxy that will respond to functions
return new Proxy(this, {
get: (target, _prop, receiver) => {
if (_prop in target || passProperties.indexOf(_prop) >= 0) {
if (_prop in target || passProperties.indexOf(_prop) >= 0 || typeof (_prop) === "symbol") {
return Reflect.get(target, _prop, receiver);
}
const prop = String(_prop);
@ -14560,7 +14606,7 @@ class BaseContract {
throw new Error(`unknown contract method: ${prop}`);
},
has: (target, prop) => {
if (prop in target || passProperties.indexOf(prop) >= 0) {
if (prop in target || passProperties.indexOf(prop) >= 0 || typeof (prop) === "symbol") {
return Reflect.has(target, prop);
}
return target.interface.hasFunction(String(prop));
@ -14698,11 +14744,12 @@ class BaseContract {
catch (error) { }
}
if (foundFragment) {
try {
return new EventLog(log, this.interface, foundFragment);
}
else {
return new Log(log, provider);
catch (error) { }
}
return new Log(log, provider);
});
}
/**

2
dist/ethers.js.map vendored

File diff suppressed because one or more lines are too long

2
dist/ethers.min.js vendored

File diff suppressed because one or more lines are too long

77
dist/ethers.umd.js vendored

@ -9,7 +9,7 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
/**
* The current version of Ethers.
*/
const version = "6.6.4";
const version = "6.6.5";
/**
* Property helper functions.
@ -10452,9 +10452,16 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
format = "sighash";
}
if (format === "json") {
let result = {
const name = this.name || undefined; // @TODO: Make this "" (minor bump)
if (this.isArray()) {
const result = JSON.parse(this.arrayChildren.format("json"));
result.name = name;
result.type += `[${(this.arrayLength < 0 ? "" : String(this.arrayLength))}]`;
return JSON.stringify(result);
}
const result = {
type: ((this.baseType === "tuple") ? "tuple" : this.type),
name: (this.name || undefined)
name
};
if (typeof (this.indexed) === "boolean") {
result.indexed = this.indexed;
@ -10632,8 +10639,13 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
return obj;
}
if (typeof (obj) === "string") {
try {
return ParamType.from(lex(obj), allowIndexed);
}
catch (error) {
assertArgument(false, "invalid param type", "obj", obj);
}
}
else if (obj instanceof TokenString) {
let type = "", baseType = "";
let comps = null;
@ -10952,8 +10964,13 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
return obj;
}
if (typeof (obj) === "string") {
try {
return EventFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid event fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("event", obj);
const inputs = consumeParams(obj, true);
@ -11020,8 +11037,13 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
return obj;
}
if (typeof (obj) === "string") {
try {
return ConstructorFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid constuctor fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
consumeKeywords(obj, setify(["constructor"]));
const inputs = consumeParams(obj);
@ -11072,8 +11094,13 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
return obj;
}
if (typeof (obj) === "string") {
try {
return FallbackFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid fallback fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const errorObj = obj.toString();
const topIsValid = obj.peekKeyword(setify(["fallback", "receive"]));
@ -11219,8 +11246,13 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
return obj;
}
if (typeof (obj) === "string") {
try {
return FunctionFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid function fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("function", obj);
const inputs = consumeParams(obj);
@ -11284,8 +11316,13 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
*/
static from(obj) {
if (typeof (obj) === "string") {
try {
return StructFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid struct fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("struct", obj);
const inputs = consumeParams(obj);
@ -12400,15 +12437,17 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
if (param.type === "bool" && typeof (value) === "boolean") {
value = (value ? "0x01" : "0x00");
}
if (param.type.match(/^u?int/)) {
value = toBeHex(value);
else if (param.type.match(/^u?int/)) {
value = toBeHex(value); // @TODO: Should this toTwos??
}
else if (param.type.match(/^bytes/)) {
value = zeroPadBytes(value, 32);
}
else if (param.type === "address") {
// Check addresses are valid
if (param.type === "address") {
this.#abiCoder.encode(["address"], [value]);
}
return zeroPadValue(hexlify(value), 32);
//@TOOD should probably be return toHex(value, 32)
};
values.forEach((value, index) => {
const param = fragment.inputs[index];
@ -14000,6 +14039,9 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
}
return param.walkAsync(args[index], (type, value) => {
if (type === "address") {
if (Array.isArray(value)) {
return Promise.all(value.map((v) => resolveAddress(v, resolver)));
}
return resolveAddress(value, resolver);
}
return value;
@ -14129,7 +14171,8 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
const getFragment = function (...args) {
const fragment = contract.interface.getFunction(key, args);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -14209,7 +14252,8 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
get: () => {
const fragment = contract.interface.getFunction(key);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -14220,7 +14264,8 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
const getFragment = function (...args) {
const fragment = contract.interface.getEvent(key, args);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -14239,7 +14284,8 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
get: () => {
const fragment = contract.interface.getEvent(key);
assert$1(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -14555,7 +14601,7 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
// Return a Proxy that will respond to functions
return new Proxy(this, {
get: (target, _prop, receiver) => {
if (_prop in target || passProperties.indexOf(_prop) >= 0) {
if (_prop in target || passProperties.indexOf(_prop) >= 0 || typeof (_prop) === "symbol") {
return Reflect.get(target, _prop, receiver);
}
const prop = String(_prop);
@ -14566,7 +14612,7 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
throw new Error(`unknown contract method: ${prop}`);
},
has: (target, prop) => {
if (prop in target || passProperties.indexOf(prop) >= 0) {
if (prop in target || passProperties.indexOf(prop) >= 0 || typeof (prop) === "symbol") {
return Reflect.has(target, prop);
}
return target.interface.hasFunction(String(prop));
@ -14704,11 +14750,12 @@ const __$G = (typeof globalThis !== 'undefined' ? globalThis: typeof window !==
catch (error) { }
}
if (foundFragment) {
try {
return new EventLog(log, this.interface, foundFragment);
}
else {
return new Log(log, provider);
catch (error) { }
}
return new Log(log, provider);
});
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -151,7 +151,7 @@ const u64 = {
/**
* The current version of Ethers.
*/
const version = "6.6.4";
const version = "6.6.5";
/**
* Property helper functions.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -66,7 +66,9 @@ describe("Test Bytes32 strings", function () {
describe("Test Interface", function () {
const iface = new index_js_1.Interface([
"function balanceOf(address owner) returns (uint)",
"event Transfer(address indexed from, address indexed to, uint amount)"
"event Transfer(address indexed from, address indexed to, uint amount)",
// #4244
"event RedemptionRequested(bytes20 indexed walletPubKeyHash, bytes redeemerOutputScript, address indexed redeemer, uint64 requestedAmount, uint64 treasuryFee, uint64 txMaxFee)"
]);
it("does interface stuff; @TODO expand this", function () {
const addr = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
@ -95,6 +97,18 @@ describe("Test Interface", function () {
assert_1.default.equal(filter[0], "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
assert_1.default.equal(filter[1], "0x0000000000000000000000008ba1f109551bd432803012645ac136ddd64dba72");
assert_1.default.equal(filter[2], "0x000000000000000000000000ac1639cf97a3a46d431e6d1216f576622894cbb5");
// See: #4244
// https://goerli.etherscan.io/tx/0xe61cef4cd706db8e23114717a207d76cc6b0df0b74ec52805551c4d1bf347a27#eventlog
// See `RedemptionRequested` event.
{
const walletPubKeyHash = "0x03b74d6893ad46dfdd01b9e0e3b3385f4fce2d1e";
const redeemer = "0x086813525A7dC7dafFf015Cdf03896Fd276eab60";
const filterWithBytes20 = iface.encodeFilterTopics("RedemptionRequested", [walletPubKeyHash, undefined, redeemer]);
assert_1.default.equal(filterWithBytes20.length, 3);
assert_1.default.equal(filterWithBytes20[0], "0x97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d95");
assert_1.default.equal(filterWithBytes20[1], "0x03b74d6893ad46dfdd01b9e0e3b3385f4fce2d1e000000000000000000000000");
assert_1.default.equal(filterWithBytes20[2], "0x000000000000000000000000086813525a7dc7dafff015cdf03896fd276eab60");
}
const eventLog = iface.encodeEventLog("Transfer", [addr, addr2, 234]);
assert_1.default.equal(eventLog.data, "0x00000000000000000000000000000000000000000000000000000000000000ea");
assert_1.default.deepEqual(eventLog.topics, [

File diff suppressed because one or more lines are too long

@ -5,5 +5,5 @@ exports.version = void 0;
/**
* The current version of Ethers.
*/
exports.version = "6.6.4";
exports.version = "6.6.5";
//# sourceMappingURL=_version.js.map

File diff suppressed because one or more lines are too long

@ -429,9 +429,16 @@ class ParamType {
format = "sighash";
}
if (format === "json") {
let result = {
const name = this.name || undefined; // @TODO: Make this "" (minor bump)
if (this.isArray()) {
const result = JSON.parse(this.arrayChildren.format("json"));
result.name = name;
result.type += `[${(this.arrayLength < 0 ? "" : String(this.arrayLength))}]`;
return JSON.stringify(result);
}
const result = {
type: ((this.baseType === "tuple") ? "tuple" : this.type),
name: (this.name || undefined)
name
};
if (typeof (this.indexed) === "boolean") {
result.indexed = this.indexed;
@ -609,8 +616,13 @@ class ParamType {
return obj;
}
if (typeof (obj) === "string") {
try {
return ParamType.from(lex(obj), allowIndexed);
}
catch (error) {
(0, index_js_1.assertArgument)(false, "invalid param type", "obj", obj);
}
}
else if (obj instanceof TokenString) {
let type = "", baseType = "";
let comps = null;
@ -933,8 +945,13 @@ class EventFragment extends NamedFragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return EventFragment.from(lex(obj));
}
catch (error) {
(0, index_js_1.assertArgument)(false, "invalid event fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("event", obj);
const inputs = consumeParams(obj, true);
@ -1002,8 +1019,13 @@ class ConstructorFragment extends Fragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return ConstructorFragment.from(lex(obj));
}
catch (error) {
(0, index_js_1.assertArgument)(false, "invalid constuctor fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
consumeKeywords(obj, setify(["constructor"]));
const inputs = consumeParams(obj);
@ -1055,8 +1077,13 @@ class FallbackFragment extends Fragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return FallbackFragment.from(lex(obj));
}
catch (error) {
(0, index_js_1.assertArgument)(false, "invalid fallback fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const errorObj = obj.toString();
const topIsValid = obj.peekKeyword(setify(["fallback", "receive"]));
@ -1203,8 +1230,13 @@ class FunctionFragment extends NamedFragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return FunctionFragment.from(lex(obj));
}
catch (error) {
(0, index_js_1.assertArgument)(false, "invalid function fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("function", obj);
const inputs = consumeParams(obj);
@ -1269,8 +1301,13 @@ class StructFragment extends NamedFragment {
*/
static from(obj) {
if (typeof (obj) === "string") {
try {
return StructFragment.from(lex(obj));
}
catch (error) {
(0, index_js_1.assertArgument)(false, "invalid struct fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("struct", obj);
const inputs = consumeParams(obj);

File diff suppressed because one or more lines are too long

@ -884,15 +884,17 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
if (param.type === "bool" && typeof (value) === "boolean") {
value = (value ? "0x01" : "0x00");
}
if (param.type.match(/^u?int/)) {
value = (0, index_js_3.toBeHex)(value);
else if (param.type.match(/^u?int/)) {
value = (0, index_js_3.toBeHex)(value); // @TODO: Should this toTwos??
}
else if (param.type.match(/^bytes/)) {
value = (0, index_js_3.zeroPadBytes)(value, 32);
}
else if (param.type === "address") {
// Check addresses are valid
if (param.type === "address") {
this.#abiCoder.encode(["address"], [value]);
}
return (0, index_js_3.zeroPadValue)((0, index_js_3.hexlify)(value), 32);
//@TOOD should probably be return toHex(value, 32)
};
values.forEach((value, index) => {
const param = fragment.inputs[index];

File diff suppressed because one or more lines are too long

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

@ -40,6 +40,9 @@ class PreparedTopicFilter {
}
return param.walkAsync(args[index], (type, value) => {
if (type === "address") {
if (Array.isArray(value)) {
return Promise.all(value.map((v) => (0, index_js_2.resolveAddress)(v, resolver)));
}
return (0, index_js_2.resolveAddress)(value, resolver);
}
return value;
@ -171,7 +174,8 @@ function buildWrappedMethod(contract, key) {
const getFragment = function (...args) {
const fragment = contract.interface.getFunction(key, args);
(0, index_js_3.assert)(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -251,7 +255,8 @@ function buildWrappedMethod(contract, key) {
get: () => {
const fragment = contract.interface.getFunction(key);
(0, index_js_3.assert)(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -262,7 +267,8 @@ function buildWrappedEvent(contract, key) {
const getFragment = function (...args) {
const fragment = contract.interface.getEvent(key, args);
(0, index_js_3.assert)(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -281,7 +287,8 @@ function buildWrappedEvent(contract, key) {
get: () => {
const fragment = contract.interface.getEvent(key);
(0, index_js_3.assert)(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -597,7 +604,7 @@ class BaseContract {
// Return a Proxy that will respond to functions
return new Proxy(this, {
get: (target, _prop, receiver) => {
if (_prop in target || passProperties.indexOf(_prop) >= 0) {
if (_prop in target || passProperties.indexOf(_prop) >= 0 || typeof (_prop) === "symbol") {
return Reflect.get(target, _prop, receiver);
}
const prop = String(_prop);
@ -608,7 +615,7 @@ class BaseContract {
throw new Error(`unknown contract method: ${prop}`);
},
has: (target, prop) => {
if (prop in target || passProperties.indexOf(prop) >= 0) {
if (prop in target || passProperties.indexOf(prop) >= 0 || typeof (prop) === "symbol") {
return Reflect.has(target, prop);
}
return target.interface.hasFunction(String(prop));
@ -746,11 +753,12 @@ class BaseContract {
catch (error) { }
}
if (foundFragment) {
try {
return new wrappers_js_1.EventLog(log, this.interface, foundFragment);
}
else {
return new provider_js_1.Log(log, provider);
catch (error) { }
}
return new provider_js_1.Log(log, provider);
});
}
/**

File diff suppressed because one or more lines are too long

@ -63,7 +63,9 @@ describe("Test Bytes32 strings", function () {
describe("Test Interface", function () {
const iface = new Interface([
"function balanceOf(address owner) returns (uint)",
"event Transfer(address indexed from, address indexed to, uint amount)"
"event Transfer(address indexed from, address indexed to, uint amount)",
// #4244
"event RedemptionRequested(bytes20 indexed walletPubKeyHash, bytes redeemerOutputScript, address indexed redeemer, uint64 requestedAmount, uint64 treasuryFee, uint64 txMaxFee)"
]);
it("does interface stuff; @TODO expand this", function () {
const addr = "0x8ba1f109551bD432803012645Ac136ddd64DBA72";
@ -92,6 +94,18 @@ describe("Test Interface", function () {
assert.equal(filter[0], "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef");
assert.equal(filter[1], "0x0000000000000000000000008ba1f109551bd432803012645ac136ddd64dba72");
assert.equal(filter[2], "0x000000000000000000000000ac1639cf97a3a46d431e6d1216f576622894cbb5");
// See: #4244
// https://goerli.etherscan.io/tx/0xe61cef4cd706db8e23114717a207d76cc6b0df0b74ec52805551c4d1bf347a27#eventlog
// See `RedemptionRequested` event.
{
const walletPubKeyHash = "0x03b74d6893ad46dfdd01b9e0e3b3385f4fce2d1e";
const redeemer = "0x086813525A7dC7dafFf015Cdf03896Fd276eab60";
const filterWithBytes20 = iface.encodeFilterTopics("RedemptionRequested", [walletPubKeyHash, undefined, redeemer]);
assert.equal(filterWithBytes20.length, 3);
assert.equal(filterWithBytes20[0], "0x97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d95");
assert.equal(filterWithBytes20[1], "0x03b74d6893ad46dfdd01b9e0e3b3385f4fce2d1e000000000000000000000000");
assert.equal(filterWithBytes20[2], "0x000000000000000000000000086813525a7dc7dafff015cdf03896fd276eab60");
}
const eventLog = iface.encodeEventLog("Transfer", [addr, addr2, 234]);
assert.equal(eventLog.data, "0x00000000000000000000000000000000000000000000000000000000000000ea");
assert.deepEqual(eventLog.topics, [

File diff suppressed because one or more lines are too long

@ -2,5 +2,5 @@
/**
* The current version of Ethers.
*/
export const version = "6.6.4";
export const version = "6.6.5";
//# sourceMappingURL=_version.js.map

File diff suppressed because one or more lines are too long

@ -426,9 +426,16 @@ export class ParamType {
format = "sighash";
}
if (format === "json") {
let result = {
const name = this.name || undefined; // @TODO: Make this "" (minor bump)
if (this.isArray()) {
const result = JSON.parse(this.arrayChildren.format("json"));
result.name = name;
result.type += `[${(this.arrayLength < 0 ? "" : String(this.arrayLength))}]`;
return JSON.stringify(result);
}
const result = {
type: ((this.baseType === "tuple") ? "tuple" : this.type),
name: (this.name || undefined)
name
};
if (typeof (this.indexed) === "boolean") {
result.indexed = this.indexed;
@ -606,8 +613,13 @@ export class ParamType {
return obj;
}
if (typeof (obj) === "string") {
try {
return ParamType.from(lex(obj), allowIndexed);
}
catch (error) {
assertArgument(false, "invalid param type", "obj", obj);
}
}
else if (obj instanceof TokenString) {
let type = "", baseType = "";
let comps = null;
@ -926,8 +938,13 @@ export class EventFragment extends NamedFragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return EventFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid event fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("event", obj);
const inputs = consumeParams(obj, true);
@ -994,8 +1011,13 @@ export class ConstructorFragment extends Fragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return ConstructorFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid constuctor fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
consumeKeywords(obj, setify(["constructor"]));
const inputs = consumeParams(obj);
@ -1046,8 +1068,13 @@ export class FallbackFragment extends Fragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return FallbackFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid fallback fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const errorObj = obj.toString();
const topIsValid = obj.peekKeyword(setify(["fallback", "receive"]));
@ -1193,8 +1220,13 @@ export class FunctionFragment extends NamedFragment {
return obj;
}
if (typeof (obj) === "string") {
try {
return FunctionFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid function fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("function", obj);
const inputs = consumeParams(obj);
@ -1258,8 +1290,13 @@ export class StructFragment extends NamedFragment {
*/
static from(obj) {
if (typeof (obj) === "string") {
try {
return StructFragment.from(lex(obj));
}
catch (error) {
assertArgument(false, "invalid struct fragment", "obj", obj);
}
}
else if (obj instanceof TokenString) {
const name = consumeName("struct", obj);
const inputs = consumeParams(obj);

File diff suppressed because one or more lines are too long

@ -11,7 +11,7 @@
*/
import { keccak256 } from "../crypto/index.js";
import { id } from "../hash/index.js";
import { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadValue, isHexString, defineProperties, assertArgument, toBeHex, assert } from "../utils/index.js";
import { concat, dataSlice, getBigInt, getBytes, getBytesCopy, hexlify, zeroPadBytes, zeroPadValue, isHexString, defineProperties, assertArgument, toBeHex, assert } from "../utils/index.js";
import { AbiCoder } from "./abi-coder.js";
import { checkResultErrors, Result } from "./coders/abstract-coder.js";
import { ConstructorFragment, ErrorFragment, EventFragment, Fragment, FunctionFragment, ParamType } from "./fragments.js";
@ -876,15 +876,17 @@ getSelector(fragment: ErrorFragment | FunctionFragment): string {
if (param.type === "bool" && typeof (value) === "boolean") {
value = (value ? "0x01" : "0x00");
}
if (param.type.match(/^u?int/)) {
value = toBeHex(value);
else if (param.type.match(/^u?int/)) {
value = toBeHex(value); // @TODO: Should this toTwos??
}
else if (param.type.match(/^bytes/)) {
value = zeroPadBytes(value, 32);
}
else if (param.type === "address") {
// Check addresses are valid
if (param.type === "address") {
this.#abiCoder.encode(["address"], [value]);
}
return zeroPadValue(hexlify(value), 32);
//@TOOD should probably be return toHex(value, 32)
};
values.forEach((value, index) => {
const param = fragment.inputs[index];

File diff suppressed because one or more lines are too long

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

@ -37,6 +37,9 @@ class PreparedTopicFilter {
}
return param.walkAsync(args[index], (type, value) => {
if (type === "address") {
if (Array.isArray(value)) {
return Promise.all(value.map((v) => resolveAddress(v, resolver)));
}
return resolveAddress(value, resolver);
}
return value;
@ -166,7 +169,8 @@ function buildWrappedMethod(contract, key) {
const getFragment = function (...args) {
const fragment = contract.interface.getFunction(key, args);
assert(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -246,7 +250,8 @@ function buildWrappedMethod(contract, key) {
get: () => {
const fragment = contract.interface.getFunction(key);
assert(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -257,7 +262,8 @@ function buildWrappedEvent(contract, key) {
const getFragment = function (...args) {
const fragment = contract.interface.getEvent(key, args);
assert(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key, args }
});
return fragment;
};
@ -276,7 +282,8 @@ function buildWrappedEvent(contract, key) {
get: () => {
const fragment = contract.interface.getEvent(key);
assert(fragment, "no matching fragment", "UNSUPPORTED_OPERATION", {
operation: "fragment"
operation: "fragment",
info: { key }
});
return fragment;
}
@ -592,7 +599,7 @@ export class BaseContract {
// Return a Proxy that will respond to functions
return new Proxy(this, {
get: (target, _prop, receiver) => {
if (_prop in target || passProperties.indexOf(_prop) >= 0) {
if (_prop in target || passProperties.indexOf(_prop) >= 0 || typeof (_prop) === "symbol") {
return Reflect.get(target, _prop, receiver);
}
const prop = String(_prop);
@ -603,7 +610,7 @@ export class BaseContract {
throw new Error(`unknown contract method: ${prop}`);
},
has: (target, prop) => {
if (prop in target || passProperties.indexOf(prop) >= 0) {
if (prop in target || passProperties.indexOf(prop) >= 0 || typeof (prop) === "symbol") {
return Reflect.has(target, prop);
}
return target.interface.hasFunction(String(prop));
@ -741,11 +748,12 @@ export class BaseContract {
catch (error) { }
}
if (foundFragment) {
try {
return new EventLog(log, this.interface, foundFragment);
}
else {
return new Log(log, provider);
catch (error) { }
}
return new Log(log, provider);
});
}
/**

File diff suppressed because one or more lines are too long

@ -93,7 +93,7 @@
"url": "https://www.buymeacoffee.com/ricmoo"
}
],
"gitHead": "a7e4048fe3b75a743cec8c8ef2a5fad4bdc8b14c",
"gitHead": "ac2f5e563b8ec0e91a931470eb6ea58b0c01fb3d",
"homepage": "https://ethers.org",
"keywords": [
"ethereum",
@ -131,5 +131,5 @@
"test-esm": "mocha --reporter ./reporter.cjs ./lib.esm/_tests/test-*.js"
},
"sideEffects": false,
"version": "6.6.4"
"version": "6.6.5"
}

@ -3,4 +3,4 @@
/**
* The current version of Ethers.
*/
export const version: string = "6.6.4";
export const version: string = "6.6.5";