@ensdomains/ensjs 3.5.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/functions/wallet/createSubname.js +57 -1
- package/dist/cjs/functions/wallet/createSubname.js.map +1 -1
- package/dist/cjs/utils/ccipBatchRequest.js +67 -0
- package/dist/cjs/utils/ccipBatchRequest.js.map +1 -0
- package/dist/cjs/utils/ccipRequest.js +26 -0
- package/dist/cjs/utils/ccipRequest.js.map +1 -0
- package/dist/cjs/utils/index.js +6 -4
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/wrapper.js +8 -1
- package/dist/cjs/utils/wrapper.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/functions/wallet/createSubname.js +59 -3
- package/dist/esm/functions/wallet/createSubname.js.map +1 -1
- package/dist/esm/utils/ccipBatchRequest.js +64 -0
- package/dist/esm/utils/ccipBatchRequest.js.map +1 -0
- package/dist/esm/utils/ccipRequest.js +22 -0
- package/dist/esm/utils/ccipRequest.js.map +1 -0
- package/dist/esm/utils/index.js +2 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/wrapper.js +6 -0
- package/dist/esm/utils/wrapper.js.map +1 -1
- package/dist/types/clients/decorators/wallet.d.ts +2785 -5
- package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
- package/dist/types/clients/public.d.ts +5 -1
- package/dist/types/clients/public.d.ts.map +1 -1
- package/dist/types/clients/subgraph.d.ts +5 -1
- package/dist/types/clients/subgraph.d.ts.map +1 -1
- package/dist/types/clients/wallet.d.ts +2814 -34
- package/dist/types/clients/wallet.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/functions/wallet/createSubname.d.ts.map +1 -1
- package/dist/types/utils/ccipBatchRequest.d.ts +7 -0
- package/dist/types/utils/ccipBatchRequest.d.ts.map +1 -0
- package/dist/types/utils/ccipRequest.d.ts +3 -0
- package/dist/types/utils/ccipRequest.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +2 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/wrapper.d.ts +1 -0
- package/dist/types/utils/wrapper.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/errors/version.ts +1 -1
- package/src/functions/wallet/createSubname.ts +71 -4
- package/src/utils/ccipBatchRequest.ts +93 -0
- package/src/utils/ccipRequest.ts +44 -0
- package/src/utils/index.ts +2 -1
- package/src/utils/wrapper.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/clients/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEhF,MAAM,MAAM,qBAAqB,CAC/B,UAAU,SAAS,SAAS,EAC5B,MAAM,SAAS,sBAAsB,EACrC,iBAAiB,SAAS,OAAO,GAAG,OAAO,GAAG,SAAS,GACnD,OAAO,GACP,OAAO,GACP,SAAS,IACX,MAAM,CACR,IAAI,CACF,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,EACnD,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,iBAAiB,GAAG,WAAW,CACvE,EACD;IACE,KAAK,EAAE,MAAM,CAAA;CACd,CACF,CAAA;AAED,MAAM,MAAM,eAAe,CACzB,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,IACxD,QAAQ,CACV,MAAM,CACJ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CACrE,CACF,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/clients/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEhF,MAAM,MAAM,qBAAqB,CAC/B,UAAU,SAAS,SAAS,EAC5B,MAAM,SAAS,sBAAsB,EACrC,iBAAiB,SAAS,OAAO,GAAG,OAAO,GAAG,SAAS,GACnD,OAAO,GACP,OAAO,GACP,SAAS,IACX,MAAM,CACR,IAAI,CACF,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,EACnD,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,iBAAiB,GAAG,WAAW,CACvE,EACD;IACE,KAAK,EAAE,MAAM,CAAA;CACd,CACF,CAAA;AAED,MAAM,MAAM,eAAe,CACzB,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,YAAY,GAAG,YAAY,EAC1C,QAAQ,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,IACxD,QAAQ,CACV,MAAM,CACJ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CACrE,CACF,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjC,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "v3.
|
|
1
|
+
export declare const version = "v3.7.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSubname.d.ts","sourceRoot":"","sources":["../../../../src/functions/wallet/createSubname.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,IAAI,EAET,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"createSubname.d.ts","sourceRoot":"","sources":["../../../../src/functions/wallet/createSubname.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,IAAI,EAET,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAElB,MAAM,2BAA2B,CAAA;AAQlC,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAA;AAW7B,KAAK,+BAA+B,GAAG;IACrC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,oCAAoC;IACpC,QAAQ,EAAE,UAAU,GAAG,aAAa,CAAA;IACpC,8BAA8B;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,sBAAsB,CAAA;CAC/B,CAAA;AAED,KAAK,mCAAmC,GAAG;IACzC,QAAQ,EAAE,UAAU,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,KAAK,sCAAsC,GAAG;IAC5C,QAAQ,EAAE,aAAa,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,sBAAsB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG,+BAA+B,GACvE,CAAC,mCAAmC,GAAG,sCAAsC,CAAC,CAAA;AAEhF,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAA;AAElE,MAAM,MAAM,uBAAuB,CACjC,MAAM,SAAS,YAAY,EAC3B,QAAQ,SAAS,OAAO,GAAG,SAAS,EACpC,cAAc,SAAS,YAAY,GAAG,SAAS,IAC7C,QAAQ,CACV,2BAA2B,GACzB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAC/D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAA;AAE1C,eAAO,MAAM,gBAAgB,0LAexB,2BAA2B,KAC7B,2BA6DF,CAAA;AAsDD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAe,aAAa,CAC1B,MAAM,SAAS,YAAY,EAC3B,QAAQ,SAAS,OAAO,GAAG,SAAS,EACpC,cAAc,SAAS,YAAY,GAAG,SAAS,GAAG,YAAY,EAE9D,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EACtD,EACE,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,eAAe,EACf,MAAM,EACN,KAAK,EACL,GAAG,MAAM,EACV,EAAE,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,GAC3D,OAAO,CAAC,uBAAuB,CAAC,CAiBlC;kBAhCc,aAAa;;;AAoC5B,eAAe,aAAa,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Address, type Hex } from 'viem';
|
|
2
|
+
type ReadonlyDeep<T> = {
|
|
3
|
+
readonly [P in keyof T]: ReadonlyDeep<T[P]>;
|
|
4
|
+
};
|
|
5
|
+
export declare const ccipBatchRequest: (callDatas: ReadonlyDeep<[Address, string[], Hex][]>) => Promise<[failures: boolean[], responses: `0x${string}`[]]>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=ccipBatchRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ccipBatchRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/ccipBatchRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,GAAG,EACT,MAAM,MAAM,CAAA;AAEb,KAAK,YAAY,CAAC,CAAC,IAAI;IACrB,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAA;AAwCD,eAAO,MAAM,gBAAgB,cAChB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,+DAuCpD,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ccipRequest as viemCcipRequest, type CcipRequestParameters, type Chain } from 'viem';
|
|
2
|
+
export declare const ccipRequest: <TChain extends Chain>(chain: TChain) => ({ data, sender, urls, }: CcipRequestParameters) => ReturnType<typeof viemCcipRequest>;
|
|
3
|
+
//# sourceMappingURL=ccipRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ccipRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/ccipRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,WAAW,IAAI,eAAe,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACX,MAAM,MAAM,CAAA;AAUb,eAAO,MAAM,WAAW,qEAMnB,qBAAqB,KAAG,WAAW,sBAAsB,CAmB3D,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { ccipRequest } from './ccipRequest.js';
|
|
1
2
|
export { getDnsTxtRecords, type GetDnsTxtRecordsParameters, type GetDnsTxtRecordsReturnType, } from './dns/getDnsTxtRecords.js';
|
|
2
3
|
export { DnsRecordType, DnsResponseStatus, type DnsQuestionItem, type DnsResponse, type DnsResponseItem, } from './dns/misc.js';
|
|
3
4
|
export { contentTypeToEncodeAs, encodeAbi, encodeAsToContentType, type EncodeAbiParameters, type EncodeAbiReturnType, type EncodedAbi, } from './encoders/encodeAbi.js';
|
|
@@ -11,6 +12,7 @@ export { ChildFuseKeys, ChildFuseReference, ChildFuses, FullParentFuseKeys, Full
|
|
|
11
12
|
export { decodeContentHash, encodeContentHash, getDisplayCodec, getInternalCodec, getProtocolType, isValidContentHash, type DecodedContentHash, type ProtocolType, } from './contentHash.js';
|
|
12
13
|
export { truncateFormat } from './format.js';
|
|
13
14
|
export { generateRecordCallArray, type RecordOptions, } from './generateRecordCallArray.js';
|
|
15
|
+
export { generateSupportedContentTypes } from './generateSupportedContentTypes.js';
|
|
14
16
|
export { bytesToPacket, packetToBytes } from './hexEncodedName.js';
|
|
15
17
|
export { checkIsDecrypted, checkLabel, decodeLabelhash, decryptName, encodeLabelhash, isEncodedLabelhash, saveLabel, saveName, } from './labels.js';
|
|
16
18
|
export { makeSafeSecondsDate } from './makeSafeSecondsDate.js';
|
|
@@ -18,5 +20,4 @@ export { beautify, emoji, isCombiningMark, namehash, normalise, normaliseFragmen
|
|
|
18
20
|
export { makeCommitment, makeCommitmentFromTuple, makeCommitmentTuple, makeRegistrationTuple, randomSecret, type CommitmentTuple, type RegistrationParameters, type RegistrationTuple, } from './registerHelpers.js';
|
|
19
21
|
export { checkIsDotEth, parseInput, validateName, type ParsedInputResult, } from './validation.js';
|
|
20
22
|
export { MAX_EXPIRY, expiryToBigInt, wrappedLabelLengthCheck, } from './wrapper.js';
|
|
21
|
-
export { generateSupportedContentTypes } from './generateSupportedContentTypes.js';
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,5 @@ import type { AnyDate } from '../types.js';
|
|
|
2
2
|
export declare const MAX_EXPIRY: bigint;
|
|
3
3
|
export declare const expiryToBigInt: (expiry?: AnyDate, defaultValue?: bigint) => bigint;
|
|
4
4
|
export declare const wrappedLabelLengthCheck: (label: string) => void;
|
|
5
|
+
export declare const makeDefaultExpiry: (fuses?: number) => bigint;
|
|
5
6
|
//# sourceMappingURL=wrapper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../../src/utils/wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../../src/utils/wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAG1C,eAAO,MAAM,UAAU,QAAiB,CAAA;AAExC,eAAO,MAAM,cAAc,YAAa,OAAO,4BAAsB,MAOpE,CAAA;AAED,eAAO,MAAM,uBAAuB,UAAW,MAAM,SAIpD,CAAA;AAED,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,MAIlD,CAAA"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@ensdomains/ensjs",
|
|
3
3
|
"description": "ENS javascript library for contract interaction",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@adraffy/ens-normalize": "1.
|
|
5
|
+
"@adraffy/ens-normalize": "1.10.1",
|
|
6
6
|
"@ensdomains/address-encoder": "1.1.1",
|
|
7
7
|
"@ensdomains/content-hash": "3.1.0-rc.1",
|
|
8
8
|
"@ensdomains/dnsprovejs": "^0.5.1",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"traverse": "^0.6.8"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"viem": "^2.
|
|
17
|
+
"viem": "^2.9.2"
|
|
18
18
|
},
|
|
19
|
-
"version": "3.
|
|
19
|
+
"version": "3.7.0",
|
|
20
20
|
"files": [
|
|
21
21
|
"dist/",
|
|
22
22
|
"src/",
|
package/src/errors/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = 'v3.
|
|
1
|
+
export const version = 'v3.7.0'
|
|
@@ -7,7 +7,11 @@ import {
|
|
|
7
7
|
type Transport,
|
|
8
8
|
} from 'viem'
|
|
9
9
|
import { sendTransaction } from 'viem/actions'
|
|
10
|
-
import type {
|
|
10
|
+
import type {
|
|
11
|
+
ChainWithEns,
|
|
12
|
+
ClientWithAccount,
|
|
13
|
+
ClientWithEns,
|
|
14
|
+
} from '../../contracts/consts.js'
|
|
11
15
|
import { getChainContractAddress } from '../../contracts/getChainContractAddress.js'
|
|
12
16
|
import { nameWrapperSetSubnodeRecordSnippet } from '../../contracts/nameWrapper.js'
|
|
13
17
|
import { registrySetSubnodeRecordSnippet } from '../../contracts/registry.js'
|
|
@@ -21,14 +25,20 @@ import type {
|
|
|
21
25
|
SimpleTransactionRequest,
|
|
22
26
|
WriteTransactionParameters,
|
|
23
27
|
} from '../../types.js'
|
|
24
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
encodeFuses,
|
|
30
|
+
ParentFuses,
|
|
31
|
+
type EncodeFusesInputObject,
|
|
32
|
+
} from '../../utils/fuses.js'
|
|
25
33
|
import { getNameType } from '../../utils/getNameType.js'
|
|
26
34
|
import { makeLabelNodeAndParent } from '../../utils/makeLabelNodeAndParent.js'
|
|
27
35
|
import {
|
|
28
|
-
MAX_EXPIRY,
|
|
29
36
|
expiryToBigInt,
|
|
30
37
|
wrappedLabelLengthCheck,
|
|
38
|
+
makeDefaultExpiry,
|
|
31
39
|
} from '../../utils/wrapper.js'
|
|
40
|
+
import getWrapperData from '../public/getWrapperData.js'
|
|
41
|
+
import { BaseError } from '../../errors/base.js'
|
|
32
42
|
|
|
33
43
|
type BaseCreateSubnameDataParameters = {
|
|
34
44
|
/** Subname to create */
|
|
@@ -121,7 +131,9 @@ export const makeFunctionData = <
|
|
|
121
131
|
case 'nameWrapper': {
|
|
122
132
|
wrappedLabelLengthCheck(label)
|
|
123
133
|
const generatedFuses = fuses ? encodeFuses({ input: fuses }) : 0
|
|
124
|
-
const generatedExpiry = expiry
|
|
134
|
+
const generatedExpiry = expiry
|
|
135
|
+
? expiryToBigInt(expiry)
|
|
136
|
+
: makeDefaultExpiry(generatedFuses)
|
|
125
137
|
return {
|
|
126
138
|
to: getChainContractAddress({
|
|
127
139
|
client: wallet,
|
|
@@ -150,6 +162,58 @@ export const makeFunctionData = <
|
|
|
150
162
|
}
|
|
151
163
|
}
|
|
152
164
|
|
|
165
|
+
class CreateSubnamePermissionDeniedError extends BaseError {
|
|
166
|
+
parentName: string
|
|
167
|
+
|
|
168
|
+
override name = 'CreateSubnamePermissionDeniedError'
|
|
169
|
+
|
|
170
|
+
constructor({ parentName }: { parentName: string }) {
|
|
171
|
+
super(
|
|
172
|
+
`Create subname error: ${parentName} as burned CANNOT_CREATE_SUBDOMAIN fuse`,
|
|
173
|
+
)
|
|
174
|
+
this.parentName = parentName
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
class CreateSubnameParentNotLockedError extends BaseError {
|
|
179
|
+
parentName: string
|
|
180
|
+
|
|
181
|
+
override name = 'CreateSubnameParentNotLockedError'
|
|
182
|
+
|
|
183
|
+
constructor({ parentName }: { parentName: string }) {
|
|
184
|
+
super(
|
|
185
|
+
`Create subname error: Cannot burn PARENT_CANNOT_CONTROL when ${parentName} has not burned CANNOT_UNWRAP fuse`,
|
|
186
|
+
)
|
|
187
|
+
this.parentName = parentName
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const checkCanCreateSubname = async (
|
|
192
|
+
wallet: ClientWithEns,
|
|
193
|
+
{
|
|
194
|
+
name,
|
|
195
|
+
fuses,
|
|
196
|
+
contract,
|
|
197
|
+
}: Pick<BaseCreateSubnameDataParameters, 'name' | 'contract' | 'fuses'>,
|
|
198
|
+
): Promise<void> => {
|
|
199
|
+
if (contract !== 'nameWrapper') return
|
|
200
|
+
|
|
201
|
+
const parentName = name.split('.').slice(1).join('.')
|
|
202
|
+
if (parentName === 'eth') return
|
|
203
|
+
|
|
204
|
+
const parentWrapperData = await getWrapperData(wallet, { name: parentName })
|
|
205
|
+
if (parentWrapperData?.fuses?.child?.CANNOT_CREATE_SUBDOMAIN)
|
|
206
|
+
throw new CreateSubnamePermissionDeniedError({ parentName })
|
|
207
|
+
|
|
208
|
+
const generatedFuses = fuses ? encodeFuses({ input: fuses }) : 0
|
|
209
|
+
const isBurningPCC =
|
|
210
|
+
fuses && BigInt(generatedFuses) & ParentFuses.PARENT_CANNOT_CONTROL
|
|
211
|
+
const isParentCannotUnwrapBurned =
|
|
212
|
+
parentWrapperData?.fuses?.child?.CANNOT_UNWRAP
|
|
213
|
+
if (isBurningPCC && !isParentCannotUnwrapBurned)
|
|
214
|
+
throw new CreateSubnameParentNotLockedError({ parentName })
|
|
215
|
+
}
|
|
216
|
+
|
|
153
217
|
/**
|
|
154
218
|
* Creates a subname
|
|
155
219
|
* @param wallet - {@link ClientWithAccount}
|
|
@@ -189,6 +253,8 @@ async function createSubname<
|
|
|
189
253
|
...txArgs
|
|
190
254
|
}: CreateSubnameParameters<TChain, TAccount, TChainOverride>,
|
|
191
255
|
): Promise<CreateSubnameReturnType> {
|
|
256
|
+
await checkCanCreateSubname(wallet, { name, fuses, contract })
|
|
257
|
+
|
|
192
258
|
const data = makeFunctionData(wallet, {
|
|
193
259
|
name,
|
|
194
260
|
contract,
|
|
@@ -201,6 +267,7 @@ async function createSubname<
|
|
|
201
267
|
...data,
|
|
202
268
|
...txArgs,
|
|
203
269
|
} as SendTransactionParameters<TChain, TAccount, TChainOverride>
|
|
270
|
+
|
|
204
271
|
return sendTransaction(wallet, writeArgs)
|
|
205
272
|
}
|
|
206
273
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseError,
|
|
3
|
+
HttpRequestError,
|
|
4
|
+
ccipRequest,
|
|
5
|
+
encodeErrorResult,
|
|
6
|
+
parseAbi,
|
|
7
|
+
type Address,
|
|
8
|
+
type Hex,
|
|
9
|
+
} from 'viem'
|
|
10
|
+
|
|
11
|
+
type ReadonlyDeep<T> = {
|
|
12
|
+
readonly [P in keyof T]: ReadonlyDeep<T[P]>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const errorAbi = parseAbi(['error HttpError((uint16, string)[])'])
|
|
16
|
+
|
|
17
|
+
type CcipRequestItem = [success: boolean, result: Hex]
|
|
18
|
+
|
|
19
|
+
const ccipRequestItemHandler = async ([
|
|
20
|
+
wrappedSender,
|
|
21
|
+
wrappedUrls,
|
|
22
|
+
wrappedCallData,
|
|
23
|
+
]: [Address, readonly string[], Hex]): Promise<CcipRequestItem> => {
|
|
24
|
+
try {
|
|
25
|
+
const ccipResult = await ccipRequest({
|
|
26
|
+
sender: wrappedSender,
|
|
27
|
+
urls: wrappedUrls,
|
|
28
|
+
data: wrappedCallData,
|
|
29
|
+
})
|
|
30
|
+
return [false, ccipResult]
|
|
31
|
+
} catch (e) {
|
|
32
|
+
if (e instanceof HttpRequestError) {
|
|
33
|
+
return [
|
|
34
|
+
true,
|
|
35
|
+
encodeErrorResult({
|
|
36
|
+
abi: errorAbi,
|
|
37
|
+
errorName: 'HttpError',
|
|
38
|
+
args: [[[e.status || 500, e.details]]],
|
|
39
|
+
}),
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
return [
|
|
43
|
+
true,
|
|
44
|
+
encodeErrorResult({
|
|
45
|
+
abi: errorAbi,
|
|
46
|
+
errorName: 'HttpError',
|
|
47
|
+
args: [[[500, e instanceof BaseError ? e.details : 'Unknown Error']]],
|
|
48
|
+
}),
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export const ccipBatchRequest = async (
|
|
54
|
+
callDatas: ReadonlyDeep<[Address, string[], Hex][]>,
|
|
55
|
+
) => {
|
|
56
|
+
const ccipRequestCache: Map<string, Promise<CcipRequestItem>> = new Map()
|
|
57
|
+
const responsePromises: Promise<CcipRequestItem>[] = []
|
|
58
|
+
|
|
59
|
+
for (let i = 0; i < callDatas.length; i += 1) {
|
|
60
|
+
const [wrappedSender, wrappedUrls, wrappedCallData] = callDatas[i]
|
|
61
|
+
const requestId = JSON.stringify([
|
|
62
|
+
wrappedSender,
|
|
63
|
+
wrappedUrls,
|
|
64
|
+
wrappedCallData,
|
|
65
|
+
])
|
|
66
|
+
|
|
67
|
+
const existingRequest = ccipRequestCache.get(requestId)
|
|
68
|
+
if (existingRequest) {
|
|
69
|
+
responsePromises.push(existingRequest)
|
|
70
|
+
// eslint-disable-next-line no-continue
|
|
71
|
+
continue
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const ccipRequestPromise = ccipRequestItemHandler([
|
|
75
|
+
wrappedSender,
|
|
76
|
+
wrappedUrls,
|
|
77
|
+
wrappedCallData,
|
|
78
|
+
])
|
|
79
|
+
ccipRequestCache.set(requestId, ccipRequestPromise)
|
|
80
|
+
responsePromises.push(ccipRequestPromise)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const awaitedResponses = await Promise.all(responsePromises)
|
|
84
|
+
|
|
85
|
+
return awaitedResponses.reduce(
|
|
86
|
+
([failures, responses], [failure, response], i) => {
|
|
87
|
+
failures[i] = failure
|
|
88
|
+
responses[i] = response
|
|
89
|
+
return [failures, responses] as [failures: boolean[], responses: Hex[]]
|
|
90
|
+
},
|
|
91
|
+
[[], []] as [failures: boolean[], responses: Hex[]],
|
|
92
|
+
)
|
|
93
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {
|
|
2
|
+
decodeFunctionData,
|
|
3
|
+
encodeFunctionResult,
|
|
4
|
+
isAddressEqual,
|
|
5
|
+
parseAbi,
|
|
6
|
+
ccipRequest as viemCcipRequest,
|
|
7
|
+
type CcipRequestParameters,
|
|
8
|
+
type Chain,
|
|
9
|
+
} from 'viem'
|
|
10
|
+
import { getChainContractAddress } from '../contracts/getChainContractAddress.js'
|
|
11
|
+
import { ccipBatchRequest } from './ccipBatchRequest.js'
|
|
12
|
+
|
|
13
|
+
const abi = parseAbi([
|
|
14
|
+
'function query((address,string[],bytes)[]) returns (bool[],bytes[])',
|
|
15
|
+
])
|
|
16
|
+
|
|
17
|
+
const universalResolverQuerySig = '0xa780bab6'
|
|
18
|
+
|
|
19
|
+
export const ccipRequest =
|
|
20
|
+
<TChain extends Chain>(chain: TChain) =>
|
|
21
|
+
async ({
|
|
22
|
+
data,
|
|
23
|
+
sender,
|
|
24
|
+
urls,
|
|
25
|
+
}: CcipRequestParameters): ReturnType<typeof viemCcipRequest> => {
|
|
26
|
+
const universalResolverAddress = getChainContractAddress({
|
|
27
|
+
client: { chain },
|
|
28
|
+
contract: 'ensUniversalResolver',
|
|
29
|
+
})
|
|
30
|
+
const isUniversalResolverRequest = isAddressEqual(
|
|
31
|
+
sender,
|
|
32
|
+
universalResolverAddress,
|
|
33
|
+
)
|
|
34
|
+
if (
|
|
35
|
+
isUniversalResolverRequest &&
|
|
36
|
+
data.slice(0, 10) === universalResolverQuerySig
|
|
37
|
+
) {
|
|
38
|
+
const { args } = decodeFunctionData({ abi, data })
|
|
39
|
+
const result = await ccipBatchRequest(args[0])
|
|
40
|
+
return encodeFunctionResult({ abi, result })
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return viemCcipRequest({ data, sender, urls })
|
|
44
|
+
}
|
package/src/utils/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { ccipRequest } from './ccipRequest.js'
|
|
1
2
|
export {
|
|
2
3
|
getDnsTxtRecords,
|
|
3
4
|
type GetDnsTxtRecordsParameters,
|
|
@@ -91,6 +92,7 @@ export {
|
|
|
91
92
|
generateRecordCallArray,
|
|
92
93
|
type RecordOptions,
|
|
93
94
|
} from './generateRecordCallArray.js'
|
|
95
|
+
export { generateSupportedContentTypes } from './generateSupportedContentTypes.js'
|
|
94
96
|
export { bytesToPacket, packetToBytes } from './hexEncodedName.js'
|
|
95
97
|
export {
|
|
96
98
|
checkIsDecrypted,
|
|
@@ -145,4 +147,3 @@ export {
|
|
|
145
147
|
expiryToBigInt,
|
|
146
148
|
wrappedLabelLengthCheck,
|
|
147
149
|
} from './wrapper.js'
|
|
148
|
-
export { generateSupportedContentTypes } from './generateSupportedContentTypes.js'
|
package/src/utils/wrapper.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { stringToBytes } from 'viem'
|
|
2
2
|
import { WrappedLabelTooLargeError } from '../errors/utils.js'
|
|
3
3
|
import type { AnyDate } from '../types.js'
|
|
4
|
+
import { ParentFuses } from './fuses.js'
|
|
4
5
|
|
|
5
6
|
export const MAX_EXPIRY = 2n ** 64n - 1n
|
|
6
7
|
|
|
@@ -18,3 +19,9 @@ export const wrappedLabelLengthCheck = (label: string) => {
|
|
|
18
19
|
if (bytes.byteLength > 255)
|
|
19
20
|
throw new WrappedLabelTooLargeError({ label, byteLength: bytes.byteLength })
|
|
20
21
|
}
|
|
22
|
+
|
|
23
|
+
export const makeDefaultExpiry = (fuses?: number): bigint => {
|
|
24
|
+
if (fuses && BigInt(fuses) & ParentFuses.PARENT_CANNOT_CONTROL)
|
|
25
|
+
return MAX_EXPIRY
|
|
26
|
+
return 0n
|
|
27
|
+
}
|