docs: added jsdocs
This commit is contained in:
parent
d190e654f8
commit
46ddc89441
@ -10,30 +10,89 @@ import {
|
|||||||
} from "../utils/index.js";
|
} from "../utils/index.js";
|
||||||
import { id } from "../hash/index.js";
|
import { id } from "../hash/index.js";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A type description in a JSON API.
|
||||||
|
*/
|
||||||
export interface JsonFragmentType {
|
export interface JsonFragmentType {
|
||||||
|
/**
|
||||||
|
* The parameter name.
|
||||||
|
*/
|
||||||
readonly name?: string;
|
readonly name?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the parameter is indexed.
|
||||||
|
*/
|
||||||
readonly indexed?: boolean;
|
readonly indexed?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of the parameter.
|
||||||
|
*/
|
||||||
readonly type?: string;
|
readonly type?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The internal Solidity type.
|
||||||
|
*/
|
||||||
readonly internalType?: string;
|
readonly internalType?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The components for a tuple.
|
||||||
|
*/
|
||||||
readonly components?: ReadonlyArray<JsonFragmentType>;
|
readonly components?: ReadonlyArray<JsonFragmentType>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A fragment for a method, event or error in a JSON API.
|
||||||
|
*/
|
||||||
export interface JsonFragment {
|
export interface JsonFragment {
|
||||||
|
/**
|
||||||
|
* The name of the error, event, function, etc.
|
||||||
|
*/
|
||||||
readonly name?: string;
|
readonly name?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of the fragment (e.g. ``event``, ``"function"``, etc.)
|
||||||
|
*/
|
||||||
readonly type?: string;
|
readonly type?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the event is anonymous.
|
||||||
|
*/
|
||||||
readonly anonymous?: boolean;
|
readonly anonymous?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the function is payable.
|
||||||
|
*/
|
||||||
readonly payable?: boolean;
|
readonly payable?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the function is constant.
|
||||||
|
*/
|
||||||
readonly constant?: boolean;
|
readonly constant?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mutability state of the function.
|
||||||
|
*/
|
||||||
readonly stateMutability?: string;
|
readonly stateMutability?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The input parameters.
|
||||||
|
*/
|
||||||
readonly inputs?: ReadonlyArray<JsonFragmentType>;
|
readonly inputs?: ReadonlyArray<JsonFragmentType>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The output parameters.
|
||||||
|
*/
|
||||||
readonly outputs?: ReadonlyArray<JsonFragmentType>;
|
readonly outputs?: ReadonlyArray<JsonFragmentType>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The gas limit to use when sending a transaction for this function.
|
||||||
|
*/
|
||||||
readonly gas?: string;
|
readonly gas?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The format to serialize the output as.
|
||||||
|
*/
|
||||||
export type FormatType =
|
export type FormatType =
|
||||||
// Bare formatting, as is needed for computing a sighash of an event or function
|
// Bare formatting, as is needed for computing a sighash of an event or function
|
||||||
"sighash" |
|
"sighash" |
|
||||||
@ -429,8 +488,17 @@ function verifyBasicType(type: string): string {
|
|||||||
const _guard = { };
|
const _guard = { };
|
||||||
|
|
||||||
|
|
||||||
export type FragmentWalkFunc = (type: string, value: any) => any;
|
/**
|
||||||
export type FragmentWalkAsyncFunc = (type: string, value: any) => any | Promise<any>;
|
* When [walking](ParamType-walk) a [[ParamType]], this is called
|
||||||
|
* on each component.
|
||||||
|
*/
|
||||||
|
export type ParamTypeWalkFunc = (type: string, value: any) => any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When [walking asynchronously](ParamType-walkAsync) a [[ParamType]],
|
||||||
|
* this is called on each component.
|
||||||
|
*/
|
||||||
|
export type ParamTypeWalkAsyncFunc = (type: string, value: any) => any | Promise<any>;
|
||||||
|
|
||||||
const internal = Symbol.for("_ethers_internal");
|
const internal = Symbol.for("_ethers_internal");
|
||||||
|
|
||||||
@ -441,28 +509,54 @@ const ConstructorFragmentInternal = "_ConstructorInternal";
|
|||||||
const FunctionFragmentInternal = "_FunctionInternal";
|
const FunctionFragmentInternal = "_FunctionInternal";
|
||||||
const StructFragmentInternal = "_StructInternal";
|
const StructFragmentInternal = "_StructInternal";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Each input and output of a [[Fragment]] is an Array of **PAramType**.
|
||||||
|
*/
|
||||||
export class ParamType {
|
export class ParamType {
|
||||||
|
|
||||||
// The local name of the parameter (of "" if unbound)
|
/**
|
||||||
|
* The local name of the parameter (or ``""`` if unbound)
|
||||||
|
*/
|
||||||
readonly name!: string;
|
readonly name!: string;
|
||||||
|
|
||||||
// The fully qualified type (e.g. "address", "tuple(address)", "uint256[3][]"
|
/**
|
||||||
|
* The fully qualified type (e.g. ``"address"``, ``"tuple(address)"``,
|
||||||
|
* ``"uint256[3][]"``)
|
||||||
|
*/
|
||||||
readonly type!: string;
|
readonly type!: string;
|
||||||
|
|
||||||
// The base type (e.g. "address", "tuple", "array")
|
/**
|
||||||
|
* The base type (e.g. ``"address"``, ``"tuple"``, ``"array"``)
|
||||||
|
*/
|
||||||
readonly baseType!: string;
|
readonly baseType!: string;
|
||||||
|
|
||||||
// Indexable Paramters ONLY (otherwise null)
|
/**
|
||||||
|
* True if the parameters is indexed.
|
||||||
|
*
|
||||||
|
* For non-indexable types (see [[ParamType_isIndexable]]) this
|
||||||
|
* is ``null``.
|
||||||
|
*/
|
||||||
readonly indexed!: null | boolean;
|
readonly indexed!: null | boolean;
|
||||||
|
|
||||||
// Tuples ONLY: (otherwise null)
|
/**
|
||||||
// - sub-components
|
* The components for the tuple.
|
||||||
|
*
|
||||||
|
* For non-tuple types (see [[ParamType_isTuple]]) this is ``null``.
|
||||||
|
*/
|
||||||
readonly components!: null | ReadonlyArray<ParamType>;
|
readonly components!: null | ReadonlyArray<ParamType>;
|
||||||
|
|
||||||
// Arrays ONLY: (otherwise null)
|
/**
|
||||||
// - length of the array (-1 for dynamic length)
|
* The array length, or ``-1`` for dynamic-lengthed arrays.
|
||||||
// - child type
|
*
|
||||||
|
* For non-array types (see [[ParamType_isArray]]) this is ``null``.
|
||||||
|
*/
|
||||||
readonly arrayLength!: null | number;
|
readonly arrayLength!: null | number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of each child in the array.
|
||||||
|
*
|
||||||
|
* For non-array types (see [[ParamType_isArray]]) this is ``null``.
|
||||||
|
*/
|
||||||
readonly arrayChildren!: null | ParamType;
|
readonly arrayChildren!: null | ParamType;
|
||||||
|
|
||||||
|
|
||||||
@ -494,10 +588,17 @@ export class ParamType {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Format the parameter fragment
|
/**
|
||||||
// - sighash: "(uint256,address)"
|
* Return a string representation of this type.
|
||||||
// - minimal: "tuple(uint256,address) indexed"
|
*
|
||||||
// - full: "tuple(uint256 foo, address bar) indexed baz"
|
* For example,
|
||||||
|
*
|
||||||
|
* ``sighash" => "(uint256,address)"``
|
||||||
|
*
|
||||||
|
* ``"minimal" => "tuple(uint256,address) indexed"``
|
||||||
|
*
|
||||||
|
* ``"full" => "tuple(uint256 foo, address bar) indexed baz"``
|
||||||
|
*/
|
||||||
format(format?: FormatType): string {
|
format(format?: FormatType): string {
|
||||||
if (format == null) { format = "sighash"; }
|
if (format == null) { format = "sighash"; }
|
||||||
if (format === "json") {
|
if (format === "json") {
|
||||||
@ -539,23 +640,51 @@ export class ParamType {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static isArray(value: any): value is { arrayChildren: ParamType } {
|
/*
|
||||||
return value && (value.baseType === "array")
|
* Returns true if %%value%% is an Array type.
|
||||||
}
|
*
|
||||||
|
* This provides a type gaurd ensuring that the
|
||||||
|
* [[arrayChildren]] and [[arrayLength]] are non-null.
|
||||||
|
*/
|
||||||
|
//static isArray(value: any): value is { arrayChildren: ParamType, arrayLength: number } {
|
||||||
|
// return value && (value.baseType === "array")
|
||||||
|
//}
|
||||||
|
|
||||||
isArray(): this is (ParamType & { arrayLength: number, arrayChildren: ParamType }) {
|
/**
|
||||||
|
* Returns true if %%this%% is an Array type.
|
||||||
|
*
|
||||||
|
* This provides a type gaurd ensuring that [[arrayChildren]]
|
||||||
|
* and [[arrayLength]] are non-null.
|
||||||
|
*/
|
||||||
|
isArray(): this is (ParamType & { arrayChildren: ParamType, arrayLength: number }) {
|
||||||
return (this.baseType === "array")
|
return (this.baseType === "array")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%this%% is a Tuple type.
|
||||||
|
*
|
||||||
|
* This provides a type gaurd ensuring that [[components]]
|
||||||
|
* is non-null.
|
||||||
|
*/
|
||||||
isTuple(): this is (ParamType & { components: ReadonlyArray<ParamType> }) {
|
isTuple(): this is (ParamType & { components: ReadonlyArray<ParamType> }) {
|
||||||
return (this.baseType === "tuple");
|
return (this.baseType === "tuple");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%this%% is an Indexable type.
|
||||||
|
*
|
||||||
|
* This provides a type gaurd ensuring that [[indexed]]
|
||||||
|
* is non-null.
|
||||||
|
*/
|
||||||
isIndexable(): this is (ParamType & { indexed: boolean }) {
|
isIndexable(): this is (ParamType & { indexed: boolean }) {
|
||||||
return (this.indexed != null);
|
return (this.indexed != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
walk(value: any, process: FragmentWalkFunc): any {
|
/**
|
||||||
|
* Walks the **ParamType** with %%value%%, calling %%process%%
|
||||||
|
* on each type, destructing the %%value%% recursively.
|
||||||
|
*/
|
||||||
|
walk(value: any, process: ParamTypeWalkFunc): any {
|
||||||
if (this.isArray()) {
|
if (this.isArray()) {
|
||||||
if (!Array.isArray(value)) { throw new Error("invlaid array value"); }
|
if (!Array.isArray(value)) { throw new Error("invlaid array value"); }
|
||||||
if (this.arrayLength !== -1 && value.length !== this.arrayLength) {
|
if (this.arrayLength !== -1 && value.length !== this.arrayLength) {
|
||||||
@ -577,7 +706,7 @@ export class ParamType {
|
|||||||
return process(this.type, value);
|
return process(this.type, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#walkAsync(promises: Array<Promise<void>>, value: any, process: FragmentWalkAsyncFunc, setValue: (value: any) => void): void {
|
#walkAsync(promises: Array<Promise<void>>, value: any, process: ParamTypeWalkAsyncFunc, setValue: (value: any) => void): void {
|
||||||
|
|
||||||
if (this.isArray()) {
|
if (this.isArray()) {
|
||||||
if (!Array.isArray(value)) { throw new Error("invlaid array value"); }
|
if (!Array.isArray(value)) { throw new Error("invlaid array value"); }
|
||||||
@ -639,7 +768,14 @@ export class ParamType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async walkAsync(value: any, process: FragmentWalkAsyncFunc): Promise<any> {
|
/**
|
||||||
|
* Walks the **ParamType** with %%value%%, asynchronously calling
|
||||||
|
* %%process%% on each type, destructing the %%value%% recursively.
|
||||||
|
*
|
||||||
|
* This can be used to resolve ENS naes by walking and resolving each
|
||||||
|
* ``"address"`` type.
|
||||||
|
*/
|
||||||
|
async walkAsync(value: any, process: ParamTypeWalkAsyncFunc): Promise<any> {
|
||||||
const promises: Array<Promise<void>> = [ ];
|
const promises: Array<Promise<void>> = [ ];
|
||||||
const result: [ any ] = [ value ];
|
const result: [ any ] = [ value ];
|
||||||
this.#walkAsync(promises, value, process, (value: any) => {
|
this.#walkAsync(promises, value, process, (value: any) => {
|
||||||
@ -649,6 +785,12 @@ export class ParamType {
|
|||||||
return result[0];
|
return result[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new **ParamType** for %%obj%%.
|
||||||
|
*
|
||||||
|
* If %%allowIndexed%% then the ``indexed`` keyword is permitted,
|
||||||
|
* otherwise the ``indexed`` keyword will throw an error.
|
||||||
|
*/
|
||||||
static from(obj: any, allowIndexed?: boolean): ParamType {
|
static from(obj: any, allowIndexed?: boolean): ParamType {
|
||||||
if (ParamType.isParamType(obj)) { return obj; }
|
if (ParamType.isParamType(obj)) { return obj; }
|
||||||
|
|
||||||
@ -732,15 +874,31 @@ export class ParamType {
|
|||||||
return new ParamType(_guard, name, type, type, indexed, null, null, null);
|
return new ParamType(_guard, name, type, type, indexed, null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%value%% is a **ParamType**.
|
||||||
|
*/
|
||||||
static isParamType(value: any): value is ParamType {
|
static isParamType(value: any): value is ParamType {
|
||||||
return (value && value[internal] === ParamTypeInternal);
|
return (value && value[internal] === ParamTypeInternal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of a [[Fragment]].
|
||||||
|
*/
|
||||||
export type FragmentType = "constructor" | "error" | "event" | "function" | "struct";
|
export type FragmentType = "constructor" | "error" | "event" | "function" | "struct";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An abstract class to represent An individual fragment from a parse ABI.
|
||||||
|
*/
|
||||||
export abstract class Fragment {
|
export abstract class Fragment {
|
||||||
|
/**
|
||||||
|
* The type of the fragment.
|
||||||
|
*/
|
||||||
readonly type!: FragmentType;
|
readonly type!: FragmentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The inputs for the fragment.
|
||||||
|
*/
|
||||||
readonly inputs!: ReadonlyArray<ParamType>;
|
readonly inputs!: ReadonlyArray<ParamType>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -752,8 +910,15 @@ export abstract class Fragment {
|
|||||||
defineProperties<Fragment>(this, { type, inputs });
|
defineProperties<Fragment>(this, { type, inputs });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a string representation of this fragment.
|
||||||
|
*/
|
||||||
abstract format(format?: FormatType): string;
|
abstract format(format?: FormatType): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new **Fragment** for %%obj%%, wich can be any supported
|
||||||
|
* ABI frgament type.
|
||||||
|
*/
|
||||||
static from(obj: any): Fragment {
|
static from(obj: any): Fragment {
|
||||||
if (typeof(obj) === "string") {
|
if (typeof(obj) === "string") {
|
||||||
try {
|
try {
|
||||||
@ -791,28 +956,50 @@ export abstract class Fragment {
|
|||||||
throw new Error(`unsupported type: ${ obj }`);
|
throw new Error(`unsupported type: ${ obj }`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%value%% is a [[ConstructorFragment]].
|
||||||
|
*/
|
||||||
static isConstructor(value: any): value is ConstructorFragment {
|
static isConstructor(value: any): value is ConstructorFragment {
|
||||||
return ConstructorFragment.isFragment(value);
|
return ConstructorFragment.isFragment(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%value%% is an [[ErrorFragment]].
|
||||||
|
*/
|
||||||
static isError(value: any): value is ErrorFragment {
|
static isError(value: any): value is ErrorFragment {
|
||||||
return ErrorFragment.isFragment(value);
|
return ErrorFragment.isFragment(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%value%% is an [[EventFragment]].
|
||||||
|
*/
|
||||||
static isEvent(value: any): value is EventFragment {
|
static isEvent(value: any): value is EventFragment {
|
||||||
return EventFragment.isFragment(value);
|
return EventFragment.isFragment(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%value%% is a [[FunctionFragment]].
|
||||||
|
*/
|
||||||
static isFunction(value: any): value is FunctionFragment {
|
static isFunction(value: any): value is FunctionFragment {
|
||||||
return FunctionFragment.isFragment(value);
|
return FunctionFragment.isFragment(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if %%value%% is a [[StructFragment]].
|
||||||
|
*/
|
||||||
static isStruct(value: any): value is StructFragment {
|
static isStruct(value: any): value is StructFragment {
|
||||||
return StructFragment.isFragment(value);
|
return StructFragment.isFragment(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An abstract class to represent An individual fragment
|
||||||
|
* which has a name from a parse ABI.
|
||||||
|
*/
|
||||||
export abstract class NamedFragment extends Fragment {
|
export abstract class NamedFragment extends Fragment {
|
||||||
|
/**
|
||||||
|
* The name of the fragment.
|
||||||
|
*/
|
||||||
readonly name!: string;
|
readonly name!: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -831,6 +1018,9 @@ function joinParams(format: FormatType, params: ReadonlyArray<ParamType>): strin
|
|||||||
return "(" + params.map((p) => p.format(format)).join((format === "full") ? ", ": ",") + ")";
|
return "(" + params.map((p) => p.format(format)).join((format === "full") ? ", ": ",") + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Fragment which represents a //Custom Error//.
|
||||||
|
*/
|
||||||
export class ErrorFragment extends NamedFragment {
|
export class ErrorFragment extends NamedFragment {
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
@ -840,6 +1030,9 @@ export class ErrorFragment extends NamedFragment {
|
|||||||
Object.defineProperty(this, internal, { value: ErrorFragmentInternal });
|
Object.defineProperty(this, internal, { value: ErrorFragmentInternal });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Custom Error selector.
|
||||||
|
*/
|
||||||
get selector(): string {
|
get selector(): string {
|
||||||
return id(this.format("sighash")).substring(0, 10);
|
return id(this.format("sighash")).substring(0, 10);
|
||||||
}
|
}
|
||||||
@ -883,7 +1076,9 @@ export class ErrorFragment extends NamedFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Fragment which represents an Event.
|
||||||
|
*/
|
||||||
export class EventFragment extends NamedFragment {
|
export class EventFragment extends NamedFragment {
|
||||||
readonly anonymous!: boolean;
|
readonly anonymous!: boolean;
|
||||||
|
|
||||||
@ -896,6 +1091,9 @@ export class EventFragment extends NamedFragment {
|
|||||||
defineProperties<EventFragment>(this, { anonymous });
|
defineProperties<EventFragment>(this, { anonymous });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Event topic hash.
|
||||||
|
*/
|
||||||
get topicHash(): string {
|
get topicHash(): string {
|
||||||
return id(this.format("sighash"));
|
return id(this.format("sighash"));
|
||||||
}
|
}
|
||||||
@ -942,7 +1140,9 @@ export class EventFragment extends NamedFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Fragment which represents a constructor.
|
||||||
|
*/
|
||||||
export class ConstructorFragment extends Fragment {
|
export class ConstructorFragment extends Fragment {
|
||||||
readonly payable!: boolean;
|
readonly payable!: boolean;
|
||||||
readonly gas!: null | bigint;
|
readonly gas!: null | bigint;
|
||||||
@ -1002,12 +1202,34 @@ export class ConstructorFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Fragment which represents a method.
|
||||||
|
*/
|
||||||
export class FunctionFragment extends NamedFragment {
|
export class FunctionFragment extends NamedFragment {
|
||||||
|
/**
|
||||||
|
* If the function is constant (e.g. ``pure`` or ``view`` functions).
|
||||||
|
*/
|
||||||
readonly constant!: boolean;
|
readonly constant!: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The returned types for the result of calling this function.
|
||||||
|
*/
|
||||||
readonly outputs!: ReadonlyArray<ParamType>;
|
readonly outputs!: ReadonlyArray<ParamType>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The state mutability (e.g. ``payable``, ``nonpayable``, ``view``
|
||||||
|
* or ``pure``)
|
||||||
|
*/
|
||||||
readonly stateMutability!: string;
|
readonly stateMutability!: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the function can be send a value during invocation.
|
||||||
|
*/
|
||||||
readonly payable!: boolean;
|
readonly payable!: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The amount of gas to send when calling this function
|
||||||
|
*/
|
||||||
readonly gas!: null | bigint;
|
readonly gas!: null | bigint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1022,6 +1244,9 @@ export class FunctionFragment extends NamedFragment {
|
|||||||
defineProperties<FunctionFragment>(this, { constant, gas, outputs, payable, stateMutability });
|
defineProperties<FunctionFragment>(this, { constant, gas, outputs, payable, stateMutability });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Function selector.
|
||||||
|
*/
|
||||||
get selector(): string {
|
get selector(): string {
|
||||||
return id(this.format("sighash")).substring(0, 10);
|
return id(this.format("sighash")).substring(0, 10);
|
||||||
}
|
}
|
||||||
@ -1098,6 +1323,9 @@ export class FunctionFragment extends NamedFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Fragment which represents a structure.
|
||||||
|
*/
|
||||||
export class StructFragment extends NamedFragment {
|
export class StructFragment extends NamedFragment {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,7 +28,7 @@ export { Typed } from "./typed.js";
|
|||||||
|
|
||||||
export type {
|
export type {
|
||||||
JsonFragment, JsonFragmentType,
|
JsonFragment, JsonFragmentType,
|
||||||
FormatType, FragmentType, FragmentWalkAsyncFunc, FragmentWalkFunc
|
FormatType, FragmentType, ParamTypeWalkAsyncFunc, ParamTypeWalkFunc
|
||||||
} from "./fragments.js";
|
} from "./fragments.js";
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
|
@ -36,6 +36,10 @@ let __keccak256: (data: Uint8Array) => BytesLike = _keccak256;
|
|||||||
* keccak256(new Uint8Array([ 0x13, 0x37 ]))
|
* keccak256(new Uint8Array([ 0x13, 0x37 ]))
|
||||||
* //_result:
|
* //_result:
|
||||||
*
|
*
|
||||||
|
* // Strings are assumed to be DataHexString, otherwise it will
|
||||||
|
* // throw. To hash UTF-8 data, see the note above.
|
||||||
|
* keccak256("Hello World")
|
||||||
|
* //_error:
|
||||||
*/
|
*/
|
||||||
export function keccak256(_data: BytesLike): string {
|
export function keccak256(_data: BytesLike): string {
|
||||||
const data = getBytes(_data, "data");
|
const data = getBytes(_data, "data");
|
||||||
|
@ -127,6 +127,7 @@ export {
|
|||||||
export type {
|
export type {
|
||||||
JsonFragment, JsonFragmentType,
|
JsonFragment, JsonFragmentType,
|
||||||
InterfaceAbi,
|
InterfaceAbi,
|
||||||
|
ParamTypeWalkFunc, ParamTypeWalkAsyncFunc
|
||||||
} from "./abi/index.js";
|
} from "./abi/index.js";
|
||||||
|
|
||||||
export type { Addressable } from "./address/index.js";
|
export type { Addressable } from "./address/index.js";
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* The Application Programming Interface (API) is the collection of
|
* The Application Programming Interface (API) is the collection of
|
||||||
* functions, classes and types offered by the Ethers library.
|
* functions, classes and types offered by the Ethers library.
|
||||||
*
|
*
|
||||||
* @_section: api:API Specification [about-api]
|
* @_section: api:Application Programming Interface [about-api]
|
||||||
* @_navTitle: API
|
* @_navTitle: API
|
||||||
*/
|
*/
|
||||||
import * as ethers from "./ethers.js";
|
import * as ethers from "./ethers.js";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* [Base64 encoding](link-base64) using 6-bit words to encode
|
* [Base64 encoding](link-wiki-base64) using 6-bit words to encode
|
||||||
* arbitrary bytes into a string using 65 printable symbols, the
|
* arbitrary bytes into a string using 65 printable symbols, the
|
||||||
* upper-case and lower-case alphabet, the digits ``0`` through ``9``,
|
* upper-case and lower-case alphabet, the digits ``0`` through ``9``,
|
||||||
* ``"+"`` and ``"/"`` with the ``"="`` used for padding.
|
* ``"+"`` and ``"/"`` with the ``"="`` used for padding.
|
||||||
|
@ -173,6 +173,12 @@ function zeroPad(data: BytesLike, length: number, left: boolean): string {
|
|||||||
/**
|
/**
|
||||||
* Return the [[DataHexString]] of %%data%% padded on the **left**
|
* Return the [[DataHexString]] of %%data%% padded on the **left**
|
||||||
* to %%length%% bytes.
|
* to %%length%% bytes.
|
||||||
|
*
|
||||||
|
* If %%data%% already exceeds %%length%%, a [[BufferOverrun]] is
|
||||||
|
* thrown.
|
||||||
|
*
|
||||||
|
* This pads data the same as **values** are in Solidity
|
||||||
|
* (e.g. ``uint128``).
|
||||||
*/
|
*/
|
||||||
export function zeroPadValue(data: BytesLike, length: number): string {
|
export function zeroPadValue(data: BytesLike, length: number): string {
|
||||||
return zeroPad(data, length, true);
|
return zeroPad(data, length, true);
|
||||||
@ -181,6 +187,12 @@ export function zeroPadValue(data: BytesLike, length: number): string {
|
|||||||
/**
|
/**
|
||||||
* Return the [[DataHexString]] of %%data%% padded on the **right**
|
* Return the [[DataHexString]] of %%data%% padded on the **right**
|
||||||
* to %%length%% bytes.
|
* to %%length%% bytes.
|
||||||
|
*
|
||||||
|
* If %%data%% already exceeds %%length%%, a [[BufferOverrun]] is
|
||||||
|
* thrown.
|
||||||
|
*
|
||||||
|
* This pads data the same as **bytes** are in Solidity
|
||||||
|
* (e.g. ``bytes16``).
|
||||||
*/
|
*/
|
||||||
export function zeroPadBytes(data: BytesLike, length: number): string {
|
export function zeroPadBytes(data: BytesLike, length: number): string {
|
||||||
return zeroPad(data, length, false);
|
return zeroPad(data, length, false);
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* Explain UUID and link to RFC here.
|
||||||
|
*
|
||||||
|
* @_subsection: api/utils:UUID [about-uuid]
|
||||||
|
*/
|
||||||
import { getBytes, hexlify } from "./data.js";
|
import { getBytes, hexlify } from "./data.js";
|
||||||
|
|
||||||
import type { BytesLike } from "./index.js";
|
import type { BytesLike } from "./index.js";
|
||||||
|
@ -17,6 +17,8 @@ export class LangCz extends WordlistOwl {
|
|||||||
*
|
*
|
||||||
* Using the constructor should be unnecessary, instead use the
|
* Using the constructor should be unnecessary, instead use the
|
||||||
* [[wordlist]] singleton method.
|
* [[wordlist]] singleton method.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("cz", words, checksum); }
|
constructor() { super("cz", words, checksum); }
|
||||||
|
|
||||||
|
@ -17,6 +17,8 @@ export class LangEn extends WordlistOwl {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langEn]] should suffice.
|
* [[langEn]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("en", words, checksum); }
|
constructor() { super("en", words, checksum); }
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ export class LangEs extends WordlistOwlA {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langEs]] should suffice.
|
* [[langEs]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("es", words, accents, checksum); }
|
constructor() { super("es", words, accents, checksum); }
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ export class LangFr extends WordlistOwlA {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langFr]] should suffice.
|
* [[langFr]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("fr", words, accents, checksum); }
|
constructor() { super("fr", words, accents, checksum); }
|
||||||
|
|
||||||
|
@ -17,6 +17,8 @@ export class LangIt extends WordlistOwl {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langIt]] should suffice.
|
* [[langIt]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("it", words, checksum); }
|
constructor() { super("it", words, checksum); }
|
||||||
|
|
||||||
|
@ -145,6 +145,8 @@ export class LangJa extends Wordlist {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langJa]] should suffice.
|
* [[langJa]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("ja"); }
|
constructor() { super("ja"); }
|
||||||
|
|
||||||
|
@ -75,6 +75,8 @@ export class LangKo extends Wordlist {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langKo]] should suffice.
|
* [[langKo]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super("ko");
|
super("ko");
|
||||||
|
@ -17,6 +17,8 @@ export class LangPt extends WordlistOwl {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langPt]] should suffice.
|
* [[langPt]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor() { super("pt", words, checksum); }
|
constructor() { super("pt", words, checksum); }
|
||||||
|
|
||||||
|
@ -75,6 +75,8 @@ export class LangZh extends Wordlist {
|
|||||||
*
|
*
|
||||||
* This should be unnecessary most of the time as the exported
|
* This should be unnecessary most of the time as the exported
|
||||||
* [[langZhCn]] and [[langZhTw]] should suffice.
|
* [[langZhCn]] and [[langZhTw]] should suffice.
|
||||||
|
*
|
||||||
|
* @_ignore:
|
||||||
*/
|
*/
|
||||||
constructor(dialect: string) { super("zh_" + dialect); }
|
constructor(dialect: string) { super("zh_" + dialect); }
|
||||||
|
|
||||||
@ -97,6 +99,9 @@ export class LangZh extends Wordlist {
|
|||||||
/**
|
/**
|
||||||
* Returns a singleton instance of a ``LangZh`` for %%dialect%%,
|
* Returns a singleton instance of a ``LangZh`` for %%dialect%%,
|
||||||
* creating it if this is the first time being called.
|
* creating it if this is the first time being called.
|
||||||
|
*
|
||||||
|
* Use the %%dialect%% ``"cn"`` or ``"tw"`` for simplified or
|
||||||
|
* traditional, respectively.
|
||||||
*/
|
*/
|
||||||
static wordlist(dialect: string): LangZh {
|
static wordlist(dialect: string): LangZh {
|
||||||
if (wordlists[dialect] == null) {
|
if (wordlists[dialect] == null) {
|
||||||
|
@ -11,6 +11,19 @@ import { LangZh } from "./lang-zh.js";
|
|||||||
|
|
||||||
import type { Wordlist } from "./wordlist.js";
|
import type { Wordlist } from "./wordlist.js";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The available Wordlists by their
|
||||||
|
* [ISO 639-1 Language Code](link-wiki-iso639).
|
||||||
|
*
|
||||||
|
* (**i.e.** [cz](LangCz), [en](LangEn), [es](LangEs), [fr](LangFr),
|
||||||
|
* [ja](LangJa), [ko](LangKo), [it](LangIt), [pt](LangPt),
|
||||||
|
* [zh_cn](LangZh), [zh_tw](LangZh))
|
||||||
|
*
|
||||||
|
* The dist files (in the ``/dist`` folder) have had all languages
|
||||||
|
* except English stripped out, which reduces the library size by
|
||||||
|
* about 80kb. If required, they are available by importing the
|
||||||
|
* included ``wordlists-extra.min.js`` file.
|
||||||
|
*/
|
||||||
export const wordlists: Record<string, Wordlist> = {
|
export const wordlists: Record<string, Wordlist> = {
|
||||||
cz: LangCz.wordlist(),
|
cz: LangCz.wordlist(),
|
||||||
en: LangEn.wordlist(),
|
en: LangEn.wordlist(),
|
||||||
|
Loading…
Reference in New Issue
Block a user