diff --git a/packages/ethers/lib.esm/browser-platform.d.ts b/packages/ethers/lib.esm/browser-platform.d.ts deleted file mode 100644 index c7ff4f86c..000000000 --- a/packages/ethers/lib.esm/browser-platform.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const platform = "browser"; diff --git a/packages/ethers/lib.esm/browser-platform.js b/packages/ethers/lib.esm/browser-platform.js deleted file mode 100644 index 35e2016fe..000000000 --- a/packages/ethers/lib.esm/browser-platform.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -export const platform = "browser"; diff --git a/packages/ethers/lib.esm/platform.d.ts b/packages/ethers/lib.esm/platform.d.ts deleted file mode 100644 index e0115f0b9..000000000 --- a/packages/ethers/lib.esm/platform.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const platform = "node"; diff --git a/packages/ethers/lib.esm/platform.js b/packages/ethers/lib.esm/platform.js deleted file mode 100644 index 91714f6ba..000000000 --- a/packages/ethers/lib.esm/platform.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -export const platform = "node"; diff --git a/packages/ethers/lib/browser-platform.d.ts b/packages/ethers/lib/browser-platform.d.ts deleted file mode 100644 index c7ff4f86c..000000000 --- a/packages/ethers/lib/browser-platform.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const platform = "browser"; diff --git a/packages/ethers/lib/browser-platform.js b/packages/ethers/lib/browser-platform.js deleted file mode 100644 index 5fcae94f9..000000000 --- a/packages/ethers/lib/browser-platform.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.platform = "browser"; diff --git a/packages/ethers/lib/platform.d.ts b/packages/ethers/lib/platform.d.ts deleted file mode 100644 index e0115f0b9..000000000 --- a/packages/ethers/lib/platform.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const platform = "node"; diff --git a/packages/ethers/lib/platform.js b/packages/ethers/lib/platform.js deleted file mode 100644 index 0cd00841c..000000000 --- a/packages/ethers/lib/platform.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.platform = "node"; diff --git a/packages/experimental/lib.esm/eip-provider.d.ts b/packages/experimental/lib.esm/eip-provider.d.ts deleted file mode 100644 index 48b7df34f..000000000 --- a/packages/experimental/lib.esm/eip-provider.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ethers } from "ethers"; -export interface Eip1193Provider { - send: (message: string, params?: Array) => Promise; - on(eventName: string, listener: (...args: Array) => void): this; -} -export declare class EipWrappedProvider extends ethers.providers.JsonRpcProvider { - readonly provider: Eip1193Provider; - constructor(provider: Eip1193Provider, network?: ethers.providers.Networkish); - send(method: string, params: any): Promise; -} diff --git a/packages/experimental/lib.esm/eip-provider.js b/packages/experimental/lib.esm/eip-provider.js deleted file mode 100644 index b8bde451c..000000000 --- a/packages/experimental/lib.esm/eip-provider.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; -import { ethers } from "ethers"; -import { version } from "./_version"; -const logger = new ethers.utils.Logger(version); -export class EipWrappedProvider extends ethers.providers.JsonRpcProvider { - constructor(provider, network) { - logger.checkNew(new.target, EipWrappedProvider); - super("eip1193:/\/", network); - ethers.utils.defineReadOnly(this, "provider", provider); - } - send(method, params) { - return this.provider.send(method, params); - } -} diff --git a/packages/experimental/lib.esm/retry-provider.d.ts b/packages/experimental/lib.esm/retry-provider.d.ts deleted file mode 100644 index 73a0f1bf4..000000000 --- a/packages/experimental/lib.esm/retry-provider.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { ethers } from "ethers"; -export declare type RetryOptions = { - timeout?: number; - floor?: number; - ceiling?: number; - interval?: number; - retryLimit?: number; -}; -export declare class RetryProvider extends ethers.providers.BaseProvider { - readonly provider: ethers.providers.BaseProvider; - readonly options: RetryOptions; - constructor(provider: ethers.providers.BaseProvider, options?: RetryOptions); - perform(method: string, params: any): Promise; -} diff --git a/packages/experimental/lib.esm/retry-provider.js b/packages/experimental/lib.esm/retry-provider.js deleted file mode 100644 index f9059e362..000000000 --- a/packages/experimental/lib.esm/retry-provider.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -// RetryProvider -// -// Wraps an existing Provider to provide retry logic. -// -// See: https://github.com/ethers-io/ethers.js/issues/427 -import { ethers } from "ethers"; -import { poll } from "@ethersproject/web"; -import { version } from "./_version"; -const logger = new ethers.utils.Logger(version); -export class RetryProvider extends ethers.providers.BaseProvider { - constructor(provider, options) { - logger.checkNew(new.target, RetryProvider); - super(provider.getNetwork()); - ethers.utils.defineReadOnly(this, "provider", provider); - ethers.utils.defineReadOnly(this, "options", options || {}); - } - perform(method, params) { - return poll(() => { - return this.provider.perform(method, params).then((result) => { - return result; - }, (error) => { - return undefined; - }); - }, this.options); - } -} -//# sourceMappingURL=retry-provider.js.map \ No newline at end of file diff --git a/packages/experimental/lib.esm/retry-provider.js.map b/packages/experimental/lib.esm/retry-provider.js.map deleted file mode 100644 index ca4da72e5..000000000 --- a/packages/experimental/lib.esm/retry-provider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retry-provider.js","sourceRoot":"","sources":["../src.ts/retry-provider.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,gBAAgB;AAChB,EAAE;AACF,qDAAqD;AACrD,EAAE;AACF,yDAAyD;AAGzD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAmBhD,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,SAAS,CAAC,YAAY;IAI5D,YAAY,QAAuC,EAAE,OAAsB;QACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC3C,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,IAAI,EAAG,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,MAAW;QAC/B,OAAO,IAAI,CAAC,GAAG,EAAE;YACb,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACzD,OAAO,MAAM,CAAA;YACjB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;gBACT,OAAO,SAAS,CAAA;YACpB,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;CACJ"} \ No newline at end of file diff --git a/packages/experimental/lib/eip-provider.d.ts b/packages/experimental/lib/eip-provider.d.ts deleted file mode 100644 index 48b7df34f..000000000 --- a/packages/experimental/lib/eip-provider.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ethers } from "ethers"; -export interface Eip1193Provider { - send: (message: string, params?: Array) => Promise; - on(eventName: string, listener: (...args: Array) => void): this; -} -export declare class EipWrappedProvider extends ethers.providers.JsonRpcProvider { - readonly provider: Eip1193Provider; - constructor(provider: Eip1193Provider, network?: ethers.providers.Networkish); - send(method: string, params: any): Promise; -} diff --git a/packages/experimental/lib/eip-provider.js b/packages/experimental/lib/eip-provider.js deleted file mode 100644 index cd6041eb4..000000000 --- a/packages/experimental/lib/eip-provider.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var ethers_1 = require("ethers"); -var _version_1 = require("./_version"); -var logger = new ethers_1.ethers.utils.Logger(_version_1.version); -var EipWrappedProvider = /** @class */ (function (_super) { - __extends(EipWrappedProvider, _super); - function EipWrappedProvider(provider, network) { - var _newTarget = this.constructor; - var _this = this; - logger.checkNew(_newTarget, EipWrappedProvider); - _this = _super.call(this, "eip1193:/\/", network) || this; - ethers_1.ethers.utils.defineReadOnly(_this, "provider", provider); - return _this; - } - EipWrappedProvider.prototype.send = function (method, params) { - return this.provider.send(method, params); - }; - return EipWrappedProvider; -}(ethers_1.ethers.providers.JsonRpcProvider)); -exports.EipWrappedProvider = EipWrappedProvider; diff --git a/packages/experimental/lib/retry-provider.d.ts b/packages/experimental/lib/retry-provider.d.ts deleted file mode 100644 index 73a0f1bf4..000000000 --- a/packages/experimental/lib/retry-provider.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { ethers } from "ethers"; -export declare type RetryOptions = { - timeout?: number; - floor?: number; - ceiling?: number; - interval?: number; - retryLimit?: number; -}; -export declare class RetryProvider extends ethers.providers.BaseProvider { - readonly provider: ethers.providers.BaseProvider; - readonly options: RetryOptions; - constructor(provider: ethers.providers.BaseProvider, options?: RetryOptions); - perform(method: string, params: any): Promise; -} diff --git a/packages/experimental/lib/retry-provider.js b/packages/experimental/lib/retry-provider.js deleted file mode 100644 index 2b4a7e1b7..000000000 --- a/packages/experimental/lib/retry-provider.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -// RetryProvider -// -// Wraps an existing Provider to provide retry logic. -// -// See: https://github.com/ethers-io/ethers.js/issues/427 -var ethers_1 = require("ethers"); -var web_1 = require("@ethersproject/web"); -var _version_1 = require("./_version"); -var logger = new ethers_1.ethers.utils.Logger(_version_1.version); -var RetryProvider = /** @class */ (function (_super) { - __extends(RetryProvider, _super); - function RetryProvider(provider, options) { - var _newTarget = this.constructor; - var _this = this; - logger.checkNew(_newTarget, RetryProvider); - _this = _super.call(this, provider.getNetwork()) || this; - ethers_1.ethers.utils.defineReadOnly(_this, "provider", provider); - ethers_1.ethers.utils.defineReadOnly(_this, "options", options || {}); - return _this; - } - RetryProvider.prototype.perform = function (method, params) { - var _this = this; - return web_1.poll(function () { - return _this.provider.perform(method, params).then(function (result) { - return result; - }, function (error) { - return undefined; - }); - }, this.options); - }; - return RetryProvider; -}(ethers_1.ethers.providers.BaseProvider)); -exports.RetryProvider = RetryProvider; -//# sourceMappingURL=retry-provider.js.map \ No newline at end of file diff --git a/packages/experimental/lib/retry-provider.js.map b/packages/experimental/lib/retry-provider.js.map deleted file mode 100644 index 925e813e4..000000000 --- a/packages/experimental/lib/retry-provider.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"retry-provider.js","sourceRoot":"","sources":["../src.ts/retry-provider.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;AAEb,gBAAgB;AAChB,EAAE;AACF,qDAAqD;AACrD,EAAE;AACF,yDAAyD;AAGzD,iCAAgC;AAChC,0CAA0C;AAE1C,uCAAqC;AAErC,IAAM,MAAM,GAAG,IAAI,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAO,CAAC,CAAC;AAmBhD;IAAmC,iCAA6B;IAI5D,uBAAY,QAAuC,EAAE,OAAsB;;QAA3E,iBAKC;QAJG,MAAM,CAAC,QAAQ,aAAa,aAAa,CAAC,CAAC;QAC3C,QAAA,kBAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,eAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAI,EAAE,SAAS,EAAE,OAAO,IAAI,EAAG,CAAC,CAAC;;IACjE,CAAC;IAED,+BAAO,GAAP,UAAQ,MAAc,EAAE,MAAW;QAAnC,iBAQC;QAPG,OAAO,UAAI,CAAC;YACR,OAAO,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,MAAM;gBACrD,OAAO,MAAM,CAAA;YACjB,CAAC,EAAE,UAAC,KAAK;gBACL,OAAO,SAAS,CAAA;YACpB,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IACL,oBAAC;AAAD,CAAC,AApBD,CAAmC,eAAM,CAAC,SAAS,CAAC,YAAY,GAoB/D;AApBY,sCAAa"} \ No newline at end of file diff --git a/packages/providers/lib.esm/eip-provider.d.ts b/packages/providers/lib.esm/eip-provider.d.ts deleted file mode 100644 index 3744cbeb2..000000000 --- a/packages/providers/lib.esm/eip-provider.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Networkish } from "@ethersproject/networks"; -import { JsonRpcProvider } from "./json-rpc-provider"; -export interface Eip1193Provider { - isMetaMask?: boolean; - send: (message: string, params?: Array) => Promise; - on(eventName: string, listener: (...args: Array) => void): this; -} -export declare class EipWrappedProvider extends JsonRpcProvider { - readonly provider: Eip1193Provider; - constructor(provider: Eip1193Provider, network?: Networkish); - send(method: string, params: any): Promise; -} diff --git a/packages/providers/lib.esm/eip-provider.js b/packages/providers/lib.esm/eip-provider.js deleted file mode 100644 index 9849463af..000000000 --- a/packages/providers/lib.esm/eip-provider.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -import { defineReadOnly } from "@ethersproject/properties"; -import { Logger } from "@ethersproject/logger"; -import { version } from "./_version"; -const logger = new Logger(version); -import { JsonRpcProvider } from "./json-rpc-provider"; -export class EipWrappedProvider extends JsonRpcProvider { - constructor(provider, network) { - logger.checkNew(new.target, EipWrappedProvider); - // HTTP has a host; IPC has a path. - super("eip1193:/\/", network); - defineReadOnly(this, "provider", provider); - } - send(method, params) { - // Metamask complains about eth_sign (and on some versions hangs) - if (method == "eth_sign" && this.provider.isMetaMask) { - // https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_sign - method = "personal_sign"; - params = [params[1], params[0]]; - } - return this.provider.send(method, params); - } -} diff --git a/packages/providers/lib/eip-provider.d.ts b/packages/providers/lib/eip-provider.d.ts deleted file mode 100644 index 3744cbeb2..000000000 --- a/packages/providers/lib/eip-provider.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Networkish } from "@ethersproject/networks"; -import { JsonRpcProvider } from "./json-rpc-provider"; -export interface Eip1193Provider { - isMetaMask?: boolean; - send: (message: string, params?: Array) => Promise; - on(eventName: string, listener: (...args: Array) => void): this; -} -export declare class EipWrappedProvider extends JsonRpcProvider { - readonly provider: Eip1193Provider; - constructor(provider: Eip1193Provider, network?: Networkish); - send(method: string, params: any): Promise; -} diff --git a/packages/providers/lib/eip-provider.js b/packages/providers/lib/eip-provider.js deleted file mode 100644 index 59ac7be3f..000000000 --- a/packages/providers/lib/eip-provider.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var properties_1 = require("@ethersproject/properties"); -var logger_1 = require("@ethersproject/logger"); -var _version_1 = require("./_version"); -var logger = new logger_1.Logger(_version_1.version); -var json_rpc_provider_1 = require("./json-rpc-provider"); -var EipWrappedProvider = /** @class */ (function (_super) { - __extends(EipWrappedProvider, _super); - function EipWrappedProvider(provider, network) { - var _newTarget = this.constructor; - var _this = this; - logger.checkNew(_newTarget, EipWrappedProvider); - // HTTP has a host; IPC has a path. - _this = _super.call(this, "eip1193:/\/", network) || this; - properties_1.defineReadOnly(_this, "provider", provider); - return _this; - } - EipWrappedProvider.prototype.send = function (method, params) { - // Metamask complains about eth_sign (and on some versions hangs) - if (method == "eth_sign" && this.provider.isMetaMask) { - // https://github.com/ethereum/go-ethereum/wiki/Management-APIs#personal_sign - method = "personal_sign"; - params = [params[1], params[0]]; - } - return this.provider.send(method, params); - }; - return EipWrappedProvider; -}(json_rpc_provider_1.JsonRpcProvider)); -exports.EipWrappedProvider = EipWrappedProvider; diff --git a/packages/testcases/lib.esm/generation-scripts/abi.js b/packages/testcases/lib.esm/generation-scripts/abi.js deleted file mode 100644 index 479ccb4dc..000000000 --- a/packages/testcases/lib.esm/generation-scripts/abi.js +++ /dev/null @@ -1,523 +0,0 @@ -"use strict"; -//let web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:8549')); -//import { compile as _compile } from "solc"; -import { solc } from "@ethersproject/cli"; -import { randomHexString, randomNumber } from ".."; -import { BN, keccak256, toChecksumAddress } from "ethereumjs-util"; -function hasPrefix(str, prefix) { - return (str.substring(0, prefix.length) === prefix); -} -function repeat(str, count) { - let result = ""; - for (let i = 0; i < count; i++) { - result += str; - } - return result; -} -function indent(tabs) { - let result = ''; - while (result.length < 4 * tabs) { - result += " "; - } - return result; -} -function getStructName(base) { - return "Struct" + keccak256(base).slice(0, 4).toString("hex"); -} -class Code { - constructor() { - this.depth = 0; - this.lines = []; - } - get code() { - return this.lines.join("\n"); //.replace(/ +\n/g, "\n").replace(/(\}\n\n+)/g, "}\n"); - } - comment(line) { - this.add(""); - this.add("/" + "/ " + line); - } - add(line) { - let open = (line.trim().substring(line.trim().length - 1) === "{"); - let close = line.trim()[0] === "}"; - if (close) { - this.depth--; - } - this.lines.push(indent(this.depth) + line); - //if (close) { this.lines.push(""); } - if (open) { - this.depth++; - } - } -} -let chars = []; -function addChars(start, length) { - for (let i = start; i < start + length; i++) { - chars.push(String.fromCharCode(i)); - } -} -addChars(48, 10); -addChars(65, 26); -// Returns the functions required to generate code for a specific parameter type and value -function getGenCode(testData) { - let type = testData.type; - let value = (testData.value != null) ? testData.value : "__crash__"; - let isArray = type.match(/^(.*)(\[[0-9]*\])$/); - if (isArray) { - let base = isArray[1]; - let suffix = isArray[2]; - let isDynamic = (isArray[2] === "[]"); - return { - assign: (name, code) => { - if (isDynamic) { - //let child = getGenCode({ type: base }); - //let decl = child.decl(name).split(" "); - let struct = base; - if (type.substring(0, 5) === "tuple") { - struct = getStructName(base); - } - code.add(name + " = new " + struct + "[](" + String(value.length) + ");"); - } - value.forEach((value, index) => { - console.log("SSS", base, value); - let child = getGenCode({ type: base, value: value }); - child.assign(name + "[" + String(index) + "]", code); - }); - }, - decl: (name) => { - let child = getGenCode({ type: isArray[1] }); - // Inject the array suffix to the type and add memory location - // - uint256 p0 => uint256[] memory p0 - // - bytes memory p0 => bytes[] memory p0 - let result = child.decl(name).split(" "); - result[0] = result[0] + suffix; - if (result[1] !== "memory") { - result.splice(1, 0, "memory"); - } - return result.join(" "); - }, - structs: (code) => { - let child = getGenCode({ type: isArray[1] }); - child.structs(code); - } - }; - } - let isTuple = type.match(/^tuple\((.*)\)$/); - if (isTuple) { - let children = []; - // Split up the child types - let accum = ""; - let balance = 0; - let types = isTuple[1]; - for (let i = 0; i < types.length; i++) { - let c = types[i]; - if (c === "(") { - balance++; - accum += c; - } - else if (c === ")") { - balance--; - accum += c; - } - else if (c === ",") { - if (balance === 0) { - children.push(accum); - accum = ""; - } - else { - accum += c; - } - } - else { - accum += c; - } - } - if (accum) { - children.push(accum); - } - return { - assign: (name, code) => { - children.forEach((child, index) => { - console.log("TT", child, value[index]); - getGenCode({ - type: child, - value: value[index] - }).assign(name + ".m" + String(index), code); - }); - }, - decl: (name) => { - return (getStructName(type) + " memory " + name); - }, - structs: (code) => { - // Include any dependency Structs first - children.forEach((child) => { - getGenCode({ type: child }).structs(code); - }); - // Add this struct - code.add("struct " + getStructName(type) + " {"); - children.forEach((child, index) => { - let decl = getGenCode({ - type: child - }).decl("m" + String(index)).replace(" memory ", " "); - code.add(decl + ";"); - }); - code.add("}"); - } - }; - } - let isFixedBytes = type.match(/^bytes([0-9]+)$/); - let isNumber = type.match(/^(u?)int([0-9]*)$/); - let isFixedNumber = type.match(/^(u?)fixed(([0-9]+)x([0-9]+))?$/); - if (type === "address" || type === "bool" || isNumber || isFixedNumber || isFixedBytes) { - return { - assign: (name, code) => { - if (type === "boolean") { - code.add(name + " = " + (value ? "true" : "false") + ";"); - } - else if (isFixedBytes) { - code.add(name + " = hex\"" + value.substring(2) + "\";"); - } - else { - code.add(name + " = " + value + ";"); - } - }, - decl: (name) => { - return (type + " " + name); - }, - structs: (code) => { } - }; - } - if (type === "string") { - return { - assign: (name, code) => { - code.add(name + " = " + JSON.stringify(value) + ";"); - }, - decl: (name) => { - return ("string memory " + name); - }, - structs: (code) => { } - }; - } - if (type === "bytes") { - let valueBytes = Buffer.from(value.substring(2), "hex"); - return { - assign: (name, code) => { - code.add("{"); - code.add("bytes memory temp = new bytes(" + valueBytes.length + ");"); - code.add(name + " = temp;"); - code.add("assembly {"); - // Store the length - code.add("mstore(temp, " + valueBytes.length + ")"); - // Store each byte - for (let i = 0; i < valueBytes.length; i++) { - code.add("mstore8(add(temp, " + (32 + i) + "), " + valueBytes[i] + ")"); - } - code.add("}"); - code.add("}"); - }, - decl: (name) => { - return ("bytes memory " + name); - }, - structs: (code) => { } - }; - } - throw new Error("Could not produce GenCode: " + type); - return null; -} -// Generates a random type and value for the type -function generateTest(seed) { - let basetype = randomNumber(seed + "-type", 0, 10); - switch (basetype) { - // Address - case 0: - return (seed) => { - let value = toChecksumAddress(randomHexString(seed + "-value", 20)); - return { - type: "address", - value: value - }; - }; - // Boolean - case 1: - return (seed) => { - let value = (randomNumber(seed + "-value", 0, 2) ? true : false); - return { - type: "bool", - value: value - }; - }; - // Number - case 2: { - let signed = randomNumber(seed + "-signed", 0, 2); - let width = randomNumber(seed + "-width", 0, 33) * 8; - let type = (signed ? "" : "u") + "int"; - // Allow base int and uint - if (width) { - type += String(width); - } - else { - width = 256; - } - return (seed) => { - let hex = randomHexString(seed + "-value", width / 8).substring(2); - if (signed) { - // Sign bit set (we don't bother with 2's compliment - let msb = parseInt(hex[0], 16); - if (msb >= 8) { - hex = "-" + String(msb & 0x7) + hex.substring(1); - } - } - let value = (new BN(hex, 16)).toString(); - return { - type: type, - value: value - }; - }; - } - // Fixed - case 3: { - // Fixed Point values are not supported yet - return generateTest(seed + "-next"); - let signed = randomNumber(seed + "-signed", 0, 2); - let width = randomNumber(seed + "-width", 0, 33) * 8; - let decimals = 0; - let maxDecimals = (new BN(repeat("7f", ((width === 0) ? 32 : (width / 8))), 16)).toString().length - 1; - let attempt = 0; - while (true) { - decimals = randomNumber(seed + "-decimals" + String(attempt), 0, 80); - if (decimals < maxDecimals) { - break; - } - attempt++; - } - let type = (signed ? "" : "u") + "fixed"; - // Allow base int and uint - if (width) { - type += String(width) + "x" + String(decimals); - } - else { - width = 128; - decimals = 18; - } - return (seed) => { - let hex = randomHexString(seed + "-value", width / 8).substring(2); - // Use the top bit to indicate negative values - let negative = false; - if (signed) { - // Sign bit set (we don't bother with 2's compliment - let msb = parseInt(hex[0], 16); - if (msb >= 8) { - hex = String(msb & 0x7) + hex.substring(1); - negative = true; - } - } - // Zero-pad the value so we get at least 1 whole digit - let dec = (new BN(hex, 16)).toString(); - while (dec.length < decimals + 1) { - dec = "0" + dec; - } - // Split the decimals with the decimal point - let split = dec.length - decimals; - let value = dec.substring(0, split) + "." + dec.substring(split); - if (negative) { - value = "-" + value; - } - // Prevent ending in a decimal (e.g. "45." - if (value.substring(value.length - 1) === ".") { - value = value.substring(0, value.length - 1); - } - return { - type: type, - value: value - }; - }; - } - // BytesXX - case 4: { - let length = randomNumber(seed + "-length", 1, 33); - let type = "bytes" + String(length); - return (seed) => { - let value = randomHexString(seed + "-value", length); - return { - type: type, - value: value - }; - }; - } - // String - case 5: - return (seed) => { - let length = randomNumber(seed + "-length", 0, 36); - let value = ""; - while (value.length < length) { - value += chars[randomNumber(seed + "-value" + String(value.length), 0, chars.length)]; - } - return { - type: "string", - value: value - }; - }; - // Bytes - case 6: - return (seed) => { - let length = randomNumber(seed + "-length", 0, 12); // @TODO: increase this - let value = randomHexString(seed + "-value", length); - //let valueBytes = Buffer.from(value.substring(2), "hex"); - return { - type: "bytes", - value: value - }; - }; - // Fixed-Length Array (e.g. address[4]) - case 7: - // Falls-through - // Dynamic-Length Array (e.g. address[]) - case 8: { - let dynamic = (basetype === 8); - let subType = generateTest(seed + "-subtype"); - let length = randomNumber(seed + "-length", 1, 3); - let suffix = "[" + ((!dynamic) ? length : "") + "]"; - let type = subType("-index0").type + suffix; - return (seed) => { - if (dynamic) { - length = randomNumber(seed + "-length", 0, 3); - } - let children = []; - for (let i = 0; i < length; i++) { - children.push(subType(seed + "-index" + String(i))); - } - return { - type: type, - value: children.map((data) => data.value) - }; - }; - } - // Tuple - case 9: { - let count = randomNumber(seed + "-count", 1, 8); - let subTypes = []; - for (let i = 0; i < count; i++) { - let cSeed = seed + "-subtype" + String(i); - subTypes.push(generateTest(cSeed)); - } - let type = "tuple(" + subTypes.map(s => s("-index0").type).join(",") + ")"; - let struct = "Struct" + randomHexString(seed + "-name", 4).substring(2); - return (seed) => { - let children = []; - subTypes.forEach((subType) => { - children.push(subType(seed + "-value")); - }); - return { - type: type, - struct: struct, - value: children.map(c => c.value), - }; - }; - } - } - throw new Error("bad things"); - return null; -} -// Returns true iff the types are able to be non-standard pack encoded -function checkPack(types) { - for (let i = 0; i < types.length; i++) { - let type = types[i]; - if (hasPrefix(type, "tuple")) { - return false; - } - if (hasPrefix(type, "bytes[")) { - return false; - } - if (hasPrefix(type, "string[")) { - return false; - } - let firstDynamic = type.indexOf("[]"); - if (firstDynamic >= 0 && firstDynamic != type.length - 2) { - return false; - } - } - return true; -} -// Generates a Solidity source files with the parameter types and values -function generateSolidity(params) { - let plist = []; - for (let i = 0; i < params.length; i++) { - plist.push("p" + String(i)); - } - let genCodes = params.map(p => getGenCode(p)); - let code = new Code(); - /////////////////// - // Pragma - code.add("pragma experimental ABIEncoderV2;"); - code.add("pragma solidity ^0.5.5;"); - code.add(""); - /////////////////// - // Header - code.add("contract Test {"); - /////////////////// - // Structs - genCodes.forEach((genCode) => { - genCode.structs(code); - }); - /////////////////// - // test function - code.add("function test() public pure returns (" + genCodes.map((g, i) => (g.decl("p" + String(i)))).join(", ") + ") {"); - genCodes.forEach((genCode, index) => { - genCode.assign("p" + index, code); - }); - code.add("}"); - /////////////////// - // encode - code.add("function encode() public pure returns (bytes memory data){"); - code.comment("Declare all parameters"); - genCodes.forEach((genCode, index) => { - code.add(genCode.decl("p" + index) + ";"); - }); - code.comment("Assign all parameters"); - genCodes.forEach((genCode, index) => { - genCode.assign("p" + index, code); - }); - code.add(""); - code.add("return abi.encode(" + params.map((p, i) => ("p" + i)).join(", ") + ");"); - code.add("}"); - /////////////////// - // encodePacked - if (checkPack(params.map(p => p.type))) { - code.add("function encodePacked() public pure returns (bytes memory data){"); - code.comment("Declare all parameters"); - genCodes.forEach((genCode, index) => { - code.add(genCode.decl("p" + index) + ";"); - }); - code.comment("Assign all parameters"); - genCodes.forEach((genCode, index) => { - genCode.assign("p" + index, code); - }); - code.add(""); - code.add("return abi.encodePacked(" + params.map((p, i) => ("p" + i)).join(", ") + ");"); - code.add("}"); - } - /////////////////// - // Footer - code.add("}"); - return code.code; -} -for (let i = 0; i < 100; i++) { - let params = []; - console.log(i, randomNumber(String(i) + "-length", 1, 6)); - let length = randomNumber(String(i) + "-length", 1, 6); - for (let j = 0; j < length; j++) { - params.push(generateTest(String(i) + String(j) + "-type")(String(i) + String(j) + "-test")); - } - let solidity = generateSolidity(params); - console.log(solidity); - console.log(i); - let bytecode = solc.compile(solidity)[0].bytecode; - //console.log(params.map(p => p.type).join(", ")); - //console.log(bytecode); - let testcase = { - //solidity: solidity, - bytecode: bytecode, - types: params.map(p => p.type), - value: params.map(p => p.value), - }; - console.log(testcase); -} diff --git a/packages/testcases/lib.esm/generation-scripts/hdnode.js b/packages/testcases/lib.esm/generation-scripts/hdnode.js deleted file mode 100644 index df3c6c6ae..000000000 --- a/packages/testcases/lib.esm/generation-scripts/hdnode.js +++ /dev/null @@ -1,106 +0,0 @@ -'use strict'; -import fs from "fs"; -import { resolve } from "path"; -import * as bip39 from "bip39"; -import { HDNode } from "bitcoinjs-lib"; -import * as ethereumUtil from "ethereumjs-util"; -import { randomHexString, randomNumber, saveTests } from ".."; -function getPath(seed) { - let path = "m"; - let count = randomNumber(seed + "-getPath-1", 1, 7); - let hardened = randomNumber(seed + "-getPath-2", 0, count + 2); - for (let i = 0; i < count; i++) { - path += "/" + randomNumber(seed + "-getPath-3" + i, 0, 12); - if (i < hardened) { - path += "'"; - } - } - return path; -} -function getHD(seed) { - let rootNode = HDNode.fromSeedHex(seed); - let privateKey = rootNode.keyPair.d.toBuffer(32); - let hdnodes = [{ - path: 'm', - privateKey: '0x' + privateKey.toString('hex'), - address: '0x' + ethereumUtil.privateToAddress(privateKey).toString('hex'), - }]; - for (let j = 0; j < 5; j++) { - let path = getPath(seed + '-hdnode-' + j); - let node = rootNode.derivePath(path); - let privateKey = node.keyPair.d.toBuffer(32); - hdnodes.push({ - path: path, - privateKey: '0x' + privateKey.toString('hex'), - address: '0x' + ethereumUtil.privateToAddress(privateKey).toString('hex'), - }); - } - return hdnodes; -} -const testcases = []; -// https://medium.com/@alexberegszaszi/why-do-my-bip32-wallets-disagree-6f3254cc5846#.6tqszlvf4 -testcases.push({ - name: "axic", - locale: "en", - entropy: '0xb0a30c7e93a58094d213c4c0aaba22da', - mnemonic: 'radar blur cabbage chef fix engine embark joy scheme fiction master release', - seed: '0xed37b3442b3d550d0fbb6f01f20aac041c245d4911e13452cac7b1676a070eda66771b71c0083b34cc57ca9c327c459a0ec3600dbaf7f238ff27626c8430a806', - hdnodes: [ - { - path: "m/44'/60'/0'/0/0", - address: '0xac39b311dceb2a4b2f5d8461c1cdaf756f4f7ae9', - privateKey: '0xb96e9ccb774cc33213cbcb2c69d3cdae17b0fe4888a1ccd343cbd1a17fd98b18', - } - ] -}); -["en", "es", "fr", "it", "ja", "ko", "zh_cn", "zh_tw"].forEach((locale) => { - let tests = JSON.parse(fs.readFileSync(resolve(__dirname, "../input/easyseed-bip39/bip39_vectors." + locale + ".json")).toString()); - tests.forEach((test, index) => { - testcases.push({ - name: ("easyseed-" + locale + "-" + index), - entropy: "0x" + test.entropy, - locale: locale, - mnemonic: test.mnemonic, - password: (test.passphrase || ''), - seed: "0x" + test.seed, - hdnodes: [] - }); - }); -}); -console.log("@TODO: This should be 1024"); -for (let i = 0; i < 10; i++) { - let strength = 16 + 4 * randomNumber('random-1-' + i, 0, 5); - let entropy = randomHexString('random-2-' + i, strength); - let mnemonic = bip39.entropyToMnemonic(entropy.substring(2)); - let seed = bip39.mnemonicToSeedHex(mnemonic); - testcases.push({ - name: "random-" + i, - locale: "en", - entropy: entropy, - mnemonic: mnemonic, - seed: '0x' + seed, - hdnodes: getHD(seed), - }); -} -let trezor = require('../input/tests-trezor-bip39.json'); -trezor.english.forEach((testcase, i) => { - testcases.push({ - name: "trezor-" + i, - locale: "en", - entropy: '0x' + testcase[0], - mnemonic: testcase[1], - seed: '0x' + testcase[2], - hdnodes: getHD(testcase[2]), - password: 'TREZOR', - }); -}); -/* -let seed = bip39.mnemonicToSeedHex('radar blur cabbage chef fix engine embark joy scheme fiction master release'); -console.log('Seed', seed); -let entropy = bip39.mnemonicToEntropy('radar blur cabbage chef fix engine embark joy scheme fiction master release'); -console.log('Entropy', entropy); -let rootNode = HDNode.fromSeedHex(seed); -let node = rootNode.derivePath("m/44'/60'/0'/0/0"); -console.log('PrivateKey', node.keyPair.d.toBuffer(32).toString('hex')), -*/ -saveTests('hdnode', testcases); diff --git a/packages/testcases/lib.esm/generation-scripts/nameprep.js b/packages/testcases/lib.esm/generation-scripts/nameprep.js deleted file mode 100644 index 620f7bf4c..000000000 --- a/packages/testcases/lib.esm/generation-scripts/nameprep.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; -import fs from "fs"; -import { resolve } from "path"; -import { saveTests } from ".."; -const testcases = JSON.parse(fs.readFileSync(resolve(__dirname, "../input/nameprep-josefsson-idn.json")).toString()); -saveTests("nameprep", testcases); diff --git a/packages/testcases/lib.esm/generation-scripts/units.js b/packages/testcases/lib.esm/generation-scripts/units.js deleted file mode 100644 index feb55940e..000000000 --- a/packages/testcases/lib.esm/generation-scripts/units.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; -import fs from "fs"; -import { resolve } from "path"; -import { saveTests } from ".."; -const testcases = JSON.parse(fs.readFileSync(resolve(__dirname, "../input/units.json")).toString()); -saveTests("units", testcases); diff --git a/packages/testcases/lib.esm/generation-scripts/wallets.js b/packages/testcases/lib.esm/generation-scripts/wallets.js deleted file mode 100644 index 8ee89a891..000000000 --- a/packages/testcases/lib.esm/generation-scripts/wallets.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; -import fs from "fs"; -import { resolve } from "path"; -import { saveTests } from ".."; -const testcases = []; -const mnemonics = { - '15db397ed5f682acb22b0afc6c8de4cdfbda7cbc': 'debris glass rich exotic window other film slow expose flight either wealth', - '012363d61bdc53d0290a0f25e9c89f8257550fb8': 'service basket parent alcohol fault similar survey twelve hockey cloud walk panel' -}; -const inputDir = resolve(__dirname, "../input/wallets"); -fs.readdirSync(inputDir).forEach((filename) => { - let content = fs.readFileSync(resolve(inputDir, filename)).toString(); - let data = JSON.parse(content); - const comps = filename.split(".")[0].split("-"); - testcases.push({ - name: comps[1], - type: (data.ethaddr ? "crowdsale" : "secret-storage"), - hasAddress: !!data.address, - address: ("0x" + comps[2]), - privateKey: ("0x" + comps[3]), - mnemonic: (mnemonics[comps[2]] || null), - password: comps[4], - json: content - }); -}); -saveTests("wallets", testcases); diff --git a/packages/testcases/lib.esm/generation-scripts/wordlists.js b/packages/testcases/lib.esm/generation-scripts/wordlists.js deleted file mode 100644 index 3ec9f0c14..000000000 --- a/packages/testcases/lib.esm/generation-scripts/wordlists.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; -import fs from "fs"; -import { resolve } from "path"; -import { saveTests } from ".."; -const testcases = []; -["cz", "en", "es", "fr", "it", "ja", "ko", "zh_cn", "zh_tw"].forEach((locale) => { - let content = fs.readFileSync(resolve(__dirname, "../../input/wordlists", "lang-" + locale + ".txt")).toString(); - testcases.push({ - content: content, - locale: locale - }); -}); -saveTests("wordlists", testcases);