@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.
Files changed (47) hide show
  1. package/dist/cjs/errors/version.js +1 -1
  2. package/dist/cjs/functions/wallet/createSubname.js +57 -1
  3. package/dist/cjs/functions/wallet/createSubname.js.map +1 -1
  4. package/dist/cjs/utils/ccipBatchRequest.js +67 -0
  5. package/dist/cjs/utils/ccipBatchRequest.js.map +1 -0
  6. package/dist/cjs/utils/ccipRequest.js +26 -0
  7. package/dist/cjs/utils/ccipRequest.js.map +1 -0
  8. package/dist/cjs/utils/index.js +6 -4
  9. package/dist/cjs/utils/index.js.map +1 -1
  10. package/dist/cjs/utils/wrapper.js +8 -1
  11. package/dist/cjs/utils/wrapper.js.map +1 -1
  12. package/dist/esm/errors/version.js +1 -1
  13. package/dist/esm/functions/wallet/createSubname.js +59 -3
  14. package/dist/esm/functions/wallet/createSubname.js.map +1 -1
  15. package/dist/esm/utils/ccipBatchRequest.js +64 -0
  16. package/dist/esm/utils/ccipBatchRequest.js.map +1 -0
  17. package/dist/esm/utils/ccipRequest.js +22 -0
  18. package/dist/esm/utils/ccipRequest.js.map +1 -0
  19. package/dist/esm/utils/index.js +2 -1
  20. package/dist/esm/utils/index.js.map +1 -1
  21. package/dist/esm/utils/wrapper.js +6 -0
  22. package/dist/esm/utils/wrapper.js.map +1 -1
  23. package/dist/types/clients/decorators/wallet.d.ts +2785 -5
  24. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  25. package/dist/types/clients/public.d.ts +5 -1
  26. package/dist/types/clients/public.d.ts.map +1 -1
  27. package/dist/types/clients/subgraph.d.ts +5 -1
  28. package/dist/types/clients/subgraph.d.ts.map +1 -1
  29. package/dist/types/clients/wallet.d.ts +2814 -34
  30. package/dist/types/clients/wallet.d.ts.map +1 -1
  31. package/dist/types/errors/version.d.ts +1 -1
  32. package/dist/types/functions/wallet/createSubname.d.ts.map +1 -1
  33. package/dist/types/utils/ccipBatchRequest.d.ts +7 -0
  34. package/dist/types/utils/ccipBatchRequest.d.ts.map +1 -0
  35. package/dist/types/utils/ccipRequest.d.ts +3 -0
  36. package/dist/types/utils/ccipRequest.d.ts.map +1 -0
  37. package/dist/types/utils/index.d.ts +2 -1
  38. package/dist/types/utils/index.d.ts.map +1 -1
  39. package/dist/types/utils/wrapper.d.ts +1 -0
  40. package/dist/types/utils/wrapper.d.ts.map +1 -1
  41. package/package.json +3 -3
  42. package/src/errors/version.ts +1 -1
  43. package/src/functions/wallet/createSubname.ts +71 -4
  44. package/src/utils/ccipBatchRequest.ts +93 -0
  45. package/src/utils/ccipRequest.ts +44 -0
  46. package/src/utils/index.ts +2 -1
  47. 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjC,CAAA"}
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.5.0";
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,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAQhF,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAe,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAS/E,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,2BA2DF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;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,CAclC;kBA7Bc,aAAa;;;AAiC5B,eAAe,aAAa,CAAA"}
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;AAE1C,eAAO,MAAM,UAAU,QAAiB,CAAA;AAExC,eAAO,MAAM,cAAc,YAAa,OAAO,4BAAsB,MAOpE,CAAA;AAED,eAAO,MAAM,uBAAuB,UAAW,MAAM,SAIpD,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.9.0",
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.5.0"
17
+ "viem": "^2.9.2"
18
18
  },
19
- "version": "3.5.0",
19
+ "version": "3.7.0",
20
20
  "files": [
21
21
  "dist/",
22
22
  "src/",
@@ -1 +1 @@
1
- export const version = 'v3.5.0'
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 { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js'
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 { encodeFuses, type EncodeFusesInputObject } from '../../utils/fuses.js'
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 ? expiryToBigInt(expiry) : MAX_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
+ }
@@ -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'
@@ -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
+ }